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

; 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_CDL3BLACKCROWS_Lookback() #0

; Function Attrs: nounwind uwtable
define dso_local i32 @TA_CDL3BLACKCROWS(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 [3 x double], align 16
  %21 = alloca i32, align 4
  %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
  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 24, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 4, 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
  %27 = load i32, ptr %11, align 4, !tbaa !5
  %28 = icmp slt i32 %27, 0
  br i1 %28, label %29, label %30

29:                                               ; preds = %9
  store i32 12, ptr %10, align 4
  store i32 1, ptr %26, align 4
  br label %1554

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

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

37:                                               ; preds = %33, %30
  store i32 13, ptr %10, align 4
  store i32 1, ptr %26, align 4
  br label %1554

38:                                               ; preds = %33
  %39 = load ptr, ptr %13, align 8, !tbaa !9
  %40 = icmp ne ptr %39, null
  br i1 %40, label %41, label %50

41:                                               ; preds = %38
  %42 = load ptr, ptr %14, align 8, !tbaa !9
  %43 = icmp ne ptr %42, null
  br i1 %43, label %44, label %50

44:                                               ; preds = %41
  %45 = load ptr, ptr %15, align 8, !tbaa !9
  %46 = icmp ne ptr %45, null
  br i1 %46, label %47, label %50

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

50:                                               ; preds = %47, %44, %41, %38
  store i32 2, ptr %10, align 4
  store i32 1, ptr %26, align 4
  br label %1554

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

54:                                               ; preds = %51
  store i32 2, ptr %10, align 4
  store i32 1, ptr %26, align 4
  br label %1554

55:                                               ; preds = %51
  %56 = call i32 @TA_CDL3BLACKCROWS_Lookback()
  store i32 %56, ptr %25, align 4, !tbaa !5
  %57 = load i32, ptr %11, align 4, !tbaa !5
  %58 = load i32, ptr %25, align 4, !tbaa !5
  %59 = icmp slt i32 %57, %58
  br i1 %59, label %60, label %62

60:                                               ; preds = %55
  %61 = load i32, ptr %25, align 4, !tbaa !5
  store i32 %61, ptr %11, align 4, !tbaa !5
  br label %62

62:                                               ; preds = %60, %55
  %63 = load i32, ptr %11, align 4, !tbaa !5
  %64 = load i32, ptr %12, align 4, !tbaa !5
  %65 = icmp sgt i32 %63, %64
  br i1 %65, label %66, label %69

66:                                               ; preds = %62
  %67 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 0, ptr %67, align 4, !tbaa !5
  %68 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 0, ptr %68, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %26, align 4
  br label %1554

69:                                               ; preds = %62
  %70 = getelementptr inbounds [3 x double], ptr %20, i64 0, i64 2
  store double 0.000000e+00, ptr %70, align 16, !tbaa !11
  %71 = getelementptr inbounds [3 x double], ptr %20, i64 0, i64 1
  store double 0.000000e+00, ptr %71, align 8, !tbaa !11
  %72 = getelementptr inbounds [3 x double], ptr %20, i64 0, i64 0
  store double 0.000000e+00, ptr %72, align 16, !tbaa !11
  %73 = load i32, ptr %11, align 4, !tbaa !5
  %74 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %75 = getelementptr inbounds %struct.TA_LibcPriv, ptr %74, i32 0, i32 8
  %76 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %75, i64 0, i64 7
  %77 = getelementptr inbounds %struct.TA_CandleSetting, ptr %76, i32 0, i32 2
  %78 = load i32, ptr %77, align 8, !tbaa !13
  %79 = sub nsw i32 %73, %78
  store i32 %79, ptr %24, align 4, !tbaa !5
  %80 = load i32, ptr %24, align 4, !tbaa !5
  store i32 %80, ptr %21, align 4, !tbaa !5
  br label %81

81:                                               ; preds = %466, %69
  %82 = load i32, ptr %21, align 4, !tbaa !5
  %83 = load i32, ptr %11, align 4, !tbaa !5
  %84 = icmp slt i32 %82, %83
  br i1 %84, label %85, label %473

85:                                               ; preds = %81
  %86 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %87 = getelementptr inbounds %struct.TA_LibcPriv, ptr %86, i32 0, i32 8
  %88 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %87, i64 0, i64 7
  %89 = getelementptr inbounds %struct.TA_CandleSetting, ptr %88, i32 0, i32 1
  %90 = load i32, ptr %89, align 4, !tbaa !15
  %91 = icmp eq i32 %90, 0
  br i1 %91, label %92, label %107

92:                                               ; preds = %85
  %93 = load ptr, ptr %16, align 8, !tbaa !9
  %94 = load i32, ptr %21, align 4, !tbaa !5
  %95 = sub nsw i32 %94, 2
  %96 = sext i32 %95 to i64
  %97 = getelementptr inbounds double, ptr %93, i64 %96
  %98 = load double, ptr %97, align 8, !tbaa !11
  %99 = load ptr, ptr %13, align 8, !tbaa !9
  %100 = load i32, ptr %21, align 4, !tbaa !5
  %101 = sub nsw i32 %100, 2
  %102 = sext i32 %101 to i64
  %103 = getelementptr inbounds double, ptr %99, i64 %102
  %104 = load double, ptr %103, align 8, !tbaa !11
  %105 = fsub double %98, %104
  %106 = call double @llvm.fabs.f64(double %105)
  br label %214

107:                                              ; preds = %85
  %108 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %109 = getelementptr inbounds %struct.TA_LibcPriv, ptr %108, i32 0, i32 8
  %110 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %109, i64 0, i64 7
  %111 = getelementptr inbounds %struct.TA_CandleSetting, ptr %110, i32 0, i32 1
  %112 = load i32, ptr %111, align 4, !tbaa !15
  %113 = icmp eq i32 %112, 1
  br i1 %113, label %114, label %128

114:                                              ; preds = %107
  %115 = load ptr, ptr %14, align 8, !tbaa !9
  %116 = load i32, ptr %21, align 4, !tbaa !5
  %117 = sub nsw i32 %116, 2
  %118 = sext i32 %117 to i64
  %119 = getelementptr inbounds double, ptr %115, i64 %118
  %120 = load double, ptr %119, align 8, !tbaa !11
  %121 = load ptr, ptr %15, align 8, !tbaa !9
  %122 = load i32, ptr %21, align 4, !tbaa !5
  %123 = sub nsw i32 %122, 2
  %124 = sext i32 %123 to i64
  %125 = getelementptr inbounds double, ptr %121, i64 %124
  %126 = load double, ptr %125, align 8, !tbaa !11
  %127 = fsub double %120, %126
  br label %212

128:                                              ; preds = %107
  %129 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %130 = getelementptr inbounds %struct.TA_LibcPriv, ptr %129, i32 0, i32 8
  %131 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %130, i64 0, i64 7
  %132 = getelementptr inbounds %struct.TA_CandleSetting, ptr %131, i32 0, i32 1
  %133 = load i32, ptr %132, align 4, !tbaa !15
  %134 = icmp eq i32 %133, 2
  br i1 %134, label %135, label %209

135:                                              ; preds = %128
  %136 = load ptr, ptr %14, align 8, !tbaa !9
  %137 = load i32, ptr %21, align 4, !tbaa !5
  %138 = sub nsw i32 %137, 2
  %139 = sext i32 %138 to i64
  %140 = getelementptr inbounds double, ptr %136, i64 %139
  %141 = load double, ptr %140, align 8, !tbaa !11
  %142 = load ptr, ptr %16, align 8, !tbaa !9
  %143 = load i32, ptr %21, align 4, !tbaa !5
  %144 = sub nsw i32 %143, 2
  %145 = sext i32 %144 to i64
  %146 = getelementptr inbounds double, ptr %142, i64 %145
  %147 = load double, ptr %146, align 8, !tbaa !11
  %148 = load ptr, ptr %13, align 8, !tbaa !9
  %149 = load i32, ptr %21, align 4, !tbaa !5
  %150 = sub nsw i32 %149, 2
  %151 = sext i32 %150 to i64
  %152 = getelementptr inbounds double, ptr %148, i64 %151
  %153 = load double, ptr %152, align 8, !tbaa !11
  %154 = fcmp oge double %147, %153
  br i1 %154, label %155, label %162

155:                                              ; preds = %135
  %156 = load ptr, ptr %16, align 8, !tbaa !9
  %157 = load i32, ptr %21, align 4, !tbaa !5
  %158 = sub nsw i32 %157, 2
  %159 = sext i32 %158 to i64
  %160 = getelementptr inbounds double, ptr %156, i64 %159
  %161 = load double, ptr %160, align 8, !tbaa !11
  br label %169

162:                                              ; preds = %135
  %163 = load ptr, ptr %13, align 8, !tbaa !9
  %164 = load i32, ptr %21, align 4, !tbaa !5
  %165 = sub nsw i32 %164, 2
  %166 = sext i32 %165 to i64
  %167 = getelementptr inbounds double, ptr %163, i64 %166
  %168 = load double, ptr %167, align 8, !tbaa !11
  br label %169

169:                                              ; preds = %162, %155
  %170 = phi double [ %161, %155 ], [ %168, %162 ]
  %171 = fsub double %141, %170
  %172 = load ptr, ptr %16, align 8, !tbaa !9
  %173 = load i32, ptr %21, align 4, !tbaa !5
  %174 = sub nsw i32 %173, 2
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds double, ptr %172, i64 %175
  %177 = load double, ptr %176, align 8, !tbaa !11
  %178 = load ptr, ptr %13, align 8, !tbaa !9
  %179 = load i32, ptr %21, align 4, !tbaa !5
  %180 = sub nsw i32 %179, 2
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds double, ptr %178, i64 %181
  %183 = load double, ptr %182, align 8, !tbaa !11
  %184 = fcmp oge double %177, %183
  br i1 %184, label %185, label %192

185:                                              ; preds = %169
  %186 = load ptr, ptr %13, align 8, !tbaa !9
  %187 = load i32, ptr %21, align 4, !tbaa !5
  %188 = sub nsw i32 %187, 2
  %189 = sext i32 %188 to i64
  %190 = getelementptr inbounds double, ptr %186, i64 %189
  %191 = load double, ptr %190, align 8, !tbaa !11
  br label %199

192:                                              ; preds = %169
  %193 = load ptr, ptr %16, align 8, !tbaa !9
  %194 = load i32, ptr %21, align 4, !tbaa !5
  %195 = sub nsw i32 %194, 2
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds double, ptr %193, i64 %196
  %198 = load double, ptr %197, align 8, !tbaa !11
  br label %199

199:                                              ; preds = %192, %185
  %200 = phi double [ %191, %185 ], [ %198, %192 ]
  %201 = load ptr, ptr %15, align 8, !tbaa !9
  %202 = load i32, ptr %21, align 4, !tbaa !5
  %203 = sub nsw i32 %202, 2
  %204 = sext i32 %203 to i64
  %205 = getelementptr inbounds double, ptr %201, i64 %204
  %206 = load double, ptr %205, align 8, !tbaa !11
  %207 = fsub double %200, %206
  %208 = fadd double %171, %207
  br label %210

209:                                              ; preds = %128
  br label %210

210:                                              ; preds = %209, %199
  %211 = phi double [ %208, %199 ], [ 0.000000e+00, %209 ]
  br label %212

212:                                              ; preds = %210, %114
  %213 = phi double [ %127, %114 ], [ %211, %210 ]
  br label %214

214:                                              ; preds = %212, %92
  %215 = phi double [ %106, %92 ], [ %213, %212 ]
  %216 = getelementptr inbounds [3 x double], ptr %20, i64 0, i64 2
  %217 = load double, ptr %216, align 16, !tbaa !11
  %218 = fadd double %217, %215
  store double %218, ptr %216, align 16, !tbaa !11
  %219 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %220 = getelementptr inbounds %struct.TA_LibcPriv, ptr %219, i32 0, i32 8
  %221 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %220, i64 0, i64 7
  %222 = getelementptr inbounds %struct.TA_CandleSetting, ptr %221, i32 0, i32 1
  %223 = load i32, ptr %222, align 4, !tbaa !15
  %224 = icmp eq i32 %223, 0
  br i1 %224, label %225, label %240

225:                                              ; preds = %214
  %226 = load ptr, ptr %16, align 8, !tbaa !9
  %227 = load i32, ptr %21, align 4, !tbaa !5
  %228 = sub nsw i32 %227, 1
  %229 = sext i32 %228 to i64
  %230 = getelementptr inbounds double, ptr %226, i64 %229
  %231 = load double, ptr %230, align 8, !tbaa !11
  %232 = load ptr, ptr %13, align 8, !tbaa !9
  %233 = load i32, ptr %21, align 4, !tbaa !5
  %234 = sub nsw i32 %233, 1
  %235 = sext i32 %234 to i64
  %236 = getelementptr inbounds double, ptr %232, i64 %235
  %237 = load double, ptr %236, align 8, !tbaa !11
  %238 = fsub double %231, %237
  %239 = call double @llvm.fabs.f64(double %238)
  br label %347

240:                                              ; preds = %214
  %241 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %242 = getelementptr inbounds %struct.TA_LibcPriv, ptr %241, i32 0, i32 8
  %243 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %242, i64 0, i64 7
  %244 = getelementptr inbounds %struct.TA_CandleSetting, ptr %243, i32 0, i32 1
  %245 = load i32, ptr %244, align 4, !tbaa !15
  %246 = icmp eq i32 %245, 1
  br i1 %246, label %247, label %261

247:                                              ; preds = %240
  %248 = load ptr, ptr %14, align 8, !tbaa !9
  %249 = load i32, ptr %21, align 4, !tbaa !5
  %250 = sub nsw i32 %249, 1
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds double, ptr %248, i64 %251
  %253 = load double, ptr %252, align 8, !tbaa !11
  %254 = load ptr, ptr %15, align 8, !tbaa !9
  %255 = load i32, ptr %21, align 4, !tbaa !5
  %256 = sub nsw i32 %255, 1
  %257 = sext i32 %256 to i64
  %258 = getelementptr inbounds double, ptr %254, i64 %257
  %259 = load double, ptr %258, align 8, !tbaa !11
  %260 = fsub double %253, %259
  br label %345

261:                                              ; preds = %240
  %262 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %263 = getelementptr inbounds %struct.TA_LibcPriv, ptr %262, i32 0, i32 8
  %264 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %263, i64 0, i64 7
  %265 = getelementptr inbounds %struct.TA_CandleSetting, ptr %264, i32 0, i32 1
  %266 = load i32, ptr %265, align 4, !tbaa !15
  %267 = icmp eq i32 %266, 2
  br i1 %267, label %268, label %342

268:                                              ; preds = %261
  %269 = load ptr, ptr %14, align 8, !tbaa !9
  %270 = load i32, ptr %21, align 4, !tbaa !5
  %271 = sub nsw i32 %270, 1
  %272 = sext i32 %271 to i64
  %273 = getelementptr inbounds double, ptr %269, i64 %272
  %274 = load double, ptr %273, align 8, !tbaa !11
  %275 = load ptr, ptr %16, align 8, !tbaa !9
  %276 = load i32, ptr %21, align 4, !tbaa !5
  %277 = sub nsw i32 %276, 1
  %278 = sext i32 %277 to i64
  %279 = getelementptr inbounds double, ptr %275, i64 %278
  %280 = load double, ptr %279, align 8, !tbaa !11
  %281 = load ptr, ptr %13, align 8, !tbaa !9
  %282 = load i32, ptr %21, align 4, !tbaa !5
  %283 = sub nsw i32 %282, 1
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds double, ptr %281, i64 %284
  %286 = load double, ptr %285, align 8, !tbaa !11
  %287 = fcmp oge double %280, %286
  br i1 %287, label %288, label %295

288:                                              ; preds = %268
  %289 = load ptr, ptr %16, align 8, !tbaa !9
  %290 = load i32, ptr %21, align 4, !tbaa !5
  %291 = sub nsw i32 %290, 1
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds double, ptr %289, i64 %292
  %294 = load double, ptr %293, align 8, !tbaa !11
  br label %302

295:                                              ; preds = %268
  %296 = load ptr, ptr %13, align 8, !tbaa !9
  %297 = load i32, ptr %21, align 4, !tbaa !5
  %298 = sub nsw i32 %297, 1
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds double, ptr %296, i64 %299
  %301 = load double, ptr %300, align 8, !tbaa !11
  br label %302

302:                                              ; preds = %295, %288
  %303 = phi double [ %294, %288 ], [ %301, %295 ]
  %304 = fsub double %274, %303
  %305 = load ptr, ptr %16, align 8, !tbaa !9
  %306 = load i32, ptr %21, align 4, !tbaa !5
  %307 = sub nsw i32 %306, 1
  %308 = sext i32 %307 to i64
  %309 = getelementptr inbounds double, ptr %305, i64 %308
  %310 = load double, ptr %309, align 8, !tbaa !11
  %311 = load ptr, ptr %13, align 8, !tbaa !9
  %312 = load i32, ptr %21, align 4, !tbaa !5
  %313 = sub nsw i32 %312, 1
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds double, ptr %311, i64 %314
  %316 = load double, ptr %315, align 8, !tbaa !11
  %317 = fcmp oge double %310, %316
  br i1 %317, label %318, label %325

318:                                              ; preds = %302
  %319 = load ptr, ptr %13, align 8, !tbaa !9
  %320 = load i32, ptr %21, align 4, !tbaa !5
  %321 = sub nsw i32 %320, 1
  %322 = sext i32 %321 to i64
  %323 = getelementptr inbounds double, ptr %319, i64 %322
  %324 = load double, ptr %323, align 8, !tbaa !11
  br label %332

325:                                              ; preds = %302
  %326 = load ptr, ptr %16, align 8, !tbaa !9
  %327 = load i32, ptr %21, align 4, !tbaa !5
  %328 = sub nsw i32 %327, 1
  %329 = sext i32 %328 to i64
  %330 = getelementptr inbounds double, ptr %326, i64 %329
  %331 = load double, ptr %330, align 8, !tbaa !11
  br label %332

332:                                              ; preds = %325, %318
  %333 = phi double [ %324, %318 ], [ %331, %325 ]
  %334 = load ptr, ptr %15, align 8, !tbaa !9
  %335 = load i32, ptr %21, align 4, !tbaa !5
  %336 = sub nsw i32 %335, 1
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds double, ptr %334, i64 %337
  %339 = load double, ptr %338, align 8, !tbaa !11
  %340 = fsub double %333, %339
  %341 = fadd double %304, %340
  br label %343

342:                                              ; preds = %261
  br label %343

343:                                              ; preds = %342, %332
  %344 = phi double [ %341, %332 ], [ 0.000000e+00, %342 ]
  br label %345

345:                                              ; preds = %343, %247
  %346 = phi double [ %260, %247 ], [ %344, %343 ]
  br label %347

347:                                              ; preds = %345, %225
  %348 = phi double [ %239, %225 ], [ %346, %345 ]
  %349 = getelementptr inbounds [3 x double], ptr %20, i64 0, i64 1
  %350 = load double, ptr %349, align 8, !tbaa !11
  %351 = fadd double %350, %348
  store double %351, ptr %349, align 8, !tbaa !11
  %352 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %353 = getelementptr inbounds %struct.TA_LibcPriv, ptr %352, i32 0, i32 8
  %354 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %353, i64 0, i64 7
  %355 = getelementptr inbounds %struct.TA_CandleSetting, ptr %354, i32 0, i32 1
  %356 = load i32, ptr %355, align 4, !tbaa !15
  %357 = icmp eq i32 %356, 0
  br i1 %357, label %358, label %371

358:                                              ; preds = %347
  %359 = load ptr, ptr %16, align 8, !tbaa !9
  %360 = load i32, ptr %21, align 4, !tbaa !5
  %361 = sext i32 %360 to i64
  %362 = getelementptr inbounds double, ptr %359, i64 %361
  %363 = load double, ptr %362, align 8, !tbaa !11
  %364 = load ptr, ptr %13, align 8, !tbaa !9
  %365 = load i32, ptr %21, align 4, !tbaa !5
  %366 = sext i32 %365 to i64
  %367 = getelementptr inbounds double, ptr %364, i64 %366
  %368 = load double, ptr %367, align 8, !tbaa !11
  %369 = fsub double %363, %368
  %370 = call double @llvm.fabs.f64(double %369)
  br label %466

371:                                              ; preds = %347
  %372 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %373 = getelementptr inbounds %struct.TA_LibcPriv, ptr %372, i32 0, i32 8
  %374 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %373, i64 0, i64 7
  %375 = getelementptr inbounds %struct.TA_CandleSetting, ptr %374, i32 0, i32 1
  %376 = load i32, ptr %375, align 4, !tbaa !15
  %377 = icmp eq i32 %376, 1
  br i1 %377, label %378, label %390

378:                                              ; preds = %371
  %379 = load ptr, ptr %14, align 8, !tbaa !9
  %380 = load i32, ptr %21, align 4, !tbaa !5
  %381 = sext i32 %380 to i64
  %382 = getelementptr inbounds double, ptr %379, i64 %381
  %383 = load double, ptr %382, align 8, !tbaa !11
  %384 = load ptr, ptr %15, align 8, !tbaa !9
  %385 = load i32, ptr %21, align 4, !tbaa !5
  %386 = sext i32 %385 to i64
  %387 = getelementptr inbounds double, ptr %384, i64 %386
  %388 = load double, ptr %387, align 8, !tbaa !11
  %389 = fsub double %383, %388
  br label %464

390:                                              ; preds = %371
  %391 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %392 = getelementptr inbounds %struct.TA_LibcPriv, ptr %391, i32 0, i32 8
  %393 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %392, i64 0, i64 7
  %394 = getelementptr inbounds %struct.TA_CandleSetting, ptr %393, i32 0, i32 1
  %395 = load i32, ptr %394, align 4, !tbaa !15
  %396 = icmp eq i32 %395, 2
  br i1 %396, label %397, label %461

397:                                              ; preds = %390
  %398 = load ptr, ptr %14, align 8, !tbaa !9
  %399 = load i32, ptr %21, align 4, !tbaa !5
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds double, ptr %398, i64 %400
  %402 = load double, ptr %401, align 8, !tbaa !11
  %403 = load ptr, ptr %16, align 8, !tbaa !9
  %404 = load i32, ptr %21, align 4, !tbaa !5
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds double, ptr %403, i64 %405
  %407 = load double, ptr %406, align 8, !tbaa !11
  %408 = load ptr, ptr %13, align 8, !tbaa !9
  %409 = load i32, ptr %21, align 4, !tbaa !5
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds double, ptr %408, i64 %410
  %412 = load double, ptr %411, align 8, !tbaa !11
  %413 = fcmp oge double %407, %412
  br i1 %413, label %414, label %420

414:                                              ; preds = %397
  %415 = load ptr, ptr %16, align 8, !tbaa !9
  %416 = load i32, ptr %21, align 4, !tbaa !5
  %417 = sext i32 %416 to i64
  %418 = getelementptr inbounds double, ptr %415, i64 %417
  %419 = load double, ptr %418, align 8, !tbaa !11
  br label %426

420:                                              ; preds = %397
  %421 = load ptr, ptr %13, align 8, !tbaa !9
  %422 = load i32, ptr %21, align 4, !tbaa !5
  %423 = sext i32 %422 to i64
  %424 = getelementptr inbounds double, ptr %421, i64 %423
  %425 = load double, ptr %424, align 8, !tbaa !11
  br label %426

426:                                              ; preds = %420, %414
  %427 = phi double [ %419, %414 ], [ %425, %420 ]
  %428 = fsub double %402, %427
  %429 = load ptr, ptr %16, align 8, !tbaa !9
  %430 = load i32, ptr %21, align 4, !tbaa !5
  %431 = sext i32 %430 to i64
  %432 = getelementptr inbounds double, ptr %429, i64 %431
  %433 = load double, ptr %432, align 8, !tbaa !11
  %434 = load ptr, ptr %13, align 8, !tbaa !9
  %435 = load i32, ptr %21, align 4, !tbaa !5
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds double, ptr %434, i64 %436
  %438 = load double, ptr %437, align 8, !tbaa !11
  %439 = fcmp oge double %433, %438
  br i1 %439, label %440, label %446

440:                                              ; preds = %426
  %441 = load ptr, ptr %13, align 8, !tbaa !9
  %442 = load i32, ptr %21, align 4, !tbaa !5
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds double, ptr %441, i64 %443
  %445 = load double, ptr %444, align 8, !tbaa !11
  br label %452

446:                                              ; preds = %426
  %447 = load ptr, ptr %16, align 8, !tbaa !9
  %448 = load i32, ptr %21, align 4, !tbaa !5
  %449 = sext i32 %448 to i64
  %450 = getelementptr inbounds double, ptr %447, i64 %449
  %451 = load double, ptr %450, align 8, !tbaa !11
  br label %452

452:                                              ; preds = %446, %440
  %453 = phi double [ %445, %440 ], [ %451, %446 ]
  %454 = load ptr, ptr %15, align 8, !tbaa !9
  %455 = load i32, ptr %21, align 4, !tbaa !5
  %456 = sext i32 %455 to i64
  %457 = getelementptr inbounds double, ptr %454, i64 %456
  %458 = load double, ptr %457, align 8, !tbaa !11
  %459 = fsub double %453, %458
  %460 = fadd double %428, %459
  br label %462

461:                                              ; preds = %390
  br label %462

462:                                              ; preds = %461, %452
  %463 = phi double [ %460, %452 ], [ 0.000000e+00, %461 ]
  br label %464

464:                                              ; preds = %462, %378
  %465 = phi double [ %389, %378 ], [ %463, %462 ]
  br label %466

466:                                              ; preds = %464, %358
  %467 = phi double [ %370, %358 ], [ %465, %464 ]
  %468 = getelementptr inbounds [3 x double], ptr %20, i64 0, i64 0
  %469 = load double, ptr %468, align 16, !tbaa !11
  %470 = fadd double %469, %467
  store double %470, ptr %468, align 16, !tbaa !11
  %471 = load i32, ptr %21, align 4, !tbaa !5
  %472 = add nsw i32 %471, 1
  store i32 %472, ptr %21, align 4, !tbaa !5
  br label %81, !llvm.loop !16

473:                                              ; preds = %81
  %474 = load i32, ptr %11, align 4, !tbaa !5
  store i32 %474, ptr %21, align 4, !tbaa !5
  store i32 0, ptr %22, align 4, !tbaa !5
  br label %475

475:                                              ; preds = %1545, %473
  %476 = load ptr, ptr %16, align 8, !tbaa !9
  %477 = load i32, ptr %21, align 4, !tbaa !5
  %478 = sub nsw i32 %477, 3
  %479 = sext i32 %478 to i64
  %480 = getelementptr inbounds double, ptr %476, i64 %479
  %481 = load double, ptr %480, align 8, !tbaa !11
  %482 = load ptr, ptr %13, align 8, !tbaa !9
  %483 = load i32, ptr %21, align 4, !tbaa !5
  %484 = sub nsw i32 %483, 3
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds double, ptr %482, i64 %485
  %487 = load double, ptr %486, align 8, !tbaa !11
  %488 = fcmp oge double %481, %487
  %489 = zext i1 %488 to i64
  %490 = select i1 %488, i32 1, i32 -1
  %491 = icmp eq i32 %490, 1
  br i1 %491, label %492, label %1232

492:                                              ; preds = %475
  %493 = load ptr, ptr %16, align 8, !tbaa !9
  %494 = load i32, ptr %21, align 4, !tbaa !5
  %495 = sub nsw i32 %494, 2
  %496 = sext i32 %495 to i64
  %497 = getelementptr inbounds double, ptr %493, i64 %496
  %498 = load double, ptr %497, align 8, !tbaa !11
  %499 = load ptr, ptr %13, align 8, !tbaa !9
  %500 = load i32, ptr %21, align 4, !tbaa !5
  %501 = sub nsw i32 %500, 2
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds double, ptr %499, i64 %502
  %504 = load double, ptr %503, align 8, !tbaa !11
  %505 = fcmp oge double %498, %504
  %506 = zext i1 %505 to i64
  %507 = select i1 %505, i32 1, i32 -1
  %508 = icmp eq i32 %507, -1
  br i1 %508, label %509, label %1232

509:                                              ; preds = %492
  %510 = load ptr, ptr %16, align 8, !tbaa !9
  %511 = load i32, ptr %21, align 4, !tbaa !5
  %512 = sub nsw i32 %511, 2
  %513 = sext i32 %512 to i64
  %514 = getelementptr inbounds double, ptr %510, i64 %513
  %515 = load double, ptr %514, align 8, !tbaa !11
  %516 = load ptr, ptr %13, align 8, !tbaa !9
  %517 = load i32, ptr %21, align 4, !tbaa !5
  %518 = sub nsw i32 %517, 2
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds double, ptr %516, i64 %519
  %521 = load double, ptr %520, align 8, !tbaa !11
  %522 = fcmp oge double %515, %521
  br i1 %522, label %523, label %530

523:                                              ; preds = %509
  %524 = load ptr, ptr %13, align 8, !tbaa !9
  %525 = load i32, ptr %21, align 4, !tbaa !5
  %526 = sub nsw i32 %525, 2
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds double, ptr %524, i64 %527
  %529 = load double, ptr %528, align 8, !tbaa !11
  br label %537

530:                                              ; preds = %509
  %531 = load ptr, ptr %16, align 8, !tbaa !9
  %532 = load i32, ptr %21, align 4, !tbaa !5
  %533 = sub nsw i32 %532, 2
  %534 = sext i32 %533 to i64
  %535 = getelementptr inbounds double, ptr %531, i64 %534
  %536 = load double, ptr %535, align 8, !tbaa !11
  br label %537

537:                                              ; preds = %530, %523
  %538 = phi double [ %529, %523 ], [ %536, %530 ]
  %539 = load ptr, ptr %15, align 8, !tbaa !9
  %540 = load i32, ptr %21, align 4, !tbaa !5
  %541 = sub nsw i32 %540, 2
  %542 = sext i32 %541 to i64
  %543 = getelementptr inbounds double, ptr %539, i64 %542
  %544 = load double, ptr %543, align 8, !tbaa !11
  %545 = fsub double %538, %544
  %546 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %547 = getelementptr inbounds %struct.TA_LibcPriv, ptr %546, i32 0, i32 8
  %548 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %547, i64 0, i64 7
  %549 = getelementptr inbounds %struct.TA_CandleSetting, ptr %548, i32 0, i32 3
  %550 = load double, ptr %549, align 8, !tbaa !18
  %551 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %552 = getelementptr inbounds %struct.TA_LibcPriv, ptr %551, i32 0, i32 8
  %553 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %552, i64 0, i64 7
  %554 = getelementptr inbounds %struct.TA_CandleSetting, ptr %553, i32 0, i32 2
  %555 = load i32, ptr %554, align 8, !tbaa !13
  %556 = sitofp i32 %555 to double
  %557 = fcmp une double %556, 0.000000e+00
  br i1 %557, label %558, label %568

558:                                              ; preds = %537
  %559 = getelementptr inbounds [3 x double], ptr %20, i64 0, i64 2
  %560 = load double, ptr %559, align 16, !tbaa !11
  %561 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %562 = getelementptr inbounds %struct.TA_LibcPriv, ptr %561, i32 0, i32 8
  %563 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %562, i64 0, i64 7
  %564 = getelementptr inbounds %struct.TA_CandleSetting, ptr %563, i32 0, i32 2
  %565 = load i32, ptr %564, align 8, !tbaa !13
  %566 = sitofp i32 %565 to double
  %567 = fdiv double %560, %566
  br label %699

568:                                              ; preds = %537
  %569 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %570 = getelementptr inbounds %struct.TA_LibcPriv, ptr %569, i32 0, i32 8
  %571 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %570, i64 0, i64 7
  %572 = getelementptr inbounds %struct.TA_CandleSetting, ptr %571, i32 0, i32 1
  %573 = load i32, ptr %572, align 4, !tbaa !15
  %574 = icmp eq i32 %573, 0
  br i1 %574, label %575, label %590

575:                                              ; preds = %568
  %576 = load ptr, ptr %16, align 8, !tbaa !9
  %577 = load i32, ptr %21, align 4, !tbaa !5
  %578 = sub nsw i32 %577, 2
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds double, ptr %576, i64 %579
  %581 = load double, ptr %580, align 8, !tbaa !11
  %582 = load ptr, ptr %13, align 8, !tbaa !9
  %583 = load i32, ptr %21, align 4, !tbaa !5
  %584 = sub nsw i32 %583, 2
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds double, ptr %582, i64 %585
  %587 = load double, ptr %586, align 8, !tbaa !11
  %588 = fsub double %581, %587
  %589 = call double @llvm.fabs.f64(double %588)
  br label %697

590:                                              ; preds = %568
  %591 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %592 = getelementptr inbounds %struct.TA_LibcPriv, ptr %591, i32 0, i32 8
  %593 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %592, i64 0, i64 7
  %594 = getelementptr inbounds %struct.TA_CandleSetting, ptr %593, i32 0, i32 1
  %595 = load i32, ptr %594, align 4, !tbaa !15
  %596 = icmp eq i32 %595, 1
  br i1 %596, label %597, label %611

597:                                              ; preds = %590
  %598 = load ptr, ptr %14, align 8, !tbaa !9
  %599 = load i32, ptr %21, align 4, !tbaa !5
  %600 = sub nsw i32 %599, 2
  %601 = sext i32 %600 to i64
  %602 = getelementptr inbounds double, ptr %598, i64 %601
  %603 = load double, ptr %602, align 8, !tbaa !11
  %604 = load ptr, ptr %15, align 8, !tbaa !9
  %605 = load i32, ptr %21, align 4, !tbaa !5
  %606 = sub nsw i32 %605, 2
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds double, ptr %604, i64 %607
  %609 = load double, ptr %608, align 8, !tbaa !11
  %610 = fsub double %603, %609
  br label %695

611:                                              ; preds = %590
  %612 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %613 = getelementptr inbounds %struct.TA_LibcPriv, ptr %612, i32 0, i32 8
  %614 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %613, i64 0, i64 7
  %615 = getelementptr inbounds %struct.TA_CandleSetting, ptr %614, i32 0, i32 1
  %616 = load i32, ptr %615, align 4, !tbaa !15
  %617 = icmp eq i32 %616, 2
  br i1 %617, label %618, label %692

618:                                              ; preds = %611
  %619 = load ptr, ptr %14, align 8, !tbaa !9
  %620 = load i32, ptr %21, align 4, !tbaa !5
  %621 = sub nsw i32 %620, 2
  %622 = sext i32 %621 to i64
  %623 = getelementptr inbounds double, ptr %619, i64 %622
  %624 = load double, ptr %623, align 8, !tbaa !11
  %625 = load ptr, ptr %16, align 8, !tbaa !9
  %626 = load i32, ptr %21, align 4, !tbaa !5
  %627 = sub nsw i32 %626, 2
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds double, ptr %625, i64 %628
  %630 = load double, ptr %629, align 8, !tbaa !11
  %631 = load ptr, ptr %13, align 8, !tbaa !9
  %632 = load i32, ptr %21, align 4, !tbaa !5
  %633 = sub nsw i32 %632, 2
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds double, ptr %631, i64 %634
  %636 = load double, ptr %635, align 8, !tbaa !11
  %637 = fcmp oge double %630, %636
  br i1 %637, label %638, label %645

638:                                              ; preds = %618
  %639 = load ptr, ptr %16, align 8, !tbaa !9
  %640 = load i32, ptr %21, align 4, !tbaa !5
  %641 = sub nsw i32 %640, 2
  %642 = sext i32 %641 to i64
  %643 = getelementptr inbounds double, ptr %639, i64 %642
  %644 = load double, ptr %643, align 8, !tbaa !11
  br label %652

645:                                              ; preds = %618
  %646 = load ptr, ptr %13, align 8, !tbaa !9
  %647 = load i32, ptr %21, align 4, !tbaa !5
  %648 = sub nsw i32 %647, 2
  %649 = sext i32 %648 to i64
  %650 = getelementptr inbounds double, ptr %646, i64 %649
  %651 = load double, ptr %650, align 8, !tbaa !11
  br label %652

652:                                              ; preds = %645, %638
  %653 = phi double [ %644, %638 ], [ %651, %645 ]
  %654 = fsub double %624, %653
  %655 = load ptr, ptr %16, align 8, !tbaa !9
  %656 = load i32, ptr %21, align 4, !tbaa !5
  %657 = sub nsw i32 %656, 2
  %658 = sext i32 %657 to i64
  %659 = getelementptr inbounds double, ptr %655, i64 %658
  %660 = load double, ptr %659, align 8, !tbaa !11
  %661 = load ptr, ptr %13, align 8, !tbaa !9
  %662 = load i32, ptr %21, align 4, !tbaa !5
  %663 = sub nsw i32 %662, 2
  %664 = sext i32 %663 to i64
  %665 = getelementptr inbounds double, ptr %661, i64 %664
  %666 = load double, ptr %665, align 8, !tbaa !11
  %667 = fcmp oge double %660, %666
  br i1 %667, label %668, label %675

668:                                              ; preds = %652
  %669 = load ptr, ptr %13, align 8, !tbaa !9
  %670 = load i32, ptr %21, align 4, !tbaa !5
  %671 = sub nsw i32 %670, 2
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds double, ptr %669, i64 %672
  %674 = load double, ptr %673, align 8, !tbaa !11
  br label %682

675:                                              ; preds = %652
  %676 = load ptr, ptr %16, align 8, !tbaa !9
  %677 = load i32, ptr %21, align 4, !tbaa !5
  %678 = sub nsw i32 %677, 2
  %679 = sext i32 %678 to i64
  %680 = getelementptr inbounds double, ptr %676, i64 %679
  %681 = load double, ptr %680, align 8, !tbaa !11
  br label %682

682:                                              ; preds = %675, %668
  %683 = phi double [ %674, %668 ], [ %681, %675 ]
  %684 = load ptr, ptr %15, align 8, !tbaa !9
  %685 = load i32, ptr %21, align 4, !tbaa !5
  %686 = sub nsw i32 %685, 2
  %687 = sext i32 %686 to i64
  %688 = getelementptr inbounds double, ptr %684, i64 %687
  %689 = load double, ptr %688, align 8, !tbaa !11
  %690 = fsub double %683, %689
  %691 = fadd double %654, %690
  br label %693

692:                                              ; preds = %611
  br label %693

693:                                              ; preds = %692, %682
  %694 = phi double [ %691, %682 ], [ 0.000000e+00, %692 ]
  br label %695

695:                                              ; preds = %693, %597
  %696 = phi double [ %610, %597 ], [ %694, %693 ]
  br label %697

697:                                              ; preds = %695, %575
  %698 = phi double [ %589, %575 ], [ %696, %695 ]
  br label %699

699:                                              ; preds = %697, %558
  %700 = phi double [ %567, %558 ], [ %698, %697 ]
  %701 = fmul double %550, %700
  %702 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %703 = getelementptr inbounds %struct.TA_LibcPriv, ptr %702, i32 0, i32 8
  %704 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %703, i64 0, i64 7
  %705 = getelementptr inbounds %struct.TA_CandleSetting, ptr %704, i32 0, i32 1
  %706 = load i32, ptr %705, align 4, !tbaa !15
  %707 = icmp eq i32 %706, 2
  %708 = zext i1 %707 to i64
  %709 = select i1 %707, double 2.000000e+00, double 1.000000e+00
  %710 = fdiv double %701, %709
  %711 = fcmp olt double %545, %710
  br i1 %711, label %712, label %1232

712:                                              ; preds = %699
  %713 = load ptr, ptr %16, align 8, !tbaa !9
  %714 = load i32, ptr %21, 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 %21, 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
  %726 = zext i1 %725 to i64
  %727 = select i1 %725, i32 1, i32 -1
  %728 = icmp eq i32 %727, -1
  br i1 %728, label %729, label %1232

729:                                              ; preds = %712
  %730 = load ptr, ptr %16, align 8, !tbaa !9
  %731 = load i32, ptr %21, align 4, !tbaa !5
  %732 = sub nsw i32 %731, 1
  %733 = sext i32 %732 to i64
  %734 = getelementptr inbounds double, ptr %730, i64 %733
  %735 = load double, ptr %734, align 8, !tbaa !11
  %736 = load ptr, ptr %13, align 8, !tbaa !9
  %737 = load i32, ptr %21, align 4, !tbaa !5
  %738 = sub nsw i32 %737, 1
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds double, ptr %736, i64 %739
  %741 = load double, ptr %740, align 8, !tbaa !11
  %742 = fcmp oge double %735, %741
  br i1 %742, label %743, label %750

743:                                              ; preds = %729
  %744 = load ptr, ptr %13, align 8, !tbaa !9
  %745 = load i32, ptr %21, align 4, !tbaa !5
  %746 = sub nsw i32 %745, 1
  %747 = sext i32 %746 to i64
  %748 = getelementptr inbounds double, ptr %744, i64 %747
  %749 = load double, ptr %748, align 8, !tbaa !11
  br label %757

750:                                              ; preds = %729
  %751 = load ptr, ptr %16, align 8, !tbaa !9
  %752 = load i32, ptr %21, align 4, !tbaa !5
  %753 = sub nsw i32 %752, 1
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds double, ptr %751, i64 %754
  %756 = load double, ptr %755, align 8, !tbaa !11
  br label %757

757:                                              ; preds = %750, %743
  %758 = phi double [ %749, %743 ], [ %756, %750 ]
  %759 = load ptr, ptr %15, align 8, !tbaa !9
  %760 = load i32, ptr %21, align 4, !tbaa !5
  %761 = sub nsw i32 %760, 1
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds double, ptr %759, i64 %762
  %764 = load double, ptr %763, align 8, !tbaa !11
  %765 = fsub double %758, %764
  %766 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %767 = getelementptr inbounds %struct.TA_LibcPriv, ptr %766, i32 0, i32 8
  %768 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %767, i64 0, i64 7
  %769 = getelementptr inbounds %struct.TA_CandleSetting, ptr %768, i32 0, i32 3
  %770 = load double, ptr %769, align 8, !tbaa !18
  %771 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %772 = getelementptr inbounds %struct.TA_LibcPriv, ptr %771, i32 0, i32 8
  %773 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %772, i64 0, i64 7
  %774 = getelementptr inbounds %struct.TA_CandleSetting, ptr %773, i32 0, i32 2
  %775 = load i32, ptr %774, align 8, !tbaa !13
  %776 = sitofp i32 %775 to double
  %777 = fcmp une double %776, 0.000000e+00
  br i1 %777, label %778, label %788

778:                                              ; preds = %757
  %779 = getelementptr inbounds [3 x double], ptr %20, i64 0, i64 1
  %780 = load double, ptr %779, align 8, !tbaa !11
  %781 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %782 = getelementptr inbounds %struct.TA_LibcPriv, ptr %781, i32 0, i32 8
  %783 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %782, i64 0, i64 7
  %784 = getelementptr inbounds %struct.TA_CandleSetting, ptr %783, i32 0, i32 2
  %785 = load i32, ptr %784, align 8, !tbaa !13
  %786 = sitofp i32 %785 to double
  %787 = fdiv double %780, %786
  br label %919

788:                                              ; preds = %757
  %789 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %790 = getelementptr inbounds %struct.TA_LibcPriv, ptr %789, i32 0, i32 8
  %791 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %790, i64 0, i64 7
  %792 = getelementptr inbounds %struct.TA_CandleSetting, ptr %791, i32 0, i32 1
  %793 = load i32, ptr %792, align 4, !tbaa !15
  %794 = icmp eq i32 %793, 0
  br i1 %794, label %795, label %810

795:                                              ; preds = %788
  %796 = load ptr, ptr %16, align 8, !tbaa !9
  %797 = load i32, ptr %21, align 4, !tbaa !5
  %798 = sub nsw i32 %797, 1
  %799 = sext i32 %798 to i64
  %800 = getelementptr inbounds double, ptr %796, i64 %799
  %801 = load double, ptr %800, align 8, !tbaa !11
  %802 = load ptr, ptr %13, align 8, !tbaa !9
  %803 = load i32, ptr %21, align 4, !tbaa !5
  %804 = sub nsw i32 %803, 1
  %805 = sext i32 %804 to i64
  %806 = getelementptr inbounds double, ptr %802, i64 %805
  %807 = load double, ptr %806, align 8, !tbaa !11
  %808 = fsub double %801, %807
  %809 = call double @llvm.fabs.f64(double %808)
  br label %917

810:                                              ; preds = %788
  %811 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %812 = getelementptr inbounds %struct.TA_LibcPriv, ptr %811, i32 0, i32 8
  %813 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %812, i64 0, i64 7
  %814 = getelementptr inbounds %struct.TA_CandleSetting, ptr %813, i32 0, i32 1
  %815 = load i32, ptr %814, align 4, !tbaa !15
  %816 = icmp eq i32 %815, 1
  br i1 %816, label %817, label %831

817:                                              ; preds = %810
  %818 = load ptr, ptr %14, align 8, !tbaa !9
  %819 = load i32, ptr %21, 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 = load ptr, ptr %15, align 8, !tbaa !9
  %825 = load i32, ptr %21, align 4, !tbaa !5
  %826 = sub nsw i32 %825, 1
  %827 = sext i32 %826 to i64
  %828 = getelementptr inbounds double, ptr %824, i64 %827
  %829 = load double, ptr %828, align 8, !tbaa !11
  %830 = fsub double %823, %829
  br label %915

831:                                              ; preds = %810
  %832 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %833 = getelementptr inbounds %struct.TA_LibcPriv, ptr %832, i32 0, i32 8
  %834 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %833, i64 0, i64 7
  %835 = getelementptr inbounds %struct.TA_CandleSetting, ptr %834, i32 0, i32 1
  %836 = load i32, ptr %835, align 4, !tbaa !15
  %837 = icmp eq i32 %836, 2
  br i1 %837, label %838, label %912

838:                                              ; preds = %831
  %839 = load ptr, ptr %14, align 8, !tbaa !9
  %840 = load i32, ptr %21, align 4, !tbaa !5
  %841 = sub nsw i32 %840, 1
  %842 = sext i32 %841 to i64
  %843 = getelementptr inbounds double, ptr %839, i64 %842
  %844 = load double, ptr %843, align 8, !tbaa !11
  %845 = load ptr, ptr %16, align 8, !tbaa !9
  %846 = load i32, ptr %21, align 4, !tbaa !5
  %847 = sub nsw i32 %846, 1
  %848 = sext i32 %847 to i64
  %849 = getelementptr inbounds double, ptr %845, i64 %848
  %850 = load double, ptr %849, align 8, !tbaa !11
  %851 = load ptr, ptr %13, align 8, !tbaa !9
  %852 = load i32, ptr %21, align 4, !tbaa !5
  %853 = sub nsw i32 %852, 1
  %854 = sext i32 %853 to i64
  %855 = getelementptr inbounds double, ptr %851, i64 %854
  %856 = load double, ptr %855, align 8, !tbaa !11
  %857 = fcmp oge double %850, %856
  br i1 %857, label %858, label %865

858:                                              ; preds = %838
  %859 = load ptr, ptr %16, align 8, !tbaa !9
  %860 = load i32, ptr %21, align 4, !tbaa !5
  %861 = sub nsw i32 %860, 1
  %862 = sext i32 %861 to i64
  %863 = getelementptr inbounds double, ptr %859, i64 %862
  %864 = load double, ptr %863, align 8, !tbaa !11
  br label %872

865:                                              ; preds = %838
  %866 = load ptr, ptr %13, align 8, !tbaa !9
  %867 = load i32, ptr %21, align 4, !tbaa !5
  %868 = sub nsw i32 %867, 1
  %869 = sext i32 %868 to i64
  %870 = getelementptr inbounds double, ptr %866, i64 %869
  %871 = load double, ptr %870, align 8, !tbaa !11
  br label %872

872:                                              ; preds = %865, %858
  %873 = phi double [ %864, %858 ], [ %871, %865 ]
  %874 = fsub double %844, %873
  %875 = load ptr, ptr %16, align 8, !tbaa !9
  %876 = load i32, ptr %21, 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
  %881 = load ptr, ptr %13, align 8, !tbaa !9
  %882 = load i32, ptr %21, align 4, !tbaa !5
  %883 = sub nsw i32 %882, 1
  %884 = sext i32 %883 to i64
  %885 = getelementptr inbounds double, ptr %881, i64 %884
  %886 = load double, ptr %885, align 8, !tbaa !11
  %887 = fcmp oge double %880, %886
  br i1 %887, label %888, label %895

888:                                              ; preds = %872
  %889 = load ptr, ptr %13, align 8, !tbaa !9
  %890 = load i32, ptr %21, align 4, !tbaa !5
  %891 = sub nsw i32 %890, 1
  %892 = sext i32 %891 to i64
  %893 = getelementptr inbounds double, ptr %889, i64 %892
  %894 = load double, ptr %893, align 8, !tbaa !11
  br label %902

895:                                              ; preds = %872
  %896 = load ptr, ptr %16, align 8, !tbaa !9
  %897 = load i32, ptr %21, align 4, !tbaa !5
  %898 = sub nsw i32 %897, 1
  %899 = sext i32 %898 to i64
  %900 = getelementptr inbounds double, ptr %896, i64 %899
  %901 = load double, ptr %900, align 8, !tbaa !11
  br label %902

902:                                              ; preds = %895, %888
  %903 = phi double [ %894, %888 ], [ %901, %895 ]
  %904 = load ptr, ptr %15, align 8, !tbaa !9
  %905 = load i32, ptr %21, align 4, !tbaa !5
  %906 = sub nsw i32 %905, 1
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds double, ptr %904, i64 %907
  %909 = load double, ptr %908, align 8, !tbaa !11
  %910 = fsub double %903, %909
  %911 = fadd double %874, %910
  br label %913

912:                                              ; preds = %831
  br label %913

913:                                              ; preds = %912, %902
  %914 = phi double [ %911, %902 ], [ 0.000000e+00, %912 ]
  br label %915

915:                                              ; preds = %913, %817
  %916 = phi double [ %830, %817 ], [ %914, %913 ]
  br label %917

917:                                              ; preds = %915, %795
  %918 = phi double [ %809, %795 ], [ %916, %915 ]
  br label %919

919:                                              ; preds = %917, %778
  %920 = phi double [ %787, %778 ], [ %918, %917 ]
  %921 = fmul double %770, %920
  %922 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %923 = getelementptr inbounds %struct.TA_LibcPriv, ptr %922, i32 0, i32 8
  %924 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %923, i64 0, i64 7
  %925 = getelementptr inbounds %struct.TA_CandleSetting, ptr %924, i32 0, i32 1
  %926 = load i32, ptr %925, align 4, !tbaa !15
  %927 = icmp eq i32 %926, 2
  %928 = zext i1 %927 to i64
  %929 = select i1 %927, double 2.000000e+00, double 1.000000e+00
  %930 = fdiv double %921, %929
  %931 = fcmp olt double %765, %930
  br i1 %931, label %932, label %1232

932:                                              ; preds = %919
  %933 = load ptr, ptr %16, align 8, !tbaa !9
  %934 = load i32, ptr %21, align 4, !tbaa !5
  %935 = sext i32 %934 to i64
  %936 = getelementptr inbounds double, ptr %933, i64 %935
  %937 = load double, ptr %936, align 8, !tbaa !11
  %938 = load ptr, ptr %13, align 8, !tbaa !9
  %939 = load i32, ptr %21, align 4, !tbaa !5
  %940 = sext i32 %939 to i64
  %941 = getelementptr inbounds double, ptr %938, i64 %940
  %942 = load double, ptr %941, align 8, !tbaa !11
  %943 = fcmp oge double %937, %942
  %944 = zext i1 %943 to i64
  %945 = select i1 %943, i32 1, i32 -1
  %946 = icmp eq i32 %945, -1
  br i1 %946, label %947, label %1232

947:                                              ; preds = %932
  %948 = load ptr, ptr %16, align 8, !tbaa !9
  %949 = load i32, ptr %21, align 4, !tbaa !5
  %950 = sext i32 %949 to i64
  %951 = getelementptr inbounds double, ptr %948, i64 %950
  %952 = load double, ptr %951, align 8, !tbaa !11
  %953 = load ptr, ptr %13, align 8, !tbaa !9
  %954 = load i32, ptr %21, align 4, !tbaa !5
  %955 = sext i32 %954 to i64
  %956 = getelementptr inbounds double, ptr %953, i64 %955
  %957 = load double, ptr %956, align 8, !tbaa !11
  %958 = fcmp oge double %952, %957
  br i1 %958, label %959, label %965

959:                                              ; preds = %947
  %960 = load ptr, ptr %13, align 8, !tbaa !9
  %961 = load i32, ptr %21, align 4, !tbaa !5
  %962 = sext i32 %961 to i64
  %963 = getelementptr inbounds double, ptr %960, i64 %962
  %964 = load double, ptr %963, align 8, !tbaa !11
  br label %971

965:                                              ; preds = %947
  %966 = load ptr, ptr %16, align 8, !tbaa !9
  %967 = load i32, ptr %21, align 4, !tbaa !5
  %968 = sext i32 %967 to i64
  %969 = getelementptr inbounds double, ptr %966, i64 %968
  %970 = load double, ptr %969, align 8, !tbaa !11
  br label %971

971:                                              ; preds = %965, %959
  %972 = phi double [ %964, %959 ], [ %970, %965 ]
  %973 = load ptr, ptr %15, align 8, !tbaa !9
  %974 = load i32, ptr %21, align 4, !tbaa !5
  %975 = sext i32 %974 to i64
  %976 = getelementptr inbounds double, ptr %973, i64 %975
  %977 = load double, ptr %976, align 8, !tbaa !11
  %978 = fsub double %972, %977
  %979 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %980 = getelementptr inbounds %struct.TA_LibcPriv, ptr %979, i32 0, i32 8
  %981 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %980, i64 0, i64 7
  %982 = getelementptr inbounds %struct.TA_CandleSetting, ptr %981, i32 0, i32 3
  %983 = load double, ptr %982, align 8, !tbaa !18
  %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 7
  %987 = getelementptr inbounds %struct.TA_CandleSetting, ptr %986, i32 0, i32 2
  %988 = load i32, ptr %987, align 8, !tbaa !13
  %989 = sitofp i32 %988 to double
  %990 = fcmp une double %989, 0.000000e+00
  br i1 %990, label %991, label %1001

991:                                              ; preds = %971
  %992 = getelementptr inbounds [3 x double], ptr %20, i64 0, i64 0
  %993 = load double, ptr %992, align 16, !tbaa !11
  %994 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %995 = getelementptr inbounds %struct.TA_LibcPriv, ptr %994, i32 0, i32 8
  %996 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %995, i64 0, i64 7
  %997 = getelementptr inbounds %struct.TA_CandleSetting, ptr %996, i32 0, i32 2
  %998 = load i32, ptr %997, align 8, !tbaa !13
  %999 = sitofp i32 %998 to double
  %1000 = fdiv double %993, %999
  br label %1118

1001:                                             ; preds = %971
  %1002 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1003 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1002, i32 0, i32 8
  %1004 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1003, i64 0, i64 7
  %1005 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1004, i32 0, i32 1
  %1006 = load i32, ptr %1005, align 4, !tbaa !15
  %1007 = icmp eq i32 %1006, 0
  br i1 %1007, label %1008, label %1021

1008:                                             ; preds = %1001
  %1009 = load ptr, ptr %16, align 8, !tbaa !9
  %1010 = load i32, ptr %21, align 4, !tbaa !5
  %1011 = sext i32 %1010 to i64
  %1012 = getelementptr inbounds double, ptr %1009, i64 %1011
  %1013 = load double, ptr %1012, align 8, !tbaa !11
  %1014 = load ptr, ptr %13, align 8, !tbaa !9
  %1015 = load i32, ptr %21, align 4, !tbaa !5
  %1016 = sext i32 %1015 to i64
  %1017 = getelementptr inbounds double, ptr %1014, i64 %1016
  %1018 = load double, ptr %1017, align 8, !tbaa !11
  %1019 = fsub double %1013, %1018
  %1020 = call double @llvm.fabs.f64(double %1019)
  br label %1116

1021:                                             ; preds = %1001
  %1022 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1023 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1022, i32 0, i32 8
  %1024 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1023, i64 0, i64 7
  %1025 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1024, i32 0, i32 1
  %1026 = load i32, ptr %1025, align 4, !tbaa !15
  %1027 = icmp eq i32 %1026, 1
  br i1 %1027, label %1028, label %1040

1028:                                             ; preds = %1021
  %1029 = load ptr, ptr %14, align 8, !tbaa !9
  %1030 = load i32, ptr %21, align 4, !tbaa !5
  %1031 = sext i32 %1030 to i64
  %1032 = getelementptr inbounds double, ptr %1029, i64 %1031
  %1033 = load double, ptr %1032, align 8, !tbaa !11
  %1034 = load ptr, ptr %15, align 8, !tbaa !9
  %1035 = load i32, ptr %21, align 4, !tbaa !5
  %1036 = sext i32 %1035 to i64
  %1037 = getelementptr inbounds double, ptr %1034, i64 %1036
  %1038 = load double, ptr %1037, align 8, !tbaa !11
  %1039 = fsub double %1033, %1038
  br label %1114

1040:                                             ; preds = %1021
  %1041 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1042 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1041, i32 0, i32 8
  %1043 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1042, i64 0, i64 7
  %1044 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1043, i32 0, i32 1
  %1045 = load i32, ptr %1044, align 4, !tbaa !15
  %1046 = icmp eq i32 %1045, 2
  br i1 %1046, label %1047, label %1111

1047:                                             ; preds = %1040
  %1048 = load ptr, ptr %14, align 8, !tbaa !9
  %1049 = load i32, ptr %21, align 4, !tbaa !5
  %1050 = sext i32 %1049 to i64
  %1051 = getelementptr inbounds double, ptr %1048, i64 %1050
  %1052 = load double, ptr %1051, align 8, !tbaa !11
  %1053 = load ptr, ptr %16, align 8, !tbaa !9
  %1054 = load i32, ptr %21, align 4, !tbaa !5
  %1055 = sext i32 %1054 to i64
  %1056 = getelementptr inbounds double, ptr %1053, i64 %1055
  %1057 = load double, ptr %1056, align 8, !tbaa !11
  %1058 = load ptr, ptr %13, align 8, !tbaa !9
  %1059 = load i32, ptr %21, align 4, !tbaa !5
  %1060 = sext i32 %1059 to i64
  %1061 = getelementptr inbounds double, ptr %1058, i64 %1060
  %1062 = load double, ptr %1061, align 8, !tbaa !11
  %1063 = fcmp oge double %1057, %1062
  br i1 %1063, label %1064, label %1070

1064:                                             ; preds = %1047
  %1065 = load ptr, ptr %16, align 8, !tbaa !9
  %1066 = load i32, ptr %21, align 4, !tbaa !5
  %1067 = sext i32 %1066 to i64
  %1068 = getelementptr inbounds double, ptr %1065, i64 %1067
  %1069 = load double, ptr %1068, align 8, !tbaa !11
  br label %1076

1070:                                             ; preds = %1047
  %1071 = load ptr, ptr %13, align 8, !tbaa !9
  %1072 = load i32, ptr %21, align 4, !tbaa !5
  %1073 = sext i32 %1072 to i64
  %1074 = getelementptr inbounds double, ptr %1071, i64 %1073
  %1075 = load double, ptr %1074, align 8, !tbaa !11
  br label %1076

1076:                                             ; preds = %1070, %1064
  %1077 = phi double [ %1069, %1064 ], [ %1075, %1070 ]
  %1078 = fsub double %1052, %1077
  %1079 = load ptr, ptr %16, align 8, !tbaa !9
  %1080 = load i32, ptr %21, align 4, !tbaa !5
  %1081 = sext i32 %1080 to i64
  %1082 = getelementptr inbounds double, ptr %1079, i64 %1081
  %1083 = load double, ptr %1082, align 8, !tbaa !11
  %1084 = load ptr, ptr %13, align 8, !tbaa !9
  %1085 = load i32, ptr %21, align 4, !tbaa !5
  %1086 = sext i32 %1085 to i64
  %1087 = getelementptr inbounds double, ptr %1084, i64 %1086
  %1088 = load double, ptr %1087, align 8, !tbaa !11
  %1089 = fcmp oge double %1083, %1088
  br i1 %1089, label %1090, label %1096

1090:                                             ; preds = %1076
  %1091 = load ptr, ptr %13, align 8, !tbaa !9
  %1092 = load i32, ptr %21, align 4, !tbaa !5
  %1093 = sext i32 %1092 to i64
  %1094 = getelementptr inbounds double, ptr %1091, i64 %1093
  %1095 = load double, ptr %1094, align 8, !tbaa !11
  br label %1102

1096:                                             ; preds = %1076
  %1097 = load ptr, ptr %16, align 8, !tbaa !9
  %1098 = load i32, ptr %21, align 4, !tbaa !5
  %1099 = sext i32 %1098 to i64
  %1100 = getelementptr inbounds double, ptr %1097, i64 %1099
  %1101 = load double, ptr %1100, align 8, !tbaa !11
  br label %1102

1102:                                             ; preds = %1096, %1090
  %1103 = phi double [ %1095, %1090 ], [ %1101, %1096 ]
  %1104 = load ptr, ptr %15, align 8, !tbaa !9
  %1105 = load i32, ptr %21, align 4, !tbaa !5
  %1106 = sext i32 %1105 to i64
  %1107 = getelementptr inbounds double, ptr %1104, i64 %1106
  %1108 = load double, ptr %1107, align 8, !tbaa !11
  %1109 = fsub double %1103, %1108
  %1110 = fadd double %1078, %1109
  br label %1112

1111:                                             ; preds = %1040
  br label %1112

1112:                                             ; preds = %1111, %1102
  %1113 = phi double [ %1110, %1102 ], [ 0.000000e+00, %1111 ]
  br label %1114

1114:                                             ; preds = %1112, %1028
  %1115 = phi double [ %1039, %1028 ], [ %1113, %1112 ]
  br label %1116

1116:                                             ; preds = %1114, %1008
  %1117 = phi double [ %1020, %1008 ], [ %1115, %1114 ]
  br label %1118

1118:                                             ; preds = %1116, %991
  %1119 = phi double [ %1000, %991 ], [ %1117, %1116 ]
  %1120 = fmul double %983, %1119
  %1121 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1122 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1121, i32 0, i32 8
  %1123 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1122, i64 0, i64 7
  %1124 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1123, i32 0, i32 1
  %1125 = load i32, ptr %1124, align 4, !tbaa !15
  %1126 = icmp eq i32 %1125, 2
  %1127 = zext i1 %1126 to i64
  %1128 = select i1 %1126, double 2.000000e+00, double 1.000000e+00
  %1129 = fdiv double %1120, %1128
  %1130 = fcmp olt double %978, %1129
  br i1 %1130, label %1131, label %1232

1131:                                             ; preds = %1118
  %1132 = load ptr, ptr %13, align 8, !tbaa !9
  %1133 = load i32, ptr %21, align 4, !tbaa !5
  %1134 = sub nsw i32 %1133, 1
  %1135 = sext i32 %1134 to i64
  %1136 = getelementptr inbounds double, ptr %1132, i64 %1135
  %1137 = load double, ptr %1136, align 8, !tbaa !11
  %1138 = load ptr, ptr %13, align 8, !tbaa !9
  %1139 = load i32, ptr %21, align 4, !tbaa !5
  %1140 = sub nsw i32 %1139, 2
  %1141 = sext i32 %1140 to i64
  %1142 = getelementptr inbounds double, ptr %1138, i64 %1141
  %1143 = load double, ptr %1142, align 8, !tbaa !11
  %1144 = fcmp olt double %1137, %1143
  br i1 %1144, label %1145, label %1232

1145:                                             ; preds = %1131
  %1146 = load ptr, ptr %13, align 8, !tbaa !9
  %1147 = load i32, ptr %21, align 4, !tbaa !5
  %1148 = sub nsw i32 %1147, 1
  %1149 = sext i32 %1148 to i64
  %1150 = getelementptr inbounds double, ptr %1146, i64 %1149
  %1151 = load double, ptr %1150, align 8, !tbaa !11
  %1152 = load ptr, ptr %16, align 8, !tbaa !9
  %1153 = load i32, ptr %21, align 4, !tbaa !5
  %1154 = sub nsw i32 %1153, 2
  %1155 = sext i32 %1154 to i64
  %1156 = getelementptr inbounds double, ptr %1152, i64 %1155
  %1157 = load double, ptr %1156, align 8, !tbaa !11
  %1158 = fcmp ogt double %1151, %1157
  br i1 %1158, label %1159, label %1232

1159:                                             ; preds = %1145
  %1160 = load ptr, ptr %13, align 8, !tbaa !9
  %1161 = load i32, ptr %21, align 4, !tbaa !5
  %1162 = sext i32 %1161 to i64
  %1163 = getelementptr inbounds double, ptr %1160, i64 %1162
  %1164 = load double, ptr %1163, align 8, !tbaa !11
  %1165 = load ptr, ptr %13, align 8, !tbaa !9
  %1166 = load i32, ptr %21, align 4, !tbaa !5
  %1167 = sub nsw i32 %1166, 1
  %1168 = sext i32 %1167 to i64
  %1169 = getelementptr inbounds double, ptr %1165, i64 %1168
  %1170 = load double, ptr %1169, align 8, !tbaa !11
  %1171 = fcmp olt double %1164, %1170
  br i1 %1171, label %1172, label %1232

1172:                                             ; preds = %1159
  %1173 = load ptr, ptr %13, align 8, !tbaa !9
  %1174 = load i32, ptr %21, align 4, !tbaa !5
  %1175 = sext i32 %1174 to i64
  %1176 = getelementptr inbounds double, ptr %1173, i64 %1175
  %1177 = load double, ptr %1176, align 8, !tbaa !11
  %1178 = load ptr, ptr %16, align 8, !tbaa !9
  %1179 = load i32, ptr %21, 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 = fcmp ogt double %1177, %1183
  br i1 %1184, label %1185, label %1232

1185:                                             ; preds = %1172
  %1186 = load ptr, ptr %14, align 8, !tbaa !9
  %1187 = load i32, ptr %21, align 4, !tbaa !5
  %1188 = sub nsw i32 %1187, 3
  %1189 = sext i32 %1188 to i64
  %1190 = getelementptr inbounds double, ptr %1186, i64 %1189
  %1191 = load double, ptr %1190, align 8, !tbaa !11
  %1192 = load ptr, ptr %16, align 8, !tbaa !9
  %1193 = load i32, ptr %21, align 4, !tbaa !5
  %1194 = sub nsw i32 %1193, 2
  %1195 = sext i32 %1194 to i64
  %1196 = getelementptr inbounds double, ptr %1192, i64 %1195
  %1197 = load double, ptr %1196, align 8, !tbaa !11
  %1198 = fcmp ogt double %1191, %1197
  br i1 %1198, label %1199, label %1232

1199:                                             ; preds = %1185
  %1200 = load ptr, ptr %16, align 8, !tbaa !9
  %1201 = load i32, ptr %21, align 4, !tbaa !5
  %1202 = sub nsw i32 %1201, 2
  %1203 = sext i32 %1202 to i64
  %1204 = getelementptr inbounds double, ptr %1200, i64 %1203
  %1205 = load double, ptr %1204, align 8, !tbaa !11
  %1206 = load ptr, ptr %16, align 8, !tbaa !9
  %1207 = load i32, ptr %21, align 4, !tbaa !5
  %1208 = sub nsw i32 %1207, 1
  %1209 = sext i32 %1208 to i64
  %1210 = getelementptr inbounds double, ptr %1206, i64 %1209
  %1211 = load double, ptr %1210, align 8, !tbaa !11
  %1212 = fcmp ogt double %1205, %1211
  br i1 %1212, label %1213, label %1232

1213:                                             ; preds = %1199
  %1214 = load ptr, ptr %16, align 8, !tbaa !9
  %1215 = load i32, ptr %21, align 4, !tbaa !5
  %1216 = sub nsw i32 %1215, 1
  %1217 = sext i32 %1216 to i64
  %1218 = getelementptr inbounds double, ptr %1214, i64 %1217
  %1219 = load double, ptr %1218, align 8, !tbaa !11
  %1220 = load ptr, ptr %16, align 8, !tbaa !9
  %1221 = load i32, ptr %21, align 4, !tbaa !5
  %1222 = sext i32 %1221 to i64
  %1223 = getelementptr inbounds double, ptr %1220, i64 %1222
  %1224 = load double, ptr %1223, align 8, !tbaa !11
  %1225 = fcmp ogt double %1219, %1224
  br i1 %1225, label %1226, label %1232

1226:                                             ; preds = %1213
  %1227 = load ptr, ptr %19, align 8, !tbaa !9
  %1228 = load i32, ptr %22, align 4, !tbaa !5
  %1229 = add nsw i32 %1228, 1
  store i32 %1229, ptr %22, align 4, !tbaa !5
  %1230 = sext i32 %1228 to i64
  %1231 = getelementptr inbounds i32, ptr %1227, i64 %1230
  store i32 -100, ptr %1231, align 4, !tbaa !5
  br label %1238

1232:                                             ; preds = %1213, %1199, %1185, %1172, %1159, %1145, %1131, %1118, %932, %919, %712, %699, %492, %475
  %1233 = load ptr, ptr %19, align 8, !tbaa !9
  %1234 = load i32, ptr %22, align 4, !tbaa !5
  %1235 = add nsw i32 %1234, 1
  store i32 %1235, ptr %22, align 4, !tbaa !5
  %1236 = sext i32 %1234 to i64
  %1237 = getelementptr inbounds i32, ptr %1233, i64 %1236
  store i32 0, ptr %1237, align 4, !tbaa !5
  br label %1238

1238:                                             ; preds = %1232, %1226
  store i32 2, ptr %23, align 4, !tbaa !5
  br label %1239

1239:                                             ; preds = %1537, %1238
  %1240 = load i32, ptr %23, align 4, !tbaa !5
  %1241 = icmp sge i32 %1240, 0
  br i1 %1241, label %1242, label %1540

1242:                                             ; preds = %1239
  %1243 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1244 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1243, i32 0, i32 8
  %1245 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1244, i64 0, i64 7
  %1246 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1245, i32 0, i32 1
  %1247 = load i32, ptr %1246, align 4, !tbaa !15
  %1248 = icmp eq i32 %1247, 0
  br i1 %1248, label %1249, label %1266

1249:                                             ; preds = %1242
  %1250 = load ptr, ptr %16, align 8, !tbaa !9
  %1251 = load i32, ptr %21, align 4, !tbaa !5
  %1252 = load i32, ptr %23, align 4, !tbaa !5
  %1253 = sub nsw i32 %1251, %1252
  %1254 = sext i32 %1253 to i64
  %1255 = getelementptr inbounds double, ptr %1250, i64 %1254
  %1256 = load double, ptr %1255, align 8, !tbaa !11
  %1257 = load ptr, ptr %13, align 8, !tbaa !9
  %1258 = load i32, ptr %21, align 4, !tbaa !5
  %1259 = load i32, ptr %23, align 4, !tbaa !5
  %1260 = sub nsw i32 %1258, %1259
  %1261 = sext i32 %1260 to i64
  %1262 = getelementptr inbounds double, ptr %1257, i64 %1261
  %1263 = load double, ptr %1262, align 8, !tbaa !11
  %1264 = fsub double %1256, %1263
  %1265 = call double @llvm.fabs.f64(double %1264)
  br label %1385

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

1273:                                             ; preds = %1266
  %1274 = load ptr, ptr %14, align 8, !tbaa !9
  %1275 = load i32, ptr %21, align 4, !tbaa !5
  %1276 = load i32, ptr %23, align 4, !tbaa !5
  %1277 = sub nsw i32 %1275, %1276
  %1278 = sext i32 %1277 to i64
  %1279 = getelementptr inbounds double, ptr %1274, i64 %1278
  %1280 = load double, ptr %1279, align 8, !tbaa !11
  %1281 = load ptr, ptr %15, align 8, !tbaa !9
  %1282 = load i32, ptr %21, align 4, !tbaa !5
  %1283 = load i32, ptr %23, align 4, !tbaa !5
  %1284 = sub nsw i32 %1282, %1283
  %1285 = sext i32 %1284 to i64
  %1286 = getelementptr inbounds double, ptr %1281, i64 %1285
  %1287 = load double, ptr %1286, align 8, !tbaa !11
  %1288 = fsub double %1280, %1287
  br label %1383

1289:                                             ; preds = %1266
  %1290 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1291 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1290, i32 0, i32 8
  %1292 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1291, i64 0, i64 7
  %1293 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1292, i32 0, i32 1
  %1294 = load i32, ptr %1293, align 4, !tbaa !15
  %1295 = icmp eq i32 %1294, 2
  br i1 %1295, label %1296, label %1380

1296:                                             ; preds = %1289
  %1297 = load ptr, ptr %14, align 8, !tbaa !9
  %1298 = load i32, ptr %21, align 4, !tbaa !5
  %1299 = load i32, ptr %23, align 4, !tbaa !5
  %1300 = sub nsw i32 %1298, %1299
  %1301 = sext i32 %1300 to i64
  %1302 = getelementptr inbounds double, ptr %1297, i64 %1301
  %1303 = load double, ptr %1302, align 8, !tbaa !11
  %1304 = load ptr, ptr %16, align 8, !tbaa !9
  %1305 = load i32, ptr %21, align 4, !tbaa !5
  %1306 = load i32, ptr %23, align 4, !tbaa !5
  %1307 = sub nsw i32 %1305, %1306
  %1308 = sext i32 %1307 to i64
  %1309 = getelementptr inbounds double, ptr %1304, i64 %1308
  %1310 = load double, ptr %1309, align 8, !tbaa !11
  %1311 = load ptr, ptr %13, align 8, !tbaa !9
  %1312 = load i32, ptr %21, align 4, !tbaa !5
  %1313 = load i32, ptr %23, align 4, !tbaa !5
  %1314 = sub nsw i32 %1312, %1313
  %1315 = sext i32 %1314 to i64
  %1316 = getelementptr inbounds double, ptr %1311, i64 %1315
  %1317 = load double, ptr %1316, align 8, !tbaa !11
  %1318 = fcmp oge double %1310, %1317
  br i1 %1318, label %1319, label %1327

1319:                                             ; preds = %1296
  %1320 = load ptr, ptr %16, align 8, !tbaa !9
  %1321 = load i32, ptr %21, align 4, !tbaa !5
  %1322 = load i32, ptr %23, align 4, !tbaa !5
  %1323 = sub nsw i32 %1321, %1322
  %1324 = sext i32 %1323 to i64
  %1325 = getelementptr inbounds double, ptr %1320, i64 %1324
  %1326 = load double, ptr %1325, align 8, !tbaa !11
  br label %1335

1327:                                             ; preds = %1296
  %1328 = load ptr, ptr %13, align 8, !tbaa !9
  %1329 = load i32, ptr %21, align 4, !tbaa !5
  %1330 = load i32, ptr %23, align 4, !tbaa !5
  %1331 = sub nsw i32 %1329, %1330
  %1332 = sext i32 %1331 to i64
  %1333 = getelementptr inbounds double, ptr %1328, i64 %1332
  %1334 = load double, ptr %1333, align 8, !tbaa !11
  br label %1335

1335:                                             ; preds = %1327, %1319
  %1336 = phi double [ %1326, %1319 ], [ %1334, %1327 ]
  %1337 = fsub double %1303, %1336
  %1338 = load ptr, ptr %16, align 8, !tbaa !9
  %1339 = load i32, ptr %21, align 4, !tbaa !5
  %1340 = load i32, ptr %23, align 4, !tbaa !5
  %1341 = sub nsw i32 %1339, %1340
  %1342 = sext i32 %1341 to i64
  %1343 = getelementptr inbounds double, ptr %1338, i64 %1342
  %1344 = load double, ptr %1343, align 8, !tbaa !11
  %1345 = load ptr, ptr %13, align 8, !tbaa !9
  %1346 = load i32, ptr %21, align 4, !tbaa !5
  %1347 = load i32, ptr %23, align 4, !tbaa !5
  %1348 = sub nsw i32 %1346, %1347
  %1349 = sext i32 %1348 to i64
  %1350 = getelementptr inbounds double, ptr %1345, i64 %1349
  %1351 = load double, ptr %1350, align 8, !tbaa !11
  %1352 = fcmp oge double %1344, %1351
  br i1 %1352, label %1353, label %1361

1353:                                             ; preds = %1335
  %1354 = load ptr, ptr %13, align 8, !tbaa !9
  %1355 = load i32, ptr %21, align 4, !tbaa !5
  %1356 = load i32, ptr %23, align 4, !tbaa !5
  %1357 = sub nsw i32 %1355, %1356
  %1358 = sext i32 %1357 to i64
  %1359 = getelementptr inbounds double, ptr %1354, i64 %1358
  %1360 = load double, ptr %1359, align 8, !tbaa !11
  br label %1369

1361:                                             ; preds = %1335
  %1362 = load ptr, ptr %16, align 8, !tbaa !9
  %1363 = load i32, ptr %21, align 4, !tbaa !5
  %1364 = load i32, ptr %23, align 4, !tbaa !5
  %1365 = sub nsw i32 %1363, %1364
  %1366 = sext i32 %1365 to i64
  %1367 = getelementptr inbounds double, ptr %1362, i64 %1366
  %1368 = load double, ptr %1367, align 8, !tbaa !11
  br label %1369

1369:                                             ; preds = %1361, %1353
  %1370 = phi double [ %1360, %1353 ], [ %1368, %1361 ]
  %1371 = load ptr, ptr %15, align 8, !tbaa !9
  %1372 = load i32, ptr %21, align 4, !tbaa !5
  %1373 = load i32, ptr %23, align 4, !tbaa !5
  %1374 = sub nsw i32 %1372, %1373
  %1375 = sext i32 %1374 to i64
  %1376 = getelementptr inbounds double, ptr %1371, i64 %1375
  %1377 = load double, ptr %1376, align 8, !tbaa !11
  %1378 = fsub double %1370, %1377
  %1379 = fadd double %1337, %1378
  br label %1381

1380:                                             ; preds = %1289
  br label %1381

1381:                                             ; preds = %1380, %1369
  %1382 = phi double [ %1379, %1369 ], [ 0.000000e+00, %1380 ]
  br label %1383

1383:                                             ; preds = %1381, %1273
  %1384 = phi double [ %1288, %1273 ], [ %1382, %1381 ]
  br label %1385

1385:                                             ; preds = %1383, %1249
  %1386 = phi double [ %1265, %1249 ], [ %1384, %1383 ]
  %1387 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1388 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1387, i32 0, i32 8
  %1389 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1388, i64 0, i64 7
  %1390 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1389, i32 0, i32 1
  %1391 = load i32, ptr %1390, align 4, !tbaa !15
  %1392 = icmp eq i32 %1391, 0
  br i1 %1392, label %1393, label %1410

1393:                                             ; preds = %1385
  %1394 = load ptr, ptr %16, align 8, !tbaa !9
  %1395 = load i32, ptr %24, align 4, !tbaa !5
  %1396 = load i32, ptr %23, align 4, !tbaa !5
  %1397 = sub nsw i32 %1395, %1396
  %1398 = sext i32 %1397 to i64
  %1399 = getelementptr inbounds double, ptr %1394, i64 %1398
  %1400 = load double, ptr %1399, align 8, !tbaa !11
  %1401 = load ptr, ptr %13, align 8, !tbaa !9
  %1402 = load i32, ptr %24, align 4, !tbaa !5
  %1403 = load i32, ptr %23, align 4, !tbaa !5
  %1404 = sub nsw i32 %1402, %1403
  %1405 = sext i32 %1404 to i64
  %1406 = getelementptr inbounds double, ptr %1401, i64 %1405
  %1407 = load double, ptr %1406, align 8, !tbaa !11
  %1408 = fsub double %1400, %1407
  %1409 = call double @llvm.fabs.f64(double %1408)
  br label %1529

1410:                                             ; preds = %1385
  %1411 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1412 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1411, i32 0, i32 8
  %1413 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1412, i64 0, i64 7
  %1414 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1413, i32 0, i32 1
  %1415 = load i32, ptr %1414, align 4, !tbaa !15
  %1416 = icmp eq i32 %1415, 1
  br i1 %1416, label %1417, label %1433

1417:                                             ; preds = %1410
  %1418 = load ptr, ptr %14, align 8, !tbaa !9
  %1419 = load i32, ptr %24, align 4, !tbaa !5
  %1420 = load i32, ptr %23, align 4, !tbaa !5
  %1421 = sub nsw i32 %1419, %1420
  %1422 = sext i32 %1421 to i64
  %1423 = getelementptr inbounds double, ptr %1418, i64 %1422
  %1424 = load double, ptr %1423, align 8, !tbaa !11
  %1425 = load ptr, ptr %15, align 8, !tbaa !9
  %1426 = load i32, ptr %24, align 4, !tbaa !5
  %1427 = load i32, ptr %23, align 4, !tbaa !5
  %1428 = sub nsw i32 %1426, %1427
  %1429 = sext i32 %1428 to i64
  %1430 = getelementptr inbounds double, ptr %1425, i64 %1429
  %1431 = load double, ptr %1430, align 8, !tbaa !11
  %1432 = fsub double %1424, %1431
  br label %1527

1433:                                             ; preds = %1410
  %1434 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1435 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1434, i32 0, i32 8
  %1436 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1435, i64 0, i64 7
  %1437 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1436, i32 0, i32 1
  %1438 = load i32, ptr %1437, align 4, !tbaa !15
  %1439 = icmp eq i32 %1438, 2
  br i1 %1439, label %1440, label %1524

1440:                                             ; preds = %1433
  %1441 = load ptr, ptr %14, align 8, !tbaa !9
  %1442 = load i32, ptr %24, align 4, !tbaa !5
  %1443 = load i32, ptr %23, align 4, !tbaa !5
  %1444 = sub nsw i32 %1442, %1443
  %1445 = sext i32 %1444 to i64
  %1446 = getelementptr inbounds double, ptr %1441, i64 %1445
  %1447 = load double, ptr %1446, align 8, !tbaa !11
  %1448 = load ptr, ptr %16, align 8, !tbaa !9
  %1449 = load i32, ptr %24, align 4, !tbaa !5
  %1450 = load i32, ptr %23, align 4, !tbaa !5
  %1451 = sub nsw i32 %1449, %1450
  %1452 = sext i32 %1451 to i64
  %1453 = getelementptr inbounds double, ptr %1448, i64 %1452
  %1454 = load double, ptr %1453, align 8, !tbaa !11
  %1455 = load ptr, ptr %13, align 8, !tbaa !9
  %1456 = load i32, ptr %24, align 4, !tbaa !5
  %1457 = load i32, ptr %23, align 4, !tbaa !5
  %1458 = sub nsw i32 %1456, %1457
  %1459 = sext i32 %1458 to i64
  %1460 = getelementptr inbounds double, ptr %1455, i64 %1459
  %1461 = load double, ptr %1460, align 8, !tbaa !11
  %1462 = fcmp oge double %1454, %1461
  br i1 %1462, label %1463, label %1471

1463:                                             ; preds = %1440
  %1464 = load ptr, ptr %16, align 8, !tbaa !9
  %1465 = load i32, ptr %24, align 4, !tbaa !5
  %1466 = load i32, ptr %23, align 4, !tbaa !5
  %1467 = sub nsw i32 %1465, %1466
  %1468 = sext i32 %1467 to i64
  %1469 = getelementptr inbounds double, ptr %1464, i64 %1468
  %1470 = load double, ptr %1469, align 8, !tbaa !11
  br label %1479

1471:                                             ; preds = %1440
  %1472 = load ptr, ptr %13, align 8, !tbaa !9
  %1473 = load i32, ptr %24, align 4, !tbaa !5
  %1474 = load i32, ptr %23, align 4, !tbaa !5
  %1475 = sub nsw i32 %1473, %1474
  %1476 = sext i32 %1475 to i64
  %1477 = getelementptr inbounds double, ptr %1472, i64 %1476
  %1478 = load double, ptr %1477, align 8, !tbaa !11
  br label %1479

1479:                                             ; preds = %1471, %1463
  %1480 = phi double [ %1470, %1463 ], [ %1478, %1471 ]
  %1481 = fsub double %1447, %1480
  %1482 = load ptr, ptr %16, align 8, !tbaa !9
  %1483 = load i32, ptr %24, align 4, !tbaa !5
  %1484 = load i32, ptr %23, align 4, !tbaa !5
  %1485 = sub nsw i32 %1483, %1484
  %1486 = sext i32 %1485 to i64
  %1487 = getelementptr inbounds double, ptr %1482, i64 %1486
  %1488 = load double, ptr %1487, align 8, !tbaa !11
  %1489 = load ptr, ptr %13, align 8, !tbaa !9
  %1490 = load i32, ptr %24, align 4, !tbaa !5
  %1491 = load i32, ptr %23, align 4, !tbaa !5
  %1492 = sub nsw i32 %1490, %1491
  %1493 = sext i32 %1492 to i64
  %1494 = getelementptr inbounds double, ptr %1489, i64 %1493
  %1495 = load double, ptr %1494, align 8, !tbaa !11
  %1496 = fcmp oge double %1488, %1495
  br i1 %1496, label %1497, label %1505

1497:                                             ; preds = %1479
  %1498 = load ptr, ptr %13, align 8, !tbaa !9
  %1499 = load i32, ptr %24, align 4, !tbaa !5
  %1500 = load i32, ptr %23, align 4, !tbaa !5
  %1501 = sub nsw i32 %1499, %1500
  %1502 = sext i32 %1501 to i64
  %1503 = getelementptr inbounds double, ptr %1498, i64 %1502
  %1504 = load double, ptr %1503, align 8, !tbaa !11
  br label %1513

1505:                                             ; preds = %1479
  %1506 = load ptr, ptr %16, align 8, !tbaa !9
  %1507 = load i32, ptr %24, align 4, !tbaa !5
  %1508 = load i32, ptr %23, align 4, !tbaa !5
  %1509 = sub nsw i32 %1507, %1508
  %1510 = sext i32 %1509 to i64
  %1511 = getelementptr inbounds double, ptr %1506, i64 %1510
  %1512 = load double, ptr %1511, align 8, !tbaa !11
  br label %1513

1513:                                             ; preds = %1505, %1497
  %1514 = phi double [ %1504, %1497 ], [ %1512, %1505 ]
  %1515 = load ptr, ptr %15, align 8, !tbaa !9
  %1516 = load i32, ptr %24, align 4, !tbaa !5
  %1517 = load i32, ptr %23, align 4, !tbaa !5
  %1518 = sub nsw i32 %1516, %1517
  %1519 = sext i32 %1518 to i64
  %1520 = getelementptr inbounds double, ptr %1515, i64 %1519
  %1521 = load double, ptr %1520, align 8, !tbaa !11
  %1522 = fsub double %1514, %1521
  %1523 = fadd double %1481, %1522
  br label %1525

1524:                                             ; preds = %1433
  br label %1525

1525:                                             ; preds = %1524, %1513
  %1526 = phi double [ %1523, %1513 ], [ 0.000000e+00, %1524 ]
  br label %1527

1527:                                             ; preds = %1525, %1417
  %1528 = phi double [ %1432, %1417 ], [ %1526, %1525 ]
  br label %1529

1529:                                             ; preds = %1527, %1393
  %1530 = phi double [ %1409, %1393 ], [ %1528, %1527 ]
  %1531 = fsub double %1386, %1530
  %1532 = load i32, ptr %23, align 4, !tbaa !5
  %1533 = sext i32 %1532 to i64
  %1534 = getelementptr inbounds [3 x double], ptr %20, i64 0, i64 %1533
  %1535 = load double, ptr %1534, align 8, !tbaa !11
  %1536 = fadd double %1535, %1531
  store double %1536, ptr %1534, align 8, !tbaa !11
  br label %1537

1537:                                             ; preds = %1529
  %1538 = load i32, ptr %23, align 4, !tbaa !5
  %1539 = add nsw i32 %1538, -1
  store i32 %1539, ptr %23, align 4, !tbaa !5
  br label %1239, !llvm.loop !19

1540:                                             ; preds = %1239
  %1541 = load i32, ptr %21, align 4, !tbaa !5
  %1542 = add nsw i32 %1541, 1
  store i32 %1542, ptr %21, align 4, !tbaa !5
  %1543 = load i32, ptr %24, align 4, !tbaa !5
  %1544 = add nsw i32 %1543, 1
  store i32 %1544, ptr %24, align 4, !tbaa !5
  br label %1545

1545:                                             ; preds = %1540
  %1546 = load i32, ptr %21, align 4, !tbaa !5
  %1547 = load i32, ptr %12, align 4, !tbaa !5
  %1548 = icmp sle i32 %1546, %1547
  br i1 %1548, label %475, label %1549, !llvm.loop !20

1549:                                             ; preds = %1545
  %1550 = load i32, ptr %22, align 4, !tbaa !5
  %1551 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 %1550, ptr %1551, align 4, !tbaa !5
  %1552 = load i32, ptr %11, align 4, !tbaa !5
  %1553 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 %1552, ptr %1553, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %26, align 4
  br label %1554

1554:                                             ; preds = %1549, %66, %54, %50, %37, %29
  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 4, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #3
  %1555 = load i32, ptr %10, align 4
  ret i32 %1555
}

