; LLVM IR from mkmarek/forex.analytics :: lib/ta-lib/src/ta_func (ta_CDLONNECK)

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

%struct.TA_LibcPriv = type { i32, [3 x %struct.TA_ModuleControl], i32, i32, ptr, ptr, i32, [24 x i32], [11 x %struct.TA_CandleSetting] }
%struct.TA_ModuleControl = type { i32, ptr, ptr }
%struct.TA_CandleSetting = type { i32, i32, i32, double }

@TA_Globals = external global ptr, align 8

; Function Attrs: nounwind uwtable
declare dso_local i32 @TA_CDLONNECK_Lookback() #0

; Function Attrs: nounwind uwtable
define dso_local i32 @TA_CDLONNECK(i32 noundef %0, i32 noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8) #0 {
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca double, 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
  store i32 %0, ptr %11, align 4, !tbaa !5
  store i32 %1, ptr %12, align 4, !tbaa !5
  store ptr %2, ptr %13, align 8, !tbaa !9
  store ptr %3, ptr %14, align 8, !tbaa !9
  store ptr %4, ptr %15, align 8, !tbaa !9
  store ptr %5, ptr %16, align 8, !tbaa !9
  store ptr %6, ptr %17, align 8, !tbaa !9
  store ptr %7, ptr %18, align 8, !tbaa !9
  store ptr %8, ptr %19, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  %28 = load i32, ptr %11, align 4, !tbaa !5
  %29 = icmp slt i32 %28, 0
  br i1 %29, label %30, label %31

30:                                               ; preds = %9
  store i32 12, ptr %10, align 4
  store i32 1, ptr %27, align 4
  br label %1503

31:                                               ; preds = %9
  %32 = load i32, ptr %12, align 4, !tbaa !5
  %33 = icmp slt i32 %32, 0
  br i1 %33, label %38, label %34

34:                                               ; preds = %31
  %35 = load i32, ptr %12, align 4, !tbaa !5
  %36 = load i32, ptr %11, align 4, !tbaa !5
  %37 = icmp slt i32 %35, %36
  br i1 %37, label %38, label %39

38:                                               ; preds = %34, %31
  store i32 13, ptr %10, align 4
  store i32 1, ptr %27, align 4
  br label %1503

39:                                               ; preds = %34
  %40 = load ptr, ptr %13, align 8, !tbaa !9
  %41 = icmp ne ptr %40, null
  br i1 %41, label %42, label %51

42:                                               ; preds = %39
  %43 = load ptr, ptr %14, align 8, !tbaa !9
  %44 = icmp ne ptr %43, null
  br i1 %44, label %45, label %51

45:                                               ; preds = %42
  %46 = load ptr, ptr %15, align 8, !tbaa !9
  %47 = icmp ne ptr %46, null
  br i1 %47, label %48, label %51

48:                                               ; preds = %45
  %49 = load ptr, ptr %16, align 8, !tbaa !9
  %50 = icmp ne ptr %49, null
  br i1 %50, label %52, label %51

51:                                               ; preds = %48, %45, %42, %39
  store i32 2, ptr %10, align 4
  store i32 1, ptr %27, align 4
  br label %1503

52:                                               ; preds = %48
  %53 = load ptr, ptr %19, align 8, !tbaa !9
  %54 = icmp ne ptr %53, null
  br i1 %54, label %56, label %55

55:                                               ; preds = %52
  store i32 2, ptr %10, align 4
  store i32 1, ptr %27, align 4
  br label %1503

56:                                               ; preds = %52
  %57 = call i32 @TA_CDLONNECK_Lookback()
  store i32 %57, ptr %26, align 4, !tbaa !5
  %58 = load i32, ptr %11, align 4, !tbaa !5
  %59 = load i32, ptr %26, align 4, !tbaa !5
  %60 = icmp slt i32 %58, %59
  br i1 %60, label %61, label %63

61:                                               ; preds = %56
  %62 = load i32, ptr %26, align 4, !tbaa !5
  store i32 %62, ptr %11, align 4, !tbaa !5
  br label %63

63:                                               ; preds = %61, %56
  %64 = load i32, ptr %11, align 4, !tbaa !5
  %65 = load i32, ptr %12, align 4, !tbaa !5
  %66 = icmp sgt i32 %64, %65
  br i1 %66, label %67, label %70

67:                                               ; preds = %63
  %68 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 0, ptr %68, align 4, !tbaa !5
  %69 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 0, ptr %69, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %27, align 4
  br label %1503

70:                                               ; preds = %63
  store double 0.000000e+00, ptr %20, align 8, !tbaa !11
  %71 = load i32, ptr %11, align 4, !tbaa !5
  %72 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %73 = getelementptr inbounds %struct.TA_LibcPriv, ptr %72, i32 0, i32 8
  %74 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %73, i64 0, i64 10
  %75 = getelementptr inbounds %struct.TA_CandleSetting, ptr %74, i32 0, i32 2
  %76 = load i32, ptr %75, align 8, !tbaa !13
  %77 = sub nsw i32 %71, %76
  store i32 %77, ptr %24, align 4, !tbaa !5
  store double 0.000000e+00, ptr %21, align 8, !tbaa !11
  %78 = load i32, ptr %11, align 4, !tbaa !5
  %79 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %80 = getelementptr inbounds %struct.TA_LibcPriv, ptr %79, i32 0, i32 8
  %81 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %80, i64 0, i64 0
  %82 = getelementptr inbounds %struct.TA_CandleSetting, ptr %81, i32 0, i32 2
  %83 = load i32, ptr %82, align 8, !tbaa !13
  %84 = sub nsw i32 %78, %83
  store i32 %84, ptr %25, align 4, !tbaa !5
  %85 = load i32, ptr %24, align 4, !tbaa !5
  store i32 %85, ptr %22, align 4, !tbaa !5
  br label %86

86:                                               ; preds = %219, %70
  %87 = load i32, ptr %22, align 4, !tbaa !5
  %88 = load i32, ptr %11, align 4, !tbaa !5
  %89 = icmp slt i32 %87, %88
  br i1 %89, label %90, label %225

90:                                               ; preds = %86
  %91 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %92 = getelementptr inbounds %struct.TA_LibcPriv, ptr %91, i32 0, i32 8
  %93 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %92, i64 0, i64 10
  %94 = getelementptr inbounds %struct.TA_CandleSetting, ptr %93, i32 0, i32 1
  %95 = load i32, ptr %94, align 4, !tbaa !15
  %96 = icmp eq i32 %95, 0
  br i1 %96, label %97, label %112

97:                                               ; preds = %90
  %98 = load ptr, ptr %16, align 8, !tbaa !9
  %99 = load i32, ptr %22, align 4, !tbaa !5
  %100 = sub nsw i32 %99, 1
  %101 = sext i32 %100 to i64
  %102 = getelementptr inbounds double, ptr %98, i64 %101
  %103 = load double, ptr %102, align 8, !tbaa !11
  %104 = load ptr, ptr %13, align 8, !tbaa !9
  %105 = load i32, ptr %22, align 4, !tbaa !5
  %106 = sub nsw i32 %105, 1
  %107 = sext i32 %106 to i64
  %108 = getelementptr inbounds double, ptr %104, i64 %107
  %109 = load double, ptr %108, align 8, !tbaa !11
  %110 = fsub double %103, %109
  %111 = call double @llvm.fabs.f64(double %110)
  br label %219

112:                                              ; preds = %90
  %113 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %114 = getelementptr inbounds %struct.TA_LibcPriv, ptr %113, i32 0, i32 8
  %115 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %114, i64 0, i64 10
  %116 = getelementptr inbounds %struct.TA_CandleSetting, ptr %115, i32 0, i32 1
  %117 = load i32, ptr %116, align 4, !tbaa !15
  %118 = icmp eq i32 %117, 1
  br i1 %118, label %119, label %133

119:                                              ; preds = %112
  %120 = load ptr, ptr %14, align 8, !tbaa !9
  %121 = load i32, ptr %22, align 4, !tbaa !5
  %122 = sub nsw i32 %121, 1
  %123 = sext i32 %122 to i64
  %124 = getelementptr inbounds double, ptr %120, i64 %123
  %125 = load double, ptr %124, align 8, !tbaa !11
  %126 = load ptr, ptr %15, align 8, !tbaa !9
  %127 = load i32, ptr %22, align 4, !tbaa !5
  %128 = sub nsw i32 %127, 1
  %129 = sext i32 %128 to i64
  %130 = getelementptr inbounds double, ptr %126, i64 %129
  %131 = load double, ptr %130, align 8, !tbaa !11
  %132 = fsub double %125, %131
  br label %217

133:                                              ; preds = %112
  %134 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %135 = getelementptr inbounds %struct.TA_LibcPriv, ptr %134, i32 0, i32 8
  %136 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %135, i64 0, i64 10
  %137 = getelementptr inbounds %struct.TA_CandleSetting, ptr %136, i32 0, i32 1
  %138 = load i32, ptr %137, align 4, !tbaa !15
  %139 = icmp eq i32 %138, 2
  br i1 %139, label %140, label %214

140:                                              ; preds = %133
  %141 = load ptr, ptr %14, align 8, !tbaa !9
  %142 = load i32, ptr %22, align 4, !tbaa !5
  %143 = sub nsw i32 %142, 1
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds double, ptr %141, i64 %144
  %146 = load double, ptr %145, align 8, !tbaa !11
  %147 = load ptr, ptr %16, align 8, !tbaa !9
  %148 = load i32, ptr %22, align 4, !tbaa !5
  %149 = sub nsw i32 %148, 1
  %150 = sext i32 %149 to i64
  %151 = getelementptr inbounds double, ptr %147, i64 %150
  %152 = load double, ptr %151, align 8, !tbaa !11
  %153 = load ptr, ptr %13, align 8, !tbaa !9
  %154 = load i32, ptr %22, align 4, !tbaa !5
  %155 = sub nsw i32 %154, 1
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds double, ptr %153, i64 %156
  %158 = load double, ptr %157, align 8, !tbaa !11
  %159 = fcmp oge double %152, %158
  br i1 %159, label %160, label %167

160:                                              ; preds = %140
  %161 = load ptr, ptr %16, align 8, !tbaa !9
  %162 = load i32, ptr %22, align 4, !tbaa !5
  %163 = sub nsw i32 %162, 1
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds double, ptr %161, i64 %164
  %166 = load double, ptr %165, align 8, !tbaa !11
  br label %174

167:                                              ; preds = %140
  %168 = load ptr, ptr %13, align 8, !tbaa !9
  %169 = load i32, ptr %22, align 4, !tbaa !5
  %170 = sub nsw i32 %169, 1
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds double, ptr %168, i64 %171
  %173 = load double, ptr %172, align 8, !tbaa !11
  br label %174

174:                                              ; preds = %167, %160
  %175 = phi double [ %166, %160 ], [ %173, %167 ]
  %176 = fsub double %146, %175
  %177 = load ptr, ptr %16, align 8, !tbaa !9
  %178 = load i32, ptr %22, align 4, !tbaa !5
  %179 = sub nsw i32 %178, 1
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds double, ptr %177, i64 %180
  %182 = load double, ptr %181, align 8, !tbaa !11
  %183 = load ptr, ptr %13, align 8, !tbaa !9
  %184 = load i32, ptr %22, align 4, !tbaa !5
  %185 = sub nsw i32 %184, 1
  %186 = sext i32 %185 to i64
  %187 = getelementptr inbounds double, ptr %183, i64 %186
  %188 = load double, ptr %187, align 8, !tbaa !11
  %189 = fcmp oge double %182, %188
  br i1 %189, label %190, label %197

190:                                              ; preds = %174
  %191 = load ptr, ptr %13, align 8, !tbaa !9
  %192 = load i32, ptr %22, align 4, !tbaa !5
  %193 = sub nsw i32 %192, 1
  %194 = sext i32 %193 to i64
  %195 = getelementptr inbounds double, ptr %191, i64 %194
  %196 = load double, ptr %195, align 8, !tbaa !11
  br label %204

197:                                              ; preds = %174
  %198 = load ptr, ptr %16, align 8, !tbaa !9
  %199 = load i32, ptr %22, align 4, !tbaa !5
  %200 = sub nsw i32 %199, 1
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds double, ptr %198, i64 %201
  %203 = load double, ptr %202, align 8, !tbaa !11
  br label %204

204:                                              ; preds = %197, %190
  %205 = phi double [ %196, %190 ], [ %203, %197 ]
  %206 = load ptr, ptr %15, align 8, !tbaa !9
  %207 = load i32, ptr %22, align 4, !tbaa !5
  %208 = sub nsw i32 %207, 1
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds double, ptr %206, i64 %209
  %211 = load double, ptr %210, align 8, !tbaa !11
  %212 = fsub double %205, %211
  %213 = fadd double %176, %212
  br label %215

214:                                              ; preds = %133
  br label %215

215:                                              ; preds = %214, %204
  %216 = phi double [ %213, %204 ], [ 0.000000e+00, %214 ]
  br label %217

217:                                              ; preds = %215, %119
  %218 = phi double [ %132, %119 ], [ %216, %215 ]
  br label %219

219:                                              ; preds = %217, %97
  %220 = phi double [ %111, %97 ], [ %218, %217 ]
  %221 = load double, ptr %20, align 8, !tbaa !11
  %222 = fadd double %221, %220
  store double %222, ptr %20, align 8, !tbaa !11
  %223 = load i32, ptr %22, align 4, !tbaa !5
  %224 = add nsw i32 %223, 1
  store i32 %224, ptr %22, align 4, !tbaa !5
  br label %86, !llvm.loop !16

225:                                              ; preds = %86
  %226 = load i32, ptr %25, align 4, !tbaa !5
  store i32 %226, ptr %22, align 4, !tbaa !5
  br label %227

227:                                              ; preds = %360, %225
  %228 = load i32, ptr %22, align 4, !tbaa !5
  %229 = load i32, ptr %11, align 4, !tbaa !5
  %230 = icmp slt i32 %228, %229
  br i1 %230, label %231, label %366

231:                                              ; preds = %227
  %232 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %233 = getelementptr inbounds %struct.TA_LibcPriv, ptr %232, i32 0, i32 8
  %234 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %233, i64 0, i64 0
  %235 = getelementptr inbounds %struct.TA_CandleSetting, ptr %234, i32 0, i32 1
  %236 = load i32, ptr %235, align 4, !tbaa !15
  %237 = icmp eq i32 %236, 0
  br i1 %237, label %238, label %253

238:                                              ; preds = %231
  %239 = load ptr, ptr %16, align 8, !tbaa !9
  %240 = load i32, ptr %22, align 4, !tbaa !5
  %241 = sub nsw i32 %240, 1
  %242 = sext i32 %241 to i64
  %243 = getelementptr inbounds double, ptr %239, i64 %242
  %244 = load double, ptr %243, align 8, !tbaa !11
  %245 = load ptr, ptr %13, align 8, !tbaa !9
  %246 = load i32, ptr %22, align 4, !tbaa !5
  %247 = sub nsw i32 %246, 1
  %248 = sext i32 %247 to i64
  %249 = getelementptr inbounds double, ptr %245, i64 %248
  %250 = load double, ptr %249, align 8, !tbaa !11
  %251 = fsub double %244, %250
  %252 = call double @llvm.fabs.f64(double %251)
  br label %360

