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

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

%"class.SimTKIpopt::DenseVector" = type { %"class.SimTKIpopt::Vector.base", ptr, ptr, i8, i8, double }
%"class.SimTKIpopt::Vector.base" = type <{ %"class.SimTKIpopt::TaggedObject", %"class.SimTKIpopt::SmartPtr", %"class.SimTKIpopt::CachedResults", i32, [4 x i8], double, i32, [4 x i8], double, i32, [4 x i8], double, i32, [4 x i8], double, i32, [4 x i8], double, i32, [4 x i8], double, i32, [4 x i8], double, i32, i8 }>
%"class.SimTKIpopt::TaggedObject" = type { %"class.SimTKIpopt::ReferencedObject.base", %"class.SimTKIpopt::Subject", i32, i32 }
%"class.SimTKIpopt::ReferencedObject.base" = type <{ ptr, i32 }>
%"class.SimTKIpopt::Subject" = type { ptr, %"class.std::vector.0" }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<SimTKIpopt::Observer *, std::allocator<SimTKIpopt::Observer *>>::_Vector_impl" }
%"struct.std::_Vector_base<SimTKIpopt::Observer *, std::allocator<SimTKIpopt::Observer *>>::_Vector_impl" = type { %"struct.std::_Vector_base<SimTKIpopt::Observer *, std::allocator<SimTKIpopt::Observer *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SimTKIpopt::Observer *, std::allocator<SimTKIpopt::Observer *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.SimTKIpopt::SmartPtr" = type { ptr }
%"class.SimTKIpopt::CachedResults" = type { ptr, i32, ptr }

@_ZTIN10SimTKIpopt6VectorE = external dso_local constant { ptr, ptr, ptr }, align 8
@_ZTIN10SimTKIpopt11DenseVectorE = external dso_local constant { ptr, ptr, ptr }, align 8

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205)) #1 align 2

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

; Function Attrs: nounwind willreturn memory(read)
declare ptr @__dynamic_cast(ptr, ptr, ptr, i64) #2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10SimTKIpopt11DenseVector17AddTwoVectorsImplEdRKNS_6VectorEdS3_d(ptr noundef nonnull align 8 dereferenceable(240) %0, double noundef %1, ptr noundef nonnull align 8 dereferenceable(205) %2, double noundef %3, ptr noundef nonnull align 8 dereferenceable(205) %4, double noundef %5) unnamed_addr #4 align 2 {
  %7 = alloca ptr, align 8
  %8 = alloca double, align 8
  %9 = alloca ptr, align 8
  %10 = alloca double, align 8
  %11 = alloca ptr, align 8
  %12 = alloca double, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i8, align 1
  %15 = alloca double, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i8, align 1
  %19 = alloca double, align 8
  %20 = alloca ptr, align 8
  %21 = alloca double, align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca i32, align 4
  %72 = alloca i32, align 4
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca i32, align 4
  %85 = alloca i32, align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store double %1, ptr %8, align 8, !tbaa !9
  store ptr %2, ptr %9, align 8, !tbaa !5
  store double %3, ptr %10, align 8, !tbaa !9
  store ptr %4, ptr %11, align 8, !tbaa !5
  store double %5, ptr %12, align 8, !tbaa !9
  %86 = load ptr, ptr %7, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #6
  store ptr null, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #6
  store i8 0, ptr %14, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #6
  store double 0.000000e+00, ptr %15, align 8, !tbaa !9
  %87 = load double, ptr %8, align 8, !tbaa !9
  %88 = fcmp une double %87, 0.000000e+00
  br i1 %88, label %89, label %112

89:                                               ; preds = %6
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #6
  %90 = load ptr, ptr %9, align 8, !tbaa !5
  %91 = icmp eq ptr %90, null
  br i1 %91, label %94, label %92

92:                                               ; preds = %89
  %93 = call ptr @__dynamic_cast(ptr %90, ptr @_ZTIN10SimTKIpopt6VectorE, ptr @_ZTIN10SimTKIpopt11DenseVectorE, i64 0) #6
  br label %95

94:                                               ; preds = %89
  br label %95

95:                                               ; preds = %94, %92
  %96 = phi ptr [ %93, %92 ], [ null, %94 ]
  store ptr %96, ptr %16, align 8, !tbaa !5
  %97 = load ptr, ptr %16, align 8, !tbaa !5
  %98 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %97, i32 0, i32 2
  %99 = load ptr, ptr %98, align 8, !tbaa !13
  store ptr %99, ptr %13, align 8, !tbaa !5
  %100 = load ptr, ptr %16, align 8, !tbaa !5
  %101 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %100, i32 0, i32 4
  %102 = load i8, ptr %101, align 1, !tbaa !26, !range !27, !noundef !28
  %103 = trunc i8 %102 to i1
  %104 = zext i1 %103 to i8
  store i8 %104, ptr %14, align 1, !tbaa !11
  %105 = load i8, ptr %14, align 1, !tbaa !11, !range !27, !noundef !28
  %106 = trunc i8 %105 to i1
  br i1 %106, label %107, label %111

107:                                              ; preds = %95
  %108 = load ptr, ptr %16, align 8, !tbaa !5
  %109 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %108, i32 0, i32 5
  %110 = load double, ptr %109, align 8, !tbaa !29
  store double %110, ptr %15, align 8, !tbaa !9
  br label %111

111:                                              ; preds = %107, %95
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #6
  br label %112

112:                                              ; preds = %111, %6
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #6
  store ptr null, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #6
  store i8 0, ptr %18, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #6
  store double 0.000000e+00, ptr %19, align 8, !tbaa !9
  %113 = load double, ptr %10, align 8, !tbaa !9
  %114 = fcmp une double %113, 0.000000e+00
  br i1 %114, label %115, label %138

115:                                              ; preds = %112
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #6
  %116 = load ptr, ptr %11, align 8, !tbaa !5
  %117 = icmp eq ptr %116, null
  br i1 %117, label %120, label %118

118:                                              ; preds = %115
  %119 = call ptr @__dynamic_cast(ptr %116, ptr @_ZTIN10SimTKIpopt6VectorE, ptr @_ZTIN10SimTKIpopt11DenseVectorE, i64 0) #6
  br label %121

120:                                              ; preds = %115
  br label %121

121:                                              ; preds = %120, %118
  %122 = phi ptr [ %119, %118 ], [ null, %120 ]
  store ptr %122, ptr %20, align 8, !tbaa !5
  %123 = load ptr, ptr %20, align 8, !tbaa !5
  %124 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %123, i32 0, i32 2
  %125 = load ptr, ptr %124, align 8, !tbaa !13
  store ptr %125, ptr %17, align 8, !tbaa !5
  %126 = load ptr, ptr %20, align 8, !tbaa !5
  %127 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %126, i32 0, i32 4
  %128 = load i8, ptr %127, align 1, !tbaa !26, !range !27, !noundef !28
  %129 = trunc i8 %128 to i1
  %130 = zext i1 %129 to i8
  store i8 %130, ptr %18, align 1, !tbaa !11
  %131 = load i8, ptr %18, align 1, !tbaa !11, !range !27, !noundef !28
  %132 = trunc i8 %131 to i1
  br i1 %132, label %133, label %137

133:                                              ; preds = %121
  %134 = load ptr, ptr %20, align 8, !tbaa !5
  %135 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %134, i32 0, i32 5
  %136 = load double, ptr %135, align 8, !tbaa !29
  store double %136, ptr %19, align 8, !tbaa !9
  br label %137

137:                                              ; preds = %133, %121
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  br label %138

138:                                              ; preds = %137, %112
  %139 = load double, ptr %12, align 8, !tbaa !9
  %140 = fcmp oeq double %139, 0.000000e+00
  br i1 %140, label %145, label %141

141:                                              ; preds = %138
  %142 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 4
  %143 = load i8, ptr %142, align 1, !tbaa !26, !range !27, !noundef !28
  %144 = trunc i8 %143 to i1
  br i1 %144, label %145, label %170

145:                                              ; preds = %141, %138
  %146 = load i8, ptr %14, align 1, !tbaa !11, !range !27, !noundef !28
  %147 = trunc i8 %146 to i1
  br i1 %147, label %148, label %170

148:                                              ; preds = %145
  %149 = load i8, ptr %18, align 1, !tbaa !11, !range !27, !noundef !28
  %150 = trunc i8 %149 to i1
  br i1 %150, label %151, label %170

151:                                              ; preds = %148
  %152 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 4
  store i8 1, ptr %152, align 1, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #6
  store double 0.000000e+00, ptr %21, align 8, !tbaa !9
  %153 = load double, ptr %12, align 8, !tbaa !9
  %154 = fcmp une double %153, 0.000000e+00
  br i1 %154, label %155, label %160

155:                                              ; preds = %151
  %156 = load double, ptr %12, align 8, !tbaa !9
  %157 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 5
  %158 = load double, ptr %157, align 8, !tbaa !29
  %159 = fmul double %156, %158
  store double %159, ptr %21, align 8, !tbaa !9
  br label %160

160:                                              ; preds = %155, %151
  %161 = load double, ptr %21, align 8, !tbaa !9
  %162 = load double, ptr %8, align 8, !tbaa !9
  %163 = load double, ptr %15, align 8, !tbaa !9
  %164 = call double @llvm.fmuladd.f64(double %162, double %163, double %161)
  %165 = load double, ptr %10, align 8, !tbaa !9
  %166 = load double, ptr %19, align 8, !tbaa !9
  %167 = call double @llvm.fmuladd.f64(double %165, double %166, double %164)
  %168 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 5
  store double %167, ptr %168, align 8, !tbaa !29
  %169 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 3
  store i8 1, ptr %169, align 8, !tbaa !30
  store i32 1, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  br label %2294

170:                                              ; preds = %148, %145, %141
  %171 = load double, ptr %12, align 8, !tbaa !9
  %172 = fcmp oeq double %171, 0.000000e+00
  br i1 %172, label %173, label %176

173:                                              ; preds = %170
  %174 = call noundef ptr @_ZN10SimTKIpopt11DenseVector16values_allocatedEv(ptr noundef nonnull align 8 dereferenceable(240) %86)
  %175 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 4
  store i8 0, ptr %175, align 1, !tbaa !26
  br label %176

176:                                              ; preds = %173, %170
  %177 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 4
  %178 = load i8, ptr %177, align 1, !tbaa !26, !range !27, !noundef !28
  %179 = trunc i8 %178 to i1
  br i1 %179, label %186, label %180

180:                                              ; preds = %176
  %181 = load i8, ptr %14, align 1, !tbaa !11, !range !27, !noundef !28
  %182 = trunc i8 %181 to i1
  br i1 %182, label %186, label %183

183:                                              ; preds = %180
  %184 = load i8, ptr %18, align 1, !tbaa !11, !range !27, !noundef !28
  %185 = trunc i8 %184 to i1
  br i1 %185, label %186, label %192

186:                                              ; preds = %183, %180, %176
  %187 = load double, ptr %8, align 8, !tbaa !9
  %188 = load ptr, ptr %9, align 8, !tbaa !5
  %189 = load double, ptr %10, align 8, !tbaa !9
  %190 = load ptr, ptr %11, align 8, !tbaa !5
  %191 = load double, ptr %12, align 8, !tbaa !9
  call void @_ZN10SimTKIpopt6Vector17AddTwoVectorsImplEdRKS0_dS2_d(ptr noundef nonnull align 8 dereferenceable(205) %86, double noundef %187, ptr noundef nonnull align 8 dereferenceable(205) %188, double noundef %189, ptr noundef nonnull align 8 dereferenceable(205) %190, double noundef %191)
  store i32 1, ptr %22, align 4
  br label %2294

192:                                              ; preds = %183
  %193 = load double, ptr %12, align 8, !tbaa !9
  %194 = fcmp oeq double %193, 0.000000e+00
  br i1 %194, label %195, label %657

195:                                              ; preds = %192
  %196 = load double, ptr %8, align 8, !tbaa !9
  %197 = fcmp oeq double %196, 1.000000e+00
  br i1 %197, label %198, label %313

198:                                              ; preds = %195
  %199 = load double, ptr %10, align 8, !tbaa !9
  %200 = fcmp oeq double %199, 0.000000e+00
  br i1 %200, label %201, label %222

201:                                              ; preds = %198
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  store i32 0, ptr %23, align 4, !tbaa !31
  br label %202

202:                                              ; preds = %218, %201
  %203 = load i32, ptr %23, align 4, !tbaa !31
  %204 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %205 = icmp slt i32 %203, %204
  br i1 %205, label %207, label %206

206:                                              ; preds = %202
  store i32 2, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  br label %221

207:                                              ; preds = %202
  %208 = load ptr, ptr %13, align 8, !tbaa !5
  %209 = load i32, ptr %23, align 4, !tbaa !31
  %210 = sext i32 %209 to i64
  %211 = getelementptr inbounds double, ptr %208, i64 %210
  %212 = load double, ptr %211, align 8, !tbaa !9
  %213 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %214 = load ptr, ptr %213, align 8, !tbaa !13
  %215 = load i32, ptr %23, align 4, !tbaa !31
  %216 = sext i32 %215 to i64
  %217 = getelementptr inbounds double, ptr %214, i64 %216
  store double %212, ptr %217, align 8, !tbaa !9
  br label %218

218:                                              ; preds = %207
  %219 = load i32, ptr %23, align 4, !tbaa !31
  %220 = add nsw i32 %219, 1
  store i32 %220, ptr %23, align 4, !tbaa !31
  br label %202, !llvm.loop !32

221:                                              ; preds = %206
  br label %312

222:                                              ; preds = %198
  %223 = load double, ptr %10, align 8, !tbaa !9
  %224 = fcmp oeq double %223, 1.000000e+00
  br i1 %224, label %225, label %252

225:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #6
  store i32 0, ptr %24, align 4, !tbaa !31
  br label %226

226:                                              ; preds = %248, %225
  %227 = load i32, ptr %24, align 4, !tbaa !31
  %228 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %229 = icmp slt i32 %227, %228
  br i1 %229, label %231, label %230

230:                                              ; preds = %226
  store i32 5, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  br label %251

231:                                              ; preds = %226
  %232 = load ptr, ptr %13, align 8, !tbaa !5
  %233 = load i32, ptr %24, align 4, !tbaa !31
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds double, ptr %232, i64 %234
  %236 = load double, ptr %235, align 8, !tbaa !9
  %237 = load ptr, ptr %17, align 8, !tbaa !5
  %238 = load i32, ptr %24, align 4, !tbaa !31
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds double, ptr %237, i64 %239
  %241 = load double, ptr %240, align 8, !tbaa !9
  %242 = fadd double %236, %241
  %243 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %244 = load ptr, ptr %243, align 8, !tbaa !13
  %245 = load i32, ptr %24, align 4, !tbaa !31
  %246 = sext i32 %245 to i64
  %247 = getelementptr inbounds double, ptr %244, i64 %246
  store double %242, ptr %247, align 8, !tbaa !9
  br label %248

248:                                              ; preds = %231
  %249 = load i32, ptr %24, align 4, !tbaa !31
  %250 = add nsw i32 %249, 1
  store i32 %250, ptr %24, align 4, !tbaa !31
  br label %226, !llvm.loop !34

251:                                              ; preds = %230
  br label %311

252:                                              ; preds = %222
  %253 = load double, ptr %10, align 8, !tbaa !9
  %254 = fcmp oeq double %253, -1.000000e+00
  br i1 %254, label %255, label %282

255:                                              ; preds = %252
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  store i32 0, ptr %25, align 4, !tbaa !31
  br label %256

256:                                              ; preds = %278, %255
  %257 = load i32, ptr %25, align 4, !tbaa !31
  %258 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %259 = icmp slt i32 %257, %258
  br i1 %259, label %261, label %260

260:                                              ; preds = %256
  store i32 8, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  br label %281

261:                                              ; preds = %256
  %262 = load ptr, ptr %13, align 8, !tbaa !5
  %263 = load i32, ptr %25, align 4, !tbaa !31
  %264 = sext i32 %263 to i64
  %265 = getelementptr inbounds double, ptr %262, i64 %264
  %266 = load double, ptr %265, align 8, !tbaa !9
  %267 = load ptr, ptr %17, align 8, !tbaa !5
  %268 = load i32, ptr %25, align 4, !tbaa !31
  %269 = sext i32 %268 to i64
  %270 = getelementptr inbounds double, ptr %267, i64 %269
  %271 = load double, ptr %270, align 8, !tbaa !9
  %272 = fsub double %266, %271
  %273 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %274 = load ptr, ptr %273, align 8, !tbaa !13
  %275 = load i32, ptr %25, align 4, !tbaa !31
  %276 = sext i32 %275 to i64
  %277 = getelementptr inbounds double, ptr %274, i64 %276
  store double %272, ptr %277, align 8, !tbaa !9
  br label %278

278:                                              ; preds = %261
  %279 = load i32, ptr %25, align 4, !tbaa !31
  %280 = add nsw i32 %279, 1
  store i32 %280, ptr %25, align 4, !tbaa !31
  br label %256, !llvm.loop !35

281:                                              ; preds = %260
  br label %310

282:                                              ; preds = %252
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  store i32 0, ptr %26, align 4, !tbaa !31
  br label %283

283:                                              ; preds = %306, %282
  %284 = load i32, ptr %26, align 4, !tbaa !31
  %285 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %286 = icmp slt i32 %284, %285
  br i1 %286, label %288, label %287

287:                                              ; preds = %283
  store i32 11, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  br label %309

288:                                              ; preds = %283
  %289 = load ptr, ptr %13, align 8, !tbaa !5
  %290 = load i32, ptr %26, align 4, !tbaa !31
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds double, ptr %289, i64 %291
  %293 = load double, ptr %292, align 8, !tbaa !9
  %294 = load double, ptr %10, align 8, !tbaa !9
  %295 = load ptr, ptr %17, align 8, !tbaa !5
  %296 = load i32, ptr %26, align 4, !tbaa !31
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds double, ptr %295, i64 %297
  %299 = load double, ptr %298, align 8, !tbaa !9
  %300 = call double @llvm.fmuladd.f64(double %294, double %299, double %293)
  %301 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %302 = load ptr, ptr %301, align 8, !tbaa !13
  %303 = load i32, ptr %26, align 4, !tbaa !31
  %304 = sext i32 %303 to i64
  %305 = getelementptr inbounds double, ptr %302, i64 %304
  store double %300, ptr %305, align 8, !tbaa !9
  br label %306

306:                                              ; preds = %288
  %307 = load i32, ptr %26, align 4, !tbaa !31
  %308 = add nsw i32 %307, 1
  store i32 %308, ptr %26, align 4, !tbaa !31
  br label %283, !llvm.loop !36

309:                                              ; preds = %287
  br label %310

310:                                              ; preds = %309, %281
  br label %311

311:                                              ; preds = %310, %251
  br label %312

312:                                              ; preds = %311, %221
  br label %656

313:                                              ; preds = %195
  %314 = load double, ptr %8, align 8, !tbaa !9
  %315 = fcmp oeq double %314, -1.000000e+00
  br i1 %315, label %316, label %435

316:                                              ; preds = %313
  %317 = load double, ptr %10, align 8, !tbaa !9
  %318 = fcmp oeq double %317, 0.000000e+00
  br i1 %318, label %319, label %341

319:                                              ; preds = %316
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  store i32 0, ptr %27, align 4, !tbaa !31
  br label %320

320:                                              ; preds = %337, %319
  %321 = load i32, ptr %27, align 4, !tbaa !31
  %322 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %323 = icmp slt i32 %321, %322
  br i1 %323, label %325, label %324

324:                                              ; preds = %320
  store i32 14, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  br label %340

325:                                              ; preds = %320
  %326 = load ptr, ptr %13, align 8, !tbaa !5
  %327 = load i32, ptr %27, align 4, !tbaa !31
  %328 = sext i32 %327 to i64
  %329 = getelementptr inbounds double, ptr %326, i64 %328
  %330 = load double, ptr %329, align 8, !tbaa !9
  %331 = fneg double %330
  %332 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %333 = load ptr, ptr %332, align 8, !tbaa !13
  %334 = load i32, ptr %27, align 4, !tbaa !31
  %335 = sext i32 %334 to i64
  %336 = getelementptr inbounds double, ptr %333, i64 %335
  store double %331, ptr %336, align 8, !tbaa !9
  br label %337

337:                                              ; preds = %325
  %338 = load i32, ptr %27, align 4, !tbaa !31
  %339 = add nsw i32 %338, 1
  store i32 %339, ptr %27, align 4, !tbaa !31
  br label %320, !llvm.loop !37

340:                                              ; preds = %324
  br label %434

341:                                              ; preds = %316
  %342 = load double, ptr %10, align 8, !tbaa !9
  %343 = fcmp oeq double %342, 1.000000e+00
  br i1 %343, label %344, label %372

344:                                              ; preds = %341
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  store i32 0, ptr %28, align 4, !tbaa !31
  br label %345

345:                                              ; preds = %368, %344
  %346 = load i32, ptr %28, align 4, !tbaa !31
  %347 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %348 = icmp slt i32 %346, %347
  br i1 %348, label %350, label %349

349:                                              ; preds = %345
  store i32 17, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  br label %371

350:                                              ; preds = %345
  %351 = load ptr, ptr %13, align 8, !tbaa !5
  %352 = load i32, ptr %28, align 4, !tbaa !31
  %353 = sext i32 %352 to i64
  %354 = getelementptr inbounds double, ptr %351, i64 %353
  %355 = load double, ptr %354, align 8, !tbaa !9
  %356 = fneg double %355
  %357 = load ptr, ptr %17, align 8, !tbaa !5
  %358 = load i32, ptr %28, align 4, !tbaa !31
  %359 = sext i32 %358 to i64
  %360 = getelementptr inbounds double, ptr %357, i64 %359
  %361 = load double, ptr %360, align 8, !tbaa !9
  %362 = fadd double %356, %361
  %363 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %364 = load ptr, ptr %363, align 8, !tbaa !13
  %365 = load i32, ptr %28, align 4, !tbaa !31
  %366 = sext i32 %365 to i64
  %367 = getelementptr inbounds double, ptr %364, i64 %366
  store double %362, ptr %367, align 8, !tbaa !9
  br label %368

368:                                              ; preds = %350
  %369 = load i32, ptr %28, align 4, !tbaa !31
  %370 = add nsw i32 %369, 1
  store i32 %370, ptr %28, align 4, !tbaa !31
  br label %345, !llvm.loop !38

371:                                              ; preds = %349
  br label %433

372:                                              ; preds = %341
  %373 = load double, ptr %10, align 8, !tbaa !9
  %374 = fcmp oeq double %373, -1.000000e+00
  br i1 %374, label %375, label %403

375:                                              ; preds = %372
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  store i32 0, ptr %29, align 4, !tbaa !31
  br label %376

376:                                              ; preds = %399, %375
  %377 = load i32, ptr %29, align 4, !tbaa !31
  %378 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %379 = icmp slt i32 %377, %378
  br i1 %379, label %381, label %380

380:                                              ; preds = %376
  store i32 20, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  br label %402

381:                                              ; preds = %376
  %382 = load ptr, ptr %13, align 8, !tbaa !5
  %383 = load i32, ptr %29, align 4, !tbaa !31
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds double, ptr %382, i64 %384
  %386 = load double, ptr %385, align 8, !tbaa !9
  %387 = fneg double %386
  %388 = load ptr, ptr %17, align 8, !tbaa !5
  %389 = load i32, ptr %29, align 4, !tbaa !31
  %390 = sext i32 %389 to i64
  %391 = getelementptr inbounds double, ptr %388, i64 %390
  %392 = load double, ptr %391, align 8, !tbaa !9
  %393 = fsub double %387, %392
  %394 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %395 = load ptr, ptr %394, align 8, !tbaa !13
  %396 = load i32, ptr %29, align 4, !tbaa !31
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds double, ptr %395, i64 %397
  store double %393, ptr %398, align 8, !tbaa !9
  br label %399

399:                                              ; preds = %381
  %400 = load i32, ptr %29, align 4, !tbaa !31
  %401 = add nsw i32 %400, 1
  store i32 %401, ptr %29, align 4, !tbaa !31
  br label %376, !llvm.loop !39

402:                                              ; preds = %380
  br label %432

403:                                              ; preds = %372
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  store i32 0, ptr %30, align 4, !tbaa !31
  br label %404

404:                                              ; preds = %428, %403
  %405 = load i32, ptr %30, align 4, !tbaa !31
  %406 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %407 = icmp slt i32 %405, %406
  br i1 %407, label %409, label %408

408:                                              ; preds = %404
  store i32 23, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  br label %431

409:                                              ; preds = %404
  %410 = load ptr, ptr %13, align 8, !tbaa !5
  %411 = load i32, ptr %30, align 4, !tbaa !31
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds double, ptr %410, i64 %412
  %414 = load double, ptr %413, align 8, !tbaa !9
  %415 = fneg double %414
  %416 = load double, ptr %10, align 8, !tbaa !9
  %417 = load ptr, ptr %17, align 8, !tbaa !5
  %418 = load i32, ptr %30, align 4, !tbaa !31
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds double, ptr %417, i64 %419
  %421 = load double, ptr %420, align 8, !tbaa !9
  %422 = call double @llvm.fmuladd.f64(double %416, double %421, double %415)
  %423 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %424 = load ptr, ptr %423, align 8, !tbaa !13
  %425 = load i32, ptr %30, align 4, !tbaa !31
  %426 = sext i32 %425 to i64
  %427 = getelementptr inbounds double, ptr %424, i64 %426
  store double %422, ptr %427, align 8, !tbaa !9
  br label %428

428:                                              ; preds = %409
  %429 = load i32, ptr %30, align 4, !tbaa !31
  %430 = add nsw i32 %429, 1
  store i32 %430, ptr %30, align 4, !tbaa !31
  br label %404, !llvm.loop !40

431:                                              ; preds = %408
  br label %432

432:                                              ; preds = %431, %402
  br label %433

433:                                              ; preds = %432, %371
  br label %434

434:                                              ; preds = %433, %340
  br label %655

435:                                              ; preds = %313
  %436 = load double, ptr %8, align 8, !tbaa !9
  %437 = fcmp oeq double %436, 0.000000e+00
  br i1 %437, label %438, label %532

438:                                              ; preds = %435
  %439 = load double, ptr %10, align 8, !tbaa !9
  %440 = fcmp oeq double %439, 0.000000e+00
  br i1 %440, label %441, label %457

441:                                              ; preds = %438
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  store i32 0, ptr %31, align 4, !tbaa !31
  br label %442

442:                                              ; preds = %453, %441
  %443 = load i32, ptr %31, align 4, !tbaa !31
  %444 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %445 = icmp slt i32 %443, %444
  br i1 %445, label %447, label %446

446:                                              ; preds = %442
  store i32 26, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  br label %456

447:                                              ; preds = %442
  %448 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %449 = load ptr, ptr %448, align 8, !tbaa !13
  %450 = load i32, ptr %31, align 4, !tbaa !31
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds double, ptr %449, i64 %451
  store double 0.000000e+00, ptr %452, align 8, !tbaa !9
  br label %453

453:                                              ; preds = %447
  %454 = load i32, ptr %31, align 4, !tbaa !31
  %455 = add nsw i32 %454, 1
  store i32 %455, ptr %31, align 4, !tbaa !31
  br label %442, !llvm.loop !41

456:                                              ; preds = %446
  br label %531

457:                                              ; preds = %438
  %458 = load double, ptr %10, align 8, !tbaa !9
  %459 = fcmp oeq double %458, 1.000000e+00
  br i1 %459, label %460, label %481

460:                                              ; preds = %457
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #6
  store i32 0, ptr %32, align 4, !tbaa !31
  br label %461

461:                                              ; preds = %477, %460
  %462 = load i32, ptr %32, align 4, !tbaa !31
  %463 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %464 = icmp slt i32 %462, %463
  br i1 %464, label %466, label %465

465:                                              ; preds = %461
  store i32 29, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  br label %480

466:                                              ; preds = %461
  %467 = load ptr, ptr %17, align 8, !tbaa !5
  %468 = load i32, ptr %32, align 4, !tbaa !31
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds double, ptr %467, i64 %469
  %471 = load double, ptr %470, align 8, !tbaa !9
  %472 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %473 = load ptr, ptr %472, align 8, !tbaa !13
  %474 = load i32, ptr %32, align 4, !tbaa !31
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds double, ptr %473, i64 %475
  store double %471, ptr %476, align 8, !tbaa !9
  br label %477

477:                                              ; preds = %466
  %478 = load i32, ptr %32, align 4, !tbaa !31
  %479 = add nsw i32 %478, 1
  store i32 %479, ptr %32, align 4, !tbaa !31
  br label %461, !llvm.loop !42

480:                                              ; preds = %465
  br label %530

481:                                              ; preds = %457
  %482 = load double, ptr %10, align 8, !tbaa !9
  %483 = fcmp oeq double %482, -1.000000e+00
  br i1 %483, label %484, label %506

484:                                              ; preds = %481
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  store i32 0, ptr %33, align 4, !tbaa !31
  br label %485

485:                                              ; preds = %502, %484
  %486 = load i32, ptr %33, align 4, !tbaa !31
  %487 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %488 = icmp slt i32 %486, %487
  br i1 %488, label %490, label %489

489:                                              ; preds = %485
  store i32 32, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  br label %505

490:                                              ; preds = %485
  %491 = load ptr, ptr %17, align 8, !tbaa !5
  %492 = load i32, ptr %33, align 4, !tbaa !31
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds double, ptr %491, i64 %493
  %495 = load double, ptr %494, align 8, !tbaa !9
  %496 = fneg double %495
  %497 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %498 = load ptr, ptr %497, align 8, !tbaa !13
  %499 = load i32, ptr %33, align 4, !tbaa !31
  %500 = sext i32 %499 to i64
  %501 = getelementptr inbounds double, ptr %498, i64 %500
  store double %496, ptr %501, align 8, !tbaa !9
  br label %502

502:                                              ; preds = %490
  %503 = load i32, ptr %33, align 4, !tbaa !31
  %504 = add nsw i32 %503, 1
  store i32 %504, ptr %33, align 4, !tbaa !31
  br label %485, !llvm.loop !43

505:                                              ; preds = %489
  br label %529

506:                                              ; preds = %481
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  store i32 0, ptr %34, align 4, !tbaa !31
  br label %507

507:                                              ; preds = %525, %506
  %508 = load i32, ptr %34, align 4, !tbaa !31
  %509 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %510 = icmp slt i32 %508, %509
  br i1 %510, label %512, label %511

511:                                              ; preds = %507
  store i32 35, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  br label %528

512:                                              ; preds = %507
  %513 = load double, ptr %10, align 8, !tbaa !9
  %514 = load ptr, ptr %17, align 8, !tbaa !5
  %515 = load i32, ptr %34, align 4, !tbaa !31
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds double, ptr %514, i64 %516
  %518 = load double, ptr %517, align 8, !tbaa !9
  %519 = fmul double %513, %518
  %520 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %521 = load ptr, ptr %520, align 8, !tbaa !13
  %522 = load i32, ptr %34, align 4, !tbaa !31
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds double, ptr %521, i64 %523
  store double %519, ptr %524, align 8, !tbaa !9
  br label %525

525:                                              ; preds = %512
  %526 = load i32, ptr %34, align 4, !tbaa !31
  %527 = add nsw i32 %526, 1
  store i32 %527, ptr %34, align 4, !tbaa !31
  br label %507, !llvm.loop !44