; 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 = !{!14, !12, i64 16}
!19 = distinct !{!19, !17}
!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_CDL3BLACKCROWS_Lookback() local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local range(i32 0, 14) i32 @TA_CDL3BLACKCROWS(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 %432, label %11

11:                                               ; preds = %9
  %12 = icmp slt i32 %1, %0
  br i1 %12, label %432, 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 %432, label %21

21:                                               ; preds = %13
  %22 = tail call i32 @TA_CDL3BLACKCROWS_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 %432

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

.lr.ph:                                           ; preds = %25
  %31 = getelementptr inbounds i8, ptr %26, i64 380
  %32 = load i32, ptr %31, align 4, !tbaa !14
  switch i32 %32, label %.preheader [
    i32 0, label %.thread.us.preheader
    i32 1, label %.thread450.us.preheader
    i32 2, label %.thread451.us.preheader
  ]

.thread451.us.preheader:                          ; preds = %.lr.ph
  %33 = sext i32 %29 to i64
  %34 = zext nneg i32 %spec.select to i64
  br label %.thread451.us

.thread450.us.preheader:                          ; preds = %.lr.ph
  %35 = sext i32 %29 to i64
  %36 = zext nneg i32 %spec.select to i64
  br label %.thread450.us

.thread.us.preheader:                             ; preds = %.lr.ph
  %37 = sext i32 %29 to i64
  %38 = zext nneg i32 %spec.select to i64
  br label %.thread.us

.thread.us:                                       ; preds = %.thread.us.preheader, %.thread.us
  %indvars.iv524 = phi i64 [ %37, %.thread.us.preheader ], [ %indvars.iv.next525, %.thread.us ]
  %39 = phi double [ 0.000000e+00, %.thread.us.preheader ], [ %55, %.thread.us ]
  %40 = phi <2 x double> [ zeroinitializer, %.thread.us.preheader ], [ %48, %.thread.us ]
  %41 = add nsw i64 %indvars.iv524, -2
  %42 = getelementptr inbounds double, ptr %5, i64 %41
  %43 = getelementptr inbounds double, ptr %2, i64 %41
  %44 = load <2 x double>, ptr %42, align 8, !tbaa !15
  %45 = load <2 x double>, ptr %43, align 8, !tbaa !15
  %46 = fsub <2 x double> %44, %45
  %47 = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %46)
  %48 = fadd <2 x double> %40, %47
  %49 = getelementptr inbounds double, ptr %5, i64 %indvars.iv524
  %50 = load double, ptr %49, align 8, !tbaa !15
  %51 = getelementptr inbounds double, ptr %2, i64 %indvars.iv524
  %52 = load double, ptr %51, align 8, !tbaa !15
  %53 = fsub double %50, %52
  %54 = tail call double @llvm.fabs.f64(double %53)
  %55 = fadd double %54, %39
  %indvars.iv.next525 = add nsw i64 %indvars.iv524, 1
  %56 = icmp slt i64 %indvars.iv.next525, %38
  br i1 %56, label %.thread.us, label %.preheader, !llvm.loop !16