253:                                              ; preds = %231
  %254 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %255 = getelementptr inbounds %struct.TA_LibcPriv, ptr %254, i32 0, i32 8
  %256 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %255, i64 0, i64 0
  %257 = getelementptr inbounds %struct.TA_CandleSetting, ptr %256, i32 0, i32 1
  %258 = load i32, ptr %257, align 4, !tbaa !15
  %259 = icmp eq i32 %258, 1
  br i1 %259, label %260, label %274

260:                                              ; preds = %253
  %261 = load ptr, ptr %14, align 8, !tbaa !9
  %262 = load i32, ptr %22, align 4, !tbaa !5
  %263 = sub nsw i32 %262, 1
  %264 = sext i32 %263 to i64
  %265 = getelementptr inbounds double, ptr %261, i64 %264
  %266 = load double, ptr %265, align 8, !tbaa !11
  %267 = load ptr, ptr %15, align 8, !tbaa !9
  %268 = load i32, ptr %22, align 4, !tbaa !5
  %269 = sub nsw i32 %268, 1
  %270 = sext i32 %269 to i64
  %271 = getelementptr inbounds double, ptr %267, i64 %270
  %272 = load double, ptr %271, align 8, !tbaa !11
  %273 = fsub double %266, %272
  br label %358

274:                                              ; preds = %253
  %275 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %276 = getelementptr inbounds %struct.TA_LibcPriv, ptr %275, i32 0, i32 8
  %277 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %276, i64 0, i64 0
  %278 = getelementptr inbounds %struct.TA_CandleSetting, ptr %277, i32 0, i32 1
  %279 = load i32, ptr %278, align 4, !tbaa !15
  %280 = icmp eq i32 %279, 2
  br i1 %280, label %281, label %355

281:                                              ; preds = %274
  %282 = load ptr, ptr %14, align 8, !tbaa !9
  %283 = load i32, ptr %22, align 4, !tbaa !5
  %284 = sub nsw i32 %283, 1
  %285 = sext i32 %284 to i64
  %286 = getelementptr inbounds double, ptr %282, i64 %285
  %287 = load double, ptr %286, align 8, !tbaa !11
  %288 = load ptr, ptr %16, align 8, !tbaa !9
  %289 = load i32, ptr %22, align 4, !tbaa !5
  %290 = sub nsw i32 %289, 1
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds double, ptr %288, i64 %291
  %293 = load double, ptr %292, align 8, !tbaa !11
  %294 = load ptr, ptr %13, align 8, !tbaa !9
  %295 = load i32, ptr %22, align 4, !tbaa !5
  %296 = sub nsw i32 %295, 1
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds double, ptr %294, i64 %297
  %299 = load double, ptr %298, align 8, !tbaa !11
  %300 = fcmp oge double %293, %299
  br i1 %300, label %301, label %308

301:                                              ; preds = %281
  %302 = load ptr, ptr %16, align 8, !tbaa !9
  %303 = load i32, ptr %22, align 4, !tbaa !5
  %304 = sub nsw i32 %303, 1
  %305 = sext i32 %304 to i64
  %306 = getelementptr inbounds double, ptr %302, i64 %305
  %307 = load double, ptr %306, align 8, !tbaa !11
  br label %315

308:                                              ; preds = %281
  %309 = load ptr, ptr %13, align 8, !tbaa !9
  %310 = load i32, ptr %22, align 4, !tbaa !5
  %311 = sub nsw i32 %310, 1
  %312 = sext i32 %311 to i64
  %313 = getelementptr inbounds double, ptr %309, i64 %312
  %314 = load double, ptr %313, align 8, !tbaa !11
  br label %315

315:                                              ; preds = %308, %301
  %316 = phi double [ %307, %301 ], [ %314, %308 ]
  %317 = fsub double %287, %316
  %318 = load ptr, ptr %16, align 8, !tbaa !9
  %319 = load i32, ptr %22, align 4, !tbaa !5
  %320 = sub nsw i32 %319, 1
  %321 = sext i32 %320 to i64
  %322 = getelementptr inbounds double, ptr %318, i64 %321
  %323 = load double, ptr %322, align 8, !tbaa !11
  %324 = load ptr, ptr %13, align 8, !tbaa !9
  %325 = load i32, ptr %22, align 4, !tbaa !5
  %326 = sub nsw i32 %325, 1
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds double, ptr %324, i64 %327
  %329 = load double, ptr %328, align 8, !tbaa !11
  %330 = fcmp oge double %323, %329
  br i1 %330, label %331, label %338

331:                                              ; preds = %315
  %332 = load ptr, ptr %13, align 8, !tbaa !9
  %333 = load i32, ptr %22, align 4, !tbaa !5
  %334 = sub nsw i32 %333, 1
  %335 = sext i32 %334 to i64
  %336 = getelementptr inbounds double, ptr %332, i64 %335
  %337 = load double, ptr %336, align 8, !tbaa !11
  br label %345

338:                                              ; preds = %315
  %339 = load ptr, ptr %16, align 8, !tbaa !9
  %340 = load i32, ptr %22, align 4, !tbaa !5
  %341 = sub nsw i32 %340, 1
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds double, ptr %339, i64 %342
  %344 = load double, ptr %343, align 8, !tbaa !11
  br label %345

345:                                              ; preds = %338, %331
  %346 = phi double [ %337, %331 ], [ %344, %338 ]
  %347 = load ptr, ptr %15, align 8, !tbaa !9
  %348 = load i32, ptr %22, align 4, !tbaa !5
  %349 = sub nsw i32 %348, 1
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds double, ptr %347, i64 %350
  %352 = load double, ptr %351, align 8, !tbaa !11
  %353 = fsub double %346, %352
  %354 = fadd double %317, %353
  br label %356

355:                                              ; preds = %274
  br label %356

356:                                              ; preds = %355, %345
  %357 = phi double [ %354, %345 ], [ 0.000000e+00, %355 ]
  br label %358

358:                                              ; preds = %356, %260
  %359 = phi double [ %273, %260 ], [ %357, %356 ]
  br label %360

360:                                              ; preds = %358, %238
  %361 = phi double [ %252, %238 ], [ %359, %358 ]
  %362 = load double, ptr %21, align 8, !tbaa !11
  %363 = fadd double %362, %361
  store double %363, ptr %21, align 8, !tbaa !11
  %364 = load i32, ptr %22, align 4, !tbaa !5
  %365 = add nsw i32 %364, 1
  store i32 %365, ptr %22, align 4, !tbaa !5
  br label %227, !llvm.loop !18

366:                                              ; preds = %227
  %367 = load i32, ptr %11, align 4, !tbaa !5
  store i32 %367, ptr %22, align 4, !tbaa !5
  store i32 0, ptr %23, align 4, !tbaa !5
  br label %368

368:                                              ; preds = %1494, %366
  %369 = load ptr, ptr %16, align 8, !tbaa !9
  %370 = load i32, ptr %22, align 4, !tbaa !5
  %371 = sub nsw i32 %370, 1
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds double, ptr %369, i64 %372
  %374 = load double, ptr %373, align 8, !tbaa !11
  %375 = load ptr, ptr %13, align 8, !tbaa !9
  %376 = load i32, ptr %22, align 4, !tbaa !5
  %377 = sub nsw i32 %376, 1
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds double, ptr %375, i64 %378
  %380 = load double, ptr %379, align 8, !tbaa !11
  %381 = fcmp oge double %374, %380
  %382 = zext i1 %381 to i64
  %383 = select i1 %381, i32 1, i32 -1
  %384 = icmp eq i32 %383, -1
  br i1 %384, label %385, label %955

385:                                              ; preds = %368
  %386 = load ptr, ptr %16, align 8, !tbaa !9
  %387 = load i32, ptr %22, align 4, !tbaa !5
  %388 = sub nsw i32 %387, 1
  %389 = sext i32 %388 to i64
  %390 = getelementptr inbounds double, ptr %386, i64 %389
  %391 = load double, ptr %390, align 8, !tbaa !11
  %392 = load ptr, ptr %13, align 8, !tbaa !9
  %393 = load i32, ptr %22, align 4, !tbaa !5
  %394 = sub nsw i32 %393, 1
  %395 = sext i32 %394 to i64
  %396 = getelementptr inbounds double, ptr %392, i64 %395
  %397 = load double, ptr %396, align 8, !tbaa !11
  %398 = fsub double %391, %397
  %399 = call double @llvm.fabs.f64(double %398)
  %400 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %401 = getelementptr inbounds %struct.TA_LibcPriv, ptr %400, i32 0, i32 8
  %402 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %401, i64 0, i64 0
  %403 = getelementptr inbounds %struct.TA_CandleSetting, ptr %402, i32 0, i32 3
  %404 = load double, ptr %403, align 8, !tbaa !19
  %405 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %406 = getelementptr inbounds %struct.TA_LibcPriv, ptr %405, i32 0, i32 8
  %407 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %406, i64 0, i64 0
  %408 = getelementptr inbounds %struct.TA_CandleSetting, ptr %407, i32 0, i32 2
  %409 = load i32, ptr %408, align 8, !tbaa !13
  %410 = sitofp i32 %409 to double
  %411 = fcmp une double %410, 0.000000e+00
  br i1 %411, label %412, label %421

412:                                              ; preds = %385
  %413 = load double, ptr %21, align 8, !tbaa !11
  %414 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %415 = getelementptr inbounds %struct.TA_LibcPriv, ptr %414, i32 0, i32 8
  %416 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %415, i64 0, i64 0
  %417 = getelementptr inbounds %struct.TA_CandleSetting, ptr %416, i32 0, i32 2
  %418 = load i32, ptr %417, align 8, !tbaa !13
  %419 = sitofp i32 %418 to double
  %420 = fdiv double %413, %419
  br label %552

421:                                              ; preds = %385
  %422 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %423 = getelementptr inbounds %struct.TA_LibcPriv, ptr %422, i32 0, i32 8
  %424 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %423, i64 0, i64 0
  %425 = getelementptr inbounds %struct.TA_CandleSetting, ptr %424, i32 0, i32 1
  %426 = load i32, ptr %425, align 4, !tbaa !15
  %427 = icmp eq i32 %426, 0
  br i1 %427, label %428, label %443

428:                                              ; preds = %421
  %429 = load ptr, ptr %16, align 8, !tbaa !9
  %430 = load i32, ptr %22, align 4, !tbaa !5
  %431 = sub nsw i32 %430, 1
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds double, ptr %429, i64 %432
  %434 = load double, ptr %433, align 8, !tbaa !11
  %435 = load ptr, ptr %13, align 8, !tbaa !9
  %436 = load i32, ptr %22, align 4, !tbaa !5
  %437 = sub nsw i32 %436, 1
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds double, ptr %435, i64 %438
  %440 = load double, ptr %439, align 8, !tbaa !11
  %441 = fsub double %434, %440
  %442 = call double @llvm.fabs.f64(double %441)
  br label %550

443:                                              ; preds = %421
  %444 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %445 = getelementptr inbounds %struct.TA_LibcPriv, ptr %444, i32 0, i32 8
  %446 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %445, i64 0, i64 0
  %447 = getelementptr inbounds %struct.TA_CandleSetting, ptr %446, i32 0, i32 1
  %448 = load i32, ptr %447, align 4, !tbaa !15
  %449 = icmp eq i32 %448, 1
  br i1 %449, label %450, label %464

450:                                              ; preds = %443
  %451 = load ptr, ptr %14, align 8, !tbaa !9
  %452 = load i32, ptr %22, align 4, !tbaa !5
  %453 = sub nsw i32 %452, 1
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds double, ptr %451, i64 %454
  %456 = load double, ptr %455, align 8, !tbaa !11
  %457 = load ptr, ptr %15, align 8, !tbaa !9
  %458 = load i32, ptr %22, align 4, !tbaa !5
  %459 = sub nsw i32 %458, 1
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds double, ptr %457, i64 %460
  %462 = load double, ptr %461, align 8, !tbaa !11
  %463 = fsub double %456, %462
  br label %548

464:                                              ; preds = %443
  %465 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %466 = getelementptr inbounds %struct.TA_LibcPriv, ptr %465, i32 0, i32 8
  %467 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %466, i64 0, i64 0
  %468 = getelementptr inbounds %struct.TA_CandleSetting, ptr %467, i32 0, i32 1
  %469 = load i32, ptr %468, align 4, !tbaa !15
  %470 = icmp eq i32 %469, 2
  br i1 %470, label %471, label %545

471:                                              ; preds = %464
  %472 = load ptr, ptr %14, align 8, !tbaa !9
  %473 = load i32, ptr %22, align 4, !tbaa !5
  %474 = sub nsw i32 %473, 1
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds double, ptr %472, i64 %475
  %477 = load double, ptr %476, align 8, !tbaa !11
  %478 = load ptr, ptr %16, align 8, !tbaa !9
  %479 = load i32, ptr %22, align 4, !tbaa !5
  %480 = sub nsw i32 %479, 1
  %481 = sext i32 %480 to i64
  %482 = getelementptr inbounds double, ptr %478, i64 %481
  %483 = load double, ptr %482, align 8, !tbaa !11
  %484 = load ptr, ptr %13, align 8, !tbaa !9
  %485 = load i32, ptr %22, align 4, !tbaa !5
  %486 = sub nsw i32 %485, 1
  %487 = sext i32 %486 to i64
  %488 = getelementptr inbounds double, ptr %484, i64 %487
  %489 = load double, ptr %488, align 8, !tbaa !11
  %490 = fcmp oge double %483, %489
  br i1 %490, label %491, label %498

491:                                              ; preds = %471
  %492 = load ptr, ptr %16, align 8, !tbaa !9
  %493 = load i32, ptr %22, align 4, !tbaa !5
  %494 = sub nsw i32 %493, 1
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds double, ptr %492, i64 %495
  %497 = load double, ptr %496, align 8, !tbaa !11
  br label %505

498:                                              ; preds = %471
  %499 = load ptr, ptr %13, align 8, !tbaa !9
  %500 = load i32, ptr %22, align 4, !tbaa !5
  %501 = sub nsw i32 %500, 1
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds double, ptr %499, i64 %502
  %504 = load double, ptr %503, align 8, !tbaa !11
  br label %505

505:                                              ; preds = %498, %491
  %506 = phi double [ %497, %491 ], [ %504, %498 ]
  %507 = fsub double %477, %506
  %508 = load ptr, ptr %16, align 8, !tbaa !9
  %509 = load i32, ptr %22, align 4, !tbaa !5
  %510 = sub nsw i32 %509, 1
  %511 = sext i32 %510 to i64
  %512 = getelementptr inbounds double, ptr %508, i64 %511
  %513 = load double, ptr %512, align 8, !tbaa !11
  %514 = load ptr, ptr %13, align 8, !tbaa !9
  %515 = load i32, ptr %22, align 4, !tbaa !5
  %516 = sub nsw i32 %515, 1
  %517 = sext i32 %516 to i64
  %518 = getelementptr inbounds double, ptr %514, i64 %517
  %519 = load double, ptr %518, align 8, !tbaa !11
  %520 = fcmp oge double %513, %519
  br i1 %520, label %521, label %528