528:                                              ; preds = %511
  br label %529

529:                                              ; preds = %528, %505
  br label %530

530:                                              ; preds = %529, %480
  br label %531

531:                                              ; preds = %530, %456
  br label %654

532:                                              ; preds = %435
  %533 = load double, ptr %10, align 8, !tbaa !9
  %534 = fcmp oeq double %533, 0.000000e+00
  br i1 %534, label %535, label %558

535:                                              ; preds = %532
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  store i32 0, ptr %35, align 4, !tbaa !31
  br label %536

536:                                              ; preds = %554, %535
  %537 = load i32, ptr %35, align 4, !tbaa !31
  %538 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %539 = icmp slt i32 %537, %538
  br i1 %539, label %541, label %540

540:                                              ; preds = %536
  store i32 38, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  br label %557

541:                                              ; preds = %536
  %542 = load double, ptr %8, align 8, !tbaa !9
  %543 = load ptr, ptr %13, align 8, !tbaa !5
  %544 = load i32, ptr %35, align 4, !tbaa !31
  %545 = sext i32 %544 to i64
  %546 = getelementptr inbounds double, ptr %543, i64 %545
  %547 = load double, ptr %546, align 8, !tbaa !9
  %548 = fmul double %542, %547
  %549 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %550 = load ptr, ptr %549, align 8, !tbaa !13
  %551 = load i32, ptr %35, align 4, !tbaa !31
  %552 = sext i32 %551 to i64
  %553 = getelementptr inbounds double, ptr %550, i64 %552
  store double %548, ptr %553, align 8, !tbaa !9
  br label %554

554:                                              ; preds = %541
  %555 = load i32, ptr %35, align 4, !tbaa !31
  %556 = add nsw i32 %555, 1
  store i32 %556, ptr %35, align 4, !tbaa !31
  br label %536, !llvm.loop !45

557:                                              ; preds = %540
  br label %653

558:                                              ; preds = %532
  %559 = load double, ptr %10, align 8, !tbaa !9
  %560 = fcmp oeq double %559, 1.000000e+00
  br i1 %560, label %561, label %589

561:                                              ; preds = %558
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  store i32 0, ptr %36, align 4, !tbaa !31
  br label %562

562:                                              ; preds = %585, %561
  %563 = load i32, ptr %36, align 4, !tbaa !31
  %564 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %565 = icmp slt i32 %563, %564
  br i1 %565, label %567, label %566

566:                                              ; preds = %562
  store i32 41, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  br label %588

567:                                              ; preds = %562
  %568 = load double, ptr %8, align 8, !tbaa !9
  %569 = load ptr, ptr %13, align 8, !tbaa !5
  %570 = load i32, ptr %36, align 4, !tbaa !31
  %571 = sext i32 %570 to i64
  %572 = getelementptr inbounds double, ptr %569, i64 %571
  %573 = load double, ptr %572, align 8, !tbaa !9
  %574 = load ptr, ptr %17, align 8, !tbaa !5
  %575 = load i32, ptr %36, align 4, !tbaa !31
  %576 = sext i32 %575 to i64
  %577 = getelementptr inbounds double, ptr %574, i64 %576
  %578 = load double, ptr %577, align 8, !tbaa !9
  %579 = call double @llvm.fmuladd.f64(double %568, double %573, double %578)
  %580 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %581 = load ptr, ptr %580, align 8, !tbaa !13
  %582 = load i32, ptr %36, align 4, !tbaa !31
  %583 = sext i32 %582 to i64
  %584 = getelementptr inbounds double, ptr %581, i64 %583
  store double %579, ptr %584, align 8, !tbaa !9
  br label %585

585:                                              ; preds = %567
  %586 = load i32, ptr %36, align 4, !tbaa !31
  %587 = add nsw i32 %586, 1
  store i32 %587, ptr %36, align 4, !tbaa !31
  br label %562, !llvm.loop !46

588:                                              ; preds = %566
  br label %652

589:                                              ; preds = %558
  %590 = load double, ptr %10, align 8, !tbaa !9
  %591 = fcmp oeq double %590, -1.000000e+00
  br i1 %591, label %592, label %621

592:                                              ; preds = %589
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #6
  store i32 0, ptr %37, align 4, !tbaa !31
  br label %593

593:                                              ; preds = %617, %592
  %594 = load i32, ptr %37, align 4, !tbaa !31
  %595 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %596 = icmp slt i32 %594, %595
  br i1 %596, label %598, label %597

597:                                              ; preds = %593
  store i32 44, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  br label %620

598:                                              ; preds = %593
  %599 = load double, ptr %8, align 8, !tbaa !9
  %600 = load ptr, ptr %13, align 8, !tbaa !5
  %601 = load i32, ptr %37, align 4, !tbaa !31
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds double, ptr %600, i64 %602
  %604 = load double, ptr %603, align 8, !tbaa !9
  %605 = load ptr, ptr %17, align 8, !tbaa !5
  %606 = load i32, ptr %37, align 4, !tbaa !31
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds double, ptr %605, i64 %607
  %609 = load double, ptr %608, align 8, !tbaa !9
  %610 = fneg double %609
  %611 = call double @llvm.fmuladd.f64(double %599, double %604, double %610)
  %612 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %613 = load ptr, ptr %612, align 8, !tbaa !13
  %614 = load i32, ptr %37, align 4, !tbaa !31
  %615 = sext i32 %614 to i64
  %616 = getelementptr inbounds double, ptr %613, i64 %615
  store double %611, ptr %616, align 8, !tbaa !9
  br label %617

617:                                              ; preds = %598
  %618 = load i32, ptr %37, align 4, !tbaa !31
  %619 = add nsw i32 %618, 1
  store i32 %619, ptr %37, align 4, !tbaa !31
  br label %593, !llvm.loop !47

620:                                              ; preds = %597
  br label %651

621:                                              ; preds = %589
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #6
  store i32 0, ptr %38, align 4, !tbaa !31
  br label %622

622:                                              ; preds = %647, %621
  %623 = load i32, ptr %38, align 4, !tbaa !31
  %624 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %625 = icmp slt i32 %623, %624
  br i1 %625, label %627, label %626

626:                                              ; preds = %622
  store i32 47, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  br label %650

627:                                              ; preds = %622
  %628 = load double, ptr %8, align 8, !tbaa !9
  %629 = load ptr, ptr %13, align 8, !tbaa !5
  %630 = load i32, ptr %38, align 4, !tbaa !31
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds double, ptr %629, i64 %631
  %633 = load double, ptr %632, align 8, !tbaa !9
  %634 = load double, ptr %10, align 8, !tbaa !9
  %635 = load ptr, ptr %17, align 8, !tbaa !5
  %636 = load i32, ptr %38, align 4, !tbaa !31
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds double, ptr %635, i64 %637
  %639 = load double, ptr %638, align 8, !tbaa !9
  %640 = fmul double %634, %639
  %641 = call double @llvm.fmuladd.f64(double %628, double %633, double %640)
  %642 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %643 = load ptr, ptr %642, align 8, !tbaa !13
  %644 = load i32, ptr %38, align 4, !tbaa !31
  %645 = sext i32 %644 to i64
  %646 = getelementptr inbounds double, ptr %643, i64 %645
  store double %641, ptr %646, align 8, !tbaa !9
  br label %647

647:                                              ; preds = %627
  %648 = load i32, ptr %38, align 4, !tbaa !31
  %649 = add nsw i32 %648, 1
  store i32 %649, ptr %38, align 4, !tbaa !31
  br label %622, !llvm.loop !48

650:                                              ; preds = %626
  br label %651

651:                                              ; preds = %650, %620
  br label %652

652:                                              ; preds = %651, %588
  br label %653

653:                                              ; preds = %652, %557
  br label %654

654:                                              ; preds = %653, %531
  br label %655

655:                                              ; preds = %654, %434
  br label %656

656:                                              ; preds = %655, %312
  br label %2292

657:                                              ; preds = %192
  %658 = load double, ptr %12, align 8, !tbaa !9
  %659 = fcmp oeq double %658, 1.000000e+00
  br i1 %659, label %660, label %1133

660:                                              ; preds = %657
  %661 = load double, ptr %8, align 8, !tbaa !9
  %662 = fcmp oeq double %661, 1.000000e+00
  br i1 %662, label %663, label %786

663:                                              ; preds = %660
  %664 = load double, ptr %10, align 8, !tbaa !9
  %665 = fcmp oeq double %664, 0.000000e+00
  br i1 %665, label %666, label %689

666:                                              ; preds = %663
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #6
  store i32 0, ptr %39, align 4, !tbaa !31
  br label %667

667:                                              ; preds = %685, %666
  %668 = load i32, ptr %39, align 4, !tbaa !31
  %669 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %670 = icmp slt i32 %668, %669
  br i1 %670, label %672, label %671

671:                                              ; preds = %667
  store i32 50, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  br label %688

672:                                              ; preds = %667
  %673 = load ptr, ptr %13, align 8, !tbaa !5
  %674 = load i32, ptr %39, align 4, !tbaa !31
  %675 = sext i32 %674 to i64
  %676 = getelementptr inbounds double, ptr %673, i64 %675
  %677 = load double, ptr %676, align 8, !tbaa !9
  %678 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %679 = load ptr, ptr %678, align 8, !tbaa !13
  %680 = load i32, ptr %39, align 4, !tbaa !31
  %681 = sext i32 %680 to i64
  %682 = getelementptr inbounds double, ptr %679, i64 %681
  %683 = load double, ptr %682, align 8, !tbaa !9
  %684 = fadd double %683, %677
  store double %684, ptr %682, align 8, !tbaa !9
  br label %685

685:                                              ; preds = %672
  %686 = load i32, ptr %39, align 4, !tbaa !31
  %687 = add nsw i32 %686, 1
  store i32 %687, ptr %39, align 4, !tbaa !31
  br label %667, !llvm.loop !49

688:                                              ; preds = %671
  br label %785

689:                                              ; preds = %663
  %690 = load double, ptr %10, align 8, !tbaa !9
  %691 = fcmp oeq double %690, 1.000000e+00
  br i1 %691, label %692, label %721

692:                                              ; preds = %689
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #6
  store i32 0, ptr %40, align 4, !tbaa !31
  br label %693

693:                                              ; preds = %717, %692
  %694 = load i32, ptr %40, align 4, !tbaa !31
  %695 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %696 = icmp slt i32 %694, %695
  br i1 %696, label %698, label %697

697:                                              ; preds = %693
  store i32 53, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #6
  br label %720

698:                                              ; preds = %693
  %699 = load ptr, ptr %13, align 8, !tbaa !5
  %700 = load i32, ptr %40, align 4, !tbaa !31
  %701 = sext i32 %700 to i64
  %702 = getelementptr inbounds double, ptr %699, i64 %701
  %703 = load double, ptr %702, align 8, !tbaa !9
  %704 = load ptr, ptr %17, align 8, !tbaa !5
  %705 = load i32, ptr %40, align 4, !tbaa !31
  %706 = sext i32 %705 to i64
  %707 = getelementptr inbounds double, ptr %704, i64 %706
  %708 = load double, ptr %707, align 8, !tbaa !9
  %709 = fadd double %703, %708
  %710 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %711 = load ptr, ptr %710, align 8, !tbaa !13
  %712 = load i32, ptr %40, align 4, !tbaa !31
  %713 = sext i32 %712 to i64
  %714 = getelementptr inbounds double, ptr %711, i64 %713
  %715 = load double, ptr %714, align 8, !tbaa !9
  %716 = fadd double %715, %709
  store double %716, ptr %714, align 8, !tbaa !9
  br label %717

717:                                              ; preds = %698
  %718 = load i32, ptr %40, align 4, !tbaa !31
  %719 = add nsw i32 %718, 1
  store i32 %719, ptr %40, align 4, !tbaa !31
  br label %693, !llvm.loop !50

720:                                              ; preds = %697
  br label %784

721:                                              ; preds = %689
  %722 = load double, ptr %10, align 8, !tbaa !9
  %723 = fcmp oeq double %722, -1.000000e+00
  br i1 %723, label %724, label %753

724:                                              ; preds = %721
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #6
  store i32 0, ptr %41, align 4, !tbaa !31
  br label %725

725:                                              ; preds = %749, %724
  %726 = load i32, ptr %41, align 4, !tbaa !31
  %727 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %728 = icmp slt i32 %726, %727
  br i1 %728, label %730, label %729

729:                                              ; preds = %725
  store i32 56, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  br label %752

730:                                              ; preds = %725
  %731 = load ptr, ptr %13, align 8, !tbaa !5
  %732 = load i32, ptr %41, align 4, !tbaa !31
  %733 = sext i32 %732 to i64
  %734 = getelementptr inbounds double, ptr %731, i64 %733
  %735 = load double, ptr %734, align 8, !tbaa !9
  %736 = load ptr, ptr %17, align 8, !tbaa !5
  %737 = load i32, ptr %41, align 4, !tbaa !31
  %738 = sext i32 %737 to i64
  %739 = getelementptr inbounds double, ptr %736, i64 %738
  %740 = load double, ptr %739, align 8, !tbaa !9
  %741 = fsub double %735, %740
  %742 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %743 = load ptr, ptr %742, align 8, !tbaa !13
  %744 = load i32, ptr %41, align 4, !tbaa !31
  %745 = sext i32 %744 to i64
  %746 = getelementptr inbounds double, ptr %743, i64 %745
  %747 = load double, ptr %746, align 8, !tbaa !9
  %748 = fadd double %747, %741
  store double %748, ptr %746, align 8, !tbaa !9
  br label %749

749:                                              ; preds = %730
  %750 = load i32, ptr %41, align 4, !tbaa !31
  %751 = add nsw i32 %750, 1
  store i32 %751, ptr %41, align 4, !tbaa !31
  br label %725, !llvm.loop !51

752:                                              ; preds = %729
  br label %783

753:                                              ; preds = %721
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #6
  store i32 0, ptr %42, align 4, !tbaa !31
  br label %754

754:                                              ; preds = %779, %753
  %755 = load i32, ptr %42, align 4, !tbaa !31
  %756 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %757 = icmp slt i32 %755, %756
  br i1 %757, label %759, label %758

758:                                              ; preds = %754
  store i32 59, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  br label %782

759:                                              ; preds = %754
  %760 = load ptr, ptr %13, align 8, !tbaa !5
  %761 = load i32, ptr %42, align 4, !tbaa !31
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds double, ptr %760, i64 %762
  %764 = load double, ptr %763, align 8, !tbaa !9
  %765 = load double, ptr %10, align 8, !tbaa !9
  %766 = load ptr, ptr %17, align 8, !tbaa !5
  %767 = load i32, ptr %42, align 4, !tbaa !31
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds double, ptr %766, i64 %768
  %770 = load double, ptr %769, align 8, !tbaa !9
  %771 = call double @llvm.fmuladd.f64(double %765, double %770, double %764)
  %772 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %773 = load ptr, ptr %772, align 8, !tbaa !13
  %774 = load i32, ptr %42, align 4, !tbaa !31
  %775 = sext i32 %774 to i64
  %776 = getelementptr inbounds double, ptr %773, i64 %775
  %777 = load double, ptr %776, align 8, !tbaa !9
  %778 = fadd double %777, %771
  store double %778, ptr %776, align 8, !tbaa !9
  br label %779

779:                                              ; preds = %759
  %780 = load i32, ptr %42, align 4, !tbaa !31
  %781 = add nsw i32 %780, 1
  store i32 %781, ptr %42, align 4, !tbaa !31
  br label %754, !llvm.loop !52

782:                                              ; preds = %758
  br label %783

783:                                              ; preds = %782, %752
  br label %784

784:                                              ; preds = %783, %720
  br label %785

785:                                              ; preds = %784, %688
  br label %1132

786:                                              ; preds = %660
  %787 = load double, ptr %8, align 8, !tbaa !9
  %788 = fcmp oeq double %787, -1.000000e+00
  br i1 %788, label %789, label %915

789:                                              ; preds = %786
  %790 = load double, ptr %10, align 8, !tbaa !9
  %791 = fcmp oeq double %790, 0.000000e+00
  br i1 %791, label %792, label %815

792:                                              ; preds = %789
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #6
  store i32 0, ptr %43, align 4, !tbaa !31
  br label %793

793:                                              ; preds = %811, %792
  %794 = load i32, ptr %43, align 4, !tbaa !31
  %795 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %796 = icmp slt i32 %794, %795
  br i1 %796, label %798, label %797

797:                                              ; preds = %793
  store i32 62, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  br label %814

798:                                              ; preds = %793
  %799 = load ptr, ptr %13, align 8, !tbaa !5
  %800 = load i32, ptr %43, align 4, !tbaa !31
  %801 = sext i32 %800 to i64
  %802 = getelementptr inbounds double, ptr %799, i64 %801
  %803 = load double, ptr %802, align 8, !tbaa !9
  %804 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %805 = load ptr, ptr %804, align 8, !tbaa !13
  %806 = load i32, ptr %43, align 4, !tbaa !31
  %807 = sext i32 %806 to i64
  %808 = getelementptr inbounds double, ptr %805, i64 %807
  %809 = load double, ptr %808, align 8, !tbaa !9
  %810 = fsub double %809, %803
  store double %810, ptr %808, align 8, !tbaa !9
  br label %811

811:                                              ; preds = %798
  %812 = load i32, ptr %43, align 4, !tbaa !31
  %813 = add nsw i32 %812, 1
  store i32 %813, ptr %43, align 4, !tbaa !31
  br label %793, !llvm.loop !53

814:                                              ; preds = %797
  br label %914

815:                                              ; preds = %789
  %816 = load double, ptr %10, align 8, !tbaa !9
  %817 = fcmp oeq double %816, 1.000000e+00
  br i1 %817, label %818, label %848

818:                                              ; preds = %815
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #6
  store i32 0, ptr %44, align 4, !tbaa !31
  br label %819

819:                                              ; preds = %844, %818
  %820 = load i32, ptr %44, align 4, !tbaa !31
  %821 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %822 = icmp slt i32 %820, %821
  br i1 %822, label %824, label %823

823:                                              ; preds = %819
  store i32 65, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  br label %847

824:                                              ; preds = %819
  %825 = load ptr, ptr %13, align 8, !tbaa !5
  %826 = load i32, ptr %44, align 4, !tbaa !31
  %827 = sext i32 %826 to i64
  %828 = getelementptr inbounds double, ptr %825, i64 %827
  %829 = load double, ptr %828, align 8, !tbaa !9
  %830 = fneg double %829
  %831 = load ptr, ptr %17, align 8, !tbaa !5
  %832 = load i32, ptr %44, align 4, !tbaa !31
  %833 = sext i32 %832 to i64
  %834 = getelementptr inbounds double, ptr %831, i64 %833
  %835 = load double, ptr %834, align 8, !tbaa !9
  %836 = fadd double %830, %835
  %837 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %838 = load ptr, ptr %837, align 8, !tbaa !13
  %839 = load i32, ptr %44, align 4, !tbaa !31
  %840 = sext i32 %839 to i64
  %841 = getelementptr inbounds double, ptr %838, i64 %840
  %842 = load double, ptr %841, align 8, !tbaa !9
  %843 = fadd double %842, %836
  store double %843, ptr %841, align 8, !tbaa !9
  br label %844

844:                                              ; preds = %824
  %845 = load i32, ptr %44, align 4, !tbaa !31
  %846 = add nsw i32 %845, 1
  store i32 %846, ptr %44, align 4, !tbaa !31
  br label %819, !llvm.loop !54

847:                                              ; preds = %823
  br label %913

848:                                              ; preds = %815
  %849 = load double, ptr %10, align 8, !tbaa !9
  %850 = fcmp oeq double %849, -1.000000e+00
  br i1 %850, label %851, label %881

851:                                              ; preds = %848
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #6
  store i32 0, ptr %45, align 4, !tbaa !31
  br label %852

852:                                              ; preds = %877, %851
  %853 = load i32, ptr %45, align 4, !tbaa !31
  %854 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %855 = icmp slt i32 %853, %854
  br i1 %855, label %857, label %856

856:                                              ; preds = %852
  store i32 68, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  br label %880

857:                                              ; preds = %852
  %858 = load ptr, ptr %13, align 8, !tbaa !5
  %859 = load i32, ptr %45, align 4, !tbaa !31
  %860 = sext i32 %859 to i64
  %861 = getelementptr inbounds double, ptr %858, i64 %860
  %862 = load double, ptr %861, align 8, !tbaa !9
  %863 = fneg double %862
  %864 = load ptr, ptr %17, align 8, !tbaa !5
  %865 = load i32, ptr %45, align 4, !tbaa !31
  %866 = sext i32 %865 to i64
  %867 = getelementptr inbounds double, ptr %864, i64 %866
  %868 = load double, ptr %867, align 8, !tbaa !9
  %869 = fsub double %863, %868
  %870 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %871 = load ptr, ptr %870, align 8, !tbaa !13
  %872 = load i32, ptr %45, align 4, !tbaa !31
  %873 = sext i32 %872 to i64
  %874 = getelementptr inbounds double, ptr %871, i64 %873
  %875 = load double, ptr %874, align 8, !tbaa !9
  %876 = fadd double %875, %869
  store double %876, ptr %874, align 8, !tbaa !9
  br label %877

877:                                              ; preds = %857
  %878 = load i32, ptr %45, align 4, !tbaa !31
  %879 = add nsw i32 %878, 1
  store i32 %879, ptr %45, align 4, !tbaa !31
  br label %852, !llvm.loop !55

880:                                              ; preds = %856
  br label %912

881:                                              ; preds = %848
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #6
  store i32 0, ptr %46, align 4, !tbaa !31
  br label %882

882:                                              ; preds = %908, %881
  %883 = load i32, ptr %46, align 4, !tbaa !31
  %884 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %885 = icmp slt i32 %883, %884
  br i1 %885, label %887, label %886

886:                                              ; preds = %882
  store i32 71, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #6
  br label %911

887:                                              ; preds = %882
  %888 = load ptr, ptr %13, align 8, !tbaa !5
  %889 = load i32, ptr %46, align 4, !tbaa !31
  %890 = sext i32 %889 to i64
  %891 = getelementptr inbounds double, ptr %888, i64 %890
  %892 = load double, ptr %891, align 8, !tbaa !9
  %893 = fneg double %892
  %894 = load double, ptr %10, align 8, !tbaa !9
  %895 = load ptr, ptr %17, align 8, !tbaa !5
  %896 = load i32, ptr %46, align 4, !tbaa !31
  %897 = sext i32 %896 to i64
  %898 = getelementptr inbounds double, ptr %895, i64 %897
  %899 = load double, ptr %898, align 8, !tbaa !9
  %900 = call double @llvm.fmuladd.f64(double %894, double %899, double %893)
  %901 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %902 = load ptr, ptr %901, align 8, !tbaa !13
  %903 = load i32, ptr %46, align 4, !tbaa !31
  %904 = sext i32 %903 to i64
  %905 = getelementptr inbounds double, ptr %902, i64 %904
  %906 = load double, ptr %905, align 8, !tbaa !9
  %907 = fadd double %906, %900
  store double %907, ptr %905, align 8, !tbaa !9
  br label %908

908:                                              ; preds = %887
  %909 = load i32, ptr %46, align 4, !tbaa !31
  %910 = add nsw i32 %909, 1
  store i32 %910, ptr %46, align 4, !tbaa !31
  br label %882, !llvm.loop !56

911:                                              ; preds = %886
  br label %912

912:                                              ; preds = %911, %880
  br label %913

913:                                              ; preds = %912, %847
  br label %914

914:                                              ; preds = %913, %814
  br label %1131

915:                                              ; preds = %786
  %916 = load double, ptr %8, align 8, !tbaa !9
  %917 = fcmp oeq double %916, 0.000000e+00
  br i1 %917, label %918, label %1001

918:                                              ; preds = %915
  %919 = load double, ptr %10, align 8, !tbaa !9
  %920 = fcmp oeq double %919, 0.000000e+00
  br i1 %920, label %921, label %922

921:                                              ; preds = %918
  br label %1000

922:                                              ; preds = %918
  %923 = load double, ptr %10, align 8, !tbaa !9
  %924 = fcmp oeq double %923, 1.000000e+00
  br i1 %924, label %925, label %948

925:                                              ; preds = %922
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #6
  store i32 0, ptr %47, align 4, !tbaa !31
  br label %926

926:                                              ; preds = %944, %925
  %927 = load i32, ptr %47, align 4, !tbaa !31
  %928 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %929 = icmp slt i32 %927, %928
  br i1 %929, label %931, label %930

930:                                              ; preds = %926
  store i32 74, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  br label %947

931:                                              ; preds = %926
  %932 = load ptr, ptr %17, align 8, !tbaa !5
  %933 = load i32, ptr %47, align 4, !tbaa !31
  %934 = sext i32 %933 to i64
  %935 = getelementptr inbounds double, ptr %932, i64 %934
  %936 = load double, ptr %935, align 8, !tbaa !9
  %937 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %938 = load ptr, ptr %937, align 8, !tbaa !13
  %939 = load i32, ptr %47, align 4, !tbaa !31
  %940 = sext i32 %939 to i64
  %941 = getelementptr inbounds double, ptr %938, i64 %940
  %942 = load double, ptr %941, align 8, !tbaa !9
  %943 = fadd double %942, %936
  store double %943, ptr %941, align 8, !tbaa !9
  br label %944

944:                                              ; preds = %931
  %945 = load i32, ptr %47, align 4, !tbaa !31
  %946 = add nsw i32 %945, 1
  store i32 %946, ptr %47, align 4, !tbaa !31
  br label %926, !llvm.loop !57

947:                                              ; preds = %930
  br label %999

948:                                              ; preds = %922
  %949 = load double, ptr %10, align 8, !tbaa !9
  %950 = fcmp oeq double %949, -1.000000e+00
  br i1 %950, label %951, label %974

951:                                              ; preds = %948
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #6
  store i32 0, ptr %48, align 4, !tbaa !31
  br label %952

952:                                              ; preds = %970, %951
  %953 = load i32, ptr %48, align 4, !tbaa !31
  %954 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %955 = icmp slt i32 %953, %954
  br i1 %955, label %957, label %956

956:                                              ; preds = %952
  store i32 77, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  br label %973

957:                                              ; preds = %952
  %958 = load ptr, ptr %17, align 8, !tbaa !5
  %959 = load i32, ptr %48, align 4, !tbaa !31
  %960 = sext i32 %959 to i64
  %961 = getelementptr inbounds double, ptr %958, i64 %960
  %962 = load double, ptr %961, align 8, !tbaa !9
  %963 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %964 = load ptr, ptr %963, align 8, !tbaa !13
  %965 = load i32, ptr %48, align 4, !tbaa !31
  %966 = sext i32 %965 to i64
  %967 = getelementptr inbounds double, ptr %964, i64 %966
  %968 = load double, ptr %967, align 8, !tbaa !9
  %969 = fsub double %968, %962
  store double %969, ptr %967, align 8, !tbaa !9
  br label %970

970:                                              ; preds = %957
  %971 = load i32, ptr %48, align 4, !tbaa !31
  %972 = add nsw i32 %971, 1
  store i32 %972, ptr %48, align 4, !tbaa !31
  br label %952, !llvm.loop !58

973:                                              ; preds = %956
  br label %998

974:                                              ; preds = %948
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #6
  store i32 0, ptr %49, align 4, !tbaa !31
  br label %975

975:                                              ; preds = %994, %974
  %976 = load i32, ptr %49, align 4, !tbaa !31
  %977 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %978 = icmp slt i32 %976, %977
  br i1 %978, label %980, label %979

979:                                              ; preds = %975
  store i32 80, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #6
  br label %997

980:                                              ; preds = %975
  %981 = load double, ptr %10, align 8, !tbaa !9
  %982 = load ptr, ptr %17, align 8, !tbaa !5
  %983 = load i32, ptr %49, align 4, !tbaa !31
  %984 = sext i32 %983 to i64
  %985 = getelementptr inbounds double, ptr %982, i64 %984
  %986 = load double, ptr %985, align 8, !tbaa !9
  %987 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %988 = load ptr, ptr %987, align 8, !tbaa !13
  %989 = load i32, ptr %49, align 4, !tbaa !31
  %990 = sext i32 %989 to i64
  %991 = getelementptr inbounds double, ptr %988, i64 %990
  %992 = load double, ptr %991, align 8, !tbaa !9
  %993 = call double @llvm.fmuladd.f64(double %981, double %986, double %992)
  store double %993, ptr %991, align 8, !tbaa !9
  br label %994

994:                                              ; preds = %980
  %995 = load i32, ptr %49, align 4, !tbaa !31
  %996 = add nsw i32 %995, 1
  store i32 %996, ptr %49, align 4, !tbaa !31
  br label %975, !llvm.loop !59

997:                                              ; preds = %979
  br label %998

998:                                              ; preds = %997, %973
  br label %999

999:                                              ; preds = %998, %947
  br label %1000

1000:                                             ; preds = %999, %921
  br label %1130

1001:                                             ; preds = %915
  %1002 = load double, ptr %10, align 8, !tbaa !9
  %1003 = fcmp oeq double %1002, 0.000000e+00
  br i1 %1003, label %1004, label %1028

1004:                                             ; preds = %1001
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #6
  store i32 0, ptr %50, align 4, !tbaa !31
  br label %1005

1005:                                             ; preds = %1024, %1004
  %1006 = load i32, ptr %50, align 4, !tbaa !31
  %1007 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1008 = icmp slt i32 %1006, %1007
  br i1 %1008, label %1010, label %1009

1009:                                             ; preds = %1005
  store i32 83, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #6
  br label %1027

1010:                                             ; preds = %1005
  %1011 = load double, ptr %8, align 8, !tbaa !9
  %1012 = load ptr, ptr %13, align 8, !tbaa !5
  %1013 = load i32, ptr %50, align 4, !tbaa !31
  %1014 = sext i32 %1013 to i64
  %1015 = getelementptr inbounds double, ptr %1012, i64 %1014
  %1016 = load double, ptr %1015, align 8, !tbaa !9
  %1017 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1018 = load ptr, ptr %1017, align 8, !tbaa !13
  %1019 = load i32, ptr %50, align 4, !tbaa !31
  %1020 = sext i32 %1019 to i64
  %1021 = getelementptr inbounds double, ptr %1018, i64 %1020
  %1022 = load double, ptr %1021, align 8, !tbaa !9
  %1023 = call double @llvm.fmuladd.f64(double %1011, double %1016, double %1022)
  store double %1023, ptr %1021, align 8, !tbaa !9
  br label %1024

1024:                                             ; preds = %1010
  %1025 = load i32, ptr %50, align 4, !tbaa !31
  %1026 = add nsw i32 %1025, 1
  store i32 %1026, ptr %50, align 4, !tbaa !31
  br label %1005, !llvm.loop !60

1027:                                             ; preds = %1009
  br label %1129

1028:                                             ; preds = %1001
  %1029 = load double, ptr %10, align 8, !tbaa !9
  %1030 = fcmp oeq double %1029, 1.000000e+00
  br i1 %1030, label %1031, label %1061

1031:                                             ; preds = %1028
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #6
  store i32 0, ptr %51, align 4, !tbaa !31
  br label %1032