.thread450.us:                                    ; preds = %.thread450.us.preheader, %.thread450.us
  %indvars.iv521 = phi i64 [ %35, %.thread450.us.preheader ], [ %indvars.iv.next522, %.thread450.us ]
  %57 = phi double [ 0.000000e+00, %.thread450.us.preheader ], [ %71, %.thread450.us ]
  %58 = phi <2 x double> [ zeroinitializer, %.thread450.us.preheader ], [ %65, %.thread450.us ]
  %59 = add nsw i64 %indvars.iv521, -2
  %60 = getelementptr inbounds double, ptr %3, i64 %59
  %61 = getelementptr inbounds double, ptr %4, i64 %59
  %62 = load <2 x double>, ptr %60, align 8, !tbaa !15
  %63 = load <2 x double>, ptr %61, align 8, !tbaa !15
  %64 = fsub <2 x double> %62, %63
  %65 = fadd <2 x double> %58, %64
  %66 = getelementptr inbounds double, ptr %3, i64 %indvars.iv521
  %67 = load double, ptr %66, align 8, !tbaa !15
  %68 = getelementptr inbounds double, ptr %4, i64 %indvars.iv521
  %69 = load double, ptr %68, align 8, !tbaa !15
  %70 = fsub double %67, %69
  %71 = fadd double %70, %57
  %indvars.iv.next522 = add nsw i64 %indvars.iv521, 1
  %72 = icmp slt i64 %indvars.iv.next522, %36
  br i1 %72, label %.thread450.us, label %.preheader, !llvm.loop !16