521:                                              ; preds = %505
  %522 = load ptr, ptr %13, align 8, !tbaa !9
  %523 = load i32, ptr %22, align 4, !tbaa !5
  %524 = sub nsw i32 %523, 1
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds double, ptr %522, i64 %525
  %527 = load double, ptr %526, align 8, !tbaa !11
  br label %535

528:                                              ; preds = %505
  %529 = load ptr, ptr %16, align 8, !tbaa !9
  %530 = load i32, ptr %22, align 4, !tbaa !5
  %531 = sub nsw i32 %530, 1
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds double, ptr %529, i64 %532
  %534 = load double, ptr %533, align 8, !tbaa !11
  br label %535

535:                                              ; preds = %528, %521
  %536 = phi double [ %527, %521 ], [ %534, %528 ]
  %537 = load ptr, ptr %15, align 8, !tbaa !9
  %538 = load i32, ptr %22, align 4, !tbaa !5
  %539 = sub nsw i32 %538, 1
  %540 = sext i32 %539 to i64
  %541 = getelementptr inbounds double, ptr %537, i64 %540
  %542 = load double, ptr %541, align 8, !tbaa !11
  %543 = fsub double %536, %542
  %544 = fadd double %507, %543
  br label %546

545:                                              ; preds = %464
  br label %546

546:                                              ; preds = %545, %535
  %547 = phi double [ %544, %535 ], [ 0.000000e+00, %545 ]
  br label %548

548:                                              ; preds = %546, %450
  %549 = phi double [ %463, %450 ], [ %547, %546 ]
  br label %550

550:                                              ; preds = %548, %428
  %551 = phi double [ %442, %428 ], [ %549, %548 ]
  br label %552

552:                                              ; preds = %550, %412
  %553 = phi double [ %420, %412 ], [ %551, %550 ]
  %554 = fmul double %404, %553
  %555 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %556 = getelementptr inbounds %struct.TA_LibcPriv, ptr %555, i32 0, i32 8
  %557 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %556, i64 0, i64 0
  %558 = getelementptr inbounds %struct.TA_CandleSetting, ptr %557, i32 0, i32 1
  %559 = load i32, ptr %558, align 4, !tbaa !15
  %560 = icmp eq i32 %559, 2
  %561 = zext i1 %560 to i64
  %562 = select i1 %560, double 2.000000e+00, double 1.000000e+00
  %563 = fdiv double %554, %562
  %564 = fcmp ogt double %399, %563
  br i1 %564, label %565, label %955

565:                                              ; preds = %552
  %566 = load ptr, ptr %16, align 8, !tbaa !9
  %567 = load i32, ptr %22, align 4, !tbaa !5
  %568 = sext i32 %567 to i64
  %569 = getelementptr inbounds double, ptr %566, i64 %568
  %570 = load double, ptr %569, align 8, !tbaa !11
  %571 = load ptr, ptr %13, align 8, !tbaa !9
  %572 = load i32, ptr %22, align 4, !tbaa !5
  %573 = sext i32 %572 to i64
  %574 = getelementptr inbounds double, ptr %571, i64 %573
  %575 = load double, ptr %574, align 8, !tbaa !11
  %576 = fcmp oge double %570, %575
  %577 = zext i1 %576 to i64
  %578 = select i1 %576, i32 1, i32 -1
  %579 = icmp eq i32 %578, 1
  br i1 %579, label %580, label %955

580:                                              ; preds = %565
  %581 = load ptr, ptr %13, align 8, !tbaa !9
  %582 = load i32, ptr %22, align 4, !tbaa !5
  %583 = sext i32 %582 to i64
  %584 = getelementptr inbounds double, ptr %581, i64 %583
  %585 = load double, ptr %584, align 8, !tbaa !11
  %586 = load ptr, ptr %15, align 8, !tbaa !9
  %587 = load i32, ptr %22, align 4, !tbaa !5
  %588 = sub nsw i32 %587, 1
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds double, ptr %586, i64 %589
  %591 = load double, ptr %590, align 8, !tbaa !11
  %592 = fcmp olt double %585, %591
  br i1 %592, label %593, label %955

593:                                              ; preds = %580
  %594 = load ptr, ptr %16, align 8, !tbaa !9
  %595 = load i32, ptr %22, align 4, !tbaa !5
  %596 = sext i32 %595 to i64
  %597 = getelementptr inbounds double, ptr %594, i64 %596
  %598 = load double, ptr %597, align 8, !tbaa !11
  %599 = load ptr, ptr %15, align 8, !tbaa !9
  %600 = load i32, ptr %22, align 4, !tbaa !5
  %601 = sub nsw i32 %600, 1
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds double, ptr %599, i64 %602
  %604 = load double, ptr %603, align 8, !tbaa !11
  %605 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %606 = getelementptr inbounds %struct.TA_LibcPriv, ptr %605, i32 0, i32 8
  %607 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %606, i64 0, i64 10
  %608 = getelementptr inbounds %struct.TA_CandleSetting, ptr %607, i32 0, i32 3
  %609 = load double, ptr %608, align 8, !tbaa !19
  %610 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %611 = getelementptr inbounds %struct.TA_LibcPriv, ptr %610, i32 0, i32 8
  %612 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %611, i64 0, i64 10
  %613 = getelementptr inbounds %struct.TA_CandleSetting, ptr %612, i32 0, i32 2
  %614 = load i32, ptr %613, align 8, !tbaa !13
  %615 = sitofp i32 %614 to double
  %616 = fcmp une double %615, 0.000000e+00
  br i1 %616, label %617, label %626

617:                                              ; preds = %593
  %618 = load double, ptr %20, align 8, !tbaa !11
  %619 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %620 = getelementptr inbounds %struct.TA_LibcPriv, ptr %619, i32 0, i32 8
  %621 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %620, i64 0, i64 10
  %622 = getelementptr inbounds %struct.TA_CandleSetting, ptr %621, i32 0, i32 2
  %623 = load i32, ptr %622, align 8, !tbaa !13
  %624 = sitofp i32 %623 to double
  %625 = fdiv double %618, %624
  br label %757

626:                                              ; preds = %593
  %627 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %628 = getelementptr inbounds %struct.TA_LibcPriv, ptr %627, i32 0, i32 8
  %629 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %628, i64 0, i64 10
  %630 = getelementptr inbounds %struct.TA_CandleSetting, ptr %629, i32 0, i32 1
  %631 = load i32, ptr %630, align 4, !tbaa !15
  %632 = icmp eq i32 %631, 0
  br i1 %632, label %633, label %648

633:                                              ; preds = %626
  %634 = load ptr, ptr %16, align 8, !tbaa !9
  %635 = load i32, ptr %22, align 4, !tbaa !5
  %636 = sub nsw i32 %635, 1
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds double, ptr %634, i64 %637
  %639 = load double, ptr %638, align 8, !tbaa !11
  %640 = load ptr, ptr %13, align 8, !tbaa !9
  %641 = load i32, ptr %22, align 4, !tbaa !5
  %642 = sub nsw i32 %641, 1
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds double, ptr %640, i64 %643
  %645 = load double, ptr %644, align 8, !tbaa !11
  %646 = fsub double %639, %645
  %647 = call double @llvm.fabs.f64(double %646)
  br label %755

648:                                              ; preds = %626
  %649 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %650 = getelementptr inbounds %struct.TA_LibcPriv, ptr %649, i32 0, i32 8
  %651 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %650, i64 0, i64 10
  %652 = getelementptr inbounds %struct.TA_CandleSetting, ptr %651, i32 0, i32 1
  %653 = load i32, ptr %652, align 4, !tbaa !15
  %654 = icmp eq i32 %653, 1
  br i1 %654, label %655, label %669

655:                                              ; preds = %648
  %656 = load ptr, ptr %14, align 8, !tbaa !9
  %657 = load i32, ptr %22, align 4, !tbaa !5
  %658 = sub nsw i32 %657, 1
  %659 = sext i32 %658 to i64
  %660 = getelementptr inbounds double, ptr %656, i64 %659
  %661 = load double, ptr %660, align 8, !tbaa !11
  %662 = load ptr, ptr %15, align 8, !tbaa !9
  %663 = load i32, ptr %22, align 4, !tbaa !5
  %664 = sub nsw i32 %663, 1
  %665 = sext i32 %664 to i64
  %666 = getelementptr inbounds double, ptr %662, i64 %665
  %667 = load double, ptr %666, align 8, !tbaa !11
  %668 = fsub double %661, %667
  br label %753

669:                                              ; preds = %648
  %670 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %671 = getelementptr inbounds %struct.TA_LibcPriv, ptr %670, i32 0, i32 8
  %672 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %671, i64 0, i64 10
  %673 = getelementptr inbounds %struct.TA_CandleSetting, ptr %672, i32 0, i32 1
  %674 = load i32, ptr %673, align 4, !tbaa !15
  %675 = icmp eq i32 %674, 2
  br i1 %675, label %676, label %750

676:                                              ; preds = %669
  %677 = load ptr, ptr %14, align 8, !tbaa !9
  %678 = load i32, ptr %22, align 4, !tbaa !5
  %679 = sub nsw i32 %678, 1
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds double, ptr %677, i64 %680
  %682 = load double, ptr %681, align 8, !tbaa !11
  %683 = load ptr, ptr %16, align 8, !tbaa !9
  %684 = load i32, ptr %22, align 4, !tbaa !5
  %685 = sub nsw i32 %684, 1
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds double, ptr %683, i64 %686
  %688 = load double, ptr %687, align 8, !tbaa !11
  %689 = load ptr, ptr %13, align 8, !tbaa !9
  %690 = load i32, ptr %22, align 4, !tbaa !5
  %691 = sub nsw i32 %690, 1
  %692 = sext i32 %691 to i64
  %693 = getelementptr inbounds double, ptr %689, i64 %692
  %694 = load double, ptr %693, align 8, !tbaa !11
  %695 = fcmp oge double %688, %694
  br i1 %695, label %696, label %703

696:                                              ; preds = %676
  %697 = load ptr, ptr %16, align 8, !tbaa !9
  %698 = load i32, ptr %22, align 4, !tbaa !5
  %699 = sub nsw i32 %698, 1
  %700 = sext i32 %699 to i64
  %701 = getelementptr inbounds double, ptr %697, i64 %700
  %702 = load double, ptr %701, align 8, !tbaa !11
  br label %710

703:                                              ; preds = %676
  %704 = load ptr, ptr %13, align 8, !tbaa !9
  %705 = load i32, ptr %22, align 4, !tbaa !5
  %706 = sub nsw i32 %705, 1
  %707 = sext i32 %706 to i64
  %708 = getelementptr inbounds double, ptr %704, i64 %707
  %709 = load double, ptr %708, align 8, !tbaa !11
  br label %710

710:                                              ; preds = %703, %696
  %711 = phi double [ %702, %696 ], [ %709, %703 ]
  %712 = fsub double %682, %711
  %713 = load ptr, ptr %16, align 8, !tbaa !9
  %714 = load i32, ptr %22, align 4, !tbaa !5
  %715 = sub nsw i32 %714, 1
  %716 = sext i32 %715 to i64
  %717 = getelementptr inbounds double, ptr %713, i64 %716
  %718 = load double, ptr %717, align 8, !tbaa !11
  %719 = load ptr, ptr %13, align 8, !tbaa !9
  %720 = load i32, ptr %22, align 4, !tbaa !5
  %721 = sub nsw i32 %720, 1
  %722 = sext i32 %721 to i64
  %723 = getelementptr inbounds double, ptr %719, i64 %722
  %724 = load double, ptr %723, align 8, !tbaa !11
  %725 = fcmp oge double %718, %724
  br i1 %725, label %726, label %733

726:                                              ; preds = %710
  %727 = load ptr, ptr %13, align 8, !tbaa !9
  %728 = load i32, ptr %22, align 4, !tbaa !5
  %729 = sub nsw i32 %728, 1
  %730 = sext i32 %729 to i64
  %731 = getelementptr inbounds double, ptr %727, i64 %730
  %732 = load double, ptr %731, align 8, !tbaa !11
  br label %740

733:                                              ; preds = %710
  %734 = load ptr, ptr %16, align 8, !tbaa !9
  %735 = load i32, ptr %22, align 4, !tbaa !5
  %736 = sub nsw i32 %735, 1
  %737 = sext i32 %736 to i64
  %738 = getelementptr inbounds double, ptr %734, i64 %737
  %739 = load double, ptr %738, align 8, !tbaa !11
  br label %740

740:                                              ; preds = %733, %726
  %741 = phi double [ %732, %726 ], [ %739, %733 ]
  %742 = load ptr, ptr %15, align 8, !tbaa !9
  %743 = load i32, ptr %22, align 4, !tbaa !5
  %744 = sub nsw i32 %743, 1
  %745 = sext i32 %744 to i64
  %746 = getelementptr inbounds double, ptr %742, i64 %745
  %747 = load double, ptr %746, align 8, !tbaa !11
  %748 = fsub double %741, %747
  %749 = fadd double %712, %748
  br label %751

750:                                              ; preds = %669
  br label %751

751:                                              ; preds = %750, %740
  %752 = phi double [ %749, %740 ], [ 0.000000e+00, %750 ]
  br label %753

753:                                              ; preds = %751, %655
  %754 = phi double [ %668, %655 ], [ %752, %751 ]
  br label %755

755:                                              ; preds = %753, %633
  %756 = phi double [ %647, %633 ], [ %754, %753 ]
  br label %757

757:                                              ; preds = %755, %617
  %758 = phi double [ %625, %617 ], [ %756, %755 ]
  %759 = fmul double %609, %758
  %760 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %761 = getelementptr inbounds %struct.TA_LibcPriv, ptr %760, i32 0, i32 8
  %762 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %761, i64 0, i64 10
  %763 = getelementptr inbounds %struct.TA_CandleSetting, ptr %762, i32 0, i32 1
  %764 = load i32, ptr %763, align 4, !tbaa !15
  %765 = icmp eq i32 %764, 2
  %766 = zext i1 %765 to i64
  %767 = select i1 %765, double 2.000000e+00, double 1.000000e+00
  %768 = fdiv double %759, %767
  %769 = fadd double %604, %768
  %770 = fcmp ole double %598, %769
  br i1 %770, label %771, label %955

771:                                              ; preds = %757
  %772 = load ptr, ptr %16, align 8, !tbaa !9
  %773 = load i32, ptr %22, align 4, !tbaa !5
  %774 = sext i32 %773 to i64
  %775 = getelementptr inbounds double, ptr %772, i64 %774
  %776 = load double, ptr %775, align 8, !tbaa !11
  %777 = load ptr, ptr %15, align 8, !tbaa !9
  %778 = load i32, ptr %22, align 4, !tbaa !5
  %779 = sub nsw i32 %778, 1
  %780 = sext i32 %779 to i64
  %781 = getelementptr inbounds double, ptr %777, i64 %780
  %782 = load double, ptr %781, align 8, !tbaa !11
  %783 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %784 = getelementptr inbounds %struct.TA_LibcPriv, ptr %783, i32 0, i32 8
  %785 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %784, i64 0, i64 10
  %786 = getelementptr inbounds %struct.TA_CandleSetting, ptr %785, i32 0, i32 3
  %787 = load double, ptr %786, align 8, !tbaa !19
  %788 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %789 = getelementptr inbounds %struct.TA_LibcPriv, ptr %788, i32 0, i32 8
  %790 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %789, i64 0, i64 10
  %791 = getelementptr inbounds %struct.TA_CandleSetting, ptr %790, i32 0, i32 2
  %792 = load i32, ptr %791, align 8, !tbaa !13
  %793 = sitofp i32 %792 to double
  %794 = fcmp une double %793, 0.000000e+00
  br i1 %794, label %795, label %804