1032:                                             ; preds = %1057, %1031
  %1033 = load i32, ptr %51, align 4, !tbaa !31
  %1034 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1035 = icmp slt i32 %1033, %1034
  br i1 %1035, label %1037, label %1036

1036:                                             ; preds = %1032
  store i32 86, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  br label %1060

1037:                                             ; preds = %1032
  %1038 = load double, ptr %8, align 8, !tbaa !9
  %1039 = load ptr, ptr %13, align 8, !tbaa !5
  %1040 = load i32, ptr %51, align 4, !tbaa !31
  %1041 = sext i32 %1040 to i64
  %1042 = getelementptr inbounds double, ptr %1039, i64 %1041
  %1043 = load double, ptr %1042, align 8, !tbaa !9
  %1044 = load ptr, ptr %17, align 8, !tbaa !5
  %1045 = load i32, ptr %51, align 4, !tbaa !31
  %1046 = sext i32 %1045 to i64
  %1047 = getelementptr inbounds double, ptr %1044, i64 %1046
  %1048 = load double, ptr %1047, align 8, !tbaa !9
  %1049 = call double @llvm.fmuladd.f64(double %1038, double %1043, double %1048)
  %1050 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1051 = load ptr, ptr %1050, align 8, !tbaa !13
  %1052 = load i32, ptr %51, align 4, !tbaa !31
  %1053 = sext i32 %1052 to i64
  %1054 = getelementptr inbounds double, ptr %1051, i64 %1053
  %1055 = load double, ptr %1054, align 8, !tbaa !9
  %1056 = fadd double %1055, %1049
  store double %1056, ptr %1054, align 8, !tbaa !9
  br label %1057

1057:                                             ; preds = %1037
  %1058 = load i32, ptr %51, align 4, !tbaa !31
  %1059 = add nsw i32 %1058, 1
  store i32 %1059, ptr %51, align 4, !tbaa !31
  br label %1032, !llvm.loop !61

1060:                                             ; preds = %1036
  br label %1128

1061:                                             ; preds = %1028
  %1062 = load double, ptr %10, align 8, !tbaa !9
  %1063 = fcmp oeq double %1062, -1.000000e+00
  br i1 %1063, label %1064, label %1095

1064:                                             ; preds = %1061
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #6
  store i32 0, ptr %52, align 4, !tbaa !31
  br label %1065

1065:                                             ; preds = %1091, %1064
  %1066 = load i32, ptr %52, align 4, !tbaa !31
  %1067 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1068 = icmp slt i32 %1066, %1067
  br i1 %1068, label %1070, label %1069

1069:                                             ; preds = %1065
  store i32 89, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #6
  br label %1094

1070:                                             ; preds = %1065
  %1071 = load double, ptr %8, align 8, !tbaa !9
  %1072 = load ptr, ptr %13, align 8, !tbaa !5
  %1073 = load i32, ptr %52, align 4, !tbaa !31
  %1074 = sext i32 %1073 to i64
  %1075 = getelementptr inbounds double, ptr %1072, i64 %1074
  %1076 = load double, ptr %1075, align 8, !tbaa !9
  %1077 = load ptr, ptr %17, align 8, !tbaa !5
  %1078 = load i32, ptr %52, align 4, !tbaa !31
  %1079 = sext i32 %1078 to i64
  %1080 = getelementptr inbounds double, ptr %1077, i64 %1079
  %1081 = load double, ptr %1080, align 8, !tbaa !9
  %1082 = fneg double %1081
  %1083 = call double @llvm.fmuladd.f64(double %1071, double %1076, double %1082)
  %1084 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1085 = load ptr, ptr %1084, align 8, !tbaa !13
  %1086 = load i32, ptr %52, align 4, !tbaa !31
  %1087 = sext i32 %1086 to i64
  %1088 = getelementptr inbounds double, ptr %1085, i64 %1087
  %1089 = load double, ptr %1088, align 8, !tbaa !9
  %1090 = fadd double %1089, %1083
  store double %1090, ptr %1088, align 8, !tbaa !9
  br label %1091

1091:                                             ; preds = %1070
  %1092 = load i32, ptr %52, align 4, !tbaa !31
  %1093 = add nsw i32 %1092, 1
  store i32 %1093, ptr %52, align 4, !tbaa !31
  br label %1065, !llvm.loop !62

1094:                                             ; preds = %1069
  br label %1127

1095:                                             ; preds = %1061
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #6
  store i32 0, ptr %53, align 4, !tbaa !31
  br label %1096

1096:                                             ; preds = %1123, %1095
  %1097 = load i32, ptr %53, align 4, !tbaa !31
  %1098 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1099 = icmp slt i32 %1097, %1098
  br i1 %1099, label %1101, label %1100

1100:                                             ; preds = %1096
  store i32 92, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #6
  br label %1126

1101:                                             ; preds = %1096
  %1102 = load double, ptr %8, align 8, !tbaa !9
  %1103 = load ptr, ptr %13, align 8, !tbaa !5
  %1104 = load i32, ptr %53, align 4, !tbaa !31
  %1105 = sext i32 %1104 to i64
  %1106 = getelementptr inbounds double, ptr %1103, i64 %1105
  %1107 = load double, ptr %1106, align 8, !tbaa !9
  %1108 = load double, ptr %10, align 8, !tbaa !9
  %1109 = load ptr, ptr %17, align 8, !tbaa !5
  %1110 = load i32, ptr %53, align 4, !tbaa !31
  %1111 = sext i32 %1110 to i64
  %1112 = getelementptr inbounds double, ptr %1109, i64 %1111
  %1113 = load double, ptr %1112, align 8, !tbaa !9
  %1114 = fmul double %1108, %1113
  %1115 = call double @llvm.fmuladd.f64(double %1102, double %1107, double %1114)
  %1116 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1117 = load ptr, ptr %1116, align 8, !tbaa !13
  %1118 = load i32, ptr %53, align 4, !tbaa !31
  %1119 = sext i32 %1118 to i64
  %1120 = getelementptr inbounds double, ptr %1117, i64 %1119
  %1121 = load double, ptr %1120, align 8, !tbaa !9
  %1122 = fadd double %1121, %1115
  store double %1122, ptr %1120, align 8, !tbaa !9
  br label %1123

1123:                                             ; preds = %1101
  %1124 = load i32, ptr %53, align 4, !tbaa !31
  %1125 = add nsw i32 %1124, 1
  store i32 %1125, ptr %53, align 4, !tbaa !31
  br label %1096, !llvm.loop !63

1126:                                             ; preds = %1100
  br label %1127

1127:                                             ; preds = %1126, %1094
  br label %1128

1128:                                             ; preds = %1127, %1060
  br label %1129

1129:                                             ; preds = %1128, %1027
  br label %1130

1130:                                             ; preds = %1129, %1000
  br label %1131

1131:                                             ; preds = %1130, %914
  br label %1132

1132:                                             ; preds = %1131, %785
  br label %2291

1133:                                             ; preds = %657
  %1134 = load double, ptr %12, align 8, !tbaa !9
  %1135 = fcmp oeq double %1134, -1.000000e+00
  br i1 %1135, label %1136, label %1705

1136:                                             ; preds = %1133
  %1137 = load double, ptr %8, align 8, !tbaa !9
  %1138 = fcmp oeq double %1137, 1.000000e+00
  br i1 %1138, label %1139, label %1282

1139:                                             ; preds = %1136
  %1140 = load double, ptr %10, align 8, !tbaa !9
  %1141 = fcmp oeq double %1140, 0.000000e+00
  br i1 %1141, label %1142, label %1170

1142:                                             ; preds = %1139
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #6
  store i32 0, ptr %54, align 4, !tbaa !31
  br label %1143

1143:                                             ; preds = %1166, %1142
  %1144 = load i32, ptr %54, align 4, !tbaa !31
  %1145 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1146 = icmp slt i32 %1144, %1145
  br i1 %1146, label %1148, label %1147

1147:                                             ; preds = %1143
  store i32 95, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #6
  br label %1169

1148:                                             ; preds = %1143
  %1149 = load ptr, ptr %13, align 8, !tbaa !5
  %1150 = load i32, ptr %54, align 4, !tbaa !31
  %1151 = sext i32 %1150 to i64
  %1152 = getelementptr inbounds double, ptr %1149, i64 %1151
  %1153 = load double, ptr %1152, align 8, !tbaa !9
  %1154 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1155 = load ptr, ptr %1154, align 8, !tbaa !13
  %1156 = load i32, ptr %54, align 4, !tbaa !31
  %1157 = sext i32 %1156 to i64
  %1158 = getelementptr inbounds double, ptr %1155, i64 %1157
  %1159 = load double, ptr %1158, align 8, !tbaa !9
  %1160 = fsub double %1153, %1159
  %1161 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1162 = load ptr, ptr %1161, align 8, !tbaa !13
  %1163 = load i32, ptr %54, align 4, !tbaa !31
  %1164 = sext i32 %1163 to i64
  %1165 = getelementptr inbounds double, ptr %1162, i64 %1164
  store double %1160, ptr %1165, align 8, !tbaa !9
  br label %1166

1166:                                             ; preds = %1148
  %1167 = load i32, ptr %54, align 4, !tbaa !31
  %1168 = add nsw i32 %1167, 1
  store i32 %1168, ptr %54, align 4, !tbaa !31
  br label %1143, !llvm.loop !64

1169:                                             ; preds = %1147
  br label %1281

1170:                                             ; preds = %1139
  %1171 = load double, ptr %10, align 8, !tbaa !9
  %1172 = fcmp oeq double %1171, 1.000000e+00
  br i1 %1172, label %1173, label %1207

1173:                                             ; preds = %1170
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #6
  store i32 0, ptr %55, align 4, !tbaa !31
  br label %1174

1174:                                             ; preds = %1203, %1173
  %1175 = load i32, ptr %55, align 4, !tbaa !31
  %1176 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1177 = icmp slt i32 %1175, %1176
  br i1 %1177, label %1179, label %1178

1178:                                             ; preds = %1174
  store i32 98, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  br label %1206

1179:                                             ; preds = %1174
  %1180 = load ptr, ptr %13, align 8, !tbaa !5
  %1181 = load i32, ptr %55, align 4, !tbaa !31
  %1182 = sext i32 %1181 to i64
  %1183 = getelementptr inbounds double, ptr %1180, i64 %1182
  %1184 = load double, ptr %1183, align 8, !tbaa !9
  %1185 = load ptr, ptr %17, align 8, !tbaa !5
  %1186 = load i32, ptr %55, align 4, !tbaa !31
  %1187 = sext i32 %1186 to i64
  %1188 = getelementptr inbounds double, ptr %1185, i64 %1187
  %1189 = load double, ptr %1188, align 8, !tbaa !9
  %1190 = fadd double %1184, %1189
  %1191 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1192 = load ptr, ptr %1191, align 8, !tbaa !13
  %1193 = load i32, ptr %55, align 4, !tbaa !31
  %1194 = sext i32 %1193 to i64
  %1195 = getelementptr inbounds double, ptr %1192, i64 %1194
  %1196 = load double, ptr %1195, align 8, !tbaa !9
  %1197 = fsub double %1190, %1196
  %1198 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1199 = load ptr, ptr %1198, align 8, !tbaa !13
  %1200 = load i32, ptr %55, align 4, !tbaa !31
  %1201 = sext i32 %1200 to i64
  %1202 = getelementptr inbounds double, ptr %1199, i64 %1201
  store double %1197, ptr %1202, align 8, !tbaa !9
  br label %1203

1203:                                             ; preds = %1179
  %1204 = load i32, ptr %55, align 4, !tbaa !31
  %1205 = add nsw i32 %1204, 1
  store i32 %1205, ptr %55, align 4, !tbaa !31
  br label %1174, !llvm.loop !65

1206:                                             ; preds = %1178
  br label %1280

1207:                                             ; preds = %1170
  %1208 = load double, ptr %10, align 8, !tbaa !9
  %1209 = fcmp oeq double %1208, -1.000000e+00
  br i1 %1209, label %1210, label %1244

1210:                                             ; preds = %1207
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #6
  store i32 0, ptr %56, align 4, !tbaa !31
  br label %1211

1211:                                             ; preds = %1240, %1210
  %1212 = load i32, ptr %56, align 4, !tbaa !31
  %1213 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1214 = icmp slt i32 %1212, %1213
  br i1 %1214, label %1216, label %1215

1215:                                             ; preds = %1211
  store i32 101, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #6
  br label %1243

1216:                                             ; preds = %1211
  %1217 = load ptr, ptr %13, align 8, !tbaa !5
  %1218 = load i32, ptr %56, align 4, !tbaa !31
  %1219 = sext i32 %1218 to i64
  %1220 = getelementptr inbounds double, ptr %1217, i64 %1219
  %1221 = load double, ptr %1220, align 8, !tbaa !9
  %1222 = load ptr, ptr %17, align 8, !tbaa !5
  %1223 = load i32, ptr %56, align 4, !tbaa !31
  %1224 = sext i32 %1223 to i64
  %1225 = getelementptr inbounds double, ptr %1222, i64 %1224
  %1226 = load double, ptr %1225, align 8, !tbaa !9
  %1227 = fsub double %1221, %1226
  %1228 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1229 = load ptr, ptr %1228, align 8, !tbaa !13
  %1230 = load i32, ptr %56, align 4, !tbaa !31
  %1231 = sext i32 %1230 to i64
  %1232 = getelementptr inbounds double, ptr %1229, i64 %1231
  %1233 = load double, ptr %1232, align 8, !tbaa !9
  %1234 = fsub double %1227, %1233
  %1235 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1236 = load ptr, ptr %1235, align 8, !tbaa !13
  %1237 = load i32, ptr %56, align 4, !tbaa !31
  %1238 = sext i32 %1237 to i64
  %1239 = getelementptr inbounds double, ptr %1236, i64 %1238
  store double %1234, ptr %1239, align 8, !tbaa !9
  br label %1240

1240:                                             ; preds = %1216
  %1241 = load i32, ptr %56, align 4, !tbaa !31
  %1242 = add nsw i32 %1241, 1
  store i32 %1242, ptr %56, align 4, !tbaa !31
  br label %1211, !llvm.loop !66

1243:                                             ; preds = %1215
  br label %1279

1244:                                             ; preds = %1207
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #6
  store i32 0, ptr %57, align 4, !tbaa !31
  br label %1245

1245:                                             ; preds = %1275, %1244
  %1246 = load i32, ptr %57, align 4, !tbaa !31
  %1247 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1248 = icmp slt i32 %1246, %1247
  br i1 %1248, label %1250, label %1249

1249:                                             ; preds = %1245
  store i32 104, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #6
  br label %1278

1250:                                             ; preds = %1245
  %1251 = load ptr, ptr %13, align 8, !tbaa !5
  %1252 = load i32, ptr %57, align 4, !tbaa !31
  %1253 = sext i32 %1252 to i64
  %1254 = getelementptr inbounds double, ptr %1251, i64 %1253
  %1255 = load double, ptr %1254, align 8, !tbaa !9
  %1256 = load double, ptr %10, align 8, !tbaa !9
  %1257 = load ptr, ptr %17, align 8, !tbaa !5
  %1258 = load i32, ptr %57, align 4, !tbaa !31
  %1259 = sext i32 %1258 to i64
  %1260 = getelementptr inbounds double, ptr %1257, i64 %1259
  %1261 = load double, ptr %1260, align 8, !tbaa !9
  %1262 = call double @llvm.fmuladd.f64(double %1256, double %1261, double %1255)
  %1263 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1264 = load ptr, ptr %1263, align 8, !tbaa !13
  %1265 = load i32, ptr %57, align 4, !tbaa !31
  %1266 = sext i32 %1265 to i64
  %1267 = getelementptr inbounds double, ptr %1264, i64 %1266
  %1268 = load double, ptr %1267, align 8, !tbaa !9
  %1269 = fsub double %1262, %1268
  %1270 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1271 = load ptr, ptr %1270, align 8, !tbaa !13
  %1272 = load i32, ptr %57, align 4, !tbaa !31
  %1273 = sext i32 %1272 to i64
  %1274 = getelementptr inbounds double, ptr %1271, i64 %1273
  store double %1269, ptr %1274, align 8, !tbaa !9
  br label %1275

1275:                                             ; preds = %1250
  %1276 = load i32, ptr %57, align 4, !tbaa !31
  %1277 = add nsw i32 %1276, 1
  store i32 %1277, ptr %57, align 4, !tbaa !31
  br label %1245, !llvm.loop !67

1278:                                             ; preds = %1249
  br label %1279

1279:                                             ; preds = %1278, %1243
  br label %1280

1280:                                             ; preds = %1279, %1206
  br label %1281

1281:                                             ; preds = %1280, %1169
  br label %1704

1282:                                             ; preds = %1136
  %1283 = load double, ptr %8, align 8, !tbaa !9
  %1284 = fcmp oeq double %1283, -1.000000e+00
  br i1 %1284, label %1285, label %1432

1285:                                             ; preds = %1282
  %1286 = load double, ptr %10, align 8, !tbaa !9
  %1287 = fcmp oeq double %1286, 0.000000e+00
  br i1 %1287, label %1288, label %1317

1288:                                             ; preds = %1285
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #6
  store i32 0, ptr %58, align 4, !tbaa !31
  br label %1289

1289:                                             ; preds = %1313, %1288
  %1290 = load i32, ptr %58, align 4, !tbaa !31
  %1291 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1292 = icmp slt i32 %1290, %1291
  br i1 %1292, label %1294, label %1293

1293:                                             ; preds = %1289
  store i32 107, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #6
  br label %1316

1294:                                             ; preds = %1289
  %1295 = load ptr, ptr %13, align 8, !tbaa !5
  %1296 = load i32, ptr %58, align 4, !tbaa !31
  %1297 = sext i32 %1296 to i64
  %1298 = getelementptr inbounds double, ptr %1295, i64 %1297
  %1299 = load double, ptr %1298, align 8, !tbaa !9
  %1300 = fneg double %1299
  %1301 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1302 = load ptr, ptr %1301, align 8, !tbaa !13
  %1303 = load i32, ptr %58, align 4, !tbaa !31
  %1304 = sext i32 %1303 to i64
  %1305 = getelementptr inbounds double, ptr %1302, i64 %1304
  %1306 = load double, ptr %1305, align 8, !tbaa !9
  %1307 = fsub double %1300, %1306
  %1308 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1309 = load ptr, ptr %1308, align 8, !tbaa !13
  %1310 = load i32, ptr %58, align 4, !tbaa !31
  %1311 = sext i32 %1310 to i64
  %1312 = getelementptr inbounds double, ptr %1309, i64 %1311
  store double %1307, ptr %1312, align 8, !tbaa !9
  br label %1313

1313:                                             ; preds = %1294
  %1314 = load i32, ptr %58, align 4, !tbaa !31
  %1315 = add nsw i32 %1314, 1
  store i32 %1315, ptr %58, align 4, !tbaa !31
  br label %1289, !llvm.loop !68

1316:                                             ; preds = %1293
  br label %1431

1317:                                             ; preds = %1285
  %1318 = load double, ptr %10, align 8, !tbaa !9
  %1319 = fcmp oeq double %1318, 1.000000e+00
  br i1 %1319, label %1320, label %1355

1320:                                             ; preds = %1317
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #6
  store i32 0, ptr %59, align 4, !tbaa !31
  br label %1321

1321:                                             ; preds = %1351, %1320
  %1322 = load i32, ptr %59, align 4, !tbaa !31
  %1323 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1324 = icmp slt i32 %1322, %1323
  br i1 %1324, label %1326, label %1325

1325:                                             ; preds = %1321
  store i32 110, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #6
  br label %1354

1326:                                             ; preds = %1321
  %1327 = load ptr, ptr %13, align 8, !tbaa !5
  %1328 = load i32, ptr %59, align 4, !tbaa !31
  %1329 = sext i32 %1328 to i64
  %1330 = getelementptr inbounds double, ptr %1327, i64 %1329
  %1331 = load double, ptr %1330, align 8, !tbaa !9
  %1332 = fneg double %1331
  %1333 = load ptr, ptr %17, align 8, !tbaa !5
  %1334 = load i32, ptr %59, align 4, !tbaa !31
  %1335 = sext i32 %1334 to i64
  %1336 = getelementptr inbounds double, ptr %1333, i64 %1335
  %1337 = load double, ptr %1336, align 8, !tbaa !9
  %1338 = fadd double %1332, %1337
  %1339 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1340 = load ptr, ptr %1339, align 8, !tbaa !13
  %1341 = load i32, ptr %59, align 4, !tbaa !31
  %1342 = sext i32 %1341 to i64
  %1343 = getelementptr inbounds double, ptr %1340, i64 %1342
  %1344 = load double, ptr %1343, align 8, !tbaa !9
  %1345 = fsub double %1338, %1344
  %1346 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1347 = load ptr, ptr %1346, align 8, !tbaa !13
  %1348 = load i32, ptr %59, align 4, !tbaa !31
  %1349 = sext i32 %1348 to i64
  %1350 = getelementptr inbounds double, ptr %1347, i64 %1349
  store double %1345, ptr %1350, align 8, !tbaa !9
  br label %1351

1351:                                             ; preds = %1326
  %1352 = load i32, ptr %59, align 4, !tbaa !31
  %1353 = add nsw i32 %1352, 1
  store i32 %1353, ptr %59, align 4, !tbaa !31
  br label %1321, !llvm.loop !69

1354:                                             ; preds = %1325
  br label %1430

1355:                                             ; preds = %1317
  %1356 = load double, ptr %10, align 8, !tbaa !9
  %1357 = fcmp oeq double %1356, -1.000000e+00
  br i1 %1357, label %1358, label %1393

1358:                                             ; preds = %1355
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #6
  store i32 0, ptr %60, align 4, !tbaa !31
  br label %1359

1359:                                             ; preds = %1389, %1358
  %1360 = load i32, ptr %60, align 4, !tbaa !31
  %1361 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1362 = icmp slt i32 %1360, %1361
  br i1 %1362, label %1364, label %1363

1363:                                             ; preds = %1359
  store i32 113, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #6
  br label %1392

1364:                                             ; preds = %1359
  %1365 = load ptr, ptr %13, align 8, !tbaa !5
  %1366 = load i32, ptr %60, align 4, !tbaa !31
  %1367 = sext i32 %1366 to i64
  %1368 = getelementptr inbounds double, ptr %1365, i64 %1367
  %1369 = load double, ptr %1368, align 8, !tbaa !9
  %1370 = fneg double %1369
  %1371 = load ptr, ptr %17, align 8, !tbaa !5
  %1372 = load i32, ptr %60, align 4, !tbaa !31
  %1373 = sext i32 %1372 to i64
  %1374 = getelementptr inbounds double, ptr %1371, i64 %1373
  %1375 = load double, ptr %1374, align 8, !tbaa !9
  %1376 = fsub double %1370, %1375
  %1377 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1378 = load ptr, ptr %1377, align 8, !tbaa !13
  %1379 = load i32, ptr %60, align 4, !tbaa !31
  %1380 = sext i32 %1379 to i64
  %1381 = getelementptr inbounds double, ptr %1378, i64 %1380
  %1382 = load double, ptr %1381, align 8, !tbaa !9
  %1383 = fsub double %1376, %1382
  %1384 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1385 = load ptr, ptr %1384, align 8, !tbaa !13
  %1386 = load i32, ptr %60, align 4, !tbaa !31
  %1387 = sext i32 %1386 to i64
  %1388 = getelementptr inbounds double, ptr %1385, i64 %1387
  store double %1383, ptr %1388, align 8, !tbaa !9
  br label %1389

1389:                                             ; preds = %1364
  %1390 = load i32, ptr %60, align 4, !tbaa !31
  %1391 = add nsw i32 %1390, 1
  store i32 %1391, ptr %60, align 4, !tbaa !31
  br label %1359, !llvm.loop !70

1392:                                             ; preds = %1363
  br label %1429

1393:                                             ; preds = %1355
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #6
  store i32 0, ptr %61, align 4, !tbaa !31
  br label %1394

1394:                                             ; preds = %1425, %1393
  %1395 = load i32, ptr %61, align 4, !tbaa !31
  %1396 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1397 = icmp slt i32 %1395, %1396
  br i1 %1397, label %1399, label %1398

1398:                                             ; preds = %1394
  store i32 116, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #6
  br label %1428

1399:                                             ; preds = %1394
  %1400 = load ptr, ptr %13, align 8, !tbaa !5
  %1401 = load i32, ptr %61, align 4, !tbaa !31
  %1402 = sext i32 %1401 to i64
  %1403 = getelementptr inbounds double, ptr %1400, i64 %1402
  %1404 = load double, ptr %1403, align 8, !tbaa !9
  %1405 = fneg double %1404
  %1406 = load double, ptr %10, align 8, !tbaa !9
  %1407 = load ptr, ptr %17, align 8, !tbaa !5
  %1408 = load i32, ptr %61, align 4, !tbaa !31
  %1409 = sext i32 %1408 to i64
  %1410 = getelementptr inbounds double, ptr %1407, i64 %1409
  %1411 = load double, ptr %1410, align 8, !tbaa !9
  %1412 = call double @llvm.fmuladd.f64(double %1406, double %1411, double %1405)
  %1413 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1414 = load ptr, ptr %1413, align 8, !tbaa !13
  %1415 = load i32, ptr %61, align 4, !tbaa !31
  %1416 = sext i32 %1415 to i64
  %1417 = getelementptr inbounds double, ptr %1414, i64 %1416
  %1418 = load double, ptr %1417, align 8, !tbaa !9
  %1419 = fsub double %1412, %1418
  %1420 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1421 = load ptr, ptr %1420, align 8, !tbaa !13
  %1422 = load i32, ptr %61, align 4, !tbaa !31
  %1423 = sext i32 %1422 to i64
  %1424 = getelementptr inbounds double, ptr %1421, i64 %1423
  store double %1419, ptr %1424, align 8, !tbaa !9
  br label %1425

1425:                                             ; preds = %1399
  %1426 = load i32, ptr %61, align 4, !tbaa !31
  %1427 = add nsw i32 %1426, 1
  store i32 %1427, ptr %61, align 4, !tbaa !31
  br label %1394, !llvm.loop !71

1428:                                             ; preds = %1398
  br label %1429

1429:                                             ; preds = %1428, %1392
  br label %1430

1430:                                             ; preds = %1429, %1354
  br label %1431

1431:                                             ; preds = %1430, %1316
  br label %1703

1432:                                             ; preds = %1282
  %1433 = load double, ptr %8, align 8, !tbaa !9
  %1434 = fcmp oeq double %1433, 0.000000e+00
  br i1 %1434, label %1435, label %1552

1435:                                             ; preds = %1432
  %1436 = load double, ptr %10, align 8, !tbaa !9
  %1437 = fcmp oeq double %1436, 0.000000e+00
  br i1 %1437, label %1438, label %1456

1438:                                             ; preds = %1435
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #6
  store i32 0, ptr %62, align 4, !tbaa !31
  br label %1439

1439:                                             ; preds = %1452, %1438
  %1440 = load i32, ptr %62, align 4, !tbaa !31
  %1441 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1442 = icmp slt i32 %1440, %1441
  br i1 %1442, label %1444, label %1443

1443:                                             ; preds = %1439
  store i32 119, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #6
  br label %1455

1444:                                             ; preds = %1439
  %1445 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1446 = load ptr, ptr %1445, align 8, !tbaa !13
  %1447 = load i32, ptr %62, align 4, !tbaa !31
  %1448 = sext i32 %1447 to i64
  %1449 = getelementptr inbounds double, ptr %1446, i64 %1448
  %1450 = load double, ptr %1449, align 8, !tbaa !9
  %1451 = fmul double %1450, -1.000000e+00
  store double %1451, ptr %1449, align 8, !tbaa !9
  br label %1452

1452:                                             ; preds = %1444
  %1453 = load i32, ptr %62, align 4, !tbaa !31
  %1454 = add nsw i32 %1453, 1
  store i32 %1454, ptr %62, align 4, !tbaa !31
  br label %1439, !llvm.loop !72

1455:                                             ; preds = %1443
  br label %1551

1456:                                             ; preds = %1435
  %1457 = load double, ptr %10, align 8, !tbaa !9
  %1458 = fcmp oeq double %1457, 1.000000e+00
  br i1 %1458, label %1459, label %1487

1459:                                             ; preds = %1456
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #6
  store i32 0, ptr %63, align 4, !tbaa !31
  br label %1460

1460:                                             ; preds = %1483, %1459
  %1461 = load i32, ptr %63, align 4, !tbaa !31
  %1462 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1463 = icmp slt i32 %1461, %1462
  br i1 %1463, label %1465, label %1464

1464:                                             ; preds = %1460
  store i32 122, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #6
  br label %1486

1465:                                             ; preds = %1460
  %1466 = load ptr, ptr %17, align 8, !tbaa !5
  %1467 = load i32, ptr %63, align 4, !tbaa !31
  %1468 = sext i32 %1467 to i64
  %1469 = getelementptr inbounds double, ptr %1466, i64 %1468
  %1470 = load double, ptr %1469, align 8, !tbaa !9
  %1471 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1472 = load ptr, ptr %1471, align 8, !tbaa !13
  %1473 = load i32, ptr %63, align 4, !tbaa !31
  %1474 = sext i32 %1473 to i64
  %1475 = getelementptr inbounds double, ptr %1472, i64 %1474
  %1476 = load double, ptr %1475, align 8, !tbaa !9
  %1477 = fsub double %1470, %1476
  %1478 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1479 = load ptr, ptr %1478, align 8, !tbaa !13
  %1480 = load i32, ptr %63, align 4, !tbaa !31
  %1481 = sext i32 %1480 to i64
  %1482 = getelementptr inbounds double, ptr %1479, i64 %1481
  store double %1477, ptr %1482, align 8, !tbaa !9
  br label %1483

1483:                                             ; preds = %1465
  %1484 = load i32, ptr %63, align 4, !tbaa !31
  %1485 = add nsw i32 %1484, 1
  store i32 %1485, ptr %63, align 4, !tbaa !31
  br label %1460, !llvm.loop !73

1486:                                             ; preds = %1464
  br label %1550

1487:                                             ; preds = %1456
  %1488 = load double, ptr %10, align 8, !tbaa !9
  %1489 = fcmp oeq double %1488, -1.000000e+00
  br i1 %1489, label %1490, label %1519

1490:                                             ; preds = %1487
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #6
  store i32 0, ptr %64, align 4, !tbaa !31
  br label %1491

1491:                                             ; preds = %1515, %1490
  %1492 = load i32, ptr %64, align 4, !tbaa !31
  %1493 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1494 = icmp slt i32 %1492, %1493
  br i1 %1494, label %1496, label %1495

1495:                                             ; preds = %1491
  store i32 125, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #6
  br label %1518

1496:                                             ; preds = %1491
  %1497 = load ptr, ptr %17, align 8, !tbaa !5
  %1498 = load i32, ptr %64, align 4, !tbaa !31
  %1499 = sext i32 %1498 to i64
  %1500 = getelementptr inbounds double, ptr %1497, i64 %1499
  %1501 = load double, ptr %1500, align 8, !tbaa !9
  %1502 = fneg double %1501
  %1503 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1504 = load ptr, ptr %1503, align 8, !tbaa !13
  %1505 = load i32, ptr %64, align 4, !tbaa !31
  %1506 = sext i32 %1505 to i64
  %1507 = getelementptr inbounds double, ptr %1504, i64 %1506
  %1508 = load double, ptr %1507, align 8, !tbaa !9
  %1509 = fsub double %1502, %1508
  %1510 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1511 = load ptr, ptr %1510, align 8, !tbaa !13
  %1512 = load i32, ptr %64, align 4, !tbaa !31
  %1513 = sext i32 %1512 to i64
  %1514 = getelementptr inbounds double, ptr %1511, i64 %1513
  store double %1509, ptr %1514, align 8, !tbaa !9
  br label %1515