.thread451.us:                                    ; preds = %.thread451.us.preheader, %.thread451.us
  %indvars.iv = phi i64 [ %33, %.thread451.us.preheader ], [ %indvars.iv.next, %.thread451.us ]
  %73 = phi double [ 0.000000e+00, %.thread451.us.preheader ], [ %104, %.thread451.us ]
  %74 = phi <2 x double> [ zeroinitializer, %.thread451.us.preheader ], [ %90, %.thread451.us ]
  %75 = add nsw i64 %indvars.iv, -2
  %76 = getelementptr inbounds double, ptr %3, i64 %75
  %77 = getelementptr inbounds double, ptr %5, i64 %75
  %78 = getelementptr inbounds double, ptr %2, i64 %75
  %79 = getelementptr inbounds double, ptr %4, i64 %75
  %80 = load <2 x double>, ptr %76, align 8, !tbaa !15
  %81 = load <2 x double>, ptr %77, align 8, !tbaa !15
  %82 = load <2 x double>, ptr %78, align 8, !tbaa !15
  %83 = fcmp ult <2 x double> %81, %82
  %84 = select <2 x i1> %83, <2 x double> %82, <2 x double> %81
  %85 = fsub <2 x double> %80, %84
  %86 = select <2 x i1> %83, <2 x double> %81, <2 x double> %82
  %87 = load <2 x double>, ptr %79, align 8, !tbaa !15
  %88 = fsub <2 x double> %86, %87
  %89 = fadd <2 x double> %85, %88
  %90 = fadd <2 x double> %74, %89
  %91 = getelementptr inbounds double, ptr %3, i64 %indvars.iv
  %92 = load double, ptr %91, align 8, !tbaa !15
  %93 = getelementptr inbounds double, ptr %5, i64 %indvars.iv
  %94 = load double, ptr %93, align 8, !tbaa !15
  %95 = getelementptr inbounds double, ptr %2, i64 %indvars.iv
  %96 = load double, ptr %95, align 8, !tbaa !15
  %97 = fcmp ult double %94, %96
  %.442.us = select i1 %97, double %96, double %94
  %98 = fsub double %92, %.442.us
  %99 = select i1 %97, double %94, double %96
  %100 = getelementptr inbounds double, ptr %4, i64 %indvars.iv
  %101 = load double, ptr %100, align 8, !tbaa !15
  %102 = fsub double %99, %101
  %103 = fadd double %98, %102
  %104 = fadd double %103, %73
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %105 = icmp slt i64 %indvars.iv.next, %34
  br i1 %105, label %.thread451.us, label %.preheader, !llvm.loop !16