795:                                              ; preds = %771
  %796 = load double, ptr %20, align 8, !tbaa !11
  %797 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %798 = getelementptr inbounds %struct.TA_LibcPriv, ptr %797, i32 0, i32 8
  %799 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %798, i64 0, i64 10
  %800 = getelementptr inbounds %struct.TA_CandleSetting, ptr %799, i32 0, i32 2
  %801 = load i32, ptr %800, align 8, !tbaa !13
  %802 = sitofp i32 %801 to double
  %803 = fdiv double %796, %802
  br label %935

804:                                              ; preds = %771
  %805 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %806 = getelementptr inbounds %struct.TA_LibcPriv, ptr %805, i32 0, i32 8
  %807 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %806, i64 0, i64 10
  %808 = getelementptr inbounds %struct.TA_CandleSetting, ptr %807, i32 0, i32 1
  %809 = load i32, ptr %808, align 4, !tbaa !15
  %810 = icmp eq i32 %809, 0
  br i1 %810, label %811, label %826

811:                                              ; preds = %804
  %812 = load ptr, ptr %16, align 8, !tbaa !9
  %813 = load i32, ptr %22, align 4, !tbaa !5
  %814 = sub nsw i32 %813, 1
  %815 = sext i32 %814 to i64
  %816 = getelementptr inbounds double, ptr %812, i64 %815
  %817 = load double, ptr %816, align 8, !tbaa !11
  %818 = load ptr, ptr %13, align 8, !tbaa !9
  %819 = load i32, ptr %22, align 4, !tbaa !5
  %820 = sub nsw i32 %819, 1
  %821 = sext i32 %820 to i64
  %822 = getelementptr inbounds double, ptr %818, i64 %821
  %823 = load double, ptr %822, align 8, !tbaa !11
  %824 = fsub double %817, %823
  %825 = call double @llvm.fabs.f64(double %824)
  br label %933

826:                                              ; preds = %804
  %827 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %828 = getelementptr inbounds %struct.TA_LibcPriv, ptr %827, i32 0, i32 8
  %829 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %828, i64 0, i64 10
  %830 = getelementptr inbounds %struct.TA_CandleSetting, ptr %829, i32 0, i32 1
  %831 = load i32, ptr %830, align 4, !tbaa !15
  %832 = icmp eq i32 %831, 1
  br i1 %832, label %833, label %847

833:                                              ; preds = %826
  %834 = load ptr, ptr %14, align 8, !tbaa !9
  %835 = load i32, ptr %22, align 4, !tbaa !5
  %836 = sub nsw i32 %835, 1
  %837 = sext i32 %836 to i64
  %838 = getelementptr inbounds double, ptr %834, i64 %837
  %839 = load double, ptr %838, align 8, !tbaa !11
  %840 = load ptr, ptr %15, align 8, !tbaa !9
  %841 = load i32, ptr %22, align 4, !tbaa !5
  %842 = sub nsw i32 %841, 1
  %843 = sext i32 %842 to i64
  %844 = getelementptr inbounds double, ptr %840, i64 %843
  %845 = load double, ptr %844, align 8, !tbaa !11
  %846 = fsub double %839, %845
  br label %931

847:                                              ; preds = %826
  %848 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %849 = getelementptr inbounds %struct.TA_LibcPriv, ptr %848, i32 0, i32 8
  %850 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %849, i64 0, i64 10
  %851 = getelementptr inbounds %struct.TA_CandleSetting, ptr %850, i32 0, i32 1
  %852 = load i32, ptr %851, align 4, !tbaa !15
  %853 = icmp eq i32 %852, 2
  br i1 %853, label %854, label %928

854:                                              ; preds = %847
  %855 = load ptr, ptr %14, align 8, !tbaa !9
  %856 = load i32, ptr %22, align 4, !tbaa !5
  %857 = sub nsw i32 %856, 1
  %858 = sext i32 %857 to i64
  %859 = getelementptr inbounds double, ptr %855, i64 %858
  %860 = load double, ptr %859, align 8, !tbaa !11
  %861 = load ptr, ptr %16, align 8, !tbaa !9
  %862 = load i32, ptr %22, align 4, !tbaa !5
  %863 = sub nsw i32 %862, 1
  %864 = sext i32 %863 to i64
  %865 = getelementptr inbounds double, ptr %861, i64 %864
  %866 = load double, ptr %865, align 8, !tbaa !11
  %867 = load ptr, ptr %13, align 8, !tbaa !9
  %868 = load i32, ptr %22, align 4, !tbaa !5
  %869 = sub nsw i32 %868, 1
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds double, ptr %867, i64 %870
  %872 = load double, ptr %871, align 8, !tbaa !11
  %873 = fcmp oge double %866, %872
  br i1 %873, label %874, label %881

874:                                              ; preds = %854
  %875 = load ptr, ptr %16, align 8, !tbaa !9
  %876 = load i32, ptr %22, align 4, !tbaa !5
  %877 = sub nsw i32 %876, 1
  %878 = sext i32 %877 to i64
  %879 = getelementptr inbounds double, ptr %875, i64 %878
  %880 = load double, ptr %879, align 8, !tbaa !11
  br label %888

881:                                              ; preds = %854
  %882 = load ptr, ptr %13, align 8, !tbaa !9
  %883 = load i32, ptr %22, align 4, !tbaa !5
  %884 = sub nsw i32 %883, 1
  %885 = sext i32 %884 to i64
  %886 = getelementptr inbounds double, ptr %882, i64 %885
  %887 = load double, ptr %886, align 8, !tbaa !11
  br label %888

888:                                              ; preds = %881, %874
  %889 = phi double [ %880, %874 ], [ %887, %881 ]
  %890 = fsub double %860, %889
  %891 = load ptr, ptr %16, align 8, !tbaa !9
  %892 = load i32, ptr %22, align 4, !tbaa !5
  %893 = sub nsw i32 %892, 1
  %894 = sext i32 %893 to i64
  %895 = getelementptr inbounds double, ptr %891, i64 %894
  %896 = load double, ptr %895, align 8, !tbaa !11
  %897 = load ptr, ptr %13, align 8, !tbaa !9
  %898 = load i32, ptr %22, align 4, !tbaa !5
  %899 = sub nsw i32 %898, 1
  %900 = sext i32 %899 to i64
  %901 = getelementptr inbounds double, ptr %897, i64 %900
  %902 = load double, ptr %901, align 8, !tbaa !11
  %903 = fcmp oge double %896, %902
  br i1 %903, label %904, label %911

904:                                              ; preds = %888
  %905 = load ptr, ptr %13, align 8, !tbaa !9
  %906 = load i32, ptr %22, align 4, !tbaa !5
  %907 = sub nsw i32 %906, 1
  %908 = sext i32 %907 to i64
  %909 = getelementptr inbounds double, ptr %905, i64 %908
  %910 = load double, ptr %909, align 8, !tbaa !11
  br label %918

911:                                              ; preds = %888
  %912 = load ptr, ptr %16, align 8, !tbaa !9
  %913 = load i32, ptr %22, align 4, !tbaa !5
  %914 = sub nsw i32 %913, 1
  %915 = sext i32 %914 to i64
  %916 = getelementptr inbounds double, ptr %912, i64 %915
  %917 = load double, ptr %916, align 8, !tbaa !11
  br label %918

918:                                              ; preds = %911, %904
  %919 = phi double [ %910, %904 ], [ %917, %911 ]
  %920 = load ptr, ptr %15, align 8, !tbaa !9
  %921 = load i32, ptr %22, align 4, !tbaa !5
  %922 = sub nsw i32 %921, 1
  %923 = sext i32 %922 to i64
  %924 = getelementptr inbounds double, ptr %920, i64 %923
  %925 = load double, ptr %924, align 8, !tbaa !11
  %926 = fsub double %919, %925
  %927 = fadd double %890, %926
  br label %929

928:                                              ; preds = %847
  br label %929

929:                                              ; preds = %928, %918
  %930 = phi double [ %927, %918 ], [ 0.000000e+00, %928 ]
  br label %931

931:                                              ; preds = %929, %833
  %932 = phi double [ %846, %833 ], [ %930, %929 ]
  br label %933

933:                                              ; preds = %931, %811
  %934 = phi double [ %825, %811 ], [ %932, %931 ]
  br label %935

935:                                              ; preds = %933, %795
  %936 = phi double [ %803, %795 ], [ %934, %933 ]
  %937 = fmul double %787, %936
  %938 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %939 = getelementptr inbounds %struct.TA_LibcPriv, ptr %938, i32 0, i32 8
  %940 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %939, i64 0, i64 10
  %941 = getelementptr inbounds %struct.TA_CandleSetting, ptr %940, i32 0, i32 1
  %942 = load i32, ptr %941, align 4, !tbaa !15
  %943 = icmp eq i32 %942, 2
  %944 = zext i1 %943 to i64
  %945 = select i1 %943, double 2.000000e+00, double 1.000000e+00
  %946 = fdiv double %937, %945
  %947 = fsub double %782, %946
  %948 = fcmp oge double %776, %947
  br i1 %948, label %949, label %955

949:                                              ; preds = %935
  %950 = load ptr, ptr %19, align 8, !tbaa !9
  %951 = load i32, ptr %23, align 4, !tbaa !5
  %952 = add nsw i32 %951, 1
  store i32 %952, ptr %23, align 4, !tbaa !5
  %953 = sext i32 %951 to i64
  %954 = getelementptr inbounds i32, ptr %950, i64 %953
  store i32 -100, ptr %954, align 4, !tbaa !5
  br label %961

955:                                              ; preds = %935, %757, %580, %565, %552, %368
  %956 = load ptr, ptr %19, align 8, !tbaa !9
  %957 = load i32, ptr %23, align 4, !tbaa !5
  %958 = add nsw i32 %957, 1
  store i32 %958, ptr %23, align 4, !tbaa !5
  %959 = sext i32 %957 to i64
  %960 = getelementptr inbounds i32, ptr %956, i64 %959
  store i32 0, ptr %960, align 4, !tbaa !5
  br label %961

961:                                              ; preds = %955, %949
  %962 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %963 = getelementptr inbounds %struct.TA_LibcPriv, ptr %962, i32 0, i32 8
  %964 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %963, i64 0, i64 10
  %965 = getelementptr inbounds %struct.TA_CandleSetting, ptr %964, i32 0, i32 1
  %966 = load i32, ptr %965, align 4, !tbaa !15
  %967 = icmp eq i32 %966, 0
  br i1 %967, label %968, label %983

968:                                              ; preds = %961
  %969 = load ptr, ptr %16, align 8, !tbaa !9
  %970 = load i32, ptr %22, align 4, !tbaa !5
  %971 = sub nsw i32 %970, 1
  %972 = sext i32 %971 to i64
  %973 = getelementptr inbounds double, ptr %969, i64 %972
  %974 = load double, ptr %973, align 8, !tbaa !11
  %975 = load ptr, ptr %13, align 8, !tbaa !9
  %976 = load i32, ptr %22, align 4, !tbaa !5
  %977 = sub nsw i32 %976, 1
  %978 = sext i32 %977 to i64
  %979 = getelementptr inbounds double, ptr %975, i64 %978
  %980 = load double, ptr %979, align 8, !tbaa !11
  %981 = fsub double %974, %980
  %982 = call double @llvm.fabs.f64(double %981)
  br label %1090

983:                                              ; preds = %961
  %984 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %985 = getelementptr inbounds %struct.TA_LibcPriv, ptr %984, i32 0, i32 8
  %986 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %985, i64 0, i64 10
  %987 = getelementptr inbounds %struct.TA_CandleSetting, ptr %986, i32 0, i32 1
  %988 = load i32, ptr %987, align 4, !tbaa !15
  %989 = icmp eq i32 %988, 1
  br i1 %989, label %990, label %1004

990:                                              ; preds = %983
  %991 = load ptr, ptr %14, align 8, !tbaa !9
  %992 = load i32, ptr %22, align 4, !tbaa !5
  %993 = sub nsw i32 %992, 1
  %994 = sext i32 %993 to i64
  %995 = getelementptr inbounds double, ptr %991, i64 %994
  %996 = load double, ptr %995, align 8, !tbaa !11
  %997 = load ptr, ptr %15, align 8, !tbaa !9
  %998 = load i32, ptr %22, align 4, !tbaa !5
  %999 = sub nsw i32 %998, 1
  %1000 = sext i32 %999 to i64
  %1001 = getelementptr inbounds double, ptr %997, i64 %1000
  %1002 = load double, ptr %1001, align 8, !tbaa !11
  %1003 = fsub double %996, %1002
  br label %1088

1004:                                             ; preds = %983
  %1005 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1006 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1005, i32 0, i32 8
  %1007 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1006, i64 0, i64 10
  %1008 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1007, i32 0, i32 1
  %1009 = load i32, ptr %1008, align 4, !tbaa !15
  %1010 = icmp eq i32 %1009, 2
  br i1 %1010, label %1011, label %1085

1011:                                             ; preds = %1004
  %1012 = load ptr, ptr %14, align 8, !tbaa !9
  %1013 = load i32, ptr %22, align 4, !tbaa !5
  %1014 = sub nsw i32 %1013, 1
  %1015 = sext i32 %1014 to i64
  %1016 = getelementptr inbounds double, ptr %1012, i64 %1015
  %1017 = load double, ptr %1016, align 8, !tbaa !11
  %1018 = load ptr, ptr %16, align 8, !tbaa !9
  %1019 = load i32, ptr %22, align 4, !tbaa !5
  %1020 = sub nsw i32 %1019, 1
  %1021 = sext i32 %1020 to i64
  %1022 = getelementptr inbounds double, ptr %1018, i64 %1021
  %1023 = load double, ptr %1022, align 8, !tbaa !11
  %1024 = load ptr, ptr %13, align 8, !tbaa !9
  %1025 = load i32, ptr %22, align 4, !tbaa !5
  %1026 = sub nsw i32 %1025, 1
  %1027 = sext i32 %1026 to i64
  %1028 = getelementptr inbounds double, ptr %1024, i64 %1027
  %1029 = load double, ptr %1028, align 8, !tbaa !11
  %1030 = fcmp oge double %1023, %1029
  br i1 %1030, label %1031, label %1038

1031:                                             ; preds = %1011
  %1032 = load ptr, ptr %16, align 8, !tbaa !9
  %1033 = load i32, ptr %22, align 4, !tbaa !5
  %1034 = sub nsw i32 %1033, 1
  %1035 = sext i32 %1034 to i64
  %1036 = getelementptr inbounds double, ptr %1032, i64 %1035
  %1037 = load double, ptr %1036, align 8, !tbaa !11
  br label %1045

1038:                                             ; preds = %1011
  %1039 = load ptr, ptr %13, align 8, !tbaa !9
  %1040 = load i32, ptr %22, align 4, !tbaa !5
  %1041 = sub nsw i32 %1040, 1
  %1042 = sext i32 %1041 to i64
  %1043 = getelementptr inbounds double, ptr %1039, i64 %1042
  %1044 = load double, ptr %1043, align 8, !tbaa !11
  br label %1045