1515:                                             ; preds = %1496
  %1516 = load i32, ptr %64, align 4, !tbaa !31
  %1517 = add nsw i32 %1516, 1
  store i32 %1517, ptr %64, align 4, !tbaa !31
  br label %1491, !llvm.loop !74

1518:                                             ; preds = %1495
  br label %1549

1519:                                             ; preds = %1487
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #6
  store i32 0, ptr %65, align 4, !tbaa !31
  br label %1520

1520:                                             ; preds = %1545, %1519
  %1521 = load i32, ptr %65, align 4, !tbaa !31
  %1522 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1523 = icmp slt i32 %1521, %1522
  br i1 %1523, label %1525, label %1524

1524:                                             ; preds = %1520
  store i32 128, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #6
  br label %1548

1525:                                             ; preds = %1520
  %1526 = load double, ptr %10, align 8, !tbaa !9
  %1527 = load ptr, ptr %17, align 8, !tbaa !5
  %1528 = load i32, ptr %65, align 4, !tbaa !31
  %1529 = sext i32 %1528 to i64
  %1530 = getelementptr inbounds double, ptr %1527, i64 %1529
  %1531 = load double, ptr %1530, align 8, !tbaa !9
  %1532 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1533 = load ptr, ptr %1532, align 8, !tbaa !13
  %1534 = load i32, ptr %65, align 4, !tbaa !31
  %1535 = sext i32 %1534 to i64
  %1536 = getelementptr inbounds double, ptr %1533, i64 %1535
  %1537 = load double, ptr %1536, align 8, !tbaa !9
  %1538 = fneg double %1537
  %1539 = call double @llvm.fmuladd.f64(double %1526, double %1531, double %1538)
  %1540 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1541 = load ptr, ptr %1540, align 8, !tbaa !13
  %1542 = load i32, ptr %65, align 4, !tbaa !31
  %1543 = sext i32 %1542 to i64
  %1544 = getelementptr inbounds double, ptr %1541, i64 %1543
  store double %1539, ptr %1544, align 8, !tbaa !9
  br label %1545

1545:                                             ; preds = %1525
  %1546 = load i32, ptr %65, align 4, !tbaa !31
  %1547 = add nsw i32 %1546, 1
  store i32 %1547, ptr %65, align 4, !tbaa !31
  br label %1520, !llvm.loop !75

1548:                                             ; preds = %1524
  br label %1549

1549:                                             ; preds = %1548, %1518
  br label %1550

1550:                                             ; preds = %1549, %1486
  br label %1551

1551:                                             ; preds = %1550, %1455
  br label %1702

1552:                                             ; preds = %1432
  %1553 = load double, ptr %10, align 8, !tbaa !9
  %1554 = fcmp oeq double %1553, 0.000000e+00
  br i1 %1554, label %1555, label %1585

1555:                                             ; preds = %1552
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #6
  store i32 0, ptr %66, align 4, !tbaa !31
  br label %1556

1556:                                             ; preds = %1581, %1555
  %1557 = load i32, ptr %66, align 4, !tbaa !31
  %1558 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1559 = icmp slt i32 %1557, %1558
  br i1 %1559, label %1561, label %1560

1560:                                             ; preds = %1556
  store i32 131, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #6
  br label %1584

1561:                                             ; preds = %1556
  %1562 = load double, ptr %8, align 8, !tbaa !9
  %1563 = load ptr, ptr %13, align 8, !tbaa !5
  %1564 = load i32, ptr %66, align 4, !tbaa !31
  %1565 = sext i32 %1564 to i64
  %1566 = getelementptr inbounds double, ptr %1563, i64 %1565
  %1567 = load double, ptr %1566, align 8, !tbaa !9
  %1568 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1569 = load ptr, ptr %1568, align 8, !tbaa !13
  %1570 = load i32, ptr %66, align 4, !tbaa !31
  %1571 = sext i32 %1570 to i64
  %1572 = getelementptr inbounds double, ptr %1569, i64 %1571
  %1573 = load double, ptr %1572, align 8, !tbaa !9
  %1574 = fneg double %1573
  %1575 = call double @llvm.fmuladd.f64(double %1562, double %1567, double %1574)
  %1576 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1577 = load ptr, ptr %1576, align 8, !tbaa !13
  %1578 = load i32, ptr %66, align 4, !tbaa !31
  %1579 = sext i32 %1578 to i64
  %1580 = getelementptr inbounds double, ptr %1577, i64 %1579
  store double %1575, ptr %1580, align 8, !tbaa !9
  br label %1581

1581:                                             ; preds = %1561
  %1582 = load i32, ptr %66, align 4, !tbaa !31
  %1583 = add nsw i32 %1582, 1
  store i32 %1583, ptr %66, align 4, !tbaa !31
  br label %1556, !llvm.loop !76

1584:                                             ; preds = %1560
  br label %1701

1585:                                             ; preds = %1552
  %1586 = load double, ptr %10, align 8, !tbaa !9
  %1587 = fcmp oeq double %1586, 1.000000e+00
  br i1 %1587, label %1588, label %1623

1588:                                             ; preds = %1585
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #6
  store i32 0, ptr %67, align 4, !tbaa !31
  br label %1589

1589:                                             ; preds = %1619, %1588
  %1590 = load i32, ptr %67, align 4, !tbaa !31
  %1591 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1592 = icmp slt i32 %1590, %1591
  br i1 %1592, label %1594, label %1593

1593:                                             ; preds = %1589
  store i32 134, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #6
  br label %1622

1594:                                             ; preds = %1589
  %1595 = load double, ptr %8, align 8, !tbaa !9
  %1596 = load ptr, ptr %13, align 8, !tbaa !5
  %1597 = load i32, ptr %67, align 4, !tbaa !31
  %1598 = sext i32 %1597 to i64
  %1599 = getelementptr inbounds double, ptr %1596, i64 %1598
  %1600 = load double, ptr %1599, align 8, !tbaa !9
  %1601 = load ptr, ptr %17, align 8, !tbaa !5
  %1602 = load i32, ptr %67, align 4, !tbaa !31
  %1603 = sext i32 %1602 to i64
  %1604 = getelementptr inbounds double, ptr %1601, i64 %1603
  %1605 = load double, ptr %1604, align 8, !tbaa !9
  %1606 = call double @llvm.fmuladd.f64(double %1595, double %1600, double %1605)
  %1607 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1608 = load ptr, ptr %1607, align 8, !tbaa !13
  %1609 = load i32, ptr %67, align 4, !tbaa !31
  %1610 = sext i32 %1609 to i64
  %1611 = getelementptr inbounds double, ptr %1608, i64 %1610
  %1612 = load double, ptr %1611, align 8, !tbaa !9
  %1613 = fsub double %1606, %1612
  %1614 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1615 = load ptr, ptr %1614, align 8, !tbaa !13
  %1616 = load i32, ptr %67, align 4, !tbaa !31
  %1617 = sext i32 %1616 to i64
  %1618 = getelementptr inbounds double, ptr %1615, i64 %1617
  store double %1613, ptr %1618, align 8, !tbaa !9
  br label %1619

1619:                                             ; preds = %1594
  %1620 = load i32, ptr %67, align 4, !tbaa !31
  %1621 = add nsw i32 %1620, 1
  store i32 %1621, ptr %67, align 4, !tbaa !31
  br label %1589, !llvm.loop !77

1622:                                             ; preds = %1593
  br label %1700

1623:                                             ; preds = %1585
  %1624 = load double, ptr %10, align 8, !tbaa !9
  %1625 = fcmp oeq double %1624, -1.000000e+00
  br i1 %1625, label %1626, label %1662

1626:                                             ; preds = %1623
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #6
  store i32 0, ptr %68, align 4, !tbaa !31
  br label %1627

1627:                                             ; preds = %1658, %1626
  %1628 = load i32, ptr %68, align 4, !tbaa !31
  %1629 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1630 = icmp slt i32 %1628, %1629
  br i1 %1630, label %1632, label %1631

1631:                                             ; preds = %1627
  store i32 137, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #6
  br label %1661

1632:                                             ; preds = %1627
  %1633 = load double, ptr %8, align 8, !tbaa !9
  %1634 = load ptr, ptr %13, align 8, !tbaa !5
  %1635 = load i32, ptr %68, align 4, !tbaa !31
  %1636 = sext i32 %1635 to i64
  %1637 = getelementptr inbounds double, ptr %1634, i64 %1636
  %1638 = load double, ptr %1637, align 8, !tbaa !9
  %1639 = load ptr, ptr %17, align 8, !tbaa !5
  %1640 = load i32, ptr %68, align 4, !tbaa !31
  %1641 = sext i32 %1640 to i64
  %1642 = getelementptr inbounds double, ptr %1639, i64 %1641
  %1643 = load double, ptr %1642, align 8, !tbaa !9
  %1644 = fneg double %1643
  %1645 = call double @llvm.fmuladd.f64(double %1633, double %1638, double %1644)
  %1646 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1647 = load ptr, ptr %1646, align 8, !tbaa !13
  %1648 = load i32, ptr %68, align 4, !tbaa !31
  %1649 = sext i32 %1648 to i64
  %1650 = getelementptr inbounds double, ptr %1647, i64 %1649
  %1651 = load double, ptr %1650, align 8, !tbaa !9
  %1652 = fsub double %1645, %1651
  %1653 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1654 = load ptr, ptr %1653, align 8, !tbaa !13
  %1655 = load i32, ptr %68, align 4, !tbaa !31
  %1656 = sext i32 %1655 to i64
  %1657 = getelementptr inbounds double, ptr %1654, i64 %1656
  store double %1652, ptr %1657, align 8, !tbaa !9
  br label %1658

1658:                                             ; preds = %1632
  %1659 = load i32, ptr %68, align 4, !tbaa !31
  %1660 = add nsw i32 %1659, 1
  store i32 %1660, ptr %68, align 4, !tbaa !31
  br label %1627, !llvm.loop !78

1661:                                             ; preds = %1631
  br label %1699

1662:                                             ; preds = %1623
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #6
  store i32 0, ptr %69, align 4, !tbaa !31
  br label %1663

1663:                                             ; preds = %1695, %1662
  %1664 = load i32, ptr %69, align 4, !tbaa !31
  %1665 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1666 = icmp slt i32 %1664, %1665
  br i1 %1666, label %1668, label %1667

1667:                                             ; preds = %1663
  store i32 140, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #6
  br label %1698

1668:                                             ; preds = %1663
  %1669 = load double, ptr %8, align 8, !tbaa !9
  %1670 = load ptr, ptr %13, align 8, !tbaa !5
  %1671 = load i32, ptr %69, align 4, !tbaa !31
  %1672 = sext i32 %1671 to i64
  %1673 = getelementptr inbounds double, ptr %1670, i64 %1672
  %1674 = load double, ptr %1673, align 8, !tbaa !9
  %1675 = load double, ptr %10, align 8, !tbaa !9
  %1676 = load ptr, ptr %17, align 8, !tbaa !5
  %1677 = load i32, ptr %69, align 4, !tbaa !31
  %1678 = sext i32 %1677 to i64
  %1679 = getelementptr inbounds double, ptr %1676, i64 %1678
  %1680 = load double, ptr %1679, align 8, !tbaa !9
  %1681 = fmul double %1675, %1680
  %1682 = call double @llvm.fmuladd.f64(double %1669, double %1674, double %1681)
  %1683 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1684 = load ptr, ptr %1683, align 8, !tbaa !13
  %1685 = load i32, ptr %69, align 4, !tbaa !31
  %1686 = sext i32 %1685 to i64
  %1687 = getelementptr inbounds double, ptr %1684, i64 %1686
  %1688 = load double, ptr %1687, align 8, !tbaa !9
  %1689 = fsub double %1682, %1688
  %1690 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1691 = load ptr, ptr %1690, align 8, !tbaa !13
  %1692 = load i32, ptr %69, align 4, !tbaa !31
  %1693 = sext i32 %1692 to i64
  %1694 = getelementptr inbounds double, ptr %1691, i64 %1693
  store double %1689, ptr %1694, align 8, !tbaa !9
  br label %1695

1695:                                             ; preds = %1668
  %1696 = load i32, ptr %69, align 4, !tbaa !31
  %1697 = add nsw i32 %1696, 1
  store i32 %1697, ptr %69, align 4, !tbaa !31
  br label %1663, !llvm.loop !79

1698:                                             ; preds = %1667
  br label %1699

1699:                                             ; preds = %1698, %1661
  br label %1700

1700:                                             ; preds = %1699, %1622
  br label %1701

1701:                                             ; preds = %1700, %1584
  br label %1702

1702:                                             ; preds = %1701, %1551
  br label %1703

1703:                                             ; preds = %1702, %1431
  br label %1704

1704:                                             ; preds = %1703, %1281
  br label %2290

1705:                                             ; preds = %1133
  %1706 = load double, ptr %8, align 8, !tbaa !9
  %1707 = fcmp oeq double %1706, 1.000000e+00
  br i1 %1707, label %1708, label %1855

1708:                                             ; preds = %1705
  %1709 = load double, ptr %10, align 8, !tbaa !9
  %1710 = fcmp oeq double %1709, 0.000000e+00
  br i1 %1710, label %1711, label %1740

1711:                                             ; preds = %1708
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #6
  store i32 0, ptr %70, align 4, !tbaa !31
  br label %1712

1712:                                             ; preds = %1736, %1711
  %1713 = load i32, ptr %70, align 4, !tbaa !31
  %1714 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1715 = icmp slt i32 %1713, %1714
  br i1 %1715, label %1717, label %1716

1716:                                             ; preds = %1712
  store i32 143, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #6
  br label %1739

1717:                                             ; preds = %1712
  %1718 = load ptr, ptr %13, align 8, !tbaa !5
  %1719 = load i32, ptr %70, align 4, !tbaa !31
  %1720 = sext i32 %1719 to i64
  %1721 = getelementptr inbounds double, ptr %1718, i64 %1720
  %1722 = load double, ptr %1721, align 8, !tbaa !9
  %1723 = load double, ptr %12, align 8, !tbaa !9
  %1724 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1725 = load ptr, ptr %1724, align 8, !tbaa !13
  %1726 = load i32, ptr %70, align 4, !tbaa !31
  %1727 = sext i32 %1726 to i64
  %1728 = getelementptr inbounds double, ptr %1725, i64 %1727
  %1729 = load double, ptr %1728, align 8, !tbaa !9
  %1730 = call double @llvm.fmuladd.f64(double %1723, double %1729, double %1722)
  %1731 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1732 = load ptr, ptr %1731, align 8, !tbaa !13
  %1733 = load i32, ptr %70, align 4, !tbaa !31
  %1734 = sext i32 %1733 to i64
  %1735 = getelementptr inbounds double, ptr %1732, i64 %1734
  store double %1730, ptr %1735, align 8, !tbaa !9
  br label %1736

1736:                                             ; preds = %1717
  %1737 = load i32, ptr %70, align 4, !tbaa !31
  %1738 = add nsw i32 %1737, 1
  store i32 %1738, ptr %70, align 4, !tbaa !31
  br label %1712, !llvm.loop !80

1739:                                             ; preds = %1716
  br label %1854

1740:                                             ; preds = %1708
  %1741 = load double, ptr %10, align 8, !tbaa !9
  %1742 = fcmp oeq double %1741, 1.000000e+00
  br i1 %1742, label %1743, label %1778

1743:                                             ; preds = %1740
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #6
  store i32 0, ptr %71, align 4, !tbaa !31
  br label %1744

1744:                                             ; preds = %1774, %1743
  %1745 = load i32, ptr %71, align 4, !tbaa !31
  %1746 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1747 = icmp slt i32 %1745, %1746
  br i1 %1747, label %1749, label %1748

1748:                                             ; preds = %1744
  store i32 146, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #6
  br label %1777

1749:                                             ; preds = %1744
  %1750 = load ptr, ptr %13, align 8, !tbaa !5
  %1751 = load i32, ptr %71, align 4, !tbaa !31
  %1752 = sext i32 %1751 to i64
  %1753 = getelementptr inbounds double, ptr %1750, i64 %1752
  %1754 = load double, ptr %1753, align 8, !tbaa !9
  %1755 = load ptr, ptr %17, align 8, !tbaa !5
  %1756 = load i32, ptr %71, align 4, !tbaa !31
  %1757 = sext i32 %1756 to i64
  %1758 = getelementptr inbounds double, ptr %1755, i64 %1757
  %1759 = load double, ptr %1758, align 8, !tbaa !9
  %1760 = fadd double %1754, %1759
  %1761 = load double, ptr %12, align 8, !tbaa !9
  %1762 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1763 = load ptr, ptr %1762, align 8, !tbaa !13
  %1764 = load i32, ptr %71, align 4, !tbaa !31
  %1765 = sext i32 %1764 to i64
  %1766 = getelementptr inbounds double, ptr %1763, i64 %1765
  %1767 = load double, ptr %1766, align 8, !tbaa !9
  %1768 = call double @llvm.fmuladd.f64(double %1761, double %1767, double %1760)
  %1769 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1770 = load ptr, ptr %1769, align 8, !tbaa !13
  %1771 = load i32, ptr %71, align 4, !tbaa !31
  %1772 = sext i32 %1771 to i64
  %1773 = getelementptr inbounds double, ptr %1770, i64 %1772
  store double %1768, ptr %1773, align 8, !tbaa !9
  br label %1774

1774:                                             ; preds = %1749
  %1775 = load i32, ptr %71, align 4, !tbaa !31
  %1776 = add nsw i32 %1775, 1
  store i32 %1776, ptr %71, align 4, !tbaa !31
  br label %1744, !llvm.loop !81

1777:                                             ; preds = %1748
  br label %1853

1778:                                             ; preds = %1740
  %1779 = load double, ptr %10, align 8, !tbaa !9
  %1780 = fcmp oeq double %1779, -1.000000e+00
  br i1 %1780, label %1781, label %1816

1781:                                             ; preds = %1778
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #6
  store i32 0, ptr %72, align 4, !tbaa !31
  br label %1782

1782:                                             ; preds = %1812, %1781
  %1783 = load i32, ptr %72, align 4, !tbaa !31
  %1784 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1785 = icmp slt i32 %1783, %1784
  br i1 %1785, label %1787, label %1786

1786:                                             ; preds = %1782
  store i32 149, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #6
  br label %1815

1787:                                             ; preds = %1782
  %1788 = load ptr, ptr %13, align 8, !tbaa !5
  %1789 = load i32, ptr %72, align 4, !tbaa !31
  %1790 = sext i32 %1789 to i64
  %1791 = getelementptr inbounds double, ptr %1788, i64 %1790
  %1792 = load double, ptr %1791, align 8, !tbaa !9
  %1793 = load ptr, ptr %17, align 8, !tbaa !5
  %1794 = load i32, ptr %72, align 4, !tbaa !31
  %1795 = sext i32 %1794 to i64
  %1796 = getelementptr inbounds double, ptr %1793, i64 %1795
  %1797 = load double, ptr %1796, align 8, !tbaa !9
  %1798 = fsub double %1792, %1797
  %1799 = load double, ptr %12, align 8, !tbaa !9
  %1800 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1801 = load ptr, ptr %1800, align 8, !tbaa !13
  %1802 = load i32, ptr %72, align 4, !tbaa !31
  %1803 = sext i32 %1802 to i64
  %1804 = getelementptr inbounds double, ptr %1801, i64 %1803
  %1805 = load double, ptr %1804, align 8, !tbaa !9
  %1806 = call double @llvm.fmuladd.f64(double %1799, double %1805, double %1798)
  %1807 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1808 = load ptr, ptr %1807, align 8, !tbaa !13
  %1809 = load i32, ptr %72, align 4, !tbaa !31
  %1810 = sext i32 %1809 to i64
  %1811 = getelementptr inbounds double, ptr %1808, i64 %1810
  store double %1806, ptr %1811, align 8, !tbaa !9
  br label %1812

1812:                                             ; preds = %1787
  %1813 = load i32, ptr %72, align 4, !tbaa !31
  %1814 = add nsw i32 %1813, 1
  store i32 %1814, ptr %72, align 4, !tbaa !31
  br label %1782, !llvm.loop !82

1815:                                             ; preds = %1786
  br label %1852

1816:                                             ; preds = %1778
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #6
  store i32 0, ptr %73, align 4, !tbaa !31
  br label %1817

1817:                                             ; preds = %1848, %1816
  %1818 = load i32, ptr %73, align 4, !tbaa !31
  %1819 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1820 = icmp slt i32 %1818, %1819
  br i1 %1820, label %1822, label %1821

1821:                                             ; preds = %1817
  store i32 152, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #6
  br label %1851

1822:                                             ; preds = %1817
  %1823 = load ptr, ptr %13, align 8, !tbaa !5
  %1824 = load i32, ptr %73, align 4, !tbaa !31
  %1825 = sext i32 %1824 to i64
  %1826 = getelementptr inbounds double, ptr %1823, i64 %1825
  %1827 = load double, ptr %1826, align 8, !tbaa !9
  %1828 = load double, ptr %10, align 8, !tbaa !9
  %1829 = load ptr, ptr %17, align 8, !tbaa !5
  %1830 = load i32, ptr %73, align 4, !tbaa !31
  %1831 = sext i32 %1830 to i64
  %1832 = getelementptr inbounds double, ptr %1829, i64 %1831
  %1833 = load double, ptr %1832, align 8, !tbaa !9
  %1834 = call double @llvm.fmuladd.f64(double %1828, double %1833, double %1827)
  %1835 = load double, ptr %12, align 8, !tbaa !9
  %1836 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1837 = load ptr, ptr %1836, align 8, !tbaa !13
  %1838 = load i32, ptr %73, align 4, !tbaa !31
  %1839 = sext i32 %1838 to i64
  %1840 = getelementptr inbounds double, ptr %1837, i64 %1839
  %1841 = load double, ptr %1840, align 8, !tbaa !9
  %1842 = call double @llvm.fmuladd.f64(double %1835, double %1841, double %1834)
  %1843 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1844 = load ptr, ptr %1843, align 8, !tbaa !13
  %1845 = load i32, ptr %73, align 4, !tbaa !31
  %1846 = sext i32 %1845 to i64
  %1847 = getelementptr inbounds double, ptr %1844, i64 %1846
  store double %1842, ptr %1847, align 8, !tbaa !9
  br label %1848

1848:                                             ; preds = %1822
  %1849 = load i32, ptr %73, align 4, !tbaa !31
  %1850 = add nsw i32 %1849, 1
  store i32 %1850, ptr %73, align 4, !tbaa !31
  br label %1817, !llvm.loop !83

1851:                                             ; preds = %1821
  br label %1852

1852:                                             ; preds = %1851, %1815
  br label %1853

1853:                                             ; preds = %1852, %1777
  br label %1854

1854:                                             ; preds = %1853, %1739
  br label %2289

1855:                                             ; preds = %1705
  %1856 = load double, ptr %8, align 8, !tbaa !9
  %1857 = fcmp oeq double %1856, -1.000000e+00
  br i1 %1857, label %1858, label %2009

1858:                                             ; preds = %1855
  %1859 = load double, ptr %10, align 8, !tbaa !9
  %1860 = fcmp oeq double %1859, 0.000000e+00
  br i1 %1860, label %1861, label %1891

1861:                                             ; preds = %1858
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #6
  store i32 0, ptr %74, align 4, !tbaa !31
  br label %1862

1862:                                             ; preds = %1887, %1861
  %1863 = load i32, ptr %74, align 4, !tbaa !31
  %1864 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1865 = icmp slt i32 %1863, %1864
  br i1 %1865, label %1867, label %1866

1866:                                             ; preds = %1862
  store i32 155, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #6
  br label %1890

1867:                                             ; preds = %1862
  %1868 = load ptr, ptr %13, align 8, !tbaa !5
  %1869 = load i32, ptr %74, align 4, !tbaa !31
  %1870 = sext i32 %1869 to i64
  %1871 = getelementptr inbounds double, ptr %1868, i64 %1870
  %1872 = load double, ptr %1871, align 8, !tbaa !9
  %1873 = fneg double %1872
  %1874 = load double, ptr %12, align 8, !tbaa !9
  %1875 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1876 = load ptr, ptr %1875, align 8, !tbaa !13
  %1877 = load i32, ptr %74, align 4, !tbaa !31
  %1878 = sext i32 %1877 to i64
  %1879 = getelementptr inbounds double, ptr %1876, i64 %1878
  %1880 = load double, ptr %1879, align 8, !tbaa !9
  %1881 = call double @llvm.fmuladd.f64(double %1874, double %1880, double %1873)
  %1882 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1883 = load ptr, ptr %1882, align 8, !tbaa !13
  %1884 = load i32, ptr %74, align 4, !tbaa !31
  %1885 = sext i32 %1884 to i64
  %1886 = getelementptr inbounds double, ptr %1883, i64 %1885
  store double %1881, ptr %1886, align 8, !tbaa !9
  br label %1887

1887:                                             ; preds = %1867
  %1888 = load i32, ptr %74, align 4, !tbaa !31
  %1889 = add nsw i32 %1888, 1
  store i32 %1889, ptr %74, align 4, !tbaa !31
  br label %1862, !llvm.loop !84

1890:                                             ; preds = %1866
  br label %2008

1891:                                             ; preds = %1858
  %1892 = load double, ptr %10, align 8, !tbaa !9
  %1893 = fcmp oeq double %1892, 1.000000e+00
  br i1 %1893, label %1894, label %1930

1894:                                             ; preds = %1891
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #6
  store i32 0, ptr %75, align 4, !tbaa !31
  br label %1895

1895:                                             ; preds = %1926, %1894
  %1896 = load i32, ptr %75, align 4, !tbaa !31
  %1897 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1898 = icmp slt i32 %1896, %1897
  br i1 %1898, label %1900, label %1899

1899:                                             ; preds = %1895
  store i32 158, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #6
  br label %1929

1900:                                             ; preds = %1895
  %1901 = load ptr, ptr %13, align 8, !tbaa !5
  %1902 = load i32, ptr %75, align 4, !tbaa !31
  %1903 = sext i32 %1902 to i64
  %1904 = getelementptr inbounds double, ptr %1901, i64 %1903
  %1905 = load double, ptr %1904, align 8, !tbaa !9
  %1906 = fneg double %1905
  %1907 = load ptr, ptr %17, align 8, !tbaa !5
  %1908 = load i32, ptr %75, align 4, !tbaa !31
  %1909 = sext i32 %1908 to i64
  %1910 = getelementptr inbounds double, ptr %1907, i64 %1909
  %1911 = load double, ptr %1910, align 8, !tbaa !9
  %1912 = fadd double %1906, %1911
  %1913 = load double, ptr %12, align 8, !tbaa !9
  %1914 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1915 = load ptr, ptr %1914, align 8, !tbaa !13
  %1916 = load i32, ptr %75, align 4, !tbaa !31
  %1917 = sext i32 %1916 to i64
  %1918 = getelementptr inbounds double, ptr %1915, i64 %1917
  %1919 = load double, ptr %1918, align 8, !tbaa !9
  %1920 = call double @llvm.fmuladd.f64(double %1913, double %1919, double %1912)
  %1921 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1922 = load ptr, ptr %1921, align 8, !tbaa !13
  %1923 = load i32, ptr %75, align 4, !tbaa !31
  %1924 = sext i32 %1923 to i64
  %1925 = getelementptr inbounds double, ptr %1922, i64 %1924
  store double %1920, ptr %1925, align 8, !tbaa !9
  br label %1926

1926:                                             ; preds = %1900
  %1927 = load i32, ptr %75, align 4, !tbaa !31
  %1928 = add nsw i32 %1927, 1
  store i32 %1928, ptr %75, align 4, !tbaa !31
  br label %1895, !llvm.loop !85

1929:                                             ; preds = %1899
  br label %2007

1930:                                             ; preds = %1891
  %1931 = load double, ptr %10, align 8, !tbaa !9
  %1932 = fcmp oeq double %1931, -1.000000e+00
  br i1 %1932, label %1933, label %1969

1933:                                             ; preds = %1930
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #6
  store i32 0, ptr %76, align 4, !tbaa !31
  br label %1934

1934:                                             ; preds = %1965, %1933
  %1935 = load i32, ptr %76, align 4, !tbaa !31
  %1936 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1937 = icmp slt i32 %1935, %1936
  br i1 %1937, label %1939, label %1938

1938:                                             ; preds = %1934
  store i32 161, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #6
  br label %1968

1939:                                             ; preds = %1934
  %1940 = load ptr, ptr %13, align 8, !tbaa !5
  %1941 = load i32, ptr %76, align 4, !tbaa !31
  %1942 = sext i32 %1941 to i64
  %1943 = getelementptr inbounds double, ptr %1940, i64 %1942
  %1944 = load double, ptr %1943, align 8, !tbaa !9
  %1945 = fneg double %1944
  %1946 = load ptr, ptr %17, align 8, !tbaa !5
  %1947 = load i32, ptr %76, align 4, !tbaa !31
  %1948 = sext i32 %1947 to i64
  %1949 = getelementptr inbounds double, ptr %1946, i64 %1948
  %1950 = load double, ptr %1949, align 8, !tbaa !9
  %1951 = fsub double %1945, %1950
  %1952 = load double, ptr %12, align 8, !tbaa !9
  %1953 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1954 = load ptr, ptr %1953, align 8, !tbaa !13
  %1955 = load i32, ptr %76, align 4, !tbaa !31
  %1956 = sext i32 %1955 to i64
  %1957 = getelementptr inbounds double, ptr %1954, i64 %1956
  %1958 = load double, ptr %1957, align 8, !tbaa !9
  %1959 = call double @llvm.fmuladd.f64(double %1952, double %1958, double %1951)
  %1960 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1961 = load ptr, ptr %1960, align 8, !tbaa !13
  %1962 = load i32, ptr %76, align 4, !tbaa !31
  %1963 = sext i32 %1962 to i64
  %1964 = getelementptr inbounds double, ptr %1961, i64 %1963
  store double %1959, ptr %1964, align 8, !tbaa !9
  br label %1965

1965:                                             ; preds = %1939
  %1966 = load i32, ptr %76, align 4, !tbaa !31
  %1967 = add nsw i32 %1966, 1
  store i32 %1967, ptr %76, align 4, !tbaa !31
  br label %1934, !llvm.loop !86

1968:                                             ; preds = %1938
  br label %2006

1969:                                             ; preds = %1930
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #6
  store i32 0, ptr %77, align 4, !tbaa !31
  br label %1970

1970:                                             ; preds = %2002, %1969
  %1971 = load i32, ptr %77, align 4, !tbaa !31
  %1972 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %1973 = icmp slt i32 %1971, %1972
  br i1 %1973, label %1975, label %1974

1974:                                             ; preds = %1970
  store i32 164, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #6
  br label %2005