.preheader:                                       ; preds = %.thread451.us, %.thread450.us, %.thread.us, %.lr.ph, %25
  %.lcssa473 = phi double [ 0.000000e+00, %25 ], [ 0.000000e+00, %.lr.ph ], [ %55, %.thread.us ], [ %71, %.thread450.us ], [ %104, %.thread451.us ]
  %106 = phi <2 x double> [ zeroinitializer, %25 ], [ zeroinitializer, %.lr.ph ], [ %48, %.thread.us ], [ %65, %.thread450.us ], [ %90, %.thread451.us ]
  %107 = getelementptr inbounds i8, ptr %26, i64 380
  %108 = getelementptr inbounds i8, ptr %26, i64 392
  %109 = sext i32 %22 to i64
  %110 = zext nneg i32 %0 to i64
  %smax = tail call i64 @llvm.smax.i64(i64 %109, i64 %110)
  %111 = sext i32 %1 to i64
  %112 = sext i32 %29 to i64
  br label %113

113:                                              ; preds = %.preheader, %.split497.us
  %.sroa.0.0 = phi double [ %.lcssa473, %.preheader ], [ %429, %.split497.us ]
  %indvars.iv543 = phi i64 [ %112, %.preheader ], [ %indvars.iv.next544, %.split497.us ]
  %indvars.iv541 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next542, %.split497.us ]
  %indvars.iv539 = phi i64 [ %smax, %.preheader ], [ %indvars.iv.next540, %.split497.us ]
  %114 = phi <2 x double> [ %106, %.preheader ], [ %427, %.split497.us ]
  %115 = add nsw i64 %indvars.iv539, -3
  %116 = getelementptr inbounds double, ptr %5, i64 %115
  %117 = load double, ptr %116, align 8, !tbaa !15
  %118 = getelementptr inbounds double, ptr %2, i64 %115
  %119 = load double, ptr %118, align 8, !tbaa !15
  %120 = fcmp ult double %117, %119
  br i1 %120, label %232, label %121