1045:                                             ; preds = %1038, %1031
  %1046 = phi double [ %1037, %1031 ], [ %1044, %1038 ]
  %1047 = fsub double %1017, %1046
  %1048 = load ptr, ptr %16, align 8, !tbaa !9
  %1049 = load i32, ptr %22, align 4, !tbaa !5
  %1050 = sub nsw i32 %1049, 1
  %1051 = sext i32 %1050 to i64
  %1052 = getelementptr inbounds double, ptr %1048, i64 %1051
  %1053 = load double, ptr %1052, align 8, !tbaa !11
  %1054 = load ptr, ptr %13, align 8, !tbaa !9
  %1055 = load i32, ptr %22, align 4, !tbaa !5
  %1056 = sub nsw i32 %1055, 1
  %1057 = sext i32 %1056 to i64
  %1058 = getelementptr inbounds double, ptr %1054, i64 %1057
  %1059 = load double, ptr %1058, align 8, !tbaa !11
  %1060 = fcmp oge double %1053, %1059
  br i1 %1060, label %1061, label %1068

1061:                                             ; preds = %1045
  %1062 = load ptr, ptr %13, align 8, !tbaa !9
  %1063 = load i32, ptr %22, align 4, !tbaa !5
  %1064 = sub nsw i32 %1063, 1
  %1065 = sext i32 %1064 to i64
  %1066 = getelementptr inbounds double, ptr %1062, i64 %1065
  %1067 = load double, ptr %1066, align 8, !tbaa !11
  br label %1075

1068:                                             ; preds = %1045
  %1069 = load ptr, ptr %16, align 8, !tbaa !9
  %1070 = load i32, ptr %22, align 4, !tbaa !5
  %1071 = sub nsw i32 %1070, 1
  %1072 = sext i32 %1071 to i64
  %1073 = getelementptr inbounds double, ptr %1069, i64 %1072
  %1074 = load double, ptr %1073, align 8, !tbaa !11
  br label %1075

1075:                                             ; preds = %1068, %1061
  %1076 = phi double [ %1067, %1061 ], [ %1074, %1068 ]
  %1077 = load ptr, ptr %15, align 8, !tbaa !9
  %1078 = load i32, ptr %22, align 4, !tbaa !5
  %1079 = sub nsw i32 %1078, 1
  %1080 = sext i32 %1079 to i64
  %1081 = getelementptr inbounds double, ptr %1077, i64 %1080
  %1082 = load double, ptr %1081, align 8, !tbaa !11
  %1083 = fsub double %1076, %1082
  %1084 = fadd double %1047, %1083
  br label %1086

1085:                                             ; preds = %1004
  br label %1086

1086:                                             ; preds = %1085, %1075
  %1087 = phi double [ %1084, %1075 ], [ 0.000000e+00, %1085 ]
  br label %1088

1088:                                             ; preds = %1086, %990
  %1089 = phi double [ %1003, %990 ], [ %1087, %1086 ]
  br label %1090

1090:                                             ; preds = %1088, %968
  %1091 = phi double [ %982, %968 ], [ %1089, %1088 ]
  %1092 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1093 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1092, i32 0, i32 8
  %1094 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1093, i64 0, i64 10
  %1095 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1094, i32 0, i32 1
  %1096 = load i32, ptr %1095, align 4, !tbaa !15
  %1097 = icmp eq i32 %1096, 0
  br i1 %1097, label %1098, label %1113

1098:                                             ; preds = %1090
  %1099 = load ptr, ptr %16, align 8, !tbaa !9
  %1100 = load i32, ptr %24, align 4, !tbaa !5
  %1101 = sub nsw i32 %1100, 1
  %1102 = sext i32 %1101 to i64
  %1103 = getelementptr inbounds double, ptr %1099, i64 %1102
  %1104 = load double, ptr %1103, align 8, !tbaa !11
  %1105 = load ptr, ptr %13, align 8, !tbaa !9
  %1106 = load i32, ptr %24, align 4, !tbaa !5
  %1107 = sub nsw i32 %1106, 1
  %1108 = sext i32 %1107 to i64
  %1109 = getelementptr inbounds double, ptr %1105, i64 %1108
  %1110 = load double, ptr %1109, align 8, !tbaa !11
  %1111 = fsub double %1104, %1110
  %1112 = call double @llvm.fabs.f64(double %1111)
  br label %1220

1113:                                             ; preds = %1090
  %1114 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1115 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1114, i32 0, i32 8
  %1116 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1115, i64 0, i64 10
  %1117 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1116, i32 0, i32 1
  %1118 = load i32, ptr %1117, align 4, !tbaa !15
  %1119 = icmp eq i32 %1118, 1
  br i1 %1119, label %1120, label %1134

1120:                                             ; preds = %1113
  %1121 = load ptr, ptr %14, align 8, !tbaa !9
  %1122 = load i32, ptr %24, align 4, !tbaa !5
  %1123 = sub nsw i32 %1122, 1
  %1124 = sext i32 %1123 to i64
  %1125 = getelementptr inbounds double, ptr %1121, i64 %1124
  %1126 = load double, ptr %1125, align 8, !tbaa !11
  %1127 = load ptr, ptr %15, align 8, !tbaa !9
  %1128 = load i32, ptr %24, align 4, !tbaa !5
  %1129 = sub nsw i32 %1128, 1
  %1130 = sext i32 %1129 to i64
  %1131 = getelementptr inbounds double, ptr %1127, i64 %1130
  %1132 = load double, ptr %1131, align 8, !tbaa !11
  %1133 = fsub double %1126, %1132
  br label %1218

1134:                                             ; preds = %1113
  %1135 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1136 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1135, i32 0, i32 8
  %1137 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1136, i64 0, i64 10
  %1138 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1137, i32 0, i32 1
  %1139 = load i32, ptr %1138, align 4, !tbaa !15
  %1140 = icmp eq i32 %1139, 2
  br i1 %1140, label %1141, label %1215

1141:                                             ; preds = %1134
  %1142 = load ptr, ptr %14, align 8, !tbaa !9
  %1143 = load i32, ptr %24, align 4, !tbaa !5
  %1144 = sub nsw i32 %1143, 1
  %1145 = sext i32 %1144 to i64
  %1146 = getelementptr inbounds double, ptr %1142, i64 %1145
  %1147 = load double, ptr %1146, align 8, !tbaa !11
  %1148 = load ptr, ptr %16, align 8, !tbaa !9
  %1149 = load i32, ptr %24, align 4, !tbaa !5
  %1150 = sub nsw i32 %1149, 1
  %1151 = sext i32 %1150 to i64
  %1152 = getelementptr inbounds double, ptr %1148, i64 %1151
  %1153 = load double, ptr %1152, align 8, !tbaa !11
  %1154 = load ptr, ptr %13, align 8, !tbaa !9
  %1155 = load i32, ptr %24, align 4, !tbaa !5
  %1156 = sub nsw i32 %1155, 1
  %1157 = sext i32 %1156 to i64
  %1158 = getelementptr inbounds double, ptr %1154, i64 %1157
  %1159 = load double, ptr %1158, align 8, !tbaa !11
  %1160 = fcmp oge double %1153, %1159
  br i1 %1160, label %1161, label %1168

1161:                                             ; preds = %1141
  %1162 = load ptr, ptr %16, align 8, !tbaa !9
  %1163 = load i32, ptr %24, align 4, !tbaa !5
  %1164 = sub nsw i32 %1163, 1
  %1165 = sext i32 %1164 to i64
  %1166 = getelementptr inbounds double, ptr %1162, i64 %1165
  %1167 = load double, ptr %1166, align 8, !tbaa !11
  br label %1175

1168:                                             ; preds = %1141
  %1169 = load ptr, ptr %13, align 8, !tbaa !9
  %1170 = load i32, ptr %24, align 4, !tbaa !5
  %1171 = sub nsw i32 %1170, 1
  %1172 = sext i32 %1171 to i64
  %1173 = getelementptr inbounds double, ptr %1169, i64 %1172
  %1174 = load double, ptr %1173, align 8, !tbaa !11
  br label %1175

1175:                                             ; preds = %1168, %1161
  %1176 = phi double [ %1167, %1161 ], [ %1174, %1168 ]
  %1177 = fsub double %1147, %1176
  %1178 = load ptr, ptr %16, align 8, !tbaa !9
  %1179 = load i32, ptr %24, align 4, !tbaa !5
  %1180 = sub nsw i32 %1179, 1
  %1181 = sext i32 %1180 to i64
  %1182 = getelementptr inbounds double, ptr %1178, i64 %1181
  %1183 = load double, ptr %1182, align 8, !tbaa !11
  %1184 = load ptr, ptr %13, align 8, !tbaa !9
  %1185 = load i32, ptr %24, align 4, !tbaa !5
  %1186 = sub nsw i32 %1185, 1
  %1187 = sext i32 %1186 to i64
  %1188 = getelementptr inbounds double, ptr %1184, i64 %1187
  %1189 = load double, ptr %1188, align 8, !tbaa !11
  %1190 = fcmp oge double %1183, %1189
  br i1 %1190, label %1191, label %1198

1191:                                             ; preds = %1175
  %1192 = load ptr, ptr %13, align 8, !tbaa !9
  %1193 = load i32, ptr %24, align 4, !tbaa !5
  %1194 = sub nsw i32 %1193, 1
  %1195 = sext i32 %1194 to i64
  %1196 = getelementptr inbounds double, ptr %1192, i64 %1195
  %1197 = load double, ptr %1196, align 8, !tbaa !11
  br label %1205

1198:                                             ; preds = %1175
  %1199 = load ptr, ptr %16, align 8, !tbaa !9
  %1200 = load i32, ptr %24, align 4, !tbaa !5
  %1201 = sub nsw i32 %1200, 1
  %1202 = sext i32 %1201 to i64
  %1203 = getelementptr inbounds double, ptr %1199, i64 %1202
  %1204 = load double, ptr %1203, align 8, !tbaa !11
  br label %1205

1205:                                             ; preds = %1198, %1191
  %1206 = phi double [ %1197, %1191 ], [ %1204, %1198 ]
  %1207 = load ptr, ptr %15, align 8, !tbaa !9
  %1208 = load i32, ptr %24, align 4, !tbaa !5
  %1209 = sub nsw i32 %1208, 1
  %1210 = sext i32 %1209 to i64
  %1211 = getelementptr inbounds double, ptr %1207, i64 %1210
  %1212 = load double, ptr %1211, align 8, !tbaa !11
  %1213 = fsub double %1206, %1212
  %1214 = fadd double %1177, %1213
  br label %1216

1215:                                             ; preds = %1134
  br label %1216

1216:                                             ; preds = %1215, %1205
  %1217 = phi double [ %1214, %1205 ], [ 0.000000e+00, %1215 ]
  br label %1218

1218:                                             ; preds = %1216, %1120
  %1219 = phi double [ %1133, %1120 ], [ %1217, %1216 ]
  br label %1220

1220:                                             ; preds = %1218, %1098
  %1221 = phi double [ %1112, %1098 ], [ %1219, %1218 ]
  %1222 = fsub double %1091, %1221
  %1223 = load double, ptr %20, align 8, !tbaa !11
  %1224 = fadd double %1223, %1222
  store double %1224, ptr %20, align 8, !tbaa !11
  %1225 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1226 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1225, i32 0, i32 8
  %1227 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1226, i64 0, i64 0
  %1228 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1227, i32 0, i32 1
  %1229 = load i32, ptr %1228, align 4, !tbaa !15
  %1230 = icmp eq i32 %1229, 0
  br i1 %1230, label %1231, label %1246

1231:                                             ; preds = %1220
  %1232 = load ptr, ptr %16, align 8, !tbaa !9
  %1233 = load i32, ptr %22, align 4, !tbaa !5
  %1234 = sub nsw i32 %1233, 1
  %1235 = sext i32 %1234 to i64
  %1236 = getelementptr inbounds double, ptr %1232, i64 %1235
  %1237 = load double, ptr %1236, align 8, !tbaa !11
  %1238 = load ptr, ptr %13, align 8, !tbaa !9
  %1239 = load i32, ptr %22, align 4, !tbaa !5
  %1240 = sub nsw i32 %1239, 1
  %1241 = sext i32 %1240 to i64
  %1242 = getelementptr inbounds double, ptr %1238, i64 %1241
  %1243 = load double, ptr %1242, align 8, !tbaa !11
  %1244 = fsub double %1237, %1243
  %1245 = call double @llvm.fabs.f64(double %1244)
  br label %1353

1246:                                             ; preds = %1220
  %1247 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1248 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1247, i32 0, i32 8
  %1249 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1248, i64 0, i64 0
  %1250 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1249, i32 0, i32 1
  %1251 = load i32, ptr %1250, align 4, !tbaa !15
  %1252 = icmp eq i32 %1251, 1
  br i1 %1252, label %1253, label %1267

1253:                                             ; preds = %1246
  %1254 = load ptr, ptr %14, align 8, !tbaa !9
  %1255 = load i32, ptr %22, align 4, !tbaa !5
  %1256 = sub nsw i32 %1255, 1
  %1257 = sext i32 %1256 to i64
  %1258 = getelementptr inbounds double, ptr %1254, i64 %1257
  %1259 = load double, ptr %1258, align 8, !tbaa !11
  %1260 = load ptr, ptr %15, align 8, !tbaa !9
  %1261 = load i32, ptr %22, align 4, !tbaa !5
  %1262 = sub nsw i32 %1261, 1
  %1263 = sext i32 %1262 to i64
  %1264 = getelementptr inbounds double, ptr %1260, i64 %1263
  %1265 = load double, ptr %1264, align 8, !tbaa !11
  %1266 = fsub double %1259, %1265
  br label %1351

1267:                                             ; preds = %1246
  %1268 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1269 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1268, i32 0, i32 8
  %1270 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1269, i64 0, i64 0
  %1271 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1270, i32 0, i32 1
  %1272 = load i32, ptr %1271, align 4, !tbaa !15
  %1273 = icmp eq i32 %1272, 2
  br i1 %1273, label %1274, label %1348

1274:                                             ; preds = %1267
  %1275 = load ptr, ptr %14, align 8, !tbaa !9
  %1276 = load i32, ptr %22, align 4, !tbaa !5
  %1277 = sub nsw i32 %1276, 1
  %1278 = sext i32 %1277 to i64
  %1279 = getelementptr inbounds double, ptr %1275, i64 %1278
  %1280 = load double, ptr %1279, align 8, !tbaa !11
  %1281 = load ptr, ptr %16, align 8, !tbaa !9
  %1282 = load i32, ptr %22, align 4, !tbaa !5
  %1283 = sub nsw i32 %1282, 1
  %1284 = sext i32 %1283 to i64
  %1285 = getelementptr inbounds double, ptr %1281, i64 %1284
  %1286 = load double, ptr %1285, align 8, !tbaa !11
  %1287 = load ptr, ptr %13, align 8, !tbaa !9
  %1288 = load i32, ptr %22, align 4, !tbaa !5
  %1289 = sub nsw i32 %1288, 1
  %1290 = sext i32 %1289 to i64
  %1291 = getelementptr inbounds double, ptr %1287, i64 %1290
  %1292 = load double, ptr %1291, align 8, !tbaa !11
  %1293 = fcmp oge double %1286, %1292
  br i1 %1293, label %1294, label %1301