1975:                                             ; preds = %1970
  %1976 = load ptr, ptr %13, align 8, !tbaa !5
  %1977 = load i32, ptr %77, align 4, !tbaa !31
  %1978 = sext i32 %1977 to i64
  %1979 = getelementptr inbounds double, ptr %1976, i64 %1978
  %1980 = load double, ptr %1979, align 8, !tbaa !9
  %1981 = fneg double %1980
  %1982 = load double, ptr %10, align 8, !tbaa !9
  %1983 = load ptr, ptr %17, align 8, !tbaa !5
  %1984 = load i32, ptr %77, align 4, !tbaa !31
  %1985 = sext i32 %1984 to i64
  %1986 = getelementptr inbounds double, ptr %1983, i64 %1985
  %1987 = load double, ptr %1986, align 8, !tbaa !9
  %1988 = call double @llvm.fmuladd.f64(double %1982, double %1987, double %1981)
  %1989 = load double, ptr %12, align 8, !tbaa !9
  %1990 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1991 = load ptr, ptr %1990, align 8, !tbaa !13
  %1992 = load i32, ptr %77, align 4, !tbaa !31
  %1993 = sext i32 %1992 to i64
  %1994 = getelementptr inbounds double, ptr %1991, i64 %1993
  %1995 = load double, ptr %1994, align 8, !tbaa !9
  %1996 = call double @llvm.fmuladd.f64(double %1989, double %1995, double %1988)
  %1997 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %1998 = load ptr, ptr %1997, align 8, !tbaa !13
  %1999 = load i32, ptr %77, align 4, !tbaa !31
  %2000 = sext i32 %1999 to i64
  %2001 = getelementptr inbounds double, ptr %1998, i64 %2000
  store double %1996, ptr %2001, align 8, !tbaa !9
  br label %2002

2002:                                             ; preds = %1975
  %2003 = load i32, ptr %77, align 4, !tbaa !31
  %2004 = add nsw i32 %2003, 1
  store i32 %2004, ptr %77, align 4, !tbaa !31
  br label %1970, !llvm.loop !87

2005:                                             ; preds = %1974
  br label %2006

2006:                                             ; preds = %2005, %1968
  br label %2007

2007:                                             ; preds = %2006, %1929
  br label %2008

2008:                                             ; preds = %2007, %1890
  br label %2288

2009:                                             ; preds = %1855
  %2010 = load double, ptr %8, align 8, !tbaa !9
  %2011 = fcmp oeq double %2010, 0.000000e+00
  br i1 %2011, label %2012, label %2133

2012:                                             ; preds = %2009
  %2013 = load double, ptr %10, align 8, !tbaa !9
  %2014 = fcmp oeq double %2013, 0.000000e+00
  br i1 %2014, label %2015, label %2034

2015:                                             ; preds = %2012
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #6
  store i32 0, ptr %78, align 4, !tbaa !31
  br label %2016

2016:                                             ; preds = %2030, %2015
  %2017 = load i32, ptr %78, align 4, !tbaa !31
  %2018 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %2019 = icmp slt i32 %2017, %2018
  br i1 %2019, label %2021, label %2020

2020:                                             ; preds = %2016
  store i32 167, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #6
  br label %2033

2021:                                             ; preds = %2016
  %2022 = load double, ptr %12, align 8, !tbaa !9
  %2023 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %2024 = load ptr, ptr %2023, align 8, !tbaa !13
  %2025 = load i32, ptr %78, align 4, !tbaa !31
  %2026 = sext i32 %2025 to i64
  %2027 = getelementptr inbounds double, ptr %2024, i64 %2026
  %2028 = load double, ptr %2027, align 8, !tbaa !9
  %2029 = fmul double %2028, %2022
  store double %2029, ptr %2027, align 8, !tbaa !9
  br label %2030

2030:                                             ; preds = %2021
  %2031 = load i32, ptr %78, align 4, !tbaa !31
  %2032 = add nsw i32 %2031, 1
  store i32 %2032, ptr %78, align 4, !tbaa !31
  br label %2016, !llvm.loop !88

2033:                                             ; preds = %2020
  br label %2132

2034:                                             ; preds = %2012
  %2035 = load double, ptr %10, align 8, !tbaa !9
  %2036 = fcmp oeq double %2035, 1.000000e+00
  br i1 %2036, label %2037, label %2066

2037:                                             ; preds = %2034
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #6
  store i32 0, ptr %79, align 4, !tbaa !31
  br label %2038

2038:                                             ; preds = %2062, %2037
  %2039 = load i32, ptr %79, align 4, !tbaa !31
  %2040 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %2041 = icmp slt i32 %2039, %2040
  br i1 %2041, label %2043, label %2042

2042:                                             ; preds = %2038
  store i32 170, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #6
  br label %2065

2043:                                             ; preds = %2038
  %2044 = load ptr, ptr %17, align 8, !tbaa !5
  %2045 = load i32, ptr %79, align 4, !tbaa !31
  %2046 = sext i32 %2045 to i64
  %2047 = getelementptr inbounds double, ptr %2044, i64 %2046
  %2048 = load double, ptr %2047, align 8, !tbaa !9
  %2049 = load double, ptr %12, align 8, !tbaa !9
  %2050 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %2051 = load ptr, ptr %2050, align 8, !tbaa !13
  %2052 = load i32, ptr %79, align 4, !tbaa !31
  %2053 = sext i32 %2052 to i64
  %2054 = getelementptr inbounds double, ptr %2051, i64 %2053
  %2055 = load double, ptr %2054, align 8, !tbaa !9
  %2056 = call double @llvm.fmuladd.f64(double %2049, double %2055, double %2048)
  %2057 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %2058 = load ptr, ptr %2057, align 8, !tbaa !13
  %2059 = load i32, ptr %79, align 4, !tbaa !31
  %2060 = sext i32 %2059 to i64
  %2061 = getelementptr inbounds double, ptr %2058, i64 %2060
  store double %2056, ptr %2061, align 8, !tbaa !9
  br label %2062

2062:                                             ; preds = %2043
  %2063 = load i32, ptr %79, align 4, !tbaa !31
  %2064 = add nsw i32 %2063, 1
  store i32 %2064, ptr %79, align 4, !tbaa !31
  br label %2038, !llvm.loop !89

2065:                                             ; preds = %2042
  br label %2131

2066:                                             ; preds = %2034
  %2067 = load double, ptr %10, align 8, !tbaa !9
  %2068 = fcmp oeq double %2067, -1.000000e+00
  br i1 %2068, label %2069, label %2099

2069:                                             ; preds = %2066
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #6
  store i32 0, ptr %80, align 4, !tbaa !31
  br label %2070

2070:                                             ; preds = %2095, %2069
  %2071 = load i32, ptr %80, align 4, !tbaa !31
  %2072 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %2073 = icmp slt i32 %2071, %2072
  br i1 %2073, label %2075, label %2074

2074:                                             ; preds = %2070
  store i32 173, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #6
  br label %2098

2075:                                             ; preds = %2070
  %2076 = load ptr, ptr %17, align 8, !tbaa !5
  %2077 = load i32, ptr %80, align 4, !tbaa !31
  %2078 = sext i32 %2077 to i64
  %2079 = getelementptr inbounds double, ptr %2076, i64 %2078
  %2080 = load double, ptr %2079, align 8, !tbaa !9
  %2081 = fneg double %2080
  %2082 = load double, ptr %12, align 8, !tbaa !9
  %2083 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %2084 = load ptr, ptr %2083, align 8, !tbaa !13
  %2085 = load i32, ptr %80, align 4, !tbaa !31
  %2086 = sext i32 %2085 to i64
  %2087 = getelementptr inbounds double, ptr %2084, i64 %2086
  %2088 = load double, ptr %2087, align 8, !tbaa !9
  %2089 = call double @llvm.fmuladd.f64(double %2082, double %2088, double %2081)
  %2090 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %2091 = load ptr, ptr %2090, align 8, !tbaa !13
  %2092 = load i32, ptr %80, align 4, !tbaa !31
  %2093 = sext i32 %2092 to i64
  %2094 = getelementptr inbounds double, ptr %2091, i64 %2093
  store double %2089, ptr %2094, align 8, !tbaa !9
  br label %2095

2095:                                             ; preds = %2075
  %2096 = load i32, ptr %80, align 4, !tbaa !31
  %2097 = add nsw i32 %2096, 1
  store i32 %2097, ptr %80, align 4, !tbaa !31
  br label %2070, !llvm.loop !90

2098:                                             ; preds = %2074
  br label %2130

2099:                                             ; preds = %2066
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #6
  store i32 0, ptr %81, align 4, !tbaa !31
  br label %2100

2100:                                             ; preds = %2126, %2099
  %2101 = load i32, ptr %81, align 4, !tbaa !31
  %2102 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %2103 = icmp slt i32 %2101, %2102
  br i1 %2103, label %2105, label %2104

2104:                                             ; preds = %2100
  store i32 176, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #6
  br label %2129

2105:                                             ; preds = %2100
  %2106 = load double, ptr %10, align 8, !tbaa !9
  %2107 = load ptr, ptr %17, align 8, !tbaa !5
  %2108 = load i32, ptr %81, align 4, !tbaa !31
  %2109 = sext i32 %2108 to i64
  %2110 = getelementptr inbounds double, ptr %2107, i64 %2109
  %2111 = load double, ptr %2110, align 8, !tbaa !9
  %2112 = load double, ptr %12, align 8, !tbaa !9
  %2113 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %2114 = load ptr, ptr %2113, align 8, !tbaa !13
  %2115 = load i32, ptr %81, align 4, !tbaa !31
  %2116 = sext i32 %2115 to i64
  %2117 = getelementptr inbounds double, ptr %2114, i64 %2116
  %2118 = load double, ptr %2117, align 8, !tbaa !9
  %2119 = fmul double %2112, %2118
  %2120 = call double @llvm.fmuladd.f64(double %2106, double %2111, double %2119)
  %2121 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %2122 = load ptr, ptr %2121, align 8, !tbaa !13
  %2123 = load i32, ptr %81, align 4, !tbaa !31
  %2124 = sext i32 %2123 to i64
  %2125 = getelementptr inbounds double, ptr %2122, i64 %2124
  store double %2120, ptr %2125, align 8, !tbaa !9
  br label %2126

2126:                                             ; preds = %2105
  %2127 = load i32, ptr %81, align 4, !tbaa !31
  %2128 = add nsw i32 %2127, 1
  store i32 %2128, ptr %81, align 4, !tbaa !31
  br label %2100, !llvm.loop !91

2129:                                             ; preds = %2104
  br label %2130

2130:                                             ; preds = %2129, %2098
  br label %2131

2131:                                             ; preds = %2130, %2065
  br label %2132

2132:                                             ; preds = %2131, %2033
  br label %2287

2133:                                             ; preds = %2009
  %2134 = load double, ptr %10, align 8, !tbaa !9
  %2135 = fcmp oeq double %2134, 0.000000e+00
  br i1 %2135, label %2136, label %2167

2136:                                             ; preds = %2133
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #6
  store i32 0, ptr %82, align 4, !tbaa !31
  br label %2137

2137:                                             ; preds = %2163, %2136
  %2138 = load i32, ptr %82, align 4, !tbaa !31
  %2139 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %2140 = icmp slt i32 %2138, %2139
  br i1 %2140, label %2142, label %2141

2141:                                             ; preds = %2137
  store i32 179, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #6
  br label %2166

2142:                                             ; preds = %2137
  %2143 = load double, ptr %8, align 8, !tbaa !9
  %2144 = load ptr, ptr %13, align 8, !tbaa !5
  %2145 = load i32, ptr %82, align 4, !tbaa !31
  %2146 = sext i32 %2145 to i64
  %2147 = getelementptr inbounds double, ptr %2144, i64 %2146
  %2148 = load double, ptr %2147, align 8, !tbaa !9
  %2149 = load double, ptr %12, align 8, !tbaa !9
  %2150 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %2151 = load ptr, ptr %2150, align 8, !tbaa !13
  %2152 = load i32, ptr %82, align 4, !tbaa !31
  %2153 = sext i32 %2152 to i64
  %2154 = getelementptr inbounds double, ptr %2151, i64 %2153
  %2155 = load double, ptr %2154, align 8, !tbaa !9
  %2156 = fmul double %2149, %2155
  %2157 = call double @llvm.fmuladd.f64(double %2143, double %2148, double %2156)
  %2158 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %2159 = load ptr, ptr %2158, align 8, !tbaa !13
  %2160 = load i32, ptr %82, align 4, !tbaa !31
  %2161 = sext i32 %2160 to i64
  %2162 = getelementptr inbounds double, ptr %2159, i64 %2161
  store double %2157, ptr %2162, align 8, !tbaa !9
  br label %2163

2163:                                             ; preds = %2142
  %2164 = load i32, ptr %82, align 4, !tbaa !31
  %2165 = add nsw i32 %2164, 1
  store i32 %2165, ptr %82, align 4, !tbaa !31
  br label %2137, !llvm.loop !92

2166:                                             ; preds = %2141
  br label %2286

2167:                                             ; preds = %2133
  %2168 = load double, ptr %10, align 8, !tbaa !9
  %2169 = fcmp oeq double %2168, 1.000000e+00
  br i1 %2169, label %2170, label %2206

2170:                                             ; preds = %2167
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #6
  store i32 0, ptr %83, align 4, !tbaa !31
  br label %2171

2171:                                             ; preds = %2202, %2170
  %2172 = load i32, ptr %83, align 4, !tbaa !31
  %2173 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %2174 = icmp slt i32 %2172, %2173
  br i1 %2174, label %2176, label %2175

2175:                                             ; preds = %2171
  store i32 182, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #6
  br label %2205

2176:                                             ; preds = %2171
  %2177 = load double, ptr %8, align 8, !tbaa !9
  %2178 = load ptr, ptr %13, align 8, !tbaa !5
  %2179 = load i32, ptr %83, align 4, !tbaa !31
  %2180 = sext i32 %2179 to i64
  %2181 = getelementptr inbounds double, ptr %2178, i64 %2180
  %2182 = load double, ptr %2181, align 8, !tbaa !9
  %2183 = load ptr, ptr %17, align 8, !tbaa !5
  %2184 = load i32, ptr %83, align 4, !tbaa !31
  %2185 = sext i32 %2184 to i64
  %2186 = getelementptr inbounds double, ptr %2183, i64 %2185
  %2187 = load double, ptr %2186, align 8, !tbaa !9
  %2188 = call double @llvm.fmuladd.f64(double %2177, double %2182, double %2187)
  %2189 = load double, ptr %12, align 8, !tbaa !9
  %2190 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %2191 = load ptr, ptr %2190, align 8, !tbaa !13
  %2192 = load i32, ptr %83, align 4, !tbaa !31
  %2193 = sext i32 %2192 to i64
  %2194 = getelementptr inbounds double, ptr %2191, i64 %2193
  %2195 = load double, ptr %2194, align 8, !tbaa !9
  %2196 = call double @llvm.fmuladd.f64(double %2189, double %2195, double %2188)
  %2197 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %2198 = load ptr, ptr %2197, align 8, !tbaa !13
  %2199 = load i32, ptr %83, align 4, !tbaa !31
  %2200 = sext i32 %2199 to i64
  %2201 = getelementptr inbounds double, ptr %2198, i64 %2200
  store double %2196, ptr %2201, align 8, !tbaa !9
  br label %2202

2202:                                             ; preds = %2176
  %2203 = load i32, ptr %83, align 4, !tbaa !31
  %2204 = add nsw i32 %2203, 1
  store i32 %2204, ptr %83, align 4, !tbaa !31
  br label %2171, !llvm.loop !93

2205:                                             ; preds = %2175
  br label %2285

2206:                                             ; preds = %2167
  %2207 = load double, ptr %10, align 8, !tbaa !9
  %2208 = fcmp oeq double %2207, -1.000000e+00
  br i1 %2208, label %2209, label %2246

2209:                                             ; preds = %2206
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #6
  store i32 0, ptr %84, align 4, !tbaa !31
  br label %2210

2210:                                             ; preds = %2242, %2209
  %2211 = load i32, ptr %84, align 4, !tbaa !31
  %2212 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %2213 = icmp slt i32 %2211, %2212
  br i1 %2213, label %2215, label %2214

2214:                                             ; preds = %2210
  store i32 185, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #6
  br label %2245

2215:                                             ; preds = %2210
  %2216 = load double, ptr %8, align 8, !tbaa !9
  %2217 = load ptr, ptr %13, align 8, !tbaa !5
  %2218 = load i32, ptr %84, align 4, !tbaa !31
  %2219 = sext i32 %2218 to i64
  %2220 = getelementptr inbounds double, ptr %2217, i64 %2219
  %2221 = load double, ptr %2220, align 8, !tbaa !9
  %2222 = load ptr, ptr %17, align 8, !tbaa !5
  %2223 = load i32, ptr %84, align 4, !tbaa !31
  %2224 = sext i32 %2223 to i64
  %2225 = getelementptr inbounds double, ptr %2222, i64 %2224
  %2226 = load double, ptr %2225, align 8, !tbaa !9
  %2227 = fneg double %2226
  %2228 = call double @llvm.fmuladd.f64(double %2216, double %2221, double %2227)
  %2229 = load double, ptr %12, align 8, !tbaa !9
  %2230 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %2231 = load ptr, ptr %2230, align 8, !tbaa !13
  %2232 = load i32, ptr %84, align 4, !tbaa !31
  %2233 = sext i32 %2232 to i64
  %2234 = getelementptr inbounds double, ptr %2231, i64 %2233
  %2235 = load double, ptr %2234, align 8, !tbaa !9
  %2236 = call double @llvm.fmuladd.f64(double %2229, double %2235, double %2228)
  %2237 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %2238 = load ptr, ptr %2237, align 8, !tbaa !13
  %2239 = load i32, ptr %84, align 4, !tbaa !31
  %2240 = sext i32 %2239 to i64
  %2241 = getelementptr inbounds double, ptr %2238, i64 %2240
  store double %2236, ptr %2241, align 8, !tbaa !9
  br label %2242

2242:                                             ; preds = %2215
  %2243 = load i32, ptr %84, align 4, !tbaa !31
  %2244 = add nsw i32 %2243, 1
  store i32 %2244, ptr %84, align 4, !tbaa !31
  br label %2210, !llvm.loop !94

2245:                                             ; preds = %2214
  br label %2284

2246:                                             ; preds = %2206
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #6
  store i32 0, ptr %85, align 4, !tbaa !31
  br label %2247

2247:                                             ; preds = %2280, %2246
  %2248 = load i32, ptr %85, align 4, !tbaa !31
  %2249 = call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %86)
  %2250 = icmp slt i32 %2248, %2249
  br i1 %2250, label %2252, label %2251

2251:                                             ; preds = %2247
  store i32 188, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #6
  br label %2283

2252:                                             ; preds = %2247
  %2253 = load double, ptr %8, align 8, !tbaa !9
  %2254 = load ptr, ptr %13, align 8, !tbaa !5
  %2255 = load i32, ptr %85, align 4, !tbaa !31
  %2256 = sext i32 %2255 to i64
  %2257 = getelementptr inbounds double, ptr %2254, i64 %2256
  %2258 = load double, ptr %2257, align 8, !tbaa !9
  %2259 = load double, ptr %10, align 8, !tbaa !9
  %2260 = load ptr, ptr %17, align 8, !tbaa !5
  %2261 = load i32, ptr %85, align 4, !tbaa !31
  %2262 = sext i32 %2261 to i64
  %2263 = getelementptr inbounds double, ptr %2260, i64 %2262
  %2264 = load double, ptr %2263, align 8, !tbaa !9
  %2265 = fmul double %2259, %2264
  %2266 = call double @llvm.fmuladd.f64(double %2253, double %2258, double %2265)
  %2267 = load double, ptr %12, align 8, !tbaa !9
  %2268 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %2269 = load ptr, ptr %2268, align 8, !tbaa !13
  %2270 = load i32, ptr %85, align 4, !tbaa !31
  %2271 = sext i32 %2270 to i64
  %2272 = getelementptr inbounds double, ptr %2269, i64 %2271
  %2273 = load double, ptr %2272, align 8, !tbaa !9
  %2274 = call double @llvm.fmuladd.f64(double %2267, double %2273, double %2266)
  %2275 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 2
  %2276 = load ptr, ptr %2275, align 8, !tbaa !13
  %2277 = load i32, ptr %85, align 4, !tbaa !31
  %2278 = sext i32 %2277 to i64
  %2279 = getelementptr inbounds double, ptr %2276, i64 %2278
  store double %2274, ptr %2279, align 8, !tbaa !9
  br label %2280

2280:                                             ; preds = %2252
  %2281 = load i32, ptr %85, align 4, !tbaa !31
  %2282 = add nsw i32 %2281, 1
  store i32 %2282, ptr %85, align 4, !tbaa !31
  br label %2247, !llvm.loop !95

2283:                                             ; preds = %2251
  br label %2284

2284:                                             ; preds = %2283, %2245
  br label %2285

2285:                                             ; preds = %2284, %2205
  br label %2286

2286:                                             ; preds = %2285, %2166
  br label %2287

2287:                                             ; preds = %2286, %2132
  br label %2288

2288:                                             ; preds = %2287, %2008
  br label %2289

2289:                                             ; preds = %2288, %1854
  br label %2290

2290:                                             ; preds = %2289, %1704
  br label %2291

2291:                                             ; preds = %2290, %1132
  br label %2292

2292:                                             ; preds = %2291, %656
  %2293 = getelementptr inbounds %"class.SimTKIpopt::DenseVector", ptr %86, i32 0, i32 3
  store i8 1, ptr %2293, align 8, !tbaa !30
  store i32 0, ptr %22, align 4
  br label %2294

2294:                                             ; preds = %2292, %186, %160
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  %2295 = load i32, ptr %22, align 4
  switch i32 %2295, label %2297 [
    i32 0, label %2296
    i32 1, label %2296
  ]

2296:                                             ; preds = %2294, %2294
  ret void

2297:                                             ; preds = %2294
  unreachable
}

declare void @_ZN10SimTKIpopt6Vector17AddTwoVectorsImplEdRKS0_dS2_d(ptr noundef nonnull align 8 dereferenceable(205), double noundef, ptr noundef nonnull align 8 dereferenceable(205), double noundef, ptr noundef nonnull align 8 dereferenceable(205), double noundef) unnamed_addr #5

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

!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 = !{!"double", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!14, !6, i64 216}
!14 = !{!"_ZTSN10SimTKIpopt11DenseVectorE", !15, i64 0, !6, i64 208, !6, i64 216, !12, i64 224, !12, i64 225, !10, i64 232}
!15 = !{!"_ZTSN10SimTKIpopt6VectorE", !16, i64 0, !24, i64 56, !25, i64 64, !18, i64 88, !10, i64 96, !18, i64 104, !10, i64 112, !18, i64 120, !10, i64 128, !18, i64 136, !10, i64 144, !18, i64 152, !10, i64 160, !18, i64 168, !10, i64 176, !18, i64 184, !10, i64 192, !18, i64 200, !12, i64 204}
!16 = !{!"_ZTSN10SimTKIpopt12TaggedObjectE", !17, i64 0, !19, i64 16, !18, i64 48, !18, i64 52}
!17 = !{!"_ZTSN10SimTKIpopt16ReferencedObjectE", !18, i64 8}
!18 = !{!"int", !7, i64 0}
!19 = !{!"_ZTSN10SimTKIpopt7SubjectE", !20, i64 8}
!20 = !{!"_ZTSSt6vectorIPN10SimTKIpopt8ObserverESaIS2_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIPN10SimTKIpopt8ObserverESaIS2_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIPN10SimTKIpopt8ObserverESaIS2_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIPN10SimTKIpopt8ObserverESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEE", !6, i64 0}
!25 = !{!"_ZTSN10SimTKIpopt13CachedResultsIdEE", !18, i64 8, !6, i64 16}
!26 = !{!14, !12, i64 225}
!27 = !{i8 0, i8 2}
!28 = !{}
!29 = !{!14, !10, i64 232}
!30 = !{!14, !12, i64 224}
!31 = !{!18, !18, i64 0}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.mustprogress"}
!34 = distinct !{!34, !33}
!35 = distinct !{!35, !33}
!36 = distinct !{!36, !33}
!37 = distinct !{!37, !33}
!38 = distinct !{!38, !33}
!39 = distinct !{!39, !33}
!40 = distinct !{!40, !33}
!41 = distinct !{!41, !33}
!42 = distinct !{!42, !33}
!43 = distinct !{!43, !33}
!44 = distinct !{!44, !33}
!45 = distinct !{!45, !33}
!46 = distinct !{!46, !33}
!47 = distinct !{!47, !33}
!48 = distinct !{!48, !33}
!49 = distinct !{!49, !33}
!50 = distinct !{!50, !33}
!51 = distinct !{!51, !33}
!52 = distinct !{!52, !33}
!53 = distinct !{!53, !33}
!54 = distinct !{!54, !33}
!55 = distinct !{!55, !33}
!56 = distinct !{!56, !33}
!57 = distinct !{!57, !33}
!58 = distinct !{!58, !33}
!59 = distinct !{!59, !33}
!60 = distinct !{!60, !33}
!61 = distinct !{!61, !33}
!62 = distinct !{!62, !33}
!63 = distinct !{!63, !33}
!64 = distinct !{!64, !33}
!65 = distinct !{!65, !33}
!66 = distinct !{!66, !33}
!67 = distinct !{!67, !33}
!68 = distinct !{!68, !33}
!69 = distinct !{!69, !33}
!70 = distinct !{!70, !33}
!71 = distinct !{!71, !33}
!72 = distinct !{!72, !33}
!73 = distinct !{!73, !33}
!74 = distinct !{!74, !33}
!75 = distinct !{!75, !33}
!76 = distinct !{!76, !33}
!77 = distinct !{!77, !33}
!78 = distinct !{!78, !33}
!79 = distinct !{!79, !33}
!80 = distinct !{!80, !33}
!81 = distinct !{!81, !33}
!82 = distinct !{!82, !33}
!83 = distinct !{!83, !33}
!84 = distinct !{!84, !33}
!85 = distinct !{!85, !33}
!86 = distinct !{!86, !33}
!87 = distinct !{!87, !33}
!88 = distinct !{!88, !33}
!89 = distinct !{!89, !33}
!90 = distinct !{!90, !33}
!91 = distinct !{!91, !33}
!92 = distinct !{!92, !33}
!93 = distinct !{!93, !33}
!94 = distinct !{!94, !33}
!95 = distinct !{!95, !33}


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