121:                                              ; preds = %113
  %122 = add nsw i64 %indvars.iv539, -2
  %123 = getelementptr inbounds double, ptr %5, i64 %122
  %124 = load double, ptr %123, align 8, !tbaa !15
  %125 = getelementptr inbounds double, ptr %2, i64 %122
  %126 = load double, ptr %125, align 8, !tbaa !15
  %127 = fcmp ult double %124, %126
  br i1 %127, label %128, label %232

128:                                              ; preds = %121
  %129 = getelementptr inbounds double, ptr %4, i64 %122
  %130 = load double, ptr %129, align 8, !tbaa !15
  %131 = fsub double %124, %130
  %132 = load double, ptr %108, align 8, !tbaa !18
  %133 = load i32, ptr %27, align 8, !tbaa !11
  %.not436 = icmp eq i32 %133, 0
  br i1 %.not436, label %134, label %147

134:                                              ; preds = %128
  %135 = load i32, ptr %107, align 4, !tbaa !14
  switch i32 %135, label %.thread [
    i32 0, label %136
    i32 1, label %139
    i32 2, label %.thread562
  ]

136:                                              ; preds = %134
  %137 = fsub double %124, %126
  %138 = tail call double @llvm.fabs.f64(double %137)
  br label %.thread

139:                                              ; preds = %134
  %140 = getelementptr inbounds double, ptr %3, i64 %122
  %141 = load double, ptr %140, align 8, !tbaa !15
  %142 = fsub double %141, %130
  br label %.thread