1294:                                             ; preds = %1274
  %1295 = load ptr, ptr %16, align 8, !tbaa !9
  %1296 = load i32, ptr %22, align 4, !tbaa !5
  %1297 = sub nsw i32 %1296, 1
  %1298 = sext i32 %1297 to i64
  %1299 = getelementptr inbounds double, ptr %1295, i64 %1298
  %1300 = load double, ptr %1299, align 8, !tbaa !11
  br label %1308

1301:                                             ; preds = %1274
  %1302 = load ptr, ptr %13, align 8, !tbaa !9
  %1303 = load i32, ptr %22, align 4, !tbaa !5
  %1304 = sub nsw i32 %1303, 1
  %1305 = sext i32 %1304 to i64
  %1306 = getelementptr inbounds double, ptr %1302, i64 %1305
  %1307 = load double, ptr %1306, align 8, !tbaa !11
  br label %1308

1308:                                             ; preds = %1301, %1294
  %1309 = phi double [ %1300, %1294 ], [ %1307, %1301 ]
  %1310 = fsub double %1280, %1309
  %1311 = load ptr, ptr %16, align 8, !tbaa !9
  %1312 = load i32, ptr %22, align 4, !tbaa !5
  %1313 = sub nsw i32 %1312, 1
  %1314 = sext i32 %1313 to i64
  %1315 = getelementptr inbounds double, ptr %1311, i64 %1314
  %1316 = load double, ptr %1315, align 8, !tbaa !11
  %1317 = load ptr, ptr %13, align 8, !tbaa !9
  %1318 = load i32, ptr %22, align 4, !tbaa !5
  %1319 = sub nsw i32 %1318, 1
  %1320 = sext i32 %1319 to i64
  %1321 = getelementptr inbounds double, ptr %1317, i64 %1320
  %1322 = load double, ptr %1321, align 8, !tbaa !11
  %1323 = fcmp oge double %1316, %1322
  br i1 %1323, label %1324, label %1331

1324:                                             ; preds = %1308
  %1325 = load ptr, ptr %13, align 8, !tbaa !9
  %1326 = load i32, ptr %22, align 4, !tbaa !5
  %1327 = sub nsw i32 %1326, 1
  %1328 = sext i32 %1327 to i64
  %1329 = getelementptr inbounds double, ptr %1325, i64 %1328
  %1330 = load double, ptr %1329, align 8, !tbaa !11
  br label %1338

1331:                                             ; preds = %1308
  %1332 = load ptr, ptr %16, align 8, !tbaa !9
  %1333 = load i32, ptr %22, align 4, !tbaa !5
  %1334 = sub nsw i32 %1333, 1
  %1335 = sext i32 %1334 to i64
  %1336 = getelementptr inbounds double, ptr %1332, i64 %1335
  %1337 = load double, ptr %1336, align 8, !tbaa !11
  br label %1338

1338:                                             ; preds = %1331, %1324
  %1339 = phi double [ %1330, %1324 ], [ %1337, %1331 ]
  %1340 = load ptr, ptr %15, align 8, !tbaa !9
  %1341 = load i32, ptr %22, align 4, !tbaa !5
  %1342 = sub nsw i32 %1341, 1
  %1343 = sext i32 %1342 to i64
  %1344 = getelementptr inbounds double, ptr %1340, i64 %1343
  %1345 = load double, ptr %1344, align 8, !tbaa !11
  %1346 = fsub double %1339, %1345
  %1347 = fadd double %1310, %1346
  br label %1349

1348:                                             ; preds = %1267
  br label %1349

1349:                                             ; preds = %1348, %1338
  %1350 = phi double [ %1347, %1338 ], [ 0.000000e+00, %1348 ]
  br label %1351

1351:                                             ; preds = %1349, %1253
  %1352 = phi double [ %1266, %1253 ], [ %1350, %1349 ]
  br label %1353

1353:                                             ; preds = %1351, %1231
  %1354 = phi double [ %1245, %1231 ], [ %1352, %1351 ]
  %1355 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1356 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1355, i32 0, i32 8
  %1357 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1356, i64 0, i64 0
  %1358 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1357, i32 0, i32 1
  %1359 = load i32, ptr %1358, align 4, !tbaa !15
  %1360 = icmp eq i32 %1359, 0
  br i1 %1360, label %1361, label %1376

1361:                                             ; preds = %1353
  %1362 = load ptr, ptr %16, align 8, !tbaa !9
  %1363 = load i32, ptr %25, align 4, !tbaa !5
  %1364 = sub nsw i32 %1363, 1
  %1365 = sext i32 %1364 to i64
  %1366 = getelementptr inbounds double, ptr %1362, i64 %1365
  %1367 = load double, ptr %1366, align 8, !tbaa !11
  %1368 = load ptr, ptr %13, align 8, !tbaa !9
  %1369 = load i32, ptr %25, align 4, !tbaa !5
  %1370 = sub nsw i32 %1369, 1
  %1371 = sext i32 %1370 to i64
  %1372 = getelementptr inbounds double, ptr %1368, i64 %1371
  %1373 = load double, ptr %1372, align 8, !tbaa !11
  %1374 = fsub double %1367, %1373
  %1375 = call double @llvm.fabs.f64(double %1374)
  br label %1483

1376:                                             ; preds = %1353
  %1377 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1378 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1377, i32 0, i32 8
  %1379 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1378, i64 0, i64 0
  %1380 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1379, i32 0, i32 1
  %1381 = load i32, ptr %1380, align 4, !tbaa !15
  %1382 = icmp eq i32 %1381, 1
  br i1 %1382, label %1383, label %1397

1383:                                             ; preds = %1376
  %1384 = load ptr, ptr %14, align 8, !tbaa !9
  %1385 = load i32, ptr %25, align 4, !tbaa !5
  %1386 = sub nsw i32 %1385, 1
  %1387 = sext i32 %1386 to i64
  %1388 = getelementptr inbounds double, ptr %1384, i64 %1387
  %1389 = load double, ptr %1388, align 8, !tbaa !11
  %1390 = load ptr, ptr %15, align 8, !tbaa !9
  %1391 = load i32, ptr %25, align 4, !tbaa !5
  %1392 = sub nsw i32 %1391, 1
  %1393 = sext i32 %1392 to i64
  %1394 = getelementptr inbounds double, ptr %1390, i64 %1393
  %1395 = load double, ptr %1394, align 8, !tbaa !11
  %1396 = fsub double %1389, %1395
  br label %1481

1397:                                             ; preds = %1376
  %1398 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1399 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1398, i32 0, i32 8
  %1400 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1399, i64 0, i64 0
  %1401 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1400, i32 0, i32 1
  %1402 = load i32, ptr %1401, align 4, !tbaa !15
  %1403 = icmp eq i32 %1402, 2
  br i1 %1403, label %1404, label %1478

1404:                                             ; preds = %1397
  %1405 = load ptr, ptr %14, align 8, !tbaa !9
  %1406 = load i32, ptr %25, align 4, !tbaa !5
  %1407 = sub nsw i32 %1406, 1
  %1408 = sext i32 %1407 to i64
  %1409 = getelementptr inbounds double, ptr %1405, i64 %1408
  %1410 = load double, ptr %1409, align 8, !tbaa !11
  %1411 = load ptr, ptr %16, align 8, !tbaa !9
  %1412 = load i32, ptr %25, align 4, !tbaa !5
  %1413 = sub nsw i32 %1412, 1
  %1414 = sext i32 %1413 to i64
  %1415 = getelementptr inbounds double, ptr %1411, i64 %1414
  %1416 = load double, ptr %1415, align 8, !tbaa !11
  %1417 = load ptr, ptr %13, align 8, !tbaa !9
  %1418 = load i32, ptr %25, align 4, !tbaa !5
  %1419 = sub nsw i32 %1418, 1
  %1420 = sext i32 %1419 to i64
  %1421 = getelementptr inbounds double, ptr %1417, i64 %1420
  %1422 = load double, ptr %1421, align 8, !tbaa !11
  %1423 = fcmp oge double %1416, %1422
  br i1 %1423, label %1424, label %1431

1424:                                             ; preds = %1404
  %1425 = load ptr, ptr %16, align 8, !tbaa !9
  %1426 = load i32, ptr %25, align 4, !tbaa !5
  %1427 = sub nsw i32 %1426, 1
  %1428 = sext i32 %1427 to i64
  %1429 = getelementptr inbounds double, ptr %1425, i64 %1428
  %1430 = load double, ptr %1429, align 8, !tbaa !11
  br label %1438

1431:                                             ; preds = %1404
  %1432 = load ptr, ptr %13, align 8, !tbaa !9
  %1433 = load i32, ptr %25, align 4, !tbaa !5
  %1434 = sub nsw i32 %1433, 1
  %1435 = sext i32 %1434 to i64
  %1436 = getelementptr inbounds double, ptr %1432, i64 %1435
  %1437 = load double, ptr %1436, align 8, !tbaa !11
  br label %1438

1438:                                             ; preds = %1431, %1424
  %1439 = phi double [ %1430, %1424 ], [ %1437, %1431 ]
  %1440 = fsub double %1410, %1439
  %1441 = load ptr, ptr %16, align 8, !tbaa !9
  %1442 = load i32, ptr %25, align 4, !tbaa !5
  %1443 = sub nsw i32 %1442, 1
  %1444 = sext i32 %1443 to i64
  %1445 = getelementptr inbounds double, ptr %1441, i64 %1444
  %1446 = load double, ptr %1445, align 8, !tbaa !11
  %1447 = load ptr, ptr %13, align 8, !tbaa !9
  %1448 = load i32, ptr %25, align 4, !tbaa !5
  %1449 = sub nsw i32 %1448, 1
  %1450 = sext i32 %1449 to i64
  %1451 = getelementptr inbounds double, ptr %1447, i64 %1450
  %1452 = load double, ptr %1451, align 8, !tbaa !11
  %1453 = fcmp oge double %1446, %1452
  br i1 %1453, label %1454, label %1461

1454:                                             ; preds = %1438
  %1455 = load ptr, ptr %13, align 8, !tbaa !9
  %1456 = load i32, ptr %25, align 4, !tbaa !5
  %1457 = sub nsw i32 %1456, 1
  %1458 = sext i32 %1457 to i64
  %1459 = getelementptr inbounds double, ptr %1455, i64 %1458
  %1460 = load double, ptr %1459, align 8, !tbaa !11
  br label %1468

1461:                                             ; preds = %1438
  %1462 = load ptr, ptr %16, align 8, !tbaa !9
  %1463 = load i32, ptr %25, align 4, !tbaa !5
  %1464 = sub nsw i32 %1463, 1
  %1465 = sext i32 %1464 to i64
  %1466 = getelementptr inbounds double, ptr %1462, i64 %1465
  %1467 = load double, ptr %1466, align 8, !tbaa !11
  br label %1468

1468:                                             ; preds = %1461, %1454
  %1469 = phi double [ %1460, %1454 ], [ %1467, %1461 ]
  %1470 = load ptr, ptr %15, align 8, !tbaa !9
  %1471 = load i32, ptr %25, align 4, !tbaa !5
  %1472 = sub nsw i32 %1471, 1
  %1473 = sext i32 %1472 to i64
  %1474 = getelementptr inbounds double, ptr %1470, i64 %1473
  %1475 = load double, ptr %1474, align 8, !tbaa !11
  %1476 = fsub double %1469, %1475
  %1477 = fadd double %1440, %1476
  br label %1479

1478:                                             ; preds = %1397
  br label %1479

1479:                                             ; preds = %1478, %1468
  %1480 = phi double [ %1477, %1468 ], [ 0.000000e+00, %1478 ]
  br label %1481

1481:                                             ; preds = %1479, %1383
  %1482 = phi double [ %1396, %1383 ], [ %1480, %1479 ]
  br label %1483

1483:                                             ; preds = %1481, %1361
  %1484 = phi double [ %1375, %1361 ], [ %1482, %1481 ]
  %1485 = fsub double %1354, %1484
  %1486 = load double, ptr %21, align 8, !tbaa !11
  %1487 = fadd double %1486, %1485
  store double %1487, ptr %21, align 8, !tbaa !11
  %1488 = load i32, ptr %22, align 4, !tbaa !5
  %1489 = add nsw i32 %1488, 1
  store i32 %1489, ptr %22, align 4, !tbaa !5
  %1490 = load i32, ptr %24, align 4, !tbaa !5
  %1491 = add nsw i32 %1490, 1
  store i32 %1491, ptr %24, align 4, !tbaa !5
  %1492 = load i32, ptr %25, align 4, !tbaa !5
  %1493 = add nsw i32 %1492, 1
  store i32 %1493, ptr %25, align 4, !tbaa !5
  br label %1494

1494:                                             ; preds = %1483
  %1495 = load i32, ptr %22, align 4, !tbaa !5
  %1496 = load i32, ptr %12, align 4, !tbaa !5
  %1497 = icmp sle i32 %1495, %1496
  br i1 %1497, label %368, label %1498, !llvm.loop !20

1498:                                             ; preds = %1494
  %1499 = load i32, ptr %23, align 4, !tbaa !5
  %1500 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 %1499, ptr %1500, align 4, !tbaa !5
  %1501 = load i32, ptr %11, align 4, !tbaa !5
  %1502 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 %1501, ptr %1502, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %27, align 4
  br label %1503

1503:                                             ; preds = %1498, %67, %55, %51, %38, %30
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  %1504 = load i32, ptr %10, align 4
  ret i32 %1504
}

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

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !6, i64 8}
!14 = !{!"", !6, i64 0, !6, i64 4, !6, i64 8, !12, i64 16}
!15 = !{!14, !6, i64 4}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}
!19 = !{!14, !12, i64 16}
!20 = distinct !{!20, !17}


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

@TA_Globals = external local_unnamed_addr global ptr, align 8

; Function Attrs: nounwind uwtable
declare dso_local i32 @TA_CDLONNECK_Lookback() local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local range(i32 0, 14) i32 @TA_CDLONNECK(i32 noundef %0, i32 noundef %1, ptr noundef readonly %2, ptr noundef readonly %3, ptr noundef readonly %4, ptr noundef readonly %5, ptr nocapture noundef writeonly %6, ptr nocapture noundef writeonly %7, ptr noundef writeonly %8) local_unnamed_addr #0 {
  %10 = icmp slt i32 %0, 0
  br i1 %10, label %352, label %11

11:                                               ; preds = %9
  %12 = icmp slt i32 %1, %0
  br i1 %12, label %352, label %13

13:                                               ; preds = %11
  %14 = insertelement <4 x ptr> poison, ptr %2, i64 0
  %15 = insertelement <4 x ptr> %14, ptr %3, i64 1
  %16 = insertelement <4 x ptr> %15, ptr %4, i64 2
  %17 = insertelement <4 x ptr> %16, ptr %5, i64 3
  %18 = icmp eq <4 x ptr> %17, zeroinitializer
  %.not = icmp eq ptr %8, null
  %19 = bitcast <4 x i1> %18 to i4
  %20 = icmp ne i4 %19, 0
  %op.rdx = or i1 %20, %.not
  br i1 %op.rdx, label %352, label %21