@_ZTIN10SimTKIpopt6VectorE = external dso_local constant { ptr, ptr, ptr }, align 8
@_ZTIN10SimTKIpopt11DenseVectorE = external dso_local constant { ptr, ptr, ptr }, align 8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205)) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZN10SimTKIpopt11DenseVector16values_allocatedEv(ptr noundef nonnull align 8 dereferenceable(240)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nofree nounwind willreturn memory(read)
declare ptr @__dynamic_cast(ptr, ptr, ptr, i64) local_unnamed_addr #1

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10SimTKIpopt11DenseVector17AddTwoVectorsImplEdRKNS_6VectorEdS3_d(ptr noundef nonnull align 8 dereferenceable(240) %0, double noundef %1, ptr noundef nonnull align 8 dereferenceable(205) %2, double noundef %3, ptr noundef nonnull align 8 dereferenceable(205) %4, double noundef %5) unnamed_addr #3 align 2 {
  %7 = fcmp une double %1, 0.000000e+00
  br i1 %7, label %8, label %18

8:                                                ; preds = %6
  %9 = tail call ptr @__dynamic_cast(ptr nonnull %2, ptr nonnull @_ZTIN10SimTKIpopt6VectorE, ptr nonnull @_ZTIN10SimTKIpopt11DenseVectorE, i64 0) #5
  %10 = getelementptr inbounds i8, ptr %9, i64 216
  %11 = load ptr, ptr %10, align 8, !tbaa !5
  %12 = getelementptr inbounds i8, ptr %9, i64 225
  %13 = load i8, ptr %12, align 1, !tbaa !23, !range !24, !noundef !25
  %14 = trunc nuw i8 %13 to i1
  br i1 %14, label %15, label %18

15:                                               ; preds = %8
  %16 = getelementptr inbounds i8, ptr %9, i64 232
  %17 = load double, ptr %16, align 8, !tbaa !26
  br label %18

18:                                               ; preds = %8, %15, %6
  %.1621 = phi double [ 0.000000e+00, %6 ], [ %17, %15 ], [ 0.000000e+00, %8 ]
  %.0619 = phi i8 [ 0, %6 ], [ %13, %15 ], [ %13, %8 ]
  %.0615 = phi ptr [ null, %6 ], [ %11, %15 ], [ %11, %8 ]
  %19 = fcmp une double %3, 0.000000e+00
  br i1 %19, label %20, label %30

20:                                               ; preds = %18
  %21 = tail call ptr @__dynamic_cast(ptr nonnull %4, ptr nonnull @_ZTIN10SimTKIpopt6VectorE, ptr nonnull @_ZTIN10SimTKIpopt11DenseVectorE, i64 0) #5
  %22 = getelementptr inbounds i8, ptr %21, i64 216
  %23 = load ptr, ptr %22, align 8, !tbaa !5
  %24 = getelementptr inbounds i8, ptr %21, i64 225
  %25 = load i8, ptr %24, align 1, !tbaa !23, !range !24, !noundef !25
  %26 = trunc nuw i8 %25 to i1
  br i1 %26, label %27, label %30

27:                                               ; preds = %20
  %28 = getelementptr inbounds i8, ptr %21, i64 232
  %29 = load double, ptr %28, align 8, !tbaa !26
  br label %30

30:                                               ; preds = %20, %27, %18
  %.0618 = phi ptr [ null, %18 ], [ %23, %27 ], [ %23, %20 ]
  %.0617 = phi i8 [ 0, %18 ], [ %25, %27 ], [ %25, %20 ]
  %.1 = phi double [ 0.000000e+00, %18 ], [ %29, %27 ], [ 0.000000e+00, %20 ]
  %31 = fcmp oeq double %5, 0.000000e+00
  br i1 %31, label %36, label %32

32:                                               ; preds = %30
  %33 = getelementptr inbounds i8, ptr %0, i64 225
  %34 = load i8, ptr %33, align 1, !tbaa !23, !range !24, !noundef !25
  %35 = trunc nuw i8 %34 to i1
  br i1 %35, label %36, label %.thread

36:                                               ; preds = %32, %30
  %37 = trunc nuw i8 %.0619 to i1
  br i1 %37, label %38, label %49

38:                                               ; preds = %36
  %39 = trunc nuw i8 %.0617 to i1
  br i1 %39, label %40, label %49

40:                                               ; preds = %38
  %41 = getelementptr inbounds i8, ptr %0, i64 225
  store i8 1, ptr %41, align 1, !tbaa !23
  %42 = fcmp une double %5, 0.000000e+00
  %43 = getelementptr inbounds i8, ptr %0, i64 232
  %44 = load double, ptr %43, align 8
  %45 = fmul double %44, %5
  %.0614 = select i1 %42, double %45, double 0.000000e+00
  %46 = tail call double @llvm.fmuladd.f64(double %1, double %.1621, double %.0614)
  %47 = tail call double @llvm.fmuladd.f64(double %3, double %.1, double %46)
  store double %47, ptr %43, align 8, !tbaa !26
  %48 = getelementptr inbounds i8, ptr %0, i64 224
  store i8 1, ptr %48, align 8, !tbaa !27
  br label %1065

49:                                               ; preds = %38, %36
  br i1 %31, label %.thread.thread, label %..thread_crit_edge

..thread_crit_edge:                               ; preds = %49
  %.phi.trans.insert = getelementptr inbounds i8, ptr %0, i64 225
  %.pre = load i8, ptr %.phi.trans.insert, align 1, !tbaa !23, !range !24
  br label %.thread

.thread.thread:                                   ; preds = %49
  %50 = tail call noundef ptr @_ZN10SimTKIpopt11DenseVector16values_allocatedEv(ptr noundef nonnull align 8 dereferenceable(240) %0)
  %51 = getelementptr inbounds i8, ptr %0, i64 225
  store i8 0, ptr %51, align 1, !tbaa !23
  br label %54

.thread:                                          ; preds = %..thread_crit_edge, %32
  %52 = phi i8 [ %.pre, %..thread_crit_edge ], [ %34, %32 ]
  %53 = trunc nuw i8 %52 to i1
  br i1 %53, label %58, label %54

54:                                               ; preds = %.thread.thread, %.thread
  %55 = trunc nuw i8 %.0619 to i1
  br i1 %55, label %58, label %56

56:                                               ; preds = %54
  %57 = trunc nuw i8 %.0617 to i1
  br i1 %57, label %58, label %59

58:                                               ; preds = %56, %54, %.thread
  tail call void @_ZN10SimTKIpopt6Vector17AddTwoVectorsImplEdRKS0_dS2_d(ptr noundef nonnull align 8 dereferenceable(205) %0, double noundef %1, ptr noundef nonnull align 8 dereferenceable(205) %2, double noundef %3, ptr noundef nonnull align 8 dereferenceable(205) %4, double noundef %5)
  br label %1065

59:                                               ; preds = %56
  br i1 %31, label %60, label %290

60:                                               ; preds = %59
  %61 = fcmp oeq double %1, 1.000000e+00
  br i1 %61, label %62, label %119

62:                                               ; preds = %60
  %63 = fcmp oeq double %3, 0.000000e+00
  br i1 %63, label %.preheader, label %75

.preheader:                                       ; preds = %62
  %64 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %65 = icmp sgt i32 %64, 0
  br i1 %65, label %.lr.ph877, label %.loopexit

.lr.ph877:                                        ; preds = %.preheader
  %66 = getelementptr inbounds i8, ptr %0, i64 216
  br label %67

67:                                               ; preds = %.lr.ph877, %67
  %indvars.iv1124 = phi i64 [ 0, %.lr.ph877 ], [ %indvars.iv.next1125, %67 ]
  %68 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1124
  %69 = load double, ptr %68, align 8, !tbaa !28
  %70 = load ptr, ptr %66, align 8, !tbaa !5
  %71 = getelementptr inbounds double, ptr %70, i64 %indvars.iv1124
  store double %69, ptr %71, align 8, !tbaa !28
  %indvars.iv.next1125 = add nuw nsw i64 %indvars.iv1124, 1
  %72 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %73 = sext i32 %72 to i64
  %74 = icmp slt i64 %indvars.iv.next1125, %73
  br i1 %74, label %67, label %.loopexit, !llvm.loop !29

75:                                               ; preds = %62
  %76 = fcmp oeq double %3, 1.000000e+00
  br i1 %76, label %.preheader629, label %91

.preheader629:                                    ; preds = %75
  %77 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %78 = icmp sgt i32 %77, 0
  br i1 %78, label %.lr.ph875, label %.loopexit

.lr.ph875:                                        ; preds = %.preheader629
  %79 = getelementptr inbounds i8, ptr %0, i64 216
  br label %80

80:                                               ; preds = %.lr.ph875, %80
  %indvars.iv1121 = phi i64 [ 0, %.lr.ph875 ], [ %indvars.iv.next1122, %80 ]
  %81 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1121
  %82 = load double, ptr %81, align 8, !tbaa !28
  %83 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1121
  %84 = load double, ptr %83, align 8, !tbaa !28
  %85 = fadd double %82, %84
  %86 = load ptr, ptr %79, align 8, !tbaa !5
  %87 = getelementptr inbounds double, ptr %86, i64 %indvars.iv1121
  store double %85, ptr %87, align 8, !tbaa !28
  %indvars.iv.next1122 = add nuw nsw i64 %indvars.iv1121, 1
  %88 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %89 = sext i32 %88 to i64
  %90 = icmp slt i64 %indvars.iv.next1122, %89
  br i1 %90, label %80, label %.loopexit, !llvm.loop !31

91:                                               ; preds = %75
  %92 = fcmp oeq double %3, -1.000000e+00
  %93 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %94 = icmp sgt i32 %93, 0
  br i1 %92, label %.preheader631, label %.preheader633

.preheader633:                                    ; preds = %91
  br i1 %94, label %.lr.ph871, label %.loopexit

.lr.ph871:                                        ; preds = %.preheader633
  %95 = getelementptr inbounds i8, ptr %0, i64 216
  br label %108

.preheader631:                                    ; preds = %91
  br i1 %94, label %.lr.ph873, label %.loopexit

.lr.ph873:                                        ; preds = %.preheader631
  %96 = getelementptr inbounds i8, ptr %0, i64 216
  br label %97

97:                                               ; preds = %.lr.ph873, %97
  %indvars.iv1118 = phi i64 [ 0, %.lr.ph873 ], [ %indvars.iv.next1119, %97 ]
  %98 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1118
  %99 = load double, ptr %98, align 8, !tbaa !28
  %100 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1118
  %101 = load double, ptr %100, align 8, !tbaa !28
  %102 = fsub double %99, %101
  %103 = load ptr, ptr %96, align 8, !tbaa !5
  %104 = getelementptr inbounds double, ptr %103, i64 %indvars.iv1118
  store double %102, ptr %104, align 8, !tbaa !28
  %indvars.iv.next1119 = add nuw nsw i64 %indvars.iv1118, 1
  %105 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %106 = sext i32 %105 to i64
  %107 = icmp slt i64 %indvars.iv.next1119, %106
  br i1 %107, label %97, label %.loopexit, !llvm.loop !32

108:                                              ; preds = %.lr.ph871, %108
  %indvars.iv1115 = phi i64 [ 0, %.lr.ph871 ], [ %indvars.iv.next1116, %108 ]
  %109 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1115
  %110 = load double, ptr %109, align 8, !tbaa !28
  %111 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1115
  %112 = load double, ptr %111, align 8, !tbaa !28
  %113 = tail call double @llvm.fmuladd.f64(double %3, double %112, double %110)
  %114 = load ptr, ptr %95, align 8, !tbaa !5
  %115 = getelementptr inbounds double, ptr %114, i64 %indvars.iv1115
  store double %113, ptr %115, align 8, !tbaa !28
  %indvars.iv.next1116 = add nuw nsw i64 %indvars.iv1115, 1
  %116 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %117 = sext i32 %116 to i64
  %118 = icmp slt i64 %indvars.iv.next1116, %117
  br i1 %118, label %108, label %.loopexit, !llvm.loop !33

119:                                              ; preds = %60
  %120 = fcmp oeq double %1, -1.000000e+00
  br i1 %120, label %121, label %181

121:                                              ; preds = %119
  %122 = fcmp oeq double %3, 0.000000e+00
  br i1 %122, label %.preheader635, label %135

.preheader635:                                    ; preds = %121
  %123 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %124 = icmp sgt i32 %123, 0
  br i1 %124, label %.lr.ph869, label %.loopexit

.lr.ph869:                                        ; preds = %.preheader635
  %125 = getelementptr inbounds i8, ptr %0, i64 216
  br label %126

126:                                              ; preds = %.lr.ph869, %126
  %indvars.iv1112 = phi i64 [ 0, %.lr.ph869 ], [ %indvars.iv.next1113, %126 ]
  %127 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1112
  %128 = load double, ptr %127, align 8, !tbaa !28
  %129 = fneg double %128
  %130 = load ptr, ptr %125, align 8, !tbaa !5
  %131 = getelementptr inbounds double, ptr %130, i64 %indvars.iv1112
  store double %129, ptr %131, align 8, !tbaa !28
  %indvars.iv.next1113 = add nuw nsw i64 %indvars.iv1112, 1
  %132 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %133 = sext i32 %132 to i64
  %134 = icmp slt i64 %indvars.iv.next1113, %133
  br i1 %134, label %126, label %.loopexit, !llvm.loop !34

135:                                              ; preds = %121
  %136 = fcmp oeq double %3, 1.000000e+00
  br i1 %136, label %.preheader637, label %151

.preheader637:                                    ; preds = %135
  %137 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %138 = icmp sgt i32 %137, 0
  br i1 %138, label %.lr.ph867, label %.loopexit

.lr.ph867:                                        ; preds = %.preheader637
  %139 = getelementptr inbounds i8, ptr %0, i64 216
  br label %140

140:                                              ; preds = %.lr.ph867, %140
  %indvars.iv1109 = phi i64 [ 0, %.lr.ph867 ], [ %indvars.iv.next1110, %140 ]
  %141 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1109
  %142 = load double, ptr %141, align 8, !tbaa !28
  %143 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1109
  %144 = load double, ptr %143, align 8, !tbaa !28
  %145 = fsub double %144, %142
  %146 = load ptr, ptr %139, align 8, !tbaa !5
  %147 = getelementptr inbounds double, ptr %146, i64 %indvars.iv1109
  store double %145, ptr %147, align 8, !tbaa !28
  %indvars.iv.next1110 = add nuw nsw i64 %indvars.iv1109, 1
  %148 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %149 = sext i32 %148 to i64
  %150 = icmp slt i64 %indvars.iv.next1110, %149
  br i1 %150, label %140, label %.loopexit, !llvm.loop !35

151:                                              ; preds = %135
  %152 = fcmp oeq double %3, -1.000000e+00
  %153 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %154 = icmp sgt i32 %153, 0
  br i1 %152, label %.preheader639, label %.preheader641

.preheader641:                                    ; preds = %151
  br i1 %154, label %.lr.ph863, label %.loopexit

.lr.ph863:                                        ; preds = %.preheader641
  %155 = getelementptr inbounds i8, ptr %0, i64 216
  br label %169

.preheader639:                                    ; preds = %151
  br i1 %154, label %.lr.ph865, label %.loopexit

.lr.ph865:                                        ; preds = %.preheader639
  %156 = getelementptr inbounds i8, ptr %0, i64 216
  br label %157

157:                                              ; preds = %.lr.ph865, %157
  %indvars.iv1106 = phi i64 [ 0, %.lr.ph865 ], [ %indvars.iv.next1107, %157 ]
  %158 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1106
  %159 = load double, ptr %158, align 8, !tbaa !28
  %160 = fneg double %159
  %161 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1106
  %162 = load double, ptr %161, align 8, !tbaa !28
  %163 = fsub double %160, %162
  %164 = load ptr, ptr %156, align 8, !tbaa !5
  %165 = getelementptr inbounds double, ptr %164, i64 %indvars.iv1106
  store double %163, ptr %165, align 8, !tbaa !28
  %indvars.iv.next1107 = add nuw nsw i64 %indvars.iv1106, 1
  %166 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %167 = sext i32 %166 to i64
  %168 = icmp slt i64 %indvars.iv.next1107, %167
  br i1 %168, label %157, label %.loopexit, !llvm.loop !36

169:                                              ; preds = %.lr.ph863, %169
  %indvars.iv1103 = phi i64 [ 0, %.lr.ph863 ], [ %indvars.iv.next1104, %169 ]
  %170 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1103
  %171 = load double, ptr %170, align 8, !tbaa !28
  %172 = fneg double %171
  %173 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1103
  %174 = load double, ptr %173, align 8, !tbaa !28
  %175 = tail call double @llvm.fmuladd.f64(double %3, double %174, double %172)
  %176 = load ptr, ptr %155, align 8, !tbaa !5
  %177 = getelementptr inbounds double, ptr %176, i64 %indvars.iv1103
  store double %175, ptr %177, align 8, !tbaa !28
  %indvars.iv.next1104 = add nuw nsw i64 %indvars.iv1103, 1
  %178 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %179 = sext i32 %178 to i64
  %180 = icmp slt i64 %indvars.iv.next1104, %179
  br i1 %180, label %169, label %.loopexit, !llvm.loop !37

181:                                              ; preds = %119
  %182 = fcmp oeq double %1, 0.000000e+00
  %183 = fcmp oeq double %3, 0.000000e+00
  br i1 %182, label %184, label %231

184:                                              ; preds = %181
  br i1 %183, label %.preheader643, label %194

.preheader643:                                    ; preds = %184
  %185 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %186 = icmp sgt i32 %185, 0
  br i1 %186, label %.lr.ph861, label %.loopexit

.lr.ph861:                                        ; preds = %.preheader643
  %187 = getelementptr inbounds i8, ptr %0, i64 216
  br label %188

188:                                              ; preds = %.lr.ph861, %188
  %indvars.iv1100 = phi i64 [ 0, %.lr.ph861 ], [ %indvars.iv.next1101, %188 ]
  %189 = load ptr, ptr %187, align 8, !tbaa !5
  %190 = getelementptr inbounds double, ptr %189, i64 %indvars.iv1100
  store double 0.000000e+00, ptr %190, align 8, !tbaa !28
  %indvars.iv.next1101 = add nuw nsw i64 %indvars.iv1100, 1
  %191 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %192 = sext i32 %191 to i64
  %193 = icmp slt i64 %indvars.iv.next1101, %192
  br i1 %193, label %188, label %.loopexit, !llvm.loop !38

194:                                              ; preds = %184
  %195 = fcmp oeq double %3, 1.000000e+00
  br i1 %195, label %.preheader645, label %207

.preheader645:                                    ; preds = %194
  %196 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %197 = icmp sgt i32 %196, 0
  br i1 %197, label %.lr.ph859, label %.loopexit

.lr.ph859:                                        ; preds = %.preheader645
  %198 = getelementptr inbounds i8, ptr %0, i64 216
  br label %199

199:                                              ; preds = %.lr.ph859, %199
  %indvars.iv1097 = phi i64 [ 0, %.lr.ph859 ], [ %indvars.iv.next1098, %199 ]
  %200 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1097
  %201 = load double, ptr %200, align 8, !tbaa !28
  %202 = load ptr, ptr %198, align 8, !tbaa !5
  %203 = getelementptr inbounds double, ptr %202, i64 %indvars.iv1097
  store double %201, ptr %203, align 8, !tbaa !28
  %indvars.iv.next1098 = add nuw nsw i64 %indvars.iv1097, 1
  %204 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %205 = sext i32 %204 to i64
  %206 = icmp slt i64 %indvars.iv.next1098, %205
  br i1 %206, label %199, label %.loopexit, !llvm.loop !39

207:                                              ; preds = %194
  %208 = fcmp oeq double %3, -1.000000e+00
  %209 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %210 = icmp sgt i32 %209, 0
  br i1 %208, label %.preheader647, label %.preheader649

.preheader649:                                    ; preds = %207
  br i1 %210, label %.lr.ph855, label %.loopexit

.lr.ph855:                                        ; preds = %.preheader649
  %211 = getelementptr inbounds i8, ptr %0, i64 216
  br label %222

.preheader647:                                    ; preds = %207
  br i1 %210, label %.lr.ph857, label %.loopexit

.lr.ph857:                                        ; preds = %.preheader647
  %212 = getelementptr inbounds i8, ptr %0, i64 216
  br label %213

213:                                              ; preds = %.lr.ph857, %213
  %indvars.iv1094 = phi i64 [ 0, %.lr.ph857 ], [ %indvars.iv.next1095, %213 ]
  %214 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1094
  %215 = load double, ptr %214, align 8, !tbaa !28
  %216 = fneg double %215
  %217 = load ptr, ptr %212, align 8, !tbaa !5
  %218 = getelementptr inbounds double, ptr %217, i64 %indvars.iv1094
  store double %216, ptr %218, align 8, !tbaa !28
  %indvars.iv.next1095 = add nuw nsw i64 %indvars.iv1094, 1
  %219 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %220 = sext i32 %219 to i64
  %221 = icmp slt i64 %indvars.iv.next1095, %220
  br i1 %221, label %213, label %.loopexit, !llvm.loop !40

222:                                              ; preds = %.lr.ph855, %222
  %indvars.iv1091 = phi i64 [ 0, %.lr.ph855 ], [ %indvars.iv.next1092, %222 ]
  %223 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1091
  %224 = load double, ptr %223, align 8, !tbaa !28
  %225 = fmul double %224, %3
  %226 = load ptr, ptr %211, align 8, !tbaa !5
  %227 = getelementptr inbounds double, ptr %226, i64 %indvars.iv1091
  store double %225, ptr %227, align 8, !tbaa !28
  %indvars.iv.next1092 = add nuw nsw i64 %indvars.iv1091, 1
  %228 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %229 = sext i32 %228 to i64
  %230 = icmp slt i64 %indvars.iv.next1092, %229
  br i1 %230, label %222, label %.loopexit, !llvm.loop !41

231:                                              ; preds = %181
  br i1 %183, label %.preheader651, label %244

.preheader651:                                    ; preds = %231
  %232 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %233 = icmp sgt i32 %232, 0
  br i1 %233, label %.lr.ph853, label %.loopexit

.lr.ph853:                                        ; preds = %.preheader651
  %234 = getelementptr inbounds i8, ptr %0, i64 216
  br label %235

235:                                              ; preds = %.lr.ph853, %235
  %indvars.iv1088 = phi i64 [ 0, %.lr.ph853 ], [ %indvars.iv.next1089, %235 ]
  %236 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1088
  %237 = load double, ptr %236, align 8, !tbaa !28
  %238 = fmul double %237, %1
  %239 = load ptr, ptr %234, align 8, !tbaa !5
  %240 = getelementptr inbounds double, ptr %239, i64 %indvars.iv1088
  store double %238, ptr %240, align 8, !tbaa !28
  %indvars.iv.next1089 = add nuw nsw i64 %indvars.iv1088, 1
  %241 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %242 = sext i32 %241 to i64
  %243 = icmp slt i64 %indvars.iv.next1089, %242
  br i1 %243, label %235, label %.loopexit, !llvm.loop !42

244:                                              ; preds = %231
  %245 = fcmp oeq double %3, 1.000000e+00
  br i1 %245, label %.preheader653, label %260

.preheader653:                                    ; preds = %244
  %246 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %247 = icmp sgt i32 %246, 0
  br i1 %247, label %.lr.ph851, label %.loopexit

.lr.ph851:                                        ; preds = %.preheader653
  %248 = getelementptr inbounds i8, ptr %0, i64 216
  br label %249

249:                                              ; preds = %.lr.ph851, %249
  %indvars.iv1085 = phi i64 [ 0, %.lr.ph851 ], [ %indvars.iv.next1086, %249 ]
  %250 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1085
  %251 = load double, ptr %250, align 8, !tbaa !28
  %252 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1085
  %253 = load double, ptr %252, align 8, !tbaa !28
  %254 = tail call double @llvm.fmuladd.f64(double %1, double %251, double %253)
  %255 = load ptr, ptr %248, align 8, !tbaa !5
  %256 = getelementptr inbounds double, ptr %255, i64 %indvars.iv1085
  store double %254, ptr %256, align 8, !tbaa !28
  %indvars.iv.next1086 = add nuw nsw i64 %indvars.iv1085, 1
  %257 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %258 = sext i32 %257 to i64
  %259 = icmp slt i64 %indvars.iv.next1086, %258
  br i1 %259, label %249, label %.loopexit, !llvm.loop !43

260:                                              ; preds = %244
  %261 = fcmp oeq double %3, -1.000000e+00
  %262 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %263 = icmp sgt i32 %262, 0
  br i1 %261, label %.preheader655, label %.preheader657

.preheader657:                                    ; preds = %260
  br i1 %263, label %.lr.ph847, label %.loopexit

.lr.ph847:                                        ; preds = %.preheader657
  %264 = getelementptr inbounds i8, ptr %0, i64 216
  br label %278

.preheader655:                                    ; preds = %260
  br i1 %263, label %.lr.ph849, label %.loopexit

.lr.ph849:                                        ; preds = %.preheader655
  %265 = getelementptr inbounds i8, ptr %0, i64 216
  br label %266

266:                                              ; preds = %.lr.ph849, %266
  %indvars.iv1082 = phi i64 [ 0, %.lr.ph849 ], [ %indvars.iv.next1083, %266 ]
  %267 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1082
  %268 = load double, ptr %267, align 8, !tbaa !28
  %269 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1082
  %270 = load double, ptr %269, align 8, !tbaa !28
  %271 = fneg double %270
  %272 = tail call double @llvm.fmuladd.f64(double %1, double %268, double %271)
  %273 = load ptr, ptr %265, align 8, !tbaa !5
  %274 = getelementptr inbounds double, ptr %273, i64 %indvars.iv1082
  store double %272, ptr %274, align 8, !tbaa !28
  %indvars.iv.next1083 = add nuw nsw i64 %indvars.iv1082, 1
  %275 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %276 = sext i32 %275 to i64
  %277 = icmp slt i64 %indvars.iv.next1083, %276
  br i1 %277, label %266, label %.loopexit, !llvm.loop !44

278:                                              ; preds = %.lr.ph847, %278
  %indvars.iv1079 = phi i64 [ 0, %.lr.ph847 ], [ %indvars.iv.next1080, %278 ]
  %279 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1079
  %280 = load double, ptr %279, align 8, !tbaa !28
  %281 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1079
  %282 = load double, ptr %281, align 8, !tbaa !28
  %283 = fmul double %282, %3
  %284 = tail call double @llvm.fmuladd.f64(double %1, double %280, double %283)
  %285 = load ptr, ptr %264, align 8, !tbaa !5
  %286 = getelementptr inbounds double, ptr %285, i64 %indvars.iv1079
  store double %284, ptr %286, align 8, !tbaa !28
  %indvars.iv.next1080 = add nuw nsw i64 %indvars.iv1079, 1
  %287 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %288 = sext i32 %287 to i64
  %289 = icmp slt i64 %indvars.iv.next1080, %288
  br i1 %289, label %278, label %.loopexit, !llvm.loop !45

290:                                              ; preds = %59
  %291 = fcmp oeq double %5, 1.000000e+00
  br i1 %291, label %292, label %539

292:                                              ; preds = %290
  %293 = fcmp oeq double %1, 1.000000e+00
  br i1 %293, label %294, label %359

294:                                              ; preds = %292
  %295 = fcmp oeq double %3, 0.000000e+00
  br i1 %295, label %.preheader659, label %309

.preheader659:                                    ; preds = %294
  %296 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %297 = icmp sgt i32 %296, 0
  br i1 %297, label %.lr.ph845, label %.loopexit

.lr.ph845:                                        ; preds = %.preheader659
  %298 = getelementptr inbounds i8, ptr %0, i64 216
  br label %299

299:                                              ; preds = %.lr.ph845, %299
  %indvars.iv1076 = phi i64 [ 0, %.lr.ph845 ], [ %indvars.iv.next1077, %299 ]
  %300 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1076
  %301 = load double, ptr %300, align 8, !tbaa !28
  %302 = load ptr, ptr %298, align 8, !tbaa !5
  %303 = getelementptr inbounds double, ptr %302, i64 %indvars.iv1076
  %304 = load double, ptr %303, align 8, !tbaa !28
  %305 = fadd double %301, %304
  store double %305, ptr %303, align 8, !tbaa !28
  %indvars.iv.next1077 = add nuw nsw i64 %indvars.iv1076, 1
  %306 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %307 = sext i32 %306 to i64
  %308 = icmp slt i64 %indvars.iv.next1077, %307
  br i1 %308, label %299, label %.loopexit, !llvm.loop !46

309:                                              ; preds = %294
  %310 = fcmp oeq double %3, 1.000000e+00
  br i1 %310, label %.preheader661, label %327

.preheader661:                                    ; preds = %309
  %311 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %312 = icmp sgt i32 %311, 0
  br i1 %312, label %.lr.ph843, label %.loopexit

.lr.ph843:                                        ; preds = %.preheader661
  %313 = getelementptr inbounds i8, ptr %0, i64 216
  br label %314

314:                                              ; preds = %.lr.ph843, %314
  %indvars.iv1073 = phi i64 [ 0, %.lr.ph843 ], [ %indvars.iv.next1074, %314 ]
  %315 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1073
  %316 = load double, ptr %315, align 8, !tbaa !28
  %317 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1073
  %318 = load double, ptr %317, align 8, !tbaa !28
  %319 = fadd double %316, %318
  %320 = load ptr, ptr %313, align 8, !tbaa !5
  %321 = getelementptr inbounds double, ptr %320, i64 %indvars.iv1073
  %322 = load double, ptr %321, align 8, !tbaa !28
  %323 = fadd double %319, %322
  store double %323, ptr %321, align 8, !tbaa !28
  %indvars.iv.next1074 = add nuw nsw i64 %indvars.iv1073, 1
  %324 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %325 = sext i32 %324 to i64
  %326 = icmp slt i64 %indvars.iv.next1074, %325
  br i1 %326, label %314, label %.loopexit, !llvm.loop !47

327:                                              ; preds = %309
  %328 = fcmp oeq double %3, -1.000000e+00
  %329 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %330 = icmp sgt i32 %329, 0
  br i1 %328, label %.preheader663, label %.preheader665

.preheader665:                                    ; preds = %327
  br i1 %330, label %.lr.ph839, label %.loopexit

.lr.ph839:                                        ; preds = %.preheader665
  %331 = getelementptr inbounds i8, ptr %0, i64 216
  br label %346

.preheader663:                                    ; preds = %327
  br i1 %330, label %.lr.ph841, label %.loopexit

.lr.ph841:                                        ; preds = %.preheader663
  %332 = getelementptr inbounds i8, ptr %0, i64 216
  br label %333

333:                                              ; preds = %.lr.ph841, %333
  %indvars.iv1070 = phi i64 [ 0, %.lr.ph841 ], [ %indvars.iv.next1071, %333 ]
  %334 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1070
  %335 = load double, ptr %334, align 8, !tbaa !28
  %336 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1070
  %337 = load double, ptr %336, align 8, !tbaa !28
  %338 = fsub double %335, %337
  %339 = load ptr, ptr %332, align 8, !tbaa !5
  %340 = getelementptr inbounds double, ptr %339, i64 %indvars.iv1070
  %341 = load double, ptr %340, align 8, !tbaa !28
  %342 = fadd double %338, %341
  store double %342, ptr %340, align 8, !tbaa !28
  %indvars.iv.next1071 = add nuw nsw i64 %indvars.iv1070, 1
  %343 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %344 = sext i32 %343 to i64
  %345 = icmp slt i64 %indvars.iv.next1071, %344
  br i1 %345, label %333, label %.loopexit, !llvm.loop !48

346:                                              ; preds = %.lr.ph839, %346
  %indvars.iv1067 = phi i64 [ 0, %.lr.ph839 ], [ %indvars.iv.next1068, %346 ]
  %347 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1067
  %348 = load double, ptr %347, align 8, !tbaa !28
  %349 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1067
  %350 = load double, ptr %349, align 8, !tbaa !28
  %351 = tail call double @llvm.fmuladd.f64(double %3, double %350, double %348)
  %352 = load ptr, ptr %331, align 8, !tbaa !5
  %353 = getelementptr inbounds double, ptr %352, i64 %indvars.iv1067
  %354 = load double, ptr %353, align 8, !tbaa !28
  %355 = fadd double %351, %354
  store double %355, ptr %353, align 8, !tbaa !28
  %indvars.iv.next1068 = add nuw nsw i64 %indvars.iv1067, 1
  %356 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %357 = sext i32 %356 to i64
  %358 = icmp slt i64 %indvars.iv.next1068, %357
  br i1 %358, label %346, label %.loopexit, !llvm.loop !49

359:                                              ; preds = %292
  %360 = fcmp oeq double %1, -1.000000e+00
  br i1 %360, label %361, label %428

361:                                              ; preds = %359
  %362 = fcmp oeq double %3, 0.000000e+00
  br i1 %362, label %.preheader667, label %376

.preheader667:                                    ; preds = %361
  %363 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %364 = icmp sgt i32 %363, 0
  br i1 %364, label %.lr.ph837, label %.loopexit

.lr.ph837:                                        ; preds = %.preheader667
  %365 = getelementptr inbounds i8, ptr %0, i64 216
  br label %366

366:                                              ; preds = %.lr.ph837, %366
  %indvars.iv1064 = phi i64 [ 0, %.lr.ph837 ], [ %indvars.iv.next1065, %366 ]
  %367 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1064
  %368 = load double, ptr %367, align 8, !tbaa !28
  %369 = load ptr, ptr %365, align 8, !tbaa !5
  %370 = getelementptr inbounds double, ptr %369, i64 %indvars.iv1064
  %371 = load double, ptr %370, align 8, !tbaa !28
  %372 = fsub double %371, %368
  store double %372, ptr %370, align 8, !tbaa !28
  %indvars.iv.next1065 = add nuw nsw i64 %indvars.iv1064, 1
  %373 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %374 = sext i32 %373 to i64
  %375 = icmp slt i64 %indvars.iv.next1065, %374
  br i1 %375, label %366, label %.loopexit, !llvm.loop !50

376:                                              ; preds = %361
  %377 = fcmp oeq double %3, 1.000000e+00
  br i1 %377, label %.preheader669, label %394

.preheader669:                                    ; preds = %376
  %378 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %379 = icmp sgt i32 %378, 0
  br i1 %379, label %.lr.ph835, label %.loopexit

.lr.ph835:                                        ; preds = %.preheader669
  %380 = getelementptr inbounds i8, ptr %0, i64 216
  br label %381

381:                                              ; preds = %.lr.ph835, %381
  %indvars.iv1061 = phi i64 [ 0, %.lr.ph835 ], [ %indvars.iv.next1062, %381 ]
  %382 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1061
  %383 = load double, ptr %382, align 8, !tbaa !28
  %384 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1061
  %385 = load double, ptr %384, align 8, !tbaa !28
  %386 = fsub double %385, %383
  %387 = load ptr, ptr %380, align 8, !tbaa !5
  %388 = getelementptr inbounds double, ptr %387, i64 %indvars.iv1061
  %389 = load double, ptr %388, align 8, !tbaa !28
  %390 = fadd double %386, %389
  store double %390, ptr %388, align 8, !tbaa !28
  %indvars.iv.next1062 = add nuw nsw i64 %indvars.iv1061, 1
  %391 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %392 = sext i32 %391 to i64
  %393 = icmp slt i64 %indvars.iv.next1062, %392
  br i1 %393, label %381, label %.loopexit, !llvm.loop !51

394:                                              ; preds = %376
  %395 = fcmp oeq double %3, -1.000000e+00
  %396 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %397 = icmp sgt i32 %396, 0
  br i1 %395, label %.preheader671, label %.preheader673

.preheader673:                                    ; preds = %394
  br i1 %397, label %.lr.ph831, label %.loopexit

.lr.ph831:                                        ; preds = %.preheader673
  %398 = getelementptr inbounds i8, ptr %0, i64 216
  br label %414

.preheader671:                                    ; preds = %394
  br i1 %397, label %.lr.ph833, label %.loopexit

.lr.ph833:                                        ; preds = %.preheader671
  %399 = getelementptr inbounds i8, ptr %0, i64 216
  br label %400

400:                                              ; preds = %.lr.ph833, %400
  %indvars.iv1058 = phi i64 [ 0, %.lr.ph833 ], [ %indvars.iv.next1059, %400 ]
  %401 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1058
  %402 = load double, ptr %401, align 8, !tbaa !28
  %403 = fneg double %402
  %404 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1058
  %405 = load double, ptr %404, align 8, !tbaa !28
  %406 = fsub double %403, %405
  %407 = load ptr, ptr %399, align 8, !tbaa !5
  %408 = getelementptr inbounds double, ptr %407, i64 %indvars.iv1058
  %409 = load double, ptr %408, align 8, !tbaa !28
  %410 = fadd double %406, %409
  store double %410, ptr %408, align 8, !tbaa !28
  %indvars.iv.next1059 = add nuw nsw i64 %indvars.iv1058, 1
  %411 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %412 = sext i32 %411 to i64
  %413 = icmp slt i64 %indvars.iv.next1059, %412
  br i1 %413, label %400, label %.loopexit, !llvm.loop !52

414:                                              ; preds = %.lr.ph831, %414
  %indvars.iv1055 = phi i64 [ 0, %.lr.ph831 ], [ %indvars.iv.next1056, %414 ]
  %415 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1055
  %416 = load double, ptr %415, align 8, !tbaa !28
  %417 = fneg double %416
  %418 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1055
  %419 = load double, ptr %418, align 8, !tbaa !28
  %420 = tail call double @llvm.fmuladd.f64(double %3, double %419, double %417)
  %421 = load ptr, ptr %398, align 8, !tbaa !5
  %422 = getelementptr inbounds double, ptr %421, i64 %indvars.iv1055
  %423 = load double, ptr %422, align 8, !tbaa !28
  %424 = fadd double %420, %423
  store double %424, ptr %422, align 8, !tbaa !28
  %indvars.iv.next1056 = add nuw nsw i64 %indvars.iv1055, 1
  %425 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %426 = sext i32 %425 to i64
  %427 = icmp slt i64 %indvars.iv.next1056, %426
  br i1 %427, label %414, label %.loopexit, !llvm.loop !53

428:                                              ; preds = %359
  %429 = fcmp oeq double %1, 0.000000e+00
  %430 = fcmp oeq double %3, 0.000000e+00
  br i1 %429, label %431, label %473

431:                                              ; preds = %428
  br i1 %430, label %.loopexit, label %432

432:                                              ; preds = %431
  %433 = fcmp oeq double %3, 1.000000e+00
  br i1 %433, label %.preheader675, label %447

.preheader675:                                    ; preds = %432
  %434 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %435 = icmp sgt i32 %434, 0
  br i1 %435, label %.lr.ph829, label %.loopexit

.lr.ph829:                                        ; preds = %.preheader675
  %436 = getelementptr inbounds i8, ptr %0, i64 216
  br label %437

437:                                              ; preds = %.lr.ph829, %437
  %indvars.iv1052 = phi i64 [ 0, %.lr.ph829 ], [ %indvars.iv.next1053, %437 ]
  %438 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1052
  %439 = load double, ptr %438, align 8, !tbaa !28
  %440 = load ptr, ptr %436, align 8, !tbaa !5
  %441 = getelementptr inbounds double, ptr %440, i64 %indvars.iv1052
  %442 = load double, ptr %441, align 8, !tbaa !28
  %443 = fadd double %439, %442
  store double %443, ptr %441, align 8, !tbaa !28
  %indvars.iv.next1053 = add nuw nsw i64 %indvars.iv1052, 1
  %444 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %445 = sext i32 %444 to i64
  %446 = icmp slt i64 %indvars.iv.next1053, %445
  br i1 %446, label %437, label %.loopexit, !llvm.loop !54

447:                                              ; preds = %432
  %448 = fcmp oeq double %3, -1.000000e+00
  %449 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %450 = icmp sgt i32 %449, 0
  br i1 %448, label %.preheader677, label %.preheader679

.preheader679:                                    ; preds = %447
  br i1 %450, label %.lr.ph825, label %.loopexit

.lr.ph825:                                        ; preds = %.preheader679
  %451 = getelementptr inbounds i8, ptr %0, i64 216
  br label %463

.preheader677:                                    ; preds = %447
  br i1 %450, label %.lr.ph827, label %.loopexit

.lr.ph827:                                        ; preds = %.preheader677
  %452 = getelementptr inbounds i8, ptr %0, i64 216
  br label %453

453:                                              ; preds = %.lr.ph827, %453
  %indvars.iv1049 = phi i64 [ 0, %.lr.ph827 ], [ %indvars.iv.next1050, %453 ]
  %454 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1049
  %455 = load double, ptr %454, align 8, !tbaa !28
  %456 = load ptr, ptr %452, align 8, !tbaa !5
  %457 = getelementptr inbounds double, ptr %456, i64 %indvars.iv1049
  %458 = load double, ptr %457, align 8, !tbaa !28
  %459 = fsub double %458, %455
  store double %459, ptr %457, align 8, !tbaa !28
  %indvars.iv.next1050 = add nuw nsw i64 %indvars.iv1049, 1
  %460 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %461 = sext i32 %460 to i64
  %462 = icmp slt i64 %indvars.iv.next1050, %461
  br i1 %462, label %453, label %.loopexit, !llvm.loop !55

463:                                              ; preds = %.lr.ph825, %463
  %indvars.iv1046 = phi i64 [ 0, %.lr.ph825 ], [ %indvars.iv.next1047, %463 ]
  %464 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1046
  %465 = load double, ptr %464, align 8, !tbaa !28
  %466 = load ptr, ptr %451, align 8, !tbaa !5
  %467 = getelementptr inbounds double, ptr %466, i64 %indvars.iv1046
  %468 = load double, ptr %467, align 8, !tbaa !28
  %469 = tail call double @llvm.fmuladd.f64(double %3, double %465, double %468)
  store double %469, ptr %467, align 8, !tbaa !28
  %indvars.iv.next1047 = add nuw nsw i64 %indvars.iv1046, 1
  %470 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %471 = sext i32 %470 to i64
  %472 = icmp slt i64 %indvars.iv.next1047, %471
  br i1 %472, label %463, label %.loopexit, !llvm.loop !56

473:                                              ; preds = %428
  br i1 %430, label %.preheader681, label %487

.preheader681:                                    ; preds = %473
  %474 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %475 = icmp sgt i32 %474, 0
  br i1 %475, label %.lr.ph823, label %.loopexit

.lr.ph823:                                        ; preds = %.preheader681
  %476 = getelementptr inbounds i8, ptr %0, i64 216
  br label %477

477:                                              ; preds = %.lr.ph823, %477
  %indvars.iv1043 = phi i64 [ 0, %.lr.ph823 ], [ %indvars.iv.next1044, %477 ]
  %478 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1043
  %479 = load double, ptr %478, align 8, !tbaa !28
  %480 = load ptr, ptr %476, align 8, !tbaa !5
  %481 = getelementptr inbounds double, ptr %480, i64 %indvars.iv1043
  %482 = load double, ptr %481, align 8, !tbaa !28
  %483 = tail call double @llvm.fmuladd.f64(double %1, double %479, double %482)
  store double %483, ptr %481, align 8, !tbaa !28
  %indvars.iv.next1044 = add nuw nsw i64 %indvars.iv1043, 1
  %484 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %485 = sext i32 %484 to i64
  %486 = icmp slt i64 %indvars.iv.next1044, %485
  br i1 %486, label %477, label %.loopexit, !llvm.loop !57

487:                                              ; preds = %473
  %488 = fcmp oeq double %3, 1.000000e+00
  br i1 %488, label %.preheader683, label %505

.preheader683:                                    ; preds = %487
  %489 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %490 = icmp sgt i32 %489, 0
  br i1 %490, label %.lr.ph821, label %.loopexit

.lr.ph821:                                        ; preds = %.preheader683
  %491 = getelementptr inbounds i8, ptr %0, i64 216
  br label %492

492:                                              ; preds = %.lr.ph821, %492
  %indvars.iv1040 = phi i64 [ 0, %.lr.ph821 ], [ %indvars.iv.next1041, %492 ]
  %493 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1040
  %494 = load double, ptr %493, align 8, !tbaa !28
  %495 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1040
  %496 = load double, ptr %495, align 8, !tbaa !28
  %497 = tail call double @llvm.fmuladd.f64(double %1, double %494, double %496)
  %498 = load ptr, ptr %491, align 8, !tbaa !5
  %499 = getelementptr inbounds double, ptr %498, i64 %indvars.iv1040
  %500 = load double, ptr %499, align 8, !tbaa !28
  %501 = fadd double %497, %500
  store double %501, ptr %499, align 8, !tbaa !28
  %indvars.iv.next1041 = add nuw nsw i64 %indvars.iv1040, 1
  %502 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %503 = sext i32 %502 to i64
  %504 = icmp slt i64 %indvars.iv.next1041, %503
  br i1 %504, label %492, label %.loopexit, !llvm.loop !58

505:                                              ; preds = %487
  %506 = fcmp oeq double %3, -1.000000e+00
  %507 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %508 = icmp sgt i32 %507, 0
  br i1 %506, label %.preheader685, label %.preheader687

.preheader687:                                    ; preds = %505
  br i1 %508, label %.lr.ph817, label %.loopexit

.lr.ph817:                                        ; preds = %.preheader687
  %509 = getelementptr inbounds i8, ptr %0, i64 216
  br label %525

.preheader685:                                    ; preds = %505
  br i1 %508, label %.lr.ph819, label %.loopexit

.lr.ph819:                                        ; preds = %.preheader685
  %510 = getelementptr inbounds i8, ptr %0, i64 216
  br label %511

511:                                              ; preds = %.lr.ph819, %511
  %indvars.iv1037 = phi i64 [ 0, %.lr.ph819 ], [ %indvars.iv.next1038, %511 ]
  %512 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1037
  %513 = load double, ptr %512, align 8, !tbaa !28
  %514 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1037
  %515 = load double, ptr %514, align 8, !tbaa !28
  %516 = fneg double %515
  %517 = tail call double @llvm.fmuladd.f64(double %1, double %513, double %516)
  %518 = load ptr, ptr %510, align 8, !tbaa !5
  %519 = getelementptr inbounds double, ptr %518, i64 %indvars.iv1037
  %520 = load double, ptr %519, align 8, !tbaa !28
  %521 = fadd double %517, %520
  store double %521, ptr %519, align 8, !tbaa !28
  %indvars.iv.next1038 = add nuw nsw i64 %indvars.iv1037, 1
  %522 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %523 = sext i32 %522 to i64
  %524 = icmp slt i64 %indvars.iv.next1038, %523
  br i1 %524, label %511, label %.loopexit, !llvm.loop !59

525:                                              ; preds = %.lr.ph817, %525
  %indvars.iv1034 = phi i64 [ 0, %.lr.ph817 ], [ %indvars.iv.next1035, %525 ]
  %526 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1034
  %527 = load double, ptr %526, align 8, !tbaa !28
  %528 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1034
  %529 = load double, ptr %528, align 8, !tbaa !28
  %530 = fmul double %529, %3
  %531 = tail call double @llvm.fmuladd.f64(double %1, double %527, double %530)
  %532 = load ptr, ptr %509, align 8, !tbaa !5
  %533 = getelementptr inbounds double, ptr %532, i64 %indvars.iv1034
  %534 = load double, ptr %533, align 8, !tbaa !28
  %535 = fadd double %534, %531
  store double %535, ptr %533, align 8, !tbaa !28
  %indvars.iv.next1035 = add nuw nsw i64 %indvars.iv1034, 1
  %536 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %537 = sext i32 %536 to i64
  %538 = icmp slt i64 %indvars.iv.next1035, %537
  br i1 %538, label %525, label %.loopexit, !llvm.loop !60

539:                                              ; preds = %290
  %540 = fcmp oeq double %5, -1.000000e+00
  %541 = fcmp oeq double %1, 1.000000e+00
  br i1 %540, label %542, label %803

542:                                              ; preds = %539
  br i1 %541, label %543, label %608

543:                                              ; preds = %542
  %544 = fcmp oeq double %3, 0.000000e+00
  br i1 %544, label %.preheader689, label %558

.preheader689:                                    ; preds = %543
  %545 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %546 = icmp sgt i32 %545, 0
  br i1 %546, label %.lr.ph815, label %.loopexit

.lr.ph815:                                        ; preds = %.preheader689
  %547 = getelementptr inbounds i8, ptr %0, i64 216
  br label %548

548:                                              ; preds = %.lr.ph815, %548
  %indvars.iv1031 = phi i64 [ 0, %.lr.ph815 ], [ %indvars.iv.next1032, %548 ]
  %549 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1031
  %550 = load double, ptr %549, align 8, !tbaa !28
  %551 = load ptr, ptr %547, align 8, !tbaa !5
  %552 = getelementptr inbounds double, ptr %551, i64 %indvars.iv1031
  %553 = load double, ptr %552, align 8, !tbaa !28
  %554 = fsub double %550, %553
  store double %554, ptr %552, align 8, !tbaa !28
  %indvars.iv.next1032 = add nuw nsw i64 %indvars.iv1031, 1
  %555 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %556 = sext i32 %555 to i64
  %557 = icmp slt i64 %indvars.iv.next1032, %556
  br i1 %557, label %548, label %.loopexit, !llvm.loop !61

558:                                              ; preds = %543
  %559 = fcmp oeq double %3, 1.000000e+00
  br i1 %559, label %.preheader691, label %576

.preheader691:                                    ; preds = %558
  %560 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %561 = icmp sgt i32 %560, 0
  br i1 %561, label %.lr.ph813, label %.loopexit

.lr.ph813:                                        ; preds = %.preheader691
  %562 = getelementptr inbounds i8, ptr %0, i64 216
  br label %563

563:                                              ; preds = %.lr.ph813, %563
  %indvars.iv1028 = phi i64 [ 0, %.lr.ph813 ], [ %indvars.iv.next1029, %563 ]
  %564 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1028
  %565 = load double, ptr %564, align 8, !tbaa !28
  %566 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1028
  %567 = load double, ptr %566, align 8, !tbaa !28
  %568 = fadd double %565, %567
  %569 = load ptr, ptr %562, align 8, !tbaa !5
  %570 = getelementptr inbounds double, ptr %569, i64 %indvars.iv1028
  %571 = load double, ptr %570, align 8, !tbaa !28
  %572 = fsub double %568, %571
  store double %572, ptr %570, align 8, !tbaa !28
  %indvars.iv.next1029 = add nuw nsw i64 %indvars.iv1028, 1
  %573 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %574 = sext i32 %573 to i64
  %575 = icmp slt i64 %indvars.iv.next1029, %574
  br i1 %575, label %563, label %.loopexit, !llvm.loop !62

576:                                              ; preds = %558
  %577 = fcmp oeq double %3, -1.000000e+00
  %578 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %579 = icmp sgt i32 %578, 0
  br i1 %577, label %.preheader693, label %.preheader695

.preheader695:                                    ; preds = %576
  br i1 %579, label %.lr.ph809, label %.loopexit

.lr.ph809:                                        ; preds = %.preheader695
  %580 = getelementptr inbounds i8, ptr %0, i64 216
  br label %595

.preheader693:                                    ; preds = %576
  br i1 %579, label %.lr.ph811, label %.loopexit

.lr.ph811:                                        ; preds = %.preheader693
  %581 = getelementptr inbounds i8, ptr %0, i64 216
  br label %582

582:                                              ; preds = %.lr.ph811, %582
  %indvars.iv1025 = phi i64 [ 0, %.lr.ph811 ], [ %indvars.iv.next1026, %582 ]
  %583 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1025
  %584 = load double, ptr %583, align 8, !tbaa !28
  %585 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1025
  %586 = load double, ptr %585, align 8, !tbaa !28
  %587 = fsub double %584, %586
  %588 = load ptr, ptr %581, align 8, !tbaa !5
  %589 = getelementptr inbounds double, ptr %588, i64 %indvars.iv1025
  %590 = load double, ptr %589, align 8, !tbaa !28
  %591 = fsub double %587, %590
  store double %591, ptr %589, align 8, !tbaa !28
  %indvars.iv.next1026 = add nuw nsw i64 %indvars.iv1025, 1
  %592 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %593 = sext i32 %592 to i64
  %594 = icmp slt i64 %indvars.iv.next1026, %593
  br i1 %594, label %582, label %.loopexit, !llvm.loop !63

595:                                              ; preds = %.lr.ph809, %595
  %indvars.iv1022 = phi i64 [ 0, %.lr.ph809 ], [ %indvars.iv.next1023, %595 ]
  %596 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1022
  %597 = load double, ptr %596, align 8, !tbaa !28
  %598 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1022
  %599 = load double, ptr %598, align 8, !tbaa !28
  %600 = tail call double @llvm.fmuladd.f64(double %3, double %599, double %597)
  %601 = load ptr, ptr %580, align 8, !tbaa !5
  %602 = getelementptr inbounds double, ptr %601, i64 %indvars.iv1022
  %603 = load double, ptr %602, align 8, !tbaa !28
  %604 = fsub double %600, %603
  store double %604, ptr %602, align 8, !tbaa !28
  %indvars.iv.next1023 = add nuw nsw i64 %indvars.iv1022, 1
  %605 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %606 = sext i32 %605 to i64
  %607 = icmp slt i64 %indvars.iv.next1023, %606
  br i1 %607, label %595, label %.loopexit, !llvm.loop !64

608:                                              ; preds = %542
  %609 = fcmp oeq double %1, -1.000000e+00
  br i1 %609, label %610, label %678

610:                                              ; preds = %608
  %611 = fcmp oeq double %3, 0.000000e+00
  br i1 %611, label %.preheader697, label %626

.preheader697:                                    ; preds = %610
  %612 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %613 = icmp sgt i32 %612, 0
  br i1 %613, label %.lr.ph807, label %.loopexit

.lr.ph807:                                        ; preds = %.preheader697
  %614 = getelementptr inbounds i8, ptr %0, i64 216
  br label %615

615:                                              ; preds = %.lr.ph807, %615
  %indvars.iv1019 = phi i64 [ 0, %.lr.ph807 ], [ %indvars.iv.next1020, %615 ]
  %616 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1019
  %617 = load double, ptr %616, align 8, !tbaa !28
  %618 = fneg double %617
  %619 = load ptr, ptr %614, align 8, !tbaa !5
  %620 = getelementptr inbounds double, ptr %619, i64 %indvars.iv1019
  %621 = load double, ptr %620, align 8, !tbaa !28
  %622 = fsub double %618, %621
  store double %622, ptr %620, align 8, !tbaa !28
  %indvars.iv.next1020 = add nuw nsw i64 %indvars.iv1019, 1
  %623 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %624 = sext i32 %623 to i64
  %625 = icmp slt i64 %indvars.iv.next1020, %624
  br i1 %625, label %615, label %.loopexit, !llvm.loop !65

626:                                              ; preds = %610
  %627 = fcmp oeq double %3, 1.000000e+00
  br i1 %627, label %.preheader699, label %644

.preheader699:                                    ; preds = %626
  %628 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %629 = icmp sgt i32 %628, 0
  br i1 %629, label %.lr.ph805, label %.loopexit

.lr.ph805:                                        ; preds = %.preheader699
  %630 = getelementptr inbounds i8, ptr %0, i64 216
  br label %631

631:                                              ; preds = %.lr.ph805, %631
  %indvars.iv1016 = phi i64 [ 0, %.lr.ph805 ], [ %indvars.iv.next1017, %631 ]
  %632 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1016
  %633 = load double, ptr %632, align 8, !tbaa !28
  %634 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1016
  %635 = load double, ptr %634, align 8, !tbaa !28
  %636 = fsub double %635, %633
  %637 = load ptr, ptr %630, align 8, !tbaa !5
  %638 = getelementptr inbounds double, ptr %637, i64 %indvars.iv1016
  %639 = load double, ptr %638, align 8, !tbaa !28
  %640 = fsub double %636, %639
  store double %640, ptr %638, align 8, !tbaa !28
  %indvars.iv.next1017 = add nuw nsw i64 %indvars.iv1016, 1
  %641 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %642 = sext i32 %641 to i64
  %643 = icmp slt i64 %indvars.iv.next1017, %642
  br i1 %643, label %631, label %.loopexit, !llvm.loop !66

644:                                              ; preds = %626
  %645 = fcmp oeq double %3, -1.000000e+00
  %646 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %647 = icmp sgt i32 %646, 0
  br i1 %645, label %.preheader701, label %.preheader703

.preheader703:                                    ; preds = %644
  br i1 %647, label %.lr.ph801, label %.loopexit

.lr.ph801:                                        ; preds = %.preheader703
  %648 = getelementptr inbounds i8, ptr %0, i64 216
  br label %664

.preheader701:                                    ; preds = %644
  br i1 %647, label %.lr.ph803, label %.loopexit

.lr.ph803:                                        ; preds = %.preheader701
  %649 = getelementptr inbounds i8, ptr %0, i64 216
  br label %650

650:                                              ; preds = %.lr.ph803, %650
  %indvars.iv1013 = phi i64 [ 0, %.lr.ph803 ], [ %indvars.iv.next1014, %650 ]
  %651 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1013
  %652 = load double, ptr %651, align 8, !tbaa !28
  %653 = fneg double %652
  %654 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1013
  %655 = load double, ptr %654, align 8, !tbaa !28
  %656 = fsub double %653, %655
  %657 = load ptr, ptr %649, align 8, !tbaa !5
  %658 = getelementptr inbounds double, ptr %657, i64 %indvars.iv1013
  %659 = load double, ptr %658, align 8, !tbaa !28
  %660 = fsub double %656, %659
  store double %660, ptr %658, align 8, !tbaa !28
  %indvars.iv.next1014 = add nuw nsw i64 %indvars.iv1013, 1
  %661 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %662 = sext i32 %661 to i64
  %663 = icmp slt i64 %indvars.iv.next1014, %662
  br i1 %663, label %650, label %.loopexit, !llvm.loop !67

664:                                              ; preds = %.lr.ph801, %664
  %indvars.iv1010 = phi i64 [ 0, %.lr.ph801 ], [ %indvars.iv.next1011, %664 ]
  %665 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv1010
  %666 = load double, ptr %665, align 8, !tbaa !28
  %667 = fneg double %666
  %668 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1010
  %669 = load double, ptr %668, align 8, !tbaa !28
  %670 = tail call double @llvm.fmuladd.f64(double %3, double %669, double %667)
  %671 = load ptr, ptr %648, align 8, !tbaa !5
  %672 = getelementptr inbounds double, ptr %671, i64 %indvars.iv1010
  %673 = load double, ptr %672, align 8, !tbaa !28
  %674 = fsub double %670, %673
  store double %674, ptr %672, align 8, !tbaa !28
  %indvars.iv.next1011 = add nuw nsw i64 %indvars.iv1010, 1
  %675 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %676 = sext i32 %675 to i64
  %677 = icmp slt i64 %indvars.iv.next1011, %676
  br i1 %677, label %664, label %.loopexit, !llvm.loop !68

678:                                              ; preds = %608
  %679 = fcmp oeq double %1, 0.000000e+00
  %680 = fcmp oeq double %3, 0.000000e+00
  br i1 %679, label %681, label %736

681:                                              ; preds = %678
  br i1 %680, label %.preheader705, label %693

.preheader705:                                    ; preds = %681
  %682 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %683 = icmp sgt i32 %682, 0
  br i1 %683, label %.lr.ph799, label %.loopexit

.lr.ph799:                                        ; preds = %.preheader705
  %684 = getelementptr inbounds i8, ptr %0, i64 216
  br label %685

685:                                              ; preds = %.lr.ph799, %685
  %indvars.iv1007 = phi i64 [ 0, %.lr.ph799 ], [ %indvars.iv.next1008, %685 ]
  %686 = load ptr, ptr %684, align 8, !tbaa !5
  %687 = getelementptr inbounds double, ptr %686, i64 %indvars.iv1007
  %688 = load double, ptr %687, align 8, !tbaa !28
  %689 = fneg double %688
  store double %689, ptr %687, align 8, !tbaa !28
  %indvars.iv.next1008 = add nuw nsw i64 %indvars.iv1007, 1
  %690 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %691 = sext i32 %690 to i64
  %692 = icmp slt i64 %indvars.iv.next1008, %691
  br i1 %692, label %685, label %.loopexit, !llvm.loop !69

693:                                              ; preds = %681
  %694 = fcmp oeq double %3, 1.000000e+00
  br i1 %694, label %.preheader707, label %708

.preheader707:                                    ; preds = %693
  %695 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %696 = icmp sgt i32 %695, 0
  br i1 %696, label %.lr.ph797, label %.loopexit

.lr.ph797:                                        ; preds = %.preheader707
  %697 = getelementptr inbounds i8, ptr %0, i64 216
  br label %698

698:                                              ; preds = %.lr.ph797, %698
  %indvars.iv1004 = phi i64 [ 0, %.lr.ph797 ], [ %indvars.iv.next1005, %698 ]
  %699 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1004
  %700 = load double, ptr %699, align 8, !tbaa !28
  %701 = load ptr, ptr %697, align 8, !tbaa !5
  %702 = getelementptr inbounds double, ptr %701, i64 %indvars.iv1004
  %703 = load double, ptr %702, align 8, !tbaa !28
  %704 = fsub double %700, %703
  store double %704, ptr %702, align 8, !tbaa !28
  %indvars.iv.next1005 = add nuw nsw i64 %indvars.iv1004, 1
  %705 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %706 = sext i32 %705 to i64
  %707 = icmp slt i64 %indvars.iv.next1005, %706
  br i1 %707, label %698, label %.loopexit, !llvm.loop !70

708:                                              ; preds = %693
  %709 = fcmp oeq double %3, -1.000000e+00
  %710 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %711 = icmp sgt i32 %710, 0
  br i1 %709, label %.preheader709, label %.preheader711

.preheader711:                                    ; preds = %708
  br i1 %711, label %.lr.ph793, label %.loopexit

.lr.ph793:                                        ; preds = %.preheader711
  %712 = getelementptr inbounds i8, ptr %0, i64 216
  br label %725

.preheader709:                                    ; preds = %708
  br i1 %711, label %.lr.ph795, label %.loopexit

.lr.ph795:                                        ; preds = %.preheader709
  %713 = getelementptr inbounds i8, ptr %0, i64 216
  br label %714

714:                                              ; preds = %.lr.ph795, %714
  %indvars.iv1001 = phi i64 [ 0, %.lr.ph795 ], [ %indvars.iv.next1002, %714 ]
  %715 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv1001
  %716 = load double, ptr %715, align 8, !tbaa !28
  %717 = fneg double %716
  %718 = load ptr, ptr %713, align 8, !tbaa !5
  %719 = getelementptr inbounds double, ptr %718, i64 %indvars.iv1001
  %720 = load double, ptr %719, align 8, !tbaa !28
  %721 = fsub double %717, %720
  store double %721, ptr %719, align 8, !tbaa !28
  %indvars.iv.next1002 = add nuw nsw i64 %indvars.iv1001, 1
  %722 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %723 = sext i32 %722 to i64
  %724 = icmp slt i64 %indvars.iv.next1002, %723
  br i1 %724, label %714, label %.loopexit, !llvm.loop !71

725:                                              ; preds = %.lr.ph793, %725
  %indvars.iv998 = phi i64 [ 0, %.lr.ph793 ], [ %indvars.iv.next999, %725 ]
  %726 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv998
  %727 = load double, ptr %726, align 8, !tbaa !28
  %728 = load ptr, ptr %712, align 8, !tbaa !5
  %729 = getelementptr inbounds double, ptr %728, i64 %indvars.iv998
  %730 = load double, ptr %729, align 8, !tbaa !28
  %731 = fneg double %730
  %732 = tail call double @llvm.fmuladd.f64(double %3, double %727, double %731)
  store double %732, ptr %729, align 8, !tbaa !28
  %indvars.iv.next999 = add nuw nsw i64 %indvars.iv998, 1
  %733 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %734 = sext i32 %733 to i64
  %735 = icmp slt i64 %indvars.iv.next999, %734
  br i1 %735, label %725, label %.loopexit, !llvm.loop !72

736:                                              ; preds = %678
  br i1 %680, label %.preheader713, label %751

.preheader713:                                    ; preds = %736
  %737 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %738 = icmp sgt i32 %737, 0
  br i1 %738, label %.lr.ph791, label %.loopexit

.lr.ph791:                                        ; preds = %.preheader713
  %739 = getelementptr inbounds i8, ptr %0, i64 216
  br label %740

740:                                              ; preds = %.lr.ph791, %740
  %indvars.iv995 = phi i64 [ 0, %.lr.ph791 ], [ %indvars.iv.next996, %740 ]
  %741 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv995
  %742 = load double, ptr %741, align 8, !tbaa !28
  %743 = load ptr, ptr %739, align 8, !tbaa !5
  %744 = getelementptr inbounds double, ptr %743, i64 %indvars.iv995
  %745 = load double, ptr %744, align 8, !tbaa !28
  %746 = fneg double %745
  %747 = tail call double @llvm.fmuladd.f64(double %1, double %742, double %746)
  store double %747, ptr %744, align 8, !tbaa !28
  %indvars.iv.next996 = add nuw nsw i64 %indvars.iv995, 1
  %748 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %749 = sext i32 %748 to i64
  %750 = icmp slt i64 %indvars.iv.next996, %749
  br i1 %750, label %740, label %.loopexit, !llvm.loop !73

751:                                              ; preds = %736
  %752 = fcmp oeq double %3, 1.000000e+00
  br i1 %752, label %.preheader715, label %769

.preheader715:                                    ; preds = %751
  %753 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %754 = icmp sgt i32 %753, 0
  br i1 %754, label %.lr.ph789, label %.loopexit

.lr.ph789:                                        ; preds = %.preheader715
  %755 = getelementptr inbounds i8, ptr %0, i64 216
  br label %756

756:                                              ; preds = %.lr.ph789, %756
  %indvars.iv992 = phi i64 [ 0, %.lr.ph789 ], [ %indvars.iv.next993, %756 ]
  %757 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv992
  %758 = load double, ptr %757, align 8, !tbaa !28
  %759 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv992
  %760 = load double, ptr %759, align 8, !tbaa !28
  %761 = tail call double @llvm.fmuladd.f64(double %1, double %758, double %760)
  %762 = load ptr, ptr %755, align 8, !tbaa !5
  %763 = getelementptr inbounds double, ptr %762, i64 %indvars.iv992
  %764 = load double, ptr %763, align 8, !tbaa !28
  %765 = fsub double %761, %764
  store double %765, ptr %763, align 8, !tbaa !28
  %indvars.iv.next993 = add nuw nsw i64 %indvars.iv992, 1
  %766 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %767 = sext i32 %766 to i64
  %768 = icmp slt i64 %indvars.iv.next993, %767
  br i1 %768, label %756, label %.loopexit, !llvm.loop !74

769:                                              ; preds = %751
  %770 = fcmp oeq double %3, -1.000000e+00
  %771 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %772 = icmp sgt i32 %771, 0
  br i1 %770, label %.preheader717, label %.preheader719

.preheader719:                                    ; preds = %769
  br i1 %772, label %.lr.ph785, label %.loopexit

.lr.ph785:                                        ; preds = %.preheader719
  %773 = getelementptr inbounds i8, ptr %0, i64 216
  br label %789

.preheader717:                                    ; preds = %769
  br i1 %772, label %.lr.ph787, label %.loopexit

.lr.ph787:                                        ; preds = %.preheader717
  %774 = getelementptr inbounds i8, ptr %0, i64 216
  br label %775

775:                                              ; preds = %.lr.ph787, %775
  %indvars.iv989 = phi i64 [ 0, %.lr.ph787 ], [ %indvars.iv.next990, %775 ]
  %776 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv989
  %777 = load double, ptr %776, align 8, !tbaa !28
  %778 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv989
  %779 = load double, ptr %778, align 8, !tbaa !28
  %780 = fneg double %779
  %781 = tail call double @llvm.fmuladd.f64(double %1, double %777, double %780)
  %782 = load ptr, ptr %774, align 8, !tbaa !5
  %783 = getelementptr inbounds double, ptr %782, i64 %indvars.iv989
  %784 = load double, ptr %783, align 8, !tbaa !28
  %785 = fsub double %781, %784
  store double %785, ptr %783, align 8, !tbaa !28
  %indvars.iv.next990 = add nuw nsw i64 %indvars.iv989, 1
  %786 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %787 = sext i32 %786 to i64
  %788 = icmp slt i64 %indvars.iv.next990, %787
  br i1 %788, label %775, label %.loopexit, !llvm.loop !75

789:                                              ; preds = %.lr.ph785, %789
  %indvars.iv986 = phi i64 [ 0, %.lr.ph785 ], [ %indvars.iv.next987, %789 ]
  %790 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv986
  %791 = load double, ptr %790, align 8, !tbaa !28
  %792 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv986
  %793 = load double, ptr %792, align 8, !tbaa !28
  %794 = fmul double %793, %3
  %795 = tail call double @llvm.fmuladd.f64(double %1, double %791, double %794)
  %796 = load ptr, ptr %773, align 8, !tbaa !5
  %797 = getelementptr inbounds double, ptr %796, i64 %indvars.iv986
  %798 = load double, ptr %797, align 8, !tbaa !28
  %799 = fsub double %795, %798
  store double %799, ptr %797, align 8, !tbaa !28
  %indvars.iv.next987 = add nuw nsw i64 %indvars.iv986, 1
  %800 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %801 = sext i32 %800 to i64
  %802 = icmp slt i64 %indvars.iv.next987, %801
  br i1 %802, label %789, label %.loopexit, !llvm.loop !76

803:                                              ; preds = %539
  br i1 %541, label %804, label %869

804:                                              ; preds = %803
  %805 = fcmp oeq double %3, 0.000000e+00
  br i1 %805, label %.preheader721, label %819

.preheader721:                                    ; preds = %804
  %806 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %807 = icmp sgt i32 %806, 0
  br i1 %807, label %.lr.ph783, label %.loopexit

.lr.ph783:                                        ; preds = %.preheader721
  %808 = getelementptr inbounds i8, ptr %0, i64 216
  br label %809

809:                                              ; preds = %.lr.ph783, %809
  %indvars.iv983 = phi i64 [ 0, %.lr.ph783 ], [ %indvars.iv.next984, %809 ]
  %810 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv983
  %811 = load double, ptr %810, align 8, !tbaa !28
  %812 = load ptr, ptr %808, align 8, !tbaa !5
  %813 = getelementptr inbounds double, ptr %812, i64 %indvars.iv983
  %814 = load double, ptr %813, align 8, !tbaa !28
  %815 = tail call double @llvm.fmuladd.f64(double %5, double %814, double %811)
  store double %815, ptr %813, align 8, !tbaa !28
  %indvars.iv.next984 = add nuw nsw i64 %indvars.iv983, 1
  %816 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %817 = sext i32 %816 to i64
  %818 = icmp slt i64 %indvars.iv.next984, %817
  br i1 %818, label %809, label %.loopexit, !llvm.loop !77

819:                                              ; preds = %804
  %820 = fcmp oeq double %3, 1.000000e+00
  br i1 %820, label %.preheader723, label %837

.preheader723:                                    ; preds = %819
  %821 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %822 = icmp sgt i32 %821, 0
  br i1 %822, label %.lr.ph781, label %.loopexit

.lr.ph781:                                        ; preds = %.preheader723
  %823 = getelementptr inbounds i8, ptr %0, i64 216
  br label %824

824:                                              ; preds = %.lr.ph781, %824
  %indvars.iv980 = phi i64 [ 0, %.lr.ph781 ], [ %indvars.iv.next981, %824 ]
  %825 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv980
  %826 = load double, ptr %825, align 8, !tbaa !28
  %827 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv980
  %828 = load double, ptr %827, align 8, !tbaa !28
  %829 = fadd double %826, %828
  %830 = load ptr, ptr %823, align 8, !tbaa !5
  %831 = getelementptr inbounds double, ptr %830, i64 %indvars.iv980
  %832 = load double, ptr %831, align 8, !tbaa !28
  %833 = tail call double @llvm.fmuladd.f64(double %5, double %832, double %829)
  store double %833, ptr %831, align 8, !tbaa !28
  %indvars.iv.next981 = add nuw nsw i64 %indvars.iv980, 1
  %834 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %835 = sext i32 %834 to i64
  %836 = icmp slt i64 %indvars.iv.next981, %835
  br i1 %836, label %824, label %.loopexit, !llvm.loop !78

837:                                              ; preds = %819
  %838 = fcmp oeq double %3, -1.000000e+00
  %839 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %840 = icmp sgt i32 %839, 0
  br i1 %838, label %.preheader725, label %.preheader727

.preheader727:                                    ; preds = %837
  br i1 %840, label %.lr.ph777, label %.loopexit

.lr.ph777:                                        ; preds = %.preheader727
  %841 = getelementptr inbounds i8, ptr %0, i64 216
  br label %856

.preheader725:                                    ; preds = %837
  br i1 %840, label %.lr.ph779, label %.loopexit

.lr.ph779:                                        ; preds = %.preheader725
  %842 = getelementptr inbounds i8, ptr %0, i64 216
  br label %843

843:                                              ; preds = %.lr.ph779, %843
  %indvars.iv977 = phi i64 [ 0, %.lr.ph779 ], [ %indvars.iv.next978, %843 ]
  %844 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv977
  %845 = load double, ptr %844, align 8, !tbaa !28
  %846 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv977
  %847 = load double, ptr %846, align 8, !tbaa !28
  %848 = fsub double %845, %847
  %849 = load ptr, ptr %842, align 8, !tbaa !5
  %850 = getelementptr inbounds double, ptr %849, i64 %indvars.iv977
  %851 = load double, ptr %850, align 8, !tbaa !28
  %852 = tail call double @llvm.fmuladd.f64(double %5, double %851, double %848)
  store double %852, ptr %850, align 8, !tbaa !28
  %indvars.iv.next978 = add nuw nsw i64 %indvars.iv977, 1
  %853 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %854 = sext i32 %853 to i64
  %855 = icmp slt i64 %indvars.iv.next978, %854
  br i1 %855, label %843, label %.loopexit, !llvm.loop !79

856:                                              ; preds = %.lr.ph777, %856
  %indvars.iv974 = phi i64 [ 0, %.lr.ph777 ], [ %indvars.iv.next975, %856 ]
  %857 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv974
  %858 = load double, ptr %857, align 8, !tbaa !28
  %859 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv974
  %860 = load double, ptr %859, align 8, !tbaa !28
  %861 = tail call double @llvm.fmuladd.f64(double %3, double %860, double %858)
  %862 = load ptr, ptr %841, align 8, !tbaa !5
  %863 = getelementptr inbounds double, ptr %862, i64 %indvars.iv974
  %864 = load double, ptr %863, align 8, !tbaa !28
  %865 = tail call double @llvm.fmuladd.f64(double %5, double %864, double %861)
  store double %865, ptr %863, align 8, !tbaa !28
  %indvars.iv.next975 = add nuw nsw i64 %indvars.iv974, 1
  %866 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %867 = sext i32 %866 to i64
  %868 = icmp slt i64 %indvars.iv.next975, %867
  br i1 %868, label %856, label %.loopexit, !llvm.loop !80

869:                                              ; preds = %803
  %870 = fcmp oeq double %1, -1.000000e+00
  br i1 %870, label %871, label %939

871:                                              ; preds = %869
  %872 = fcmp oeq double %3, 0.000000e+00
  br i1 %872, label %.preheader729, label %887

.preheader729:                                    ; preds = %871
  %873 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %874 = icmp sgt i32 %873, 0
  br i1 %874, label %.lr.ph775, label %.loopexit

.lr.ph775:                                        ; preds = %.preheader729
  %875 = getelementptr inbounds i8, ptr %0, i64 216
  br label %876

876:                                              ; preds = %.lr.ph775, %876
  %indvars.iv971 = phi i64 [ 0, %.lr.ph775 ], [ %indvars.iv.next972, %876 ]
  %877 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv971
  %878 = load double, ptr %877, align 8, !tbaa !28
  %879 = fneg double %878
  %880 = load ptr, ptr %875, align 8, !tbaa !5
  %881 = getelementptr inbounds double, ptr %880, i64 %indvars.iv971
  %882 = load double, ptr %881, align 8, !tbaa !28
  %883 = tail call double @llvm.fmuladd.f64(double %5, double %882, double %879)
  store double %883, ptr %881, align 8, !tbaa !28
  %indvars.iv.next972 = add nuw nsw i64 %indvars.iv971, 1
  %884 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %885 = sext i32 %884 to i64
  %886 = icmp slt i64 %indvars.iv.next972, %885
  br i1 %886, label %876, label %.loopexit, !llvm.loop !81

887:                                              ; preds = %871
  %888 = fcmp oeq double %3, 1.000000e+00
  br i1 %888, label %.preheader731, label %905

.preheader731:                                    ; preds = %887
  %889 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %890 = icmp sgt i32 %889, 0
  br i1 %890, label %.lr.ph773, label %.loopexit

.lr.ph773:                                        ; preds = %.preheader731
  %891 = getelementptr inbounds i8, ptr %0, i64 216
  br label %892

892:                                              ; preds = %.lr.ph773, %892
  %indvars.iv968 = phi i64 [ 0, %.lr.ph773 ], [ %indvars.iv.next969, %892 ]
  %893 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv968
  %894 = load double, ptr %893, align 8, !tbaa !28
  %895 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv968
  %896 = load double, ptr %895, align 8, !tbaa !28
  %897 = fsub double %896, %894
  %898 = load ptr, ptr %891, align 8, !tbaa !5
  %899 = getelementptr inbounds double, ptr %898, i64 %indvars.iv968
  %900 = load double, ptr %899, align 8, !tbaa !28
  %901 = tail call double @llvm.fmuladd.f64(double %5, double %900, double %897)
  store double %901, ptr %899, align 8, !tbaa !28
  %indvars.iv.next969 = add nuw nsw i64 %indvars.iv968, 1
  %902 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %903 = sext i32 %902 to i64
  %904 = icmp slt i64 %indvars.iv.next969, %903
  br i1 %904, label %892, label %.loopexit, !llvm.loop !82

905:                                              ; preds = %887
  %906 = fcmp oeq double %3, -1.000000e+00
  %907 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %908 = icmp sgt i32 %907, 0
  br i1 %906, label %.preheader733, label %.preheader735

.preheader735:                                    ; preds = %905
  br i1 %908, label %.lr.ph769, label %.loopexit

.lr.ph769:                                        ; preds = %.preheader735
  %909 = getelementptr inbounds i8, ptr %0, i64 216
  br label %925

.preheader733:                                    ; preds = %905
  br i1 %908, label %.lr.ph771, label %.loopexit

.lr.ph771:                                        ; preds = %.preheader733
  %910 = getelementptr inbounds i8, ptr %0, i64 216
  br label %911

911:                                              ; preds = %.lr.ph771, %911
  %indvars.iv965 = phi i64 [ 0, %.lr.ph771 ], [ %indvars.iv.next966, %911 ]
  %912 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv965
  %913 = load double, ptr %912, align 8, !tbaa !28
  %914 = fneg double %913
  %915 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv965
  %916 = load double, ptr %915, align 8, !tbaa !28
  %917 = fsub double %914, %916
  %918 = load ptr, ptr %910, align 8, !tbaa !5
  %919 = getelementptr inbounds double, ptr %918, i64 %indvars.iv965
  %920 = load double, ptr %919, align 8, !tbaa !28
  %921 = tail call double @llvm.fmuladd.f64(double %5, double %920, double %917)
  store double %921, ptr %919, align 8, !tbaa !28
  %indvars.iv.next966 = add nuw nsw i64 %indvars.iv965, 1
  %922 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %923 = sext i32 %922 to i64
  %924 = icmp slt i64 %indvars.iv.next966, %923
  br i1 %924, label %911, label %.loopexit, !llvm.loop !83

925:                                              ; preds = %.lr.ph769, %925
  %indvars.iv962 = phi i64 [ 0, %.lr.ph769 ], [ %indvars.iv.next963, %925 ]
  %926 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv962
  %927 = load double, ptr %926, align 8, !tbaa !28
  %928 = fneg double %927
  %929 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv962
  %930 = load double, ptr %929, align 8, !tbaa !28
  %931 = tail call double @llvm.fmuladd.f64(double %3, double %930, double %928)
  %932 = load ptr, ptr %909, align 8, !tbaa !5
  %933 = getelementptr inbounds double, ptr %932, i64 %indvars.iv962
  %934 = load double, ptr %933, align 8, !tbaa !28
  %935 = tail call double @llvm.fmuladd.f64(double %5, double %934, double %931)
  store double %935, ptr %933, align 8, !tbaa !28
  %indvars.iv.next963 = add nuw nsw i64 %indvars.iv962, 1
  %936 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %937 = sext i32 %936 to i64
  %938 = icmp slt i64 %indvars.iv.next963, %937
  br i1 %938, label %925, label %.loopexit, !llvm.loop !84

939:                                              ; preds = %869
  %940 = fcmp oeq double %1, 0.000000e+00
  %941 = fcmp oeq double %3, 0.000000e+00
  br i1 %940, label %942, label %997

942:                                              ; preds = %939
  br i1 %941, label %.preheader737, label %954

.preheader737:                                    ; preds = %942
  %943 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %944 = icmp sgt i32 %943, 0
  br i1 %944, label %.lr.ph767, label %.loopexit

.lr.ph767:                                        ; preds = %.preheader737
  %945 = getelementptr inbounds i8, ptr %0, i64 216
  br label %946

946:                                              ; preds = %.lr.ph767, %946
  %indvars.iv959 = phi i64 [ 0, %.lr.ph767 ], [ %indvars.iv.next960, %946 ]
  %947 = load ptr, ptr %945, align 8, !tbaa !5
  %948 = getelementptr inbounds double, ptr %947, i64 %indvars.iv959
  %949 = load double, ptr %948, align 8, !tbaa !28
  %950 = fmul double %949, %5
  store double %950, ptr %948, align 8, !tbaa !28
  %indvars.iv.next960 = add nuw nsw i64 %indvars.iv959, 1
  %951 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %952 = sext i32 %951 to i64
  %953 = icmp slt i64 %indvars.iv.next960, %952
  br i1 %953, label %946, label %.loopexit, !llvm.loop !85

954:                                              ; preds = %942
  %955 = fcmp oeq double %3, 1.000000e+00
  br i1 %955, label %.preheader739, label %969

.preheader739:                                    ; preds = %954
  %956 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %957 = icmp sgt i32 %956, 0
  br i1 %957, label %.lr.ph765, label %.loopexit

.lr.ph765:                                        ; preds = %.preheader739
  %958 = getelementptr inbounds i8, ptr %0, i64 216
  br label %959

959:                                              ; preds = %.lr.ph765, %959
  %indvars.iv956 = phi i64 [ 0, %.lr.ph765 ], [ %indvars.iv.next957, %959 ]
  %960 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv956
  %961 = load double, ptr %960, align 8, !tbaa !28
  %962 = load ptr, ptr %958, align 8, !tbaa !5
  %963 = getelementptr inbounds double, ptr %962, i64 %indvars.iv956
  %964 = load double, ptr %963, align 8, !tbaa !28
  %965 = tail call double @llvm.fmuladd.f64(double %5, double %964, double %961)
  store double %965, ptr %963, align 8, !tbaa !28
  %indvars.iv.next957 = add nuw nsw i64 %indvars.iv956, 1
  %966 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %967 = sext i32 %966 to i64
  %968 = icmp slt i64 %indvars.iv.next957, %967
  br i1 %968, label %959, label %.loopexit, !llvm.loop !86

969:                                              ; preds = %954
  %970 = fcmp oeq double %3, -1.000000e+00
  %971 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %972 = icmp sgt i32 %971, 0
  br i1 %970, label %.preheader741, label %.preheader743

.preheader743:                                    ; preds = %969
  br i1 %972, label %.lr.ph761, label %.loopexit

.lr.ph761:                                        ; preds = %.preheader743
  %973 = getelementptr inbounds i8, ptr %0, i64 216
  br label %986

.preheader741:                                    ; preds = %969
  br i1 %972, label %.lr.ph763, label %.loopexit

.lr.ph763:                                        ; preds = %.preheader741
  %974 = getelementptr inbounds i8, ptr %0, i64 216
  br label %975

975:                                              ; preds = %.lr.ph763, %975
  %indvars.iv953 = phi i64 [ 0, %.lr.ph763 ], [ %indvars.iv.next954, %975 ]
  %976 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv953
  %977 = load double, ptr %976, align 8, !tbaa !28
  %978 = fneg double %977
  %979 = load ptr, ptr %974, align 8, !tbaa !5
  %980 = getelementptr inbounds double, ptr %979, i64 %indvars.iv953
  %981 = load double, ptr %980, align 8, !tbaa !28
  %982 = tail call double @llvm.fmuladd.f64(double %5, double %981, double %978)
  store double %982, ptr %980, align 8, !tbaa !28
  %indvars.iv.next954 = add nuw nsw i64 %indvars.iv953, 1
  %983 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %984 = sext i32 %983 to i64
  %985 = icmp slt i64 %indvars.iv.next954, %984
  br i1 %985, label %975, label %.loopexit, !llvm.loop !87

986:                                              ; preds = %.lr.ph761, %986
  %indvars.iv950 = phi i64 [ 0, %.lr.ph761 ], [ %indvars.iv.next951, %986 ]
  %987 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv950
  %988 = load double, ptr %987, align 8, !tbaa !28
  %989 = load ptr, ptr %973, align 8, !tbaa !5
  %990 = getelementptr inbounds double, ptr %989, i64 %indvars.iv950
  %991 = load double, ptr %990, align 8, !tbaa !28
  %992 = fmul double %991, %5
  %993 = tail call double @llvm.fmuladd.f64(double %3, double %988, double %992)
  store double %993, ptr %990, align 8, !tbaa !28
  %indvars.iv.next951 = add nuw nsw i64 %indvars.iv950, 1
  %994 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %995 = sext i32 %994 to i64
  %996 = icmp slt i64 %indvars.iv.next951, %995
  br i1 %996, label %986, label %.loopexit, !llvm.loop !88

997:                                              ; preds = %939
  br i1 %941, label %.preheader745, label %1012

.preheader745:                                    ; preds = %997
  %998 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %999 = icmp sgt i32 %998, 0
  br i1 %999, label %.lr.ph759, label %.loopexit

.lr.ph759:                                        ; preds = %.preheader745
  %1000 = getelementptr inbounds i8, ptr %0, i64 216
  br label %1001

1001:                                             ; preds = %.lr.ph759, %1001
  %indvars.iv947 = phi i64 [ 0, %.lr.ph759 ], [ %indvars.iv.next948, %1001 ]
  %1002 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv947
  %1003 = load double, ptr %1002, align 8, !tbaa !28
  %1004 = load ptr, ptr %1000, align 8, !tbaa !5
  %1005 = getelementptr inbounds double, ptr %1004, i64 %indvars.iv947
  %1006 = load double, ptr %1005, align 8, !tbaa !28
  %1007 = fmul double %1006, %5
  %1008 = tail call double @llvm.fmuladd.f64(double %1, double %1003, double %1007)
  store double %1008, ptr %1005, align 8, !tbaa !28
  %indvars.iv.next948 = add nuw nsw i64 %indvars.iv947, 1
  %1009 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %1010 = sext i32 %1009 to i64
  %1011 = icmp slt i64 %indvars.iv.next948, %1010
  br i1 %1011, label %1001, label %.loopexit, !llvm.loop !89

1012:                                             ; preds = %997
  %1013 = fcmp oeq double %3, 1.000000e+00
  br i1 %1013, label %.preheader747, label %1030

.preheader747:                                    ; preds = %1012
  %1014 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %1015 = icmp sgt i32 %1014, 0
  br i1 %1015, label %.lr.ph757, label %.loopexit

.lr.ph757:                                        ; preds = %.preheader747
  %1016 = getelementptr inbounds i8, ptr %0, i64 216
  br label %1017

1017:                                             ; preds = %.lr.ph757, %1017
  %indvars.iv944 = phi i64 [ 0, %.lr.ph757 ], [ %indvars.iv.next945, %1017 ]
  %1018 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv944
  %1019 = load double, ptr %1018, align 8, !tbaa !28
  %1020 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv944
  %1021 = load double, ptr %1020, align 8, !tbaa !28
  %1022 = tail call double @llvm.fmuladd.f64(double %1, double %1019, double %1021)
  %1023 = load ptr, ptr %1016, align 8, !tbaa !5
  %1024 = getelementptr inbounds double, ptr %1023, i64 %indvars.iv944
  %1025 = load double, ptr %1024, align 8, !tbaa !28
  %1026 = tail call double @llvm.fmuladd.f64(double %5, double %1025, double %1022)
  store double %1026, ptr %1024, align 8, !tbaa !28
  %indvars.iv.next945 = add nuw nsw i64 %indvars.iv944, 1
  %1027 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %1028 = sext i32 %1027 to i64
  %1029 = icmp slt i64 %indvars.iv.next945, %1028
  br i1 %1029, label %1017, label %.loopexit, !llvm.loop !90

1030:                                             ; preds = %1012
  %1031 = fcmp oeq double %3, -1.000000e+00
  %1032 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %1033 = icmp sgt i32 %1032, 0
  br i1 %1031, label %.preheader749, label %.preheader751

.preheader751:                                    ; preds = %1030
  br i1 %1033, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %.preheader751
  %1034 = getelementptr inbounds i8, ptr %0, i64 216
  br label %1050

.preheader749:                                    ; preds = %1030
  br i1 %1033, label %.lr.ph755, label %.loopexit

.lr.ph755:                                        ; preds = %.preheader749
  %1035 = getelementptr inbounds i8, ptr %0, i64 216
  br label %1036

1036:                                             ; preds = %.lr.ph755, %1036
  %indvars.iv941 = phi i64 [ 0, %.lr.ph755 ], [ %indvars.iv.next942, %1036 ]
  %1037 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv941
  %1038 = load double, ptr %1037, align 8, !tbaa !28
  %1039 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv941
  %1040 = load double, ptr %1039, align 8, !tbaa !28
  %1041 = fneg double %1040
  %1042 = tail call double @llvm.fmuladd.f64(double %1, double %1038, double %1041)
  %1043 = load ptr, ptr %1035, align 8, !tbaa !5
  %1044 = getelementptr inbounds double, ptr %1043, i64 %indvars.iv941
  %1045 = load double, ptr %1044, align 8, !tbaa !28
  %1046 = tail call double @llvm.fmuladd.f64(double %5, double %1045, double %1042)
  store double %1046, ptr %1044, align 8, !tbaa !28
  %indvars.iv.next942 = add nuw nsw i64 %indvars.iv941, 1
  %1047 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %1048 = sext i32 %1047 to i64
  %1049 = icmp slt i64 %indvars.iv.next942, %1048
  br i1 %1049, label %1036, label %.loopexit, !llvm.loop !91

1050:                                             ; preds = %.lr.ph, %1050
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %1050 ]
  %1051 = getelementptr inbounds double, ptr %.0615, i64 %indvars.iv
  %1052 = load double, ptr %1051, align 8, !tbaa !28
  %1053 = getelementptr inbounds double, ptr %.0618, i64 %indvars.iv
  %1054 = load double, ptr %1053, align 8, !tbaa !28
  %1055 = fmul double %1054, %3
  %1056 = tail call double @llvm.fmuladd.f64(double %1, double %1052, double %1055)
  %1057 = load ptr, ptr %1034, align 8, !tbaa !5
  %1058 = getelementptr inbounds double, ptr %1057, i64 %indvars.iv
  %1059 = load double, ptr %1058, align 8, !tbaa !28
  %1060 = tail call double @llvm.fmuladd.f64(double %5, double %1059, double %1056)
  store double %1060, ptr %1058, align 8, !tbaa !28
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %1061 = tail call noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %0)
  %1062 = sext i32 %1061 to i64
  %1063 = icmp slt i64 %indvars.iv.next, %1062
  br i1 %1063, label %1050, label %.loopexit, !llvm.loop !92