.thread562:                                       ; preds = %134
  %143 = getelementptr inbounds double, ptr %3, i64 %122
  %144 = load double, ptr %143, align 8, !tbaa !15
  %145 = fsub double %144, %126
  %146 = fadd double %131, %145
  br label %.thread

147:                                              ; preds = %128
  %148 = sitofp i32 %133 to double
  %149 = extractelement <2 x double> %114, i64 0
  %150 = fdiv double %149, %148
  %.pre = load i32, ptr %107, align 4, !tbaa !14
  %.pre.fr = freeze i32 %.pre
  %151 = icmp eq i32 %.pre.fr, 2
  br i1 %151, label %152, label %.thread

152:                                              ; preds = %147
  br label %.thread

.thread:                                          ; preds = %134, %139, %136, %.thread562, %147, %152
  %.pn = phi double [ %150, %147 ], [ %146, %.thread562 ], [ %150, %152 ], [ 0.000000e+00, %134 ], [ %142, %139 ], [ %138, %136 ]
  %153 = phi i32 [ %.pre.fr, %147 ], [ 2, %.thread562 ], [ %.pre.fr, %152 ], [ %135, %134 ], [ %135, %139 ], [ %135, %136 ]
  %154 = phi double [ 1.000000e+00, %147 ], [ 2.000000e+00, %.thread562 ], [ 2.000000e+00, %152 ], [ 1.000000e+00, %134 ], [ 1.000000e+00, %139 ], [ 1.000000e+00, %136 ]
  %155 = fmul double %132, %.pn
  %156 = fdiv double %155, %154
  %157 = fcmp olt double %131, %156
  br i1 %157, label %158, label %232

158:                                              ; preds = %.thread
  %159 = add nsw i64 %indvars.iv539, -1
  %160 = getelementptr inbounds double, ptr %5, i64 %159
  %161 = load double, ptr %160, align 8, !tbaa !15
  %162 = getelementptr inbounds double, ptr %2, i64 %159
  %163 = load double, ptr %162, align 8, !tbaa !15
  %164 = fcmp ult double %161, %163
  br i1 %164, label %165, label %232

165:                                              ; preds = %158
  %166 = getelementptr inbounds double, ptr %4, i64 %159
  %167 = load double, ptr %166, align 8, !tbaa !15
  %168 = fsub double %161, %167
  br i1 %.not436, label %173, label %169

169:                                              ; preds = %165
  %170 = sitofp i32 %133 to double
  %171 = extractelement <2 x double> %114, i64 1
  %172 = fdiv double %171, %170
  br label %186

173:                                              ; preds = %165
  switch i32 %153, label %186 [
    i32 0, label %174
    i32 1, label %177
    i32 2, label %181
  ]

174:                                              ; preds = %173
  %175 = fsub double %161, %163
  %176 = tail call double @llvm.fabs.f64(double %175)
  br label %186

177:                                              ; preds = %173
  %178 = getelementptr inbounds double, ptr %3, i64 %159
  %179 = load double, ptr %178, align 8, !tbaa !15
  %180 = fsub double %179, %167
  br label %186

181:                                              ; preds = %173
  %182 = getelementptr inbounds double, ptr %3, i64 %159
  %183 = load double, ptr %182, align 8, !tbaa !15
  %184 = fsub double %183, %163
  %185 = fadd double %168, %184
  br label %186

186:                                              ; preds = %173, %174, %181, %177, %169
  %187 = phi double [ %172, %169 ], [ %176, %174 ], [ %180, %177 ], [ %185, %181 ], [ 0.000000e+00, %173 ]
  %188 = fmul double %132, %187
  %189 = fdiv double %188, %154
  %190 = fcmp olt double %168, %189
  br i1 %190, label %191, label %232

191:                                              ; preds = %186
  %192 = getelementptr inbounds double, ptr %5, i64 %indvars.iv539
  %193 = load double, ptr %192, align 8, !tbaa !15
  %194 = getelementptr inbounds double, ptr %2, i64 %indvars.iv539
  %195 = load double, ptr %194, align 8, !tbaa !15
  %196 = fcmp ult double %193, %195
  br i1 %196, label %197, label %232

197:                                              ; preds = %191
  %198 = getelementptr inbounds double, ptr %4, i64 %indvars.iv539
  %199 = load double, ptr %198, align 8, !tbaa !15
  %200 = fsub double %193, %199
  br i1 %.not436, label %204, label %201

201:                                              ; preds = %197
  %202 = sitofp i32 %133 to double
  %203 = fdiv double %.sroa.0.0, %202
  br label %217

204:                                              ; preds = %197
  switch i32 %153, label %217 [
    i32 0, label %205
    i32 1, label %208
    i32 2, label %212
  ]

205:                                              ; preds = %204
  %206 = fsub double %193, %195
  %207 = tail call double @llvm.fabs.f64(double %206)
  br label %217

208:                                              ; preds = %204
  %209 = getelementptr inbounds double, ptr %3, i64 %indvars.iv539
  %210 = load double, ptr %209, align 8, !tbaa !15
  %211 = fsub double %210, %199
  br label %217

212:                                              ; preds = %204
  %213 = getelementptr inbounds double, ptr %3, i64 %indvars.iv539
  %214 = load double, ptr %213, align 8, !tbaa !15
  %215 = fsub double %214, %195
  %216 = fadd double %200, %215
  br label %217

217:                                              ; preds = %204, %205, %212, %208, %201
  %218 = phi double [ %203, %201 ], [ %207, %205 ], [ %211, %208 ], [ %216, %212 ], [ 0.000000e+00, %204 ]
  %219 = fmul double %132, %218
  %220 = fdiv double %219, %154
  %221 = fcmp olt double %200, %220
  %222 = fcmp olt double %163, %126
  %or.cond458 = and i1 %222, %221
  %223 = fcmp ogt double %163, %124
  %or.cond459 = and i1 %223, %or.cond458
  %224 = fcmp olt double %195, %163
  %or.cond460 = and i1 %224, %or.cond459
  %225 = fcmp ogt double %195, %161
  %or.cond461 = and i1 %225, %or.cond460
  br i1 %or.cond461, label %226, label %232