21:                                               ; preds = %13
  %22 = tail call i32 @TA_CDLONNECK_Lookback()
  %spec.select = tail call i32 @llvm.smax.i32(i32 %22, i32 %0)
  %23 = icmp ugt i32 %spec.select, %1
  br i1 %23, label %24, label %25

24:                                               ; preds = %21
  store i32 0, ptr %6, align 4, !tbaa !5
  store i32 0, ptr %7, align 4, !tbaa !5
  br label %352

25:                                               ; preds = %21
  %26 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %27 = getelementptr inbounds i8, ptr %26, i64 456
  %28 = load i32, ptr %27, align 8, !tbaa !11
  %29 = sub i32 %spec.select, %28
  %30 = getelementptr inbounds i8, ptr %26, i64 216
  %31 = load i32, ptr %30, align 8, !tbaa !11
  %32 = sub i32 %spec.select, %31
  %33 = icmp sgt i32 %28, 0
  br i1 %33, label %.lr.ph, label %.preheader424

.lr.ph:                                           ; preds = %25
  %34 = getelementptr inbounds i8, ptr %26, i64 452
  %35 = load i32, ptr %34, align 4, !tbaa !14
  switch i32 %35, label %.preheader424 [
    i32 0, label %.lr.ph.split.us.preheader
    i32 1, label %.lr.ph.split.us427.preheader
    i32 2, label %.lr.ph.split.us432.preheader
  ]

.lr.ph.split.us432.preheader:                     ; preds = %.lr.ph
  %36 = sext i32 %29 to i64
  %37 = zext nneg i32 %spec.select to i64
  br label %.lr.ph.split.us432

.lr.ph.split.us427.preheader:                     ; preds = %.lr.ph
  %38 = sext i32 %29 to i64
  %39 = zext nneg i32 %spec.select to i64
  br label %.lr.ph.split.us427

.lr.ph.split.us.preheader:                        ; preds = %.lr.ph
  %40 = sext i32 %29 to i64
  %41 = zext nneg i32 %spec.select to i64
  br label %.lr.ph.split.us

.lr.ph.split.us:                                  ; preds = %.lr.ph.split.us.preheader, %.lr.ph.split.us
  %indvars.iv467 = phi i64 [ %40, %.lr.ph.split.us.preheader ], [ %indvars.iv.next468, %.lr.ph.split.us ]
  %.0335425.us = phi double [ 0.000000e+00, %.lr.ph.split.us.preheader ], [ %49, %.lr.ph.split.us ]
  %42 = add nsw i64 %indvars.iv467, -1
  %43 = getelementptr inbounds double, ptr %5, i64 %42
  %44 = load double, ptr %43, align 8, !tbaa !15
  %45 = getelementptr inbounds double, ptr %2, i64 %42
  %46 = load double, ptr %45, align 8, !tbaa !15
  %47 = fsub double %44, %46
  %48 = tail call double @llvm.fabs.f64(double %47)
  %49 = fadd double %.0335425.us, %48
  %indvars.iv.next468 = add nsw i64 %indvars.iv467, 1
  %50 = icmp slt i64 %indvars.iv.next468, %41
  br i1 %50, label %.lr.ph.split.us, label %.preheader424, !llvm.loop !16

.lr.ph.split.us427:                               ; preds = %.lr.ph.split.us427.preheader, %.lr.ph.split.us427
  %indvars.iv464 = phi i64 [ %38, %.lr.ph.split.us427.preheader ], [ %indvars.iv.next465, %.lr.ph.split.us427 ]
  %.0335425.us429 = phi double [ 0.000000e+00, %.lr.ph.split.us427.preheader ], [ %57, %.lr.ph.split.us427 ]
  %51 = add nsw i64 %indvars.iv464, -1
  %52 = getelementptr inbounds double, ptr %3, i64 %51
  %53 = load double, ptr %52, align 8, !tbaa !15
  %54 = getelementptr inbounds double, ptr %4, i64 %51
  %55 = load double, ptr %54, align 8, !tbaa !15
  %56 = fsub double %53, %55
  %57 = fadd double %.0335425.us429, %56
  %indvars.iv.next465 = add nsw i64 %indvars.iv464, 1
  %58 = icmp slt i64 %indvars.iv.next465, %39
  br i1 %58, label %.lr.ph.split.us427, label %.preheader424, !llvm.loop !16

.lr.ph.split.us432:                               ; preds = %.lr.ph.split.us432.preheader, %.lr.ph.split.us432
  %indvars.iv = phi i64 [ %36, %.lr.ph.split.us432.preheader ], [ %indvars.iv.next, %.lr.ph.split.us432 ]
  %.0335425.us434 = phi double [ 0.000000e+00, %.lr.ph.split.us432.preheader ], [ %73, %.lr.ph.split.us432 ]
  %59 = add nsw i64 %indvars.iv, -1
  %60 = getelementptr inbounds double, ptr %3, i64 %59
  %61 = load double, ptr %60, align 8, !tbaa !15
  %62 = getelementptr inbounds double, ptr %5, i64 %59
  %63 = load double, ptr %62, align 8, !tbaa !15
  %64 = getelementptr inbounds double, ptr %2, i64 %59
  %65 = load double, ptr %64, align 8, !tbaa !15
  %66 = fcmp ult double %63, %65
  %..us = select i1 %66, double %65, double %63
  %67 = fsub double %61, %..us
  %68 = select i1 %66, double %63, double %65
  %69 = getelementptr inbounds double, ptr %4, i64 %59
  %70 = load double, ptr %69, align 8, !tbaa !15
  %71 = fsub double %68, %70
  %72 = fadd double %67, %71
  %73 = fadd double %.0335425.us434, %72
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %74 = icmp slt i64 %indvars.iv.next, %37
  br i1 %74, label %.lr.ph.split.us432, label %.preheader424, !llvm.loop !16

.preheader424:                                    ; preds = %.lr.ph.split.us432, %.lr.ph.split.us427, %.lr.ph.split.us, %.lr.ph, %25
  %.0335.lcssa = phi double [ 0.000000e+00, %25 ], [ 0.000000e+00, %.lr.ph ], [ %49, %.lr.ph.split.us ], [ %57, %.lr.ph.split.us427 ], [ %73, %.lr.ph.split.us432 ]
  %75 = icmp sgt i32 %31, 0
  br i1 %75, label %.lr.ph439, label %.preheader

.lr.ph439:                                        ; preds = %.preheader424
  %76 = getelementptr inbounds i8, ptr %26, i64 212
  %77 = load i32, ptr %76, align 4, !tbaa !14
  switch i32 %77, label %.preheader [
    i32 0, label %.lr.ph439.split.us.preheader
    i32 1, label %.lr.ph439.split.us442.preheader
    i32 2, label %.lr.ph439.split.us447.preheader
  ]

.lr.ph439.split.us447.preheader:                  ; preds = %.lr.ph439
  %78 = sext i32 %32 to i64
  %79 = zext nneg i32 %spec.select to i64
  br label %.lr.ph439.split.us447

.lr.ph439.split.us442.preheader:                  ; preds = %.lr.ph439
  %80 = sext i32 %32 to i64
  %81 = zext nneg i32 %spec.select to i64
  br label %.lr.ph439.split.us442

.lr.ph439.split.us.preheader:                     ; preds = %.lr.ph439
  %82 = sext i32 %32 to i64
  %83 = zext nneg i32 %spec.select to i64
  br label %.lr.ph439.split.us

.lr.ph439.split.us:                               ; preds = %.lr.ph439.split.us.preheader, %.lr.ph439.split.us
  %indvars.iv476 = phi i64 [ %82, %.lr.ph439.split.us.preheader ], [ %indvars.iv.next477, %.lr.ph439.split.us ]
  %.0333437.us = phi double [ 0.000000e+00, %.lr.ph439.split.us.preheader ], [ %91, %.lr.ph439.split.us ]
  %84 = add nsw i64 %indvars.iv476, -1
  %85 = getelementptr inbounds double, ptr %5, i64 %84
  %86 = load double, ptr %85, align 8, !tbaa !15
  %87 = getelementptr inbounds double, ptr %2, i64 %84
  %88 = load double, ptr %87, align 8, !tbaa !15
  %89 = fsub double %86, %88
  %90 = tail call double @llvm.fabs.f64(double %89)
  %91 = fadd double %.0333437.us, %90
  %indvars.iv.next477 = add nsw i64 %indvars.iv476, 1
  %92 = icmp slt i64 %indvars.iv.next477, %83
  br i1 %92, label %.lr.ph439.split.us, label %.preheader, !llvm.loop !18

.lr.ph439.split.us442:                            ; preds = %.lr.ph439.split.us442.preheader, %.lr.ph439.split.us442
  %indvars.iv473 = phi i64 [ %80, %.lr.ph439.split.us442.preheader ], [ %indvars.iv.next474, %.lr.ph439.split.us442 ]
  %.0333437.us444 = phi double [ 0.000000e+00, %.lr.ph439.split.us442.preheader ], [ %99, %.lr.ph439.split.us442 ]
  %93 = add nsw i64 %indvars.iv473, -1
  %94 = getelementptr inbounds double, ptr %3, i64 %93
  %95 = load double, ptr %94, align 8, !tbaa !15
  %96 = getelementptr inbounds double, ptr %4, i64 %93
  %97 = load double, ptr %96, align 8, !tbaa !15
  %98 = fsub double %95, %97
  %99 = fadd double %.0333437.us444, %98
  %indvars.iv.next474 = add nsw i64 %indvars.iv473, 1
  %100 = icmp slt i64 %indvars.iv.next474, %81
  br i1 %100, label %.lr.ph439.split.us442, label %.preheader, !llvm.loop !18

.lr.ph439.split.us447:                            ; preds = %.lr.ph439.split.us447.preheader, %.lr.ph439.split.us447
  %indvars.iv470 = phi i64 [ %78, %.lr.ph439.split.us447.preheader ], [ %indvars.iv.next471, %.lr.ph439.split.us447 ]
  %.0333437.us449 = phi double [ 0.000000e+00, %.lr.ph439.split.us447.preheader ], [ %115, %.lr.ph439.split.us447 ]
  %101 = add nsw i64 %indvars.iv470, -1
  %102 = getelementptr inbounds double, ptr %3, i64 %101
  %103 = load double, ptr %102, align 8, !tbaa !15
  %104 = getelementptr inbounds double, ptr %5, i64 %101
  %105 = load double, ptr %104, align 8, !tbaa !15
  %106 = getelementptr inbounds double, ptr %2, i64 %101
  %107 = load double, ptr %106, align 8, !tbaa !15
  %108 = fcmp ult double %105, %107
  %.403.us = select i1 %108, double %107, double %105
  %109 = fsub double %103, %.403.us
  %110 = select i1 %108, double %105, double %107
  %111 = getelementptr inbounds double, ptr %4, i64 %101
  %112 = load double, ptr %111, align 8, !tbaa !15
  %113 = fsub double %110, %112
  %114 = fadd double %109, %113
  %115 = fadd double %.0333437.us449, %114
  %indvars.iv.next471 = add nsw i64 %indvars.iv470, 1
  %116 = icmp slt i64 %indvars.iv.next471, %79
  br i1 %116, label %.lr.ph439.split.us447, label %.preheader, !llvm.loop !18

.preheader:                                       ; preds = %.lr.ph439.split.us447, %.lr.ph439.split.us442, %.lr.ph439.split.us, %.lr.ph439, %.preheader424
  %.0333.lcssa = phi double [ 0.000000e+00, %.preheader424 ], [ 0.000000e+00, %.lr.ph439 ], [ %91, %.lr.ph439.split.us ], [ %99, %.lr.ph439.split.us442 ], [ %115, %.lr.ph439.split.us447 ]
  %117 = getelementptr inbounds i8, ptr %26, i64 452
  %118 = getelementptr inbounds i8, ptr %26, i64 212
  %119 = getelementptr inbounds i8, ptr %26, i64 224
  %120 = getelementptr inbounds i8, ptr %26, i64 464
  %121 = sext i32 %22 to i64
  %122 = zext nneg i32 %0 to i64
  %smax = tail call i64 @llvm.smax.i64(i64 %121, i64 %122)
  %123 = sext i32 %1 to i64
  %124 = sext i32 %29 to i64
  %125 = sext i32 %32 to i64
  br label %126

126:                                              ; preds = %.preheader, %345
  %indvars.iv485 = phi i64 [ %125, %.preheader ], [ %indvars.iv.next486, %345 ]
  %indvars.iv483 = phi i64 [ %124, %.preheader ], [ %indvars.iv.next484, %345 ]
  %indvars.iv481 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next482, %345 ]
  %indvars.iv479 = phi i64 [ %smax, %.preheader ], [ %indvars.iv.next480, %345 ]
  %.1336 = phi double [ %.0335.lcssa, %.preheader ], [ %289, %345 ]
  %.1334 = phi double [ %.0333.lcssa, %.preheader ], [ %349, %345 ]
  %127 = add nsw i64 %indvars.iv479, -1
  %128 = getelementptr inbounds double, ptr %5, i64 %127
  %129 = load double, ptr %128, align 8, !tbaa !15
  %130 = getelementptr inbounds double, ptr %2, i64 %127
  %131 = load double, ptr %130, align 8, !tbaa !15
  %132 = fcmp ult double %129, %131
  br i1 %132, label %133, label %227

133:                                              ; preds = %126
  %134 = fsub double %129, %131
  %135 = tail call double @llvm.fabs.f64(double %134)
  %136 = load double, ptr %119, align 8, !tbaa !19
  %137 = load i32, ptr %30, align 8, !tbaa !11
  %.not398 = icmp eq i32 %137, 0
  br i1 %.not398, label %138, label %153

138:                                              ; preds = %133
  %139 = load i32, ptr %118, align 4, !tbaa !14
  switch i32 %139, label %.fold.split [
    i32 0, label %.thread494
    i32 1, label %140
    i32 2, label %.thread496
  ]

140:                                              ; preds = %138
  %141 = getelementptr inbounds double, ptr %3, i64 %127
  %142 = load double, ptr %141, align 8, !tbaa !15
  %143 = getelementptr inbounds double, ptr %4, i64 %127
  %144 = load double, ptr %143, align 8, !tbaa !15
  %145 = fsub double %142, %144
  br label %.thread494

.thread496:                                       ; preds = %138
  %146 = getelementptr inbounds double, ptr %3, i64 %127
  %147 = load double, ptr %146, align 8, !tbaa !15
  %148 = fsub double %147, %131
  %149 = getelementptr inbounds double, ptr %4, i64 %127
  %150 = load double, ptr %149, align 8, !tbaa !15
  %151 = fsub double %129, %150
  %152 = fadd double %148, %151
  br label %.thread494

.fold.split:                                      ; preds = %138
  br label %.thread494

153:                                              ; preds = %133
  %154 = sitofp i32 %137 to double
  %155 = fdiv double %.1334, %154
  %.pre = load i32, ptr %118, align 4, !tbaa !14
  %.pre.fr = freeze i32 %.pre
  %156 = icmp eq i32 %.pre.fr, 2
  br i1 %156, label %157, label %.thread494

157:                                              ; preds = %153
  br label %.thread494