.loopexit:                                        ; preds = %1050, %1036, %1017, %1001, %986, %975, %959, %946, %925, %911, %892, %876, %856, %843, %824, %809, %789, %775, %756, %740, %725, %714, %698, %685, %664, %650, %631, %615, %595, %582, %563, %548, %525, %511, %492, %477, %463, %453, %437, %414, %400, %381, %366, %346, %333, %314, %299, %278, %266, %249, %235, %222, %213, %199, %188, %169, %157, %140, %126, %108, %97, %80, %67, %.preheader751, %.preheader749, %.preheader747, %.preheader745, %.preheader743, %.preheader741, %.preheader739, %.preheader737, %.preheader735, %.preheader733, %.preheader731, %.preheader729, %.preheader727, %.preheader725, %.preheader723, %.preheader721, %.preheader719, %.preheader717, %.preheader715, %.preheader713, %.preheader711, %.preheader709, %.preheader707, %.preheader705, %.preheader703, %.preheader701, %.preheader699, %.preheader697, %.preheader695, %.preheader693, %.preheader691, %.preheader689, %.preheader687, %.preheader685, %.preheader683, %.preheader681, %.preheader679, %.preheader677, %.preheader675, %.preheader673, %.preheader671, %.preheader669, %.preheader667, %.preheader665, %.preheader663, %.preheader661, %.preheader659, %.preheader657, %.preheader655, %.preheader653, %.preheader651, %.preheader649, %.preheader647, %.preheader645, %.preheader643, %.preheader641, %.preheader639, %.preheader637, %.preheader635, %.preheader633, %.preheader631, %.preheader629, %.preheader, %431
  %1064 = getelementptr inbounds i8, ptr %0, i64 224
  store i8 1, ptr %1064, align 8, !tbaa !27
  br label %1065

1065:                                             ; preds = %.loopexit, %58, %40
  ret void
}

declare void @_ZN10SimTKIpopt6Vector17AddTwoVectorsImplEdRKS0_dS2_d(ptr noundef nonnull align 8 dereferenceable(205), double noundef, ptr noundef nonnull align 8 dereferenceable(205), double noundef, ptr noundef nonnull align 8 dereferenceable(205), double noundef) unnamed_addr #4

attributes #0 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nofree nounwind willreturn memory(read) }
attributes #2 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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, !18, i64 216}
!6 = !{!"_ZTSN10SimTKIpopt11DenseVectorE", !7, i64 0, !18, i64 208, !18, i64 216, !22, i64 224, !22, i64 225, !21, i64 232}
!7 = !{!"_ZTSN10SimTKIpopt6VectorE", !8, i64 0, !19, i64 56, !20, i64 64, !10, i64 88, !21, i64 96, !10, i64 104, !21, i64 112, !10, i64 120, !21, i64 128, !10, i64 136, !21, i64 144, !10, i64 152, !21, i64 160, !10, i64 168, !21, i64 176, !10, i64 184, !21, i64 192, !10, i64 200, !22, i64 204}
!8 = !{!"_ZTSN10SimTKIpopt12TaggedObjectE", !9, i64 0, !13, i64 16, !10, i64 48, !10, i64 52}
!9 = !{!"_ZTSN10SimTKIpopt16ReferencedObjectE", !10, i64 8}
!10 = !{!"int", !11, i64 0}
!11 = !{!"omnipotent char", !12, i64 0}
!12 = !{!"Simple C++ TBAA"}
!13 = !{!"_ZTSN10SimTKIpopt7SubjectE", !14, i64 8}
!14 = !{!"_ZTSSt6vectorIPN10SimTKIpopt8ObserverESaIS2_EE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseIPN10SimTKIpopt8ObserverESaIS2_EE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIPN10SimTKIpopt8ObserverESaIS2_EE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIPN10SimTKIpopt8ObserverESaIS2_EE17_Vector_impl_dataE", !18, i64 0, !18, i64 8, !18, i64 16}
!18 = !{!"any pointer", !11, i64 0}
!19 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEE", !18, i64 0}
!20 = !{!"_ZTSN10SimTKIpopt13CachedResultsIdEE", !10, i64 8, !18, i64 16}
!21 = !{!"double", !11, i64 0}
!22 = !{!"bool", !11, i64 0}
!23 = !{!6, !22, i64 225}
!24 = !{i8 0, i8 2}
!25 = !{}
!26 = !{!6, !21, i64 232}
!27 = !{!6, !22, i64 224}
!28 = !{!21, !21, i64 0}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = distinct !{!31, !30}
!32 = distinct !{!32, !30}
!33 = distinct !{!33, !30}
!34 = distinct !{!34, !30}
!35 = distinct !{!35, !30}
!36 = distinct !{!36, !30}
!37 = distinct !{!37, !30}
!38 = distinct !{!38, !30}
!39 = distinct !{!39, !30}
!40 = distinct !{!40, !30}
!41 = distinct !{!41, !30}
!42 = distinct !{!42, !30}
!43 = distinct !{!43, !30}
!44 = distinct !{!44, !30}
!45 = distinct !{!45, !30}
!46 = distinct !{!46, !30}
!47 = distinct !{!47, !30}
!48 = distinct !{!48, !30}
!49 = distinct !{!49, !30}
!50 = distinct !{!50, !30}
!51 = distinct !{!51, !30}
!52 = distinct !{!52, !30}
!53 = distinct !{!53, !30}
!54 = distinct !{!54, !30}
!55 = distinct !{!55, !30}
!56 = distinct !{!56, !30}
!57 = distinct !{!57, !30}
!58 = distinct !{!58, !30}
!59 = distinct !{!59, !30}
!60 = distinct !{!60, !30}
!61 = distinct !{!61, !30}
!62 = distinct !{!62, !30}
!63 = distinct !{!63, !30}
!64 = distinct !{!64, !30}
!65 = distinct !{!65, !30}
!66 = distinct !{!66, !30}
!67 = distinct !{!67, !30}
!68 = distinct !{!68, !30}
!69 = distinct !{!69, !30}
!70 = distinct !{!70, !30}
!71 = distinct !{!71, !30}
!72 = distinct !{!72, !30}
!73 = distinct !{!73, !30}
!74 = distinct !{!74, !30}
!75 = distinct !{!75, !30}
!76 = distinct !{!76, !30}
!77 = distinct !{!77, !30}
!78 = distinct !{!78, !30}
!79 = distinct !{!79, !30}
!80 = distinct !{!80, !30}
!81 = distinct !{!81, !30}
!82 = distinct !{!82, !30}
!83 = distinct !{!83, !30}
!84 = distinct !{!84, !30}
!85 = distinct !{!85, !30}
!86 = distinct !{!86, !30}
!87 = distinct !{!87, !30}
!88 = distinct !{!88, !30}
!89 = distinct !{!89, !30}
!90 = distinct !{!90, !30}
!91 = distinct !{!91, !30}
!92 = distinct !{!92, !30}


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