226:                                              ; preds = %217
  %227 = getelementptr inbounds double, ptr %3, i64 %115
  %228 = load double, ptr %227, align 8, !tbaa !15
  %229 = fcmp ogt double %228, %124
  %230 = fcmp ogt double %124, %161
  %or.cond446 = and i1 %230, %229
  %231 = fcmp ogt double %161, %193
  %or.cond462 = and i1 %231, %or.cond446
  br i1 %or.cond462, label %233, label %232

232:                                              ; preds = %226, %217, %191, %186, %158, %.thread, %121, %113
  br label %233

233:                                              ; preds = %226, %232
  %.sink = phi i32 [ 0, %232 ], [ -100, %226 ]
  %234 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv541
  store i32 %.sink, ptr %234, align 4, !tbaa !5
  %indvars.iv.next542 = add nuw nsw i64 %indvars.iv541, 1
  %235 = load i32, ptr %107, align 4, !tbaa !14
  switch i32 %235, label %.split497.us [
    i32 0, label %.thread455.us.preheader
    i32 1, label %.thread456.us.preheader
    i32 2, label %.thread457.us.preheader
  ]

.thread457.us.preheader:                          ; preds = %233
  %236 = add nsw i64 %indvars.iv539, -2
  %237 = getelementptr inbounds double, ptr %3, i64 %236
  %238 = load double, ptr %237, align 8, !tbaa !15
  %239 = getelementptr inbounds double, ptr %5, i64 %236
  %240 = load double, ptr %239, align 8, !tbaa !15
  %241 = getelementptr inbounds double, ptr %2, i64 %236
  %242 = load double, ptr %241, align 8, !tbaa !15
  %243 = getelementptr inbounds double, ptr %4, i64 %236
  %244 = load double, ptr %243, align 8, !tbaa !15
  %245 = add nsw i64 %indvars.iv543, -2
  %246 = getelementptr inbounds double, ptr %3, i64 %245
  %247 = load double, ptr %246, align 8, !tbaa !15
  %248 = getelementptr inbounds double, ptr %5, i64 %245
  %249 = load double, ptr %248, align 8, !tbaa !15
  %250 = getelementptr inbounds double, ptr %2, i64 %245
  %251 = load double, ptr %250, align 8, !tbaa !15
  %252 = getelementptr inbounds double, ptr %4, i64 %245
  %253 = load double, ptr %252, align 8, !tbaa !15
  %254 = add nsw i64 %indvars.iv539, -1
  %255 = getelementptr inbounds double, ptr %3, i64 %254
  %256 = load double, ptr %255, align 8, !tbaa !15
  %257 = getelementptr inbounds double, ptr %5, i64 %254
  %258 = load double, ptr %257, align 8, !tbaa !15
  %259 = getelementptr inbounds double, ptr %2, i64 %254
  %260 = load double, ptr %259, align 8, !tbaa !15
  %261 = getelementptr inbounds double, ptr %4, i64 %254
  %262 = load double, ptr %261, align 8, !tbaa !15
  %263 = add nsw i64 %indvars.iv543, -1
  %264 = getelementptr inbounds double, ptr %3, i64 %263
  %265 = load double, ptr %264, align 8, !tbaa !15
  %266 = getelementptr inbounds double, ptr %5, i64 %263
  %267 = load double, ptr %266, align 8, !tbaa !15
  %268 = getelementptr inbounds double, ptr %2, i64 %263
  %269 = load double, ptr %268, align 8, !tbaa !15
  %270 = getelementptr inbounds double, ptr %4, i64 %263
  %271 = load double, ptr %270, align 8, !tbaa !15
  %272 = insertelement <2 x double> poison, double %258, i64 0
  %273 = insertelement <2 x double> %272, double %267, i64 1
  %274 = insertelement <2 x double> poison, double %260, i64 0
  %275 = insertelement <2 x double> %274, double %269, i64 1
  %276 = fcmp ult <2 x double> %273, %275
  %277 = select <2 x i1> %276, <2 x double> %275, <2 x double> %273
  %278 = insertelement <2 x double> poison, double %256, i64 0
  %279 = insertelement <2 x double> %278, double %265, i64 1
  %280 = fsub <2 x double> %279, %277
  %281 = select <2 x i1> %276, <2 x double> %273, <2 x double> %275
  %282 = insertelement <2 x double> poison, double %262, i64 0
  %283 = insertelement <2 x double> %282, double %271, i64 1
  %284 = fsub <2 x double> %281, %283
  %285 = fadd <2 x double> %280, %284
  %shift = shufflevector <2 x double> %285, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %286 = fsub <2 x double> %285, %shift
  %287 = extractelement <2 x double> %286, i64 0
  %288 = getelementptr inbounds double, ptr %3, i64 %indvars.iv539
  %289 = load double, ptr %288, align 8, !tbaa !15
  %290 = getelementptr inbounds double, ptr %5, i64 %indvars.iv539
  %291 = load double, ptr %290, align 8, !tbaa !15
  %292 = getelementptr inbounds double, ptr %2, i64 %indvars.iv539
  %293 = load double, ptr %292, align 8, !tbaa !15
  %294 = getelementptr inbounds double, ptr %4, i64 %indvars.iv539
  %295 = load double, ptr %294, align 8, !tbaa !15
  %296 = getelementptr inbounds double, ptr %3, i64 %indvars.iv543
  %297 = load double, ptr %296, align 8, !tbaa !15
  %298 = getelementptr inbounds double, ptr %5, i64 %indvars.iv543
  %299 = load double, ptr %298, align 8, !tbaa !15
  %300 = getelementptr inbounds double, ptr %2, i64 %indvars.iv543
  %301 = load double, ptr %300, align 8, !tbaa !15
  %302 = getelementptr inbounds double, ptr %4, i64 %indvars.iv543
  %303 = load double, ptr %302, align 8, !tbaa !15
  %304 = insertelement <2 x double> poison, double %291, i64 0
  %305 = insertelement <2 x double> %304, double %240, i64 1
  %306 = insertelement <2 x double> poison, double %293, i64 0
  %307 = insertelement <2 x double> %306, double %242, i64 1
  %308 = fcmp ult <2 x double> %305, %307
  %309 = select <2 x i1> %308, <2 x double> %307, <2 x double> %305
  %310 = insertelement <2 x double> poison, double %289, i64 0
  %311 = insertelement <2 x double> %310, double %238, i64 1
  %312 = fsub <2 x double> %311, %309
  %313 = select <2 x i1> %308, <2 x double> %305, <2 x double> %307
  %314 = insertelement <2 x double> poison, double %295, i64 0
  %315 = insertelement <2 x double> %314, double %244, i64 1
  %316 = fsub <2 x double> %313, %315
  %317 = fadd <2 x double> %312, %316
  %318 = insertelement <2 x double> poison, double %299, i64 0
  %319 = insertelement <2 x double> %318, double %249, i64 1
  %320 = insertelement <2 x double> poison, double %301, i64 0
  %321 = insertelement <2 x double> %320, double %251, i64 1
  %322 = fcmp ult <2 x double> %319, %321
  %323 = select <2 x i1> %322, <2 x double> %321, <2 x double> %319
  %324 = insertelement <2 x double> poison, double %297, i64 0
  %325 = insertelement <2 x double> %324, double %247, i64 1
  %326 = fsub <2 x double> %325, %323
  %327 = select <2 x i1> %322, <2 x double> %319, <2 x double> %321
  %328 = insertelement <2 x double> poison, double %303, i64 0
  %329 = insertelement <2 x double> %328, double %253, i64 1
  %330 = fsub <2 x double> %327, %329
  %331 = fadd <2 x double> %326, %330
  %332 = fsub <2 x double> %317, %331
  br label %.split497.us

.thread456.us.preheader:                          ; preds = %233
  %333 = add nsw i64 %indvars.iv539, -2
  %334 = getelementptr inbounds double, ptr %3, i64 %333
  %335 = load double, ptr %334, align 8, !tbaa !15
  %336 = getelementptr inbounds double, ptr %4, i64 %333
  %337 = load double, ptr %336, align 8, !tbaa !15
  %338 = add nsw i64 %indvars.iv543, -2
  %339 = getelementptr inbounds double, ptr %3, i64 %338
  %340 = load double, ptr %339, align 8, !tbaa !15
  %341 = getelementptr inbounds double, ptr %4, i64 %338
  %342 = load double, ptr %341, align 8, !tbaa !15
  %343 = add nsw i64 %indvars.iv539, -1
  %344 = getelementptr inbounds double, ptr %3, i64 %343
  %345 = load double, ptr %344, align 8, !tbaa !15
  %346 = getelementptr inbounds double, ptr %4, i64 %343
  %347 = load double, ptr %346, align 8, !tbaa !15
  %348 = fsub double %345, %347
  %349 = add nsw i64 %indvars.iv543, -1
  %350 = getelementptr inbounds double, ptr %3, i64 %349
  %351 = load double, ptr %350, align 8, !tbaa !15
  %352 = getelementptr inbounds double, ptr %4, i64 %349
  %353 = load double, ptr %352, align 8, !tbaa !15
  %354 = fsub double %351, %353
  %355 = fsub double %348, %354
  %356 = getelementptr inbounds double, ptr %3, i64 %indvars.iv539
  %357 = load double, ptr %356, align 8, !tbaa !15
  %358 = getelementptr inbounds double, ptr %4, i64 %indvars.iv539
  %359 = load double, ptr %358, align 8, !tbaa !15
  %360 = getelementptr inbounds double, ptr %3, i64 %indvars.iv543
  %361 = load double, ptr %360, align 8, !tbaa !15
  %362 = getelementptr inbounds double, ptr %4, i64 %indvars.iv543
  %363 = load double, ptr %362, align 8, !tbaa !15
  %364 = insertelement <2 x double> poison, double %357, i64 0
  %365 = insertelement <2 x double> %364, double %335, i64 1
  %366 = insertelement <2 x double> poison, double %359, i64 0
  %367 = insertelement <2 x double> %366, double %337, i64 1
  %368 = fsub <2 x double> %365, %367
  %369 = insertelement <2 x double> poison, double %361, i64 0
  %370 = insertelement <2 x double> %369, double %340, i64 1
  %371 = insertelement <2 x double> poison, double %363, i64 0
  %372 = insertelement <2 x double> %371, double %342, i64 1
  %373 = fsub <2 x double> %370, %372
  %374 = fsub <2 x double> %368, %373
  br label %.split497.us

.thread455.us.preheader:                          ; preds = %233
  %375 = add nsw i64 %indvars.iv539, -2
  %376 = getelementptr inbounds double, ptr %5, i64 %375
  %377 = load double, ptr %376, align 8, !tbaa !15
  %378 = getelementptr inbounds double, ptr %2, i64 %375
  %379 = load double, ptr %378, align 8, !tbaa !15
  %380 = add nsw i64 %indvars.iv543, -2
  %381 = getelementptr inbounds double, ptr %5, i64 %380
  %382 = load double, ptr %381, align 8, !tbaa !15
  %383 = getelementptr inbounds double, ptr %2, i64 %380
  %384 = load double, ptr %383, align 8, !tbaa !15
  %385 = add nsw i64 %indvars.iv539, -1
  %386 = getelementptr inbounds double, ptr %5, i64 %385
  %387 = load double, ptr %386, align 8, !tbaa !15
  %388 = getelementptr inbounds double, ptr %2, i64 %385
  %389 = load double, ptr %388, align 8, !tbaa !15
  %390 = add nsw i64 %indvars.iv543, -1
  %391 = getelementptr inbounds double, ptr %5, i64 %390
  %392 = load double, ptr %391, align 8, !tbaa !15
  %393 = getelementptr inbounds double, ptr %2, i64 %390
  %394 = load double, ptr %393, align 8, !tbaa !15
  %395 = insertelement <2 x double> poison, double %387, i64 0
  %396 = insertelement <2 x double> %395, double %392, i64 1
  %397 = insertelement <2 x double> poison, double %389, i64 0
  %398 = insertelement <2 x double> %397, double %394, i64 1
  %399 = fsub <2 x double> %396, %398
  %400 = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %399)
  %shift592 = shufflevector <2 x double> %400, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %401 = fsub <2 x double> %400, %shift592
  %402 = extractelement <2 x double> %401, i64 0
  %403 = getelementptr inbounds double, ptr %5, i64 %indvars.iv539
  %404 = load double, ptr %403, align 8, !tbaa !15
  %405 = getelementptr inbounds double, ptr %2, i64 %indvars.iv539
  %406 = load double, ptr %405, align 8, !tbaa !15
  %407 = getelementptr inbounds double, ptr %5, i64 %indvars.iv543
  %408 = load double, ptr %407, align 8, !tbaa !15
  %409 = getelementptr inbounds double, ptr %2, i64 %indvars.iv543
  %410 = load double, ptr %409, align 8, !tbaa !15
  %411 = insertelement <2 x double> poison, double %404, i64 0
  %412 = insertelement <2 x double> %411, double %377, i64 1
  %413 = insertelement <2 x double> poison, double %406, i64 0
  %414 = insertelement <2 x double> %413, double %379, i64 1
  %415 = fsub <2 x double> %412, %414
  %416 = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %415)
  %417 = insertelement <2 x double> poison, double %408, i64 0
  %418 = insertelement <2 x double> %417, double %382, i64 1
  %419 = insertelement <2 x double> poison, double %410, i64 0
  %420 = insertelement <2 x double> %419, double %384, i64 1
  %421 = fsub <2 x double> %418, %420
  %422 = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %421)
  %423 = fsub <2 x double> %416, %422
  br label %.split497.us

.split497.us:                                     ; preds = %233, %.thread457.us.preheader, %.thread456.us.preheader, %.thread455.us.preheader
  %.pn591 = phi double [ %287, %.thread457.us.preheader ], [ %355, %.thread456.us.preheader ], [ %402, %.thread455.us.preheader ], [ 0.000000e+00, %233 ]
  %424 = phi <2 x double> [ %332, %.thread457.us.preheader ], [ %374, %.thread456.us.preheader ], [ %423, %.thread455.us.preheader ], [ zeroinitializer, %233 ]
  %425 = shufflevector <2 x double> %424, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %426 = insertelement <2 x double> %425, double %.pn591, i64 1
  %427 = fadd <2 x double> %114, %426
  %428 = extractelement <2 x double> %424, i64 0
  %429 = fadd double %.sroa.0.0, %428
  %indvars.iv.next540 = add nuw nsw i64 %indvars.iv539, 1
  %indvars.iv.next544 = add nsw i64 %indvars.iv543, 1
  %.not439.not = icmp slt i64 %indvars.iv539, %111
  br i1 %.not439.not, label %113, label %430, !llvm.loop !19

430:                                              ; preds = %.split497.us
  %431 = trunc nuw i64 %indvars.iv.next542 to i32
  store i32 %431, ptr %7, align 4, !tbaa !5
  store i32 %spec.select, ptr %6, align 4, !tbaa !5
  br label %432

432:                                              ; preds = %13, %11, %9, %430, %24
  %.0 = phi i32 [ 0, %24 ], [ 0, %430 ], [ 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 = !{!12, !13, i64 16}
!19 = distinct !{!19, !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