.thread494:                                       ; preds = %.fold.split, %138, %140, %.thread496, %153, %157
  %.pn = phi double [ %155, %153 ], [ %152, %.thread496 ], [ %155, %157 ], [ 0.000000e+00, %.fold.split ], [ %135, %138 ], [ %145, %140 ]
  %158 = phi double [ 1.000000e+00, %153 ], [ 2.000000e+00, %.thread496 ], [ 2.000000e+00, %157 ], [ 1.000000e+00, %.fold.split ], [ 1.000000e+00, %138 ], [ 1.000000e+00, %140 ]
  %159 = fmul double %136, %.pn
  %160 = fdiv double %159, %158
  %161 = fcmp ogt double %135, %160
  br i1 %161, label %162, label %227

162:                                              ; preds = %.thread494
  %163 = getelementptr inbounds double, ptr %5, i64 %indvars.iv479
  %164 = load double, ptr %163, align 8, !tbaa !15
  %165 = getelementptr inbounds double, ptr %2, i64 %indvars.iv479
  %166 = load double, ptr %165, align 8, !tbaa !15
  %167 = fcmp ult double %164, %166
  br i1 %167, label %227, label %168

168:                                              ; preds = %162
  %169 = getelementptr inbounds double, ptr %4, i64 %127
  %170 = load double, ptr %169, align 8, !tbaa !15
  %171 = fcmp olt double %166, %170
  br i1 %171, label %172, label %227

172:                                              ; preds = %168
  %173 = load double, ptr %120, align 8, !tbaa !19
  %174 = load i32, ptr %27, align 8, !tbaa !11
  %.not399 = icmp eq i32 %174, 0
  br i1 %.not399, label %175, label %.thread498

175:                                              ; preds = %172
  %176 = load i32, ptr %117, align 4, !tbaa !14
  switch i32 %176, label %188 [
    i32 0, label %177
    i32 1, label %178
    i32 2, label %182
  ]

177:                                              ; preds = %175
  br label %188

178:                                              ; preds = %175
  %179 = getelementptr inbounds double, ptr %3, i64 %127
  %180 = load double, ptr %179, align 8, !tbaa !15
  %181 = fsub double %180, %170
  br label %188

182:                                              ; preds = %175
  %183 = getelementptr inbounds double, ptr %3, i64 %127
  %184 = load double, ptr %183, align 8, !tbaa !15
  %185 = fsub double %184, %131
  %186 = fsub double %129, %170
  %187 = fadd double %186, %185
  br label %188

188:                                              ; preds = %175, %177, %182, %178
  %189 = phi double [ %135, %177 ], [ %181, %178 ], [ %187, %182 ], [ 0.000000e+00, %175 ]
  %190 = fmul double %173, %189
  %191 = icmp eq i32 %176, 2
  %192 = select i1 %191, double 2.000000e+00, double 1.000000e+00
  %193 = fdiv double %190, %192
  %194 = fadd double %170, %193
  %195 = fcmp ugt double %164, %194
  br i1 %195, label %227, label %204

.thread498:                                       ; preds = %172
  %196 = sitofp i32 %174 to double
  %197 = fdiv double %.1336, %196
  %.pre492 = load i32, ptr %117, align 4, !tbaa !14
  %198 = fmul double %173, %197
  %199 = icmp eq i32 %.pre492, 2
  %200 = select i1 %199, double 2.000000e+00, double 1.000000e+00
  %201 = fdiv double %198, %200
  %202 = fadd double %170, %201
  %203 = fcmp ugt double %164, %202
  br i1 %203, label %227, label %.thread499

204:                                              ; preds = %188
  br i1 %.not399, label %208, label %.thread499

.thread499:                                       ; preds = %.thread498, %204
  %205 = phi double [ %192, %204 ], [ %200, %.thread498 ]
  %206 = sitofp i32 %174 to double
  %207 = fdiv double %.1336, %206
  br label %220

208:                                              ; preds = %204
  switch i32 %176, label %213 [
    i32 0, label %220
    i32 1, label %209
  ]

209:                                              ; preds = %208
  %210 = getelementptr inbounds double, ptr %3, i64 %127
  %211 = load double, ptr %210, align 8, !tbaa !15
  %212 = fsub double %211, %170
  br label %220

213:                                              ; preds = %208
  br i1 %191, label %214, label %220

214:                                              ; preds = %213
  %215 = getelementptr inbounds double, ptr %3, i64 %127
  %216 = load double, ptr %215, align 8, !tbaa !15
  %217 = fsub double %216, %131
  %218 = fsub double %129, %170
  %219 = fadd double %218, %217
  br label %220

220:                                              ; preds = %208, %214, %213, %209, %.thread499
  %221 = phi double [ %205, %.thread499 ], [ %192, %209 ], [ 2.000000e+00, %214 ], [ 1.000000e+00, %213 ], [ %192, %208 ]
  %222 = phi double [ %207, %.thread499 ], [ %212, %209 ], [ %219, %214 ], [ 0.000000e+00, %213 ], [ %135, %208 ]
  %223 = fmul double %173, %222
  %224 = fdiv double %223, %221
  %225 = fsub double %170, %224
  %226 = fcmp ult double %164, %225
  br i1 %226, label %227, label %228

227:                                              ; preds = %.thread498, %220, %188, %168, %162, %.thread494, %126
  br label %228

228:                                              ; preds = %220, %227
  %.sink = phi i32 [ 0, %227 ], [ -100, %220 ]
  %229 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv481
  store i32 %.sink, ptr %229, align 4, !tbaa !5
  %indvars.iv.next482 = add nuw nsw i64 %indvars.iv481, 1
  %230 = load i32, ptr %117, align 4, !tbaa !14
  switch i32 %230, label %285 [
    i32 0, label %.thread
    i32 1, label %.thread412
    i32 2, label %.thread413
  ]

.thread:                                          ; preds = %228
  %231 = add nsw i64 %indvars.iv483, -1
  %232 = getelementptr inbounds double, ptr %5, i64 %231
  %233 = load double, ptr %232, align 8, !tbaa !15
  %234 = getelementptr inbounds double, ptr %2, i64 %231
  %235 = load double, ptr %234, align 8, !tbaa !15
  %236 = insertelement <2 x double> poison, double %129, i64 0
  %237 = insertelement <2 x double> %236, double %233, i64 1
  %238 = insertelement <2 x double> poison, double %131, i64 0
  %239 = insertelement <2 x double> %238, double %235, i64 1
  %240 = fsub <2 x double> %237, %239
  %241 = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %240)
  br label %285

.thread412:                                       ; preds = %228
  %242 = getelementptr inbounds double, ptr %3, i64 %127
  %243 = load double, ptr %242, align 8, !tbaa !15
  %244 = getelementptr inbounds double, ptr %4, i64 %127
  %245 = load double, ptr %244, align 8, !tbaa !15
  %246 = add nsw i64 %indvars.iv483, -1
  %247 = getelementptr inbounds double, ptr %3, i64 %246
  %248 = load double, ptr %247, align 8, !tbaa !15
  %249 = getelementptr inbounds double, ptr %4, i64 %246
  %250 = load double, ptr %249, align 8, !tbaa !15
  %251 = insertelement <2 x double> poison, double %243, i64 0
  %252 = insertelement <2 x double> %251, double %248, i64 1
  %253 = insertelement <2 x double> poison, double %245, i64 0
  %254 = insertelement <2 x double> %253, double %250, i64 1
  %255 = fsub <2 x double> %252, %254
  br label %285

.thread413:                                       ; preds = %228
  %256 = getelementptr inbounds double, ptr %3, i64 %127
  %257 = load double, ptr %256, align 8, !tbaa !15
  %258 = getelementptr inbounds double, ptr %4, i64 %127
  %259 = load double, ptr %258, align 8, !tbaa !15
  %260 = add nsw i64 %indvars.iv483, -1
  %261 = getelementptr inbounds double, ptr %3, i64 %260
  %262 = load double, ptr %261, align 8, !tbaa !15
  %263 = getelementptr inbounds double, ptr %5, i64 %260
  %264 = load double, ptr %263, align 8, !tbaa !15
  %265 = getelementptr inbounds double, ptr %2, i64 %260
  %266 = load double, ptr %265, align 8, !tbaa !15
  %267 = fcmp ult double %264, %266
  %268 = getelementptr inbounds double, ptr %4, i64 %260
  %269 = load double, ptr %268, align 8, !tbaa !15
  %270 = insertelement <2 x i1> poison, i1 %132, i64 0
  %271 = insertelement <2 x i1> %270, i1 %267, i64 1
  %272 = insertelement <2 x double> poison, double %131, i64 0
  %273 = insertelement <2 x double> %272, double %266, i64 1
  %274 = insertelement <2 x double> poison, double %129, i64 0
  %275 = insertelement <2 x double> %274, double %264, i64 1
  %276 = select <2 x i1> %271, <2 x double> %273, <2 x double> %275
  %277 = insertelement <2 x double> poison, double %257, i64 0
  %278 = insertelement <2 x double> %277, double %262, i64 1
  %279 = fsub <2 x double> %278, %276
  %280 = select <2 x i1> %271, <2 x double> %275, <2 x double> %273
  %281 = insertelement <2 x double> poison, double %259, i64 0
  %282 = insertelement <2 x double> %281, double %269, i64 1
  %283 = fsub <2 x double> %280, %282
  %284 = fadd <2 x double> %279, %283
  br label %285

285:                                              ; preds = %228, %.thread412, %.thread413, %.thread
  %286 = phi <2 x double> [ %241, %.thread ], [ %255, %.thread412 ], [ %284, %.thread413 ], [ zeroinitializer, %228 ]
  %shift = shufflevector <2 x double> %286, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %287 = fsub <2 x double> %286, %shift
  %288 = extractelement <2 x double> %287, i64 0
  %289 = fadd double %.1336, %288
  %290 = load i32, ptr %118, align 4, !tbaa !14
  switch i32 %290, label %345 [
    i32 0, label %.thread414
    i32 1, label %.thread415
    i32 2, label %.thread416
  ]

.thread414:                                       ; preds = %285
  %291 = add nsw i64 %indvars.iv485, -1
  %292 = getelementptr inbounds double, ptr %5, i64 %291
  %293 = load double, ptr %292, align 8, !tbaa !15
  %294 = getelementptr inbounds double, ptr %2, i64 %291
  %295 = load double, ptr %294, align 8, !tbaa !15
  %296 = insertelement <2 x double> poison, double %129, i64 0
  %297 = insertelement <2 x double> %296, double %293, i64 1
  %298 = insertelement <2 x double> poison, double %131, i64 0
  %299 = insertelement <2 x double> %298, double %295, i64 1
  %300 = fsub <2 x double> %297, %299
  %301 = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %300)
  br label %345

.thread415:                                       ; preds = %285
  %302 = getelementptr inbounds double, ptr %3, i64 %127
  %303 = load double, ptr %302, align 8, !tbaa !15
  %304 = getelementptr inbounds double, ptr %4, i64 %127
  %305 = load double, ptr %304, align 8, !tbaa !15
  %306 = add nsw i64 %indvars.iv485, -1
  %307 = getelementptr inbounds double, ptr %3, i64 %306
  %308 = load double, ptr %307, align 8, !tbaa !15
  %309 = getelementptr inbounds double, ptr %4, i64 %306
  %310 = load double, ptr %309, align 8, !tbaa !15
  %311 = insertelement <2 x double> poison, double %303, i64 0
  %312 = insertelement <2 x double> %311, double %308, i64 1
  %313 = insertelement <2 x double> poison, double %305, i64 0
  %314 = insertelement <2 x double> %313, double %310, i64 1
  %315 = fsub <2 x double> %312, %314
  br label %345

.thread416:                                       ; preds = %285
  %316 = getelementptr inbounds double, ptr %3, i64 %127
  %317 = load double, ptr %316, align 8, !tbaa !15
  %318 = getelementptr inbounds double, ptr %4, i64 %127
  %319 = load double, ptr %318, align 8, !tbaa !15
  %320 = add nsw i64 %indvars.iv485, -1
  %321 = getelementptr inbounds double, ptr %3, i64 %320
  %322 = load double, ptr %321, align 8, !tbaa !15
  %323 = getelementptr inbounds double, ptr %5, i64 %320
  %324 = load double, ptr %323, align 8, !tbaa !15
  %325 = getelementptr inbounds double, ptr %2, i64 %320
  %326 = load double, ptr %325, align 8, !tbaa !15
  %327 = fcmp ult double %324, %326
  %328 = getelementptr inbounds double, ptr %4, i64 %320
  %329 = load double, ptr %328, align 8, !tbaa !15
  %330 = insertelement <2 x i1> poison, i1 %132, i64 0
  %331 = insertelement <2 x i1> %330, i1 %327, i64 1
  %332 = insertelement <2 x double> poison, double %131, i64 0
  %333 = insertelement <2 x double> %332, double %326, i64 1
  %334 = insertelement <2 x double> poison, double %129, i64 0
  %335 = insertelement <2 x double> %334, double %324, i64 1
  %336 = select <2 x i1> %331, <2 x double> %333, <2 x double> %335
  %337 = insertelement <2 x double> poison, double %317, i64 0
  %338 = insertelement <2 x double> %337, double %322, i64 1
  %339 = fsub <2 x double> %338, %336
  %340 = select <2 x i1> %331, <2 x double> %335, <2 x double> %333
  %341 = insertelement <2 x double> poison, double %319, i64 0
  %342 = insertelement <2 x double> %341, double %329, i64 1
  %343 = fsub <2 x double> %340, %342
  %344 = fadd <2 x double> %339, %343
  br label %345

345:                                              ; preds = %285, %.thread415, %.thread416, %.thread414
  %346 = phi <2 x double> [ %301, %.thread414 ], [ %315, %.thread415 ], [ %344, %.thread416 ], [ zeroinitializer, %285 ]
  %shift519 = shufflevector <2 x double> %346, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %347 = fsub <2 x double> %346, %shift519
  %348 = extractelement <2 x double> %347, i64 0
  %349 = fadd double %.1334, %348
  %indvars.iv.next480 = add nuw nsw i64 %indvars.iv479, 1
  %indvars.iv.next484 = add nsw i64 %indvars.iv483, 1
  %indvars.iv.next486 = add nsw i64 %indvars.iv485, 1
  %.not401.not = icmp slt i64 %indvars.iv479, %123
  br i1 %.not401.not, label %126, label %350, !llvm.loop !20

350:                                              ; preds = %345
  %351 = trunc nuw i64 %indvars.iv.next482 to i32
  store i32 %351, ptr %7, align 4, !tbaa !5
  store i32 %spec.select, ptr %6, align 4, !tbaa !5
  br label %352

352:                                              ; preds = %13, %11, %9, %350, %24
  %.0 = phi i32 [ 0, %24 ], [ 0, %350 ], [ 12, %9 ], [ 13, %11 ], [ 2, %13 ]
  ret i32 %.0
}

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fabs.v2f64(<2 x double>) #2

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }

!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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !6, i64 8}
!12 = !{!"", !6, i64 0, !6, i64 4, !6, i64 8, !13, i64 16}
!13 = !{!"double", !7, i64 0}
!14 = !{!12, !6, i64 4}
!15 = !{!13, !13, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}
!19 = !{!12, !13, i64 16}
!20 = distinct !{!20, !17}


; Effective O3 passes: ConstraintEliminationPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass