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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @TA_CDL3LINESTRIKE(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 [4 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 32, 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 %1748

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 %1748

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 %1748

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 %1748

55:                                               ; preds = %51
  %56 = call i32 @TA_CDL3LINESTRIKE_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 %1748

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

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

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

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

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

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

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

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

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

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

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

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

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

198:                                              ; preds = %191, %184
  %199 = phi double [ %190, %184 ], [ %197, %191 ]
  %200 = load ptr, ptr %15, align 8, !tbaa !9
  %201 = load i32, ptr %21, align 4, !tbaa !5
  %202 = sub nsw i32 %201, 3
  %203 = sext i32 %202 to i64
  %204 = getelementptr inbounds double, ptr %200, i64 %203
  %205 = load double, ptr %204, align 8, !tbaa !11
  %206 = fsub double %199, %205
  %207 = fadd double %170, %206
  br label %209

208:                                              ; preds = %127
  br label %209

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

211:                                              ; preds = %209, %113
  %212 = phi double [ %126, %113 ], [ %210, %209 ]
  br label %213

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

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

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

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

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

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

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

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

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

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

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

331:                                              ; preds = %324, %317
  %332 = phi double [ %323, %317 ], [ %330, %324 ]
  %333 = load ptr, ptr %15, align 8, !tbaa !9
  %334 = load i32, ptr %21, align 4, !tbaa !5
  %335 = sub nsw i32 %334, 2
  %336 = sext i32 %335 to i64
  %337 = getelementptr inbounds double, ptr %333, i64 %336
  %338 = load double, ptr %337, align 8, !tbaa !11
  %339 = fsub double %332, %338
  %340 = fadd double %303, %339
  br label %342

341:                                              ; preds = %260
  br label %342

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

344:                                              ; preds = %342, %246
  %345 = phi double [ %259, %246 ], [ %343, %342 ]
  br label %346

346:                                              ; preds = %344, %224
  %347 = phi double [ %238, %224 ], [ %345, %344 ]
  %348 = getelementptr inbounds [4 x double], ptr %20, i64 0, i64 2
  %349 = load double, ptr %348, align 16, !tbaa !11
  %350 = fadd double %349, %347
  store double %350, ptr %348, align 16, !tbaa !11
  %351 = load i32, ptr %21, align 4, !tbaa !5
  %352 = add nsw i32 %351, 1
  store i32 %352, ptr %21, align 4, !tbaa !5
  br label %80, !llvm.loop !16

353:                                              ; preds = %80
  %354 = load i32, ptr %11, align 4, !tbaa !5
  store i32 %354, ptr %21, align 4, !tbaa !5
  store i32 0, ptr %22, align 4, !tbaa !5
  br label %355

355:                                              ; preds = %1739, %353
  %356 = load ptr, ptr %16, align 8, !tbaa !9
  %357 = load i32, ptr %21, align 4, !tbaa !5
  %358 = sub nsw i32 %357, 3
  %359 = sext i32 %358 to i64
  %360 = getelementptr inbounds double, ptr %356, i64 %359
  %361 = load double, ptr %360, align 8, !tbaa !11
  %362 = load ptr, ptr %13, align 8, !tbaa !9
  %363 = load i32, ptr %21, align 4, !tbaa !5
  %364 = sub nsw i32 %363, 3
  %365 = sext i32 %364 to i64
  %366 = getelementptr inbounds double, ptr %362, i64 %365
  %367 = load double, ptr %366, align 8, !tbaa !11
  %368 = fcmp oge double %361, %367
  %369 = zext i1 %368 to i64
  %370 = select i1 %368, i32 1, i32 -1
  %371 = load ptr, ptr %16, align 8, !tbaa !9
  %372 = load i32, ptr %21, align 4, !tbaa !5
  %373 = sub nsw i32 %372, 2
  %374 = sext i32 %373 to i64
  %375 = getelementptr inbounds double, ptr %371, i64 %374
  %376 = load double, ptr %375, align 8, !tbaa !11
  %377 = load ptr, ptr %13, align 8, !tbaa !9
  %378 = load i32, ptr %21, align 4, !tbaa !5
  %379 = sub nsw i32 %378, 2
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds double, ptr %377, i64 %380
  %382 = load double, ptr %381, align 8, !tbaa !11
  %383 = fcmp oge double %376, %382
  %384 = zext i1 %383 to i64
  %385 = select i1 %383, i32 1, i32 -1
  %386 = icmp eq i32 %370, %385
  br i1 %386, label %387, label %1426

387:                                              ; preds = %355
  %388 = load ptr, ptr %16, align 8, !tbaa !9
  %389 = load i32, ptr %21, align 4, !tbaa !5
  %390 = sub nsw i32 %389, 2
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds double, ptr %388, i64 %391
  %393 = load double, ptr %392, align 8, !tbaa !11
  %394 = load ptr, ptr %13, align 8, !tbaa !9
  %395 = load i32, ptr %21, align 4, !tbaa !5
  %396 = sub nsw i32 %395, 2
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds double, ptr %394, i64 %397
  %399 = load double, ptr %398, align 8, !tbaa !11
  %400 = fcmp oge double %393, %399
  %401 = zext i1 %400 to i64
  %402 = select i1 %400, i32 1, i32 -1
  %403 = load ptr, ptr %16, align 8, !tbaa !9
  %404 = load i32, ptr %21, align 4, !tbaa !5
  %405 = sub nsw i32 %404, 1
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds double, ptr %403, i64 %406
  %408 = load double, ptr %407, align 8, !tbaa !11
  %409 = load ptr, ptr %13, align 8, !tbaa !9
  %410 = load i32, ptr %21, align 4, !tbaa !5
  %411 = sub nsw i32 %410, 1
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds double, ptr %409, i64 %412
  %414 = load double, ptr %413, align 8, !tbaa !11
  %415 = fcmp oge double %408, %414
  %416 = zext i1 %415 to i64
  %417 = select i1 %415, i32 1, i32 -1
  %418 = icmp eq i32 %402, %417
  br i1 %418, label %419, label %1426

419:                                              ; preds = %387
  %420 = load ptr, ptr %16, align 8, !tbaa !9
  %421 = load i32, ptr %21, align 4, !tbaa !5
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds double, ptr %420, i64 %422
  %424 = load double, ptr %423, align 8, !tbaa !11
  %425 = load ptr, ptr %13, align 8, !tbaa !9
  %426 = load i32, ptr %21, align 4, !tbaa !5
  %427 = sext i32 %426 to i64
  %428 = getelementptr inbounds double, ptr %425, i64 %427
  %429 = load double, ptr %428, align 8, !tbaa !11
  %430 = fcmp oge double %424, %429
  %431 = zext i1 %430 to i64
  %432 = select i1 %430, i32 1, i32 -1
  %433 = load ptr, ptr %16, align 8, !tbaa !9
  %434 = load i32, ptr %21, align 4, !tbaa !5
  %435 = sub nsw i32 %434, 1
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds double, ptr %433, i64 %436
  %438 = load double, ptr %437, align 8, !tbaa !11
  %439 = load ptr, ptr %13, align 8, !tbaa !9
  %440 = load i32, ptr %21, align 4, !tbaa !5
  %441 = sub nsw i32 %440, 1
  %442 = sext i32 %441 to i64
  %443 = getelementptr inbounds double, ptr %439, i64 %442
  %444 = load double, ptr %443, align 8, !tbaa !11
  %445 = fcmp oge double %438, %444
  %446 = zext i1 %445 to i64
  %447 = select i1 %445, i32 1, i32 -1
  %448 = sub nsw i32 0, %447
  %449 = icmp eq i32 %432, %448
  br i1 %449, label %450, label %1426

450:                                              ; preds = %419
  %451 = load ptr, ptr %13, align 8, !tbaa !9
  %452 = load i32, ptr %21, align 4, !tbaa !5
  %453 = sub nsw i32 %452, 2
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds double, ptr %451, i64 %454
  %456 = load double, ptr %455, align 8, !tbaa !11
  %457 = load ptr, ptr %13, align 8, !tbaa !9
  %458 = load i32, ptr %21, align 4, !tbaa !5
  %459 = sub nsw i32 %458, 3
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds double, ptr %457, i64 %460
  %462 = load double, ptr %461, align 8, !tbaa !11
  %463 = load ptr, ptr %16, align 8, !tbaa !9
  %464 = load i32, ptr %21, align 4, !tbaa !5
  %465 = sub nsw i32 %464, 3
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds double, ptr %463, i64 %466
  %468 = load double, ptr %467, align 8, !tbaa !11
  %469 = fcmp olt double %462, %468
  br i1 %469, label %470, label %477

470:                                              ; preds = %450
  %471 = load ptr, ptr %13, align 8, !tbaa !9
  %472 = load i32, ptr %21, align 4, !tbaa !5
  %473 = sub nsw i32 %472, 3
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds double, ptr %471, i64 %474
  %476 = load double, ptr %475, align 8, !tbaa !11
  br label %484

477:                                              ; preds = %450
  %478 = load ptr, ptr %16, align 8, !tbaa !9
  %479 = load i32, ptr %21, align 4, !tbaa !5
  %480 = sub nsw i32 %479, 3
  %481 = sext i32 %480 to i64
  %482 = getelementptr inbounds double, ptr %478, i64 %481
  %483 = load double, ptr %482, align 8, !tbaa !11
  br label %484

484:                                              ; preds = %477, %470
  %485 = phi double [ %476, %470 ], [ %483, %477 ]
  %486 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %487 = getelementptr inbounds %struct.TA_LibcPriv, ptr %486, i32 0, i32 8
  %488 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %487, i64 0, i64 8
  %489 = getelementptr inbounds %struct.TA_CandleSetting, ptr %488, i32 0, i32 3
  %490 = load double, ptr %489, align 8, !tbaa !18
  %491 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %492 = getelementptr inbounds %struct.TA_LibcPriv, ptr %491, i32 0, i32 8
  %493 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %492, i64 0, i64 8
  %494 = getelementptr inbounds %struct.TA_CandleSetting, ptr %493, i32 0, i32 2
  %495 = load i32, ptr %494, align 8, !tbaa !13
  %496 = sitofp i32 %495 to double
  %497 = fcmp une double %496, 0.000000e+00
  br i1 %497, label %498, label %508

498:                                              ; preds = %484
  %499 = getelementptr inbounds [4 x double], ptr %20, i64 0, i64 3
  %500 = load double, ptr %499, align 8, !tbaa !11
  %501 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %502 = getelementptr inbounds %struct.TA_LibcPriv, ptr %501, i32 0, i32 8
  %503 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %502, i64 0, i64 8
  %504 = getelementptr inbounds %struct.TA_CandleSetting, ptr %503, i32 0, i32 2
  %505 = load i32, ptr %504, align 8, !tbaa !13
  %506 = sitofp i32 %505 to double
  %507 = fdiv double %500, %506
  br label %639

508:                                              ; preds = %484
  %509 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %510 = getelementptr inbounds %struct.TA_LibcPriv, ptr %509, i32 0, i32 8
  %511 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %510, i64 0, i64 8
  %512 = getelementptr inbounds %struct.TA_CandleSetting, ptr %511, i32 0, i32 1
  %513 = load i32, ptr %512, align 4, !tbaa !15
  %514 = icmp eq i32 %513, 0
  br i1 %514, label %515, label %530

515:                                              ; preds = %508
  %516 = load ptr, ptr %16, align 8, !tbaa !9
  %517 = load i32, ptr %21, align 4, !tbaa !5
  %518 = sub nsw i32 %517, 3
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds double, ptr %516, i64 %519
  %521 = load double, ptr %520, align 8, !tbaa !11
  %522 = load ptr, ptr %13, align 8, !tbaa !9
  %523 = load i32, ptr %21, align 4, !tbaa !5
  %524 = sub nsw i32 %523, 3
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds double, ptr %522, i64 %525
  %527 = load double, ptr %526, align 8, !tbaa !11
  %528 = fsub double %521, %527
  %529 = call double @llvm.fabs.f64(double %528)
  br label %637

530:                                              ; preds = %508
  %531 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %532 = getelementptr inbounds %struct.TA_LibcPriv, ptr %531, i32 0, i32 8
  %533 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %532, i64 0, i64 8
  %534 = getelementptr inbounds %struct.TA_CandleSetting, ptr %533, i32 0, i32 1
  %535 = load i32, ptr %534, align 4, !tbaa !15
  %536 = icmp eq i32 %535, 1
  br i1 %536, label %537, label %551

537:                                              ; preds = %530
  %538 = load ptr, ptr %14, align 8, !tbaa !9
  %539 = load i32, ptr %21, align 4, !tbaa !5
  %540 = sub nsw i32 %539, 3
  %541 = sext i32 %540 to i64
  %542 = getelementptr inbounds double, ptr %538, i64 %541
  %543 = load double, ptr %542, align 8, !tbaa !11
  %544 = load ptr, ptr %15, align 8, !tbaa !9
  %545 = load i32, ptr %21, align 4, !tbaa !5
  %546 = sub nsw i32 %545, 3
  %547 = sext i32 %546 to i64
  %548 = getelementptr inbounds double, ptr %544, i64 %547
  %549 = load double, ptr %548, align 8, !tbaa !11
  %550 = fsub double %543, %549
  br label %635

551:                                              ; preds = %530
  %552 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %553 = getelementptr inbounds %struct.TA_LibcPriv, ptr %552, i32 0, i32 8
  %554 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %553, i64 0, i64 8
  %555 = getelementptr inbounds %struct.TA_CandleSetting, ptr %554, i32 0, i32 1
  %556 = load i32, ptr %555, align 4, !tbaa !15
  %557 = icmp eq i32 %556, 2
  br i1 %557, label %558, label %632

558:                                              ; preds = %551
  %559 = load ptr, ptr %14, align 8, !tbaa !9
  %560 = load i32, ptr %21, align 4, !tbaa !5
  %561 = sub nsw i32 %560, 3
  %562 = sext i32 %561 to i64
  %563 = getelementptr inbounds double, ptr %559, i64 %562
  %564 = load double, ptr %563, align 8, !tbaa !11
  %565 = load ptr, ptr %16, align 8, !tbaa !9
  %566 = load i32, ptr %21, align 4, !tbaa !5
  %567 = sub nsw i32 %566, 3
  %568 = sext i32 %567 to i64
  %569 = getelementptr inbounds double, ptr %565, i64 %568
  %570 = load double, ptr %569, align 8, !tbaa !11
  %571 = load ptr, ptr %13, align 8, !tbaa !9
  %572 = load i32, ptr %21, align 4, !tbaa !5
  %573 = sub nsw i32 %572, 3
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds double, ptr %571, i64 %574
  %576 = load double, ptr %575, align 8, !tbaa !11
  %577 = fcmp oge double %570, %576
  br i1 %577, label %578, label %585

578:                                              ; preds = %558
  %579 = load ptr, ptr %16, align 8, !tbaa !9
  %580 = load i32, ptr %21, align 4, !tbaa !5
  %581 = sub nsw i32 %580, 3
  %582 = sext i32 %581 to i64
  %583 = getelementptr inbounds double, ptr %579, i64 %582
  %584 = load double, ptr %583, align 8, !tbaa !11
  br label %592

585:                                              ; preds = %558
  %586 = load ptr, ptr %13, align 8, !tbaa !9
  %587 = load i32, ptr %21, align 4, !tbaa !5
  %588 = sub nsw i32 %587, 3
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds double, ptr %586, i64 %589
  %591 = load double, ptr %590, align 8, !tbaa !11
  br label %592

592:                                              ; preds = %585, %578
  %593 = phi double [ %584, %578 ], [ %591, %585 ]
  %594 = fsub double %564, %593
  %595 = load ptr, ptr %16, align 8, !tbaa !9
  %596 = load i32, ptr %21, align 4, !tbaa !5
  %597 = sub nsw i32 %596, 3
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds double, ptr %595, i64 %598
  %600 = load double, ptr %599, align 8, !tbaa !11
  %601 = load ptr, ptr %13, align 8, !tbaa !9
  %602 = load i32, ptr %21, align 4, !tbaa !5
  %603 = sub nsw i32 %602, 3
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds double, ptr %601, i64 %604
  %606 = load double, ptr %605, align 8, !tbaa !11
  %607 = fcmp oge double %600, %606
  br i1 %607, label %608, label %615

608:                                              ; preds = %592
  %609 = load ptr, ptr %13, align 8, !tbaa !9
  %610 = load i32, ptr %21, align 4, !tbaa !5
  %611 = sub nsw i32 %610, 3
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds double, ptr %609, i64 %612
  %614 = load double, ptr %613, align 8, !tbaa !11
  br label %622

615:                                              ; preds = %592
  %616 = load ptr, ptr %16, align 8, !tbaa !9
  %617 = load i32, ptr %21, align 4, !tbaa !5
  %618 = sub nsw i32 %617, 3
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds double, ptr %616, i64 %619
  %621 = load double, ptr %620, align 8, !tbaa !11
  br label %622

622:                                              ; preds = %615, %608
  %623 = phi double [ %614, %608 ], [ %621, %615 ]
  %624 = load ptr, ptr %15, align 8, !tbaa !9
  %625 = load i32, ptr %21, align 4, !tbaa !5
  %626 = sub nsw i32 %625, 3
  %627 = sext i32 %626 to i64
  %628 = getelementptr inbounds double, ptr %624, i64 %627
  %629 = load double, ptr %628, align 8, !tbaa !11
  %630 = fsub double %623, %629
  %631 = fadd double %594, %630
  br label %633

632:                                              ; preds = %551
  br label %633

633:                                              ; preds = %632, %622
  %634 = phi double [ %631, %622 ], [ 0.000000e+00, %632 ]
  br label %635

635:                                              ; preds = %633, %537
  %636 = phi double [ %550, %537 ], [ %634, %633 ]
  br label %637

637:                                              ; preds = %635, %515
  %638 = phi double [ %529, %515 ], [ %636, %635 ]
  br label %639

639:                                              ; preds = %637, %498
  %640 = phi double [ %507, %498 ], [ %638, %637 ]
  %641 = fmul double %490, %640
  %642 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %643 = getelementptr inbounds %struct.TA_LibcPriv, ptr %642, i32 0, i32 8
  %644 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %643, i64 0, i64 8
  %645 = getelementptr inbounds %struct.TA_CandleSetting, ptr %644, i32 0, i32 1
  %646 = load i32, ptr %645, align 4, !tbaa !15
  %647 = icmp eq i32 %646, 2
  %648 = zext i1 %647 to i64
  %649 = select i1 %647, double 2.000000e+00, double 1.000000e+00
  %650 = fdiv double %641, %649
  %651 = fsub double %485, %650
  %652 = fcmp oge double %456, %651
  br i1 %652, label %653, label %1426

653:                                              ; preds = %639
  %654 = load ptr, ptr %13, align 8, !tbaa !9
  %655 = load i32, ptr %21, align 4, !tbaa !5
  %656 = sub nsw i32 %655, 2
  %657 = sext i32 %656 to i64
  %658 = getelementptr inbounds double, ptr %654, i64 %657
  %659 = load double, ptr %658, align 8, !tbaa !11
  %660 = load ptr, ptr %13, align 8, !tbaa !9
  %661 = load i32, ptr %21, align 4, !tbaa !5
  %662 = sub nsw i32 %661, 3
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds double, ptr %660, i64 %663
  %665 = load double, ptr %664, align 8, !tbaa !11
  %666 = load ptr, ptr %16, align 8, !tbaa !9
  %667 = load i32, ptr %21, align 4, !tbaa !5
  %668 = sub nsw i32 %667, 3
  %669 = sext i32 %668 to i64
  %670 = getelementptr inbounds double, ptr %666, i64 %669
  %671 = load double, ptr %670, align 8, !tbaa !11
  %672 = fcmp ogt double %665, %671
  br i1 %672, label %673, label %680

673:                                              ; preds = %653
  %674 = load ptr, ptr %13, align 8, !tbaa !9
  %675 = load i32, ptr %21, align 4, !tbaa !5
  %676 = sub nsw i32 %675, 3
  %677 = sext i32 %676 to i64
  %678 = getelementptr inbounds double, ptr %674, i64 %677
  %679 = load double, ptr %678, align 8, !tbaa !11
  br label %687

680:                                              ; preds = %653
  %681 = load ptr, ptr %16, align 8, !tbaa !9
  %682 = load i32, ptr %21, align 4, !tbaa !5
  %683 = sub nsw i32 %682, 3
  %684 = sext i32 %683 to i64
  %685 = getelementptr inbounds double, ptr %681, i64 %684
  %686 = load double, ptr %685, align 8, !tbaa !11
  br label %687

687:                                              ; preds = %680, %673
  %688 = phi double [ %679, %673 ], [ %686, %680 ]
  %689 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %690 = getelementptr inbounds %struct.TA_LibcPriv, ptr %689, i32 0, i32 8
  %691 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %690, i64 0, i64 8
  %692 = getelementptr inbounds %struct.TA_CandleSetting, ptr %691, i32 0, i32 3
  %693 = load double, ptr %692, align 8, !tbaa !18
  %694 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %695 = getelementptr inbounds %struct.TA_LibcPriv, ptr %694, i32 0, i32 8
  %696 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %695, i64 0, i64 8
  %697 = getelementptr inbounds %struct.TA_CandleSetting, ptr %696, i32 0, i32 2
  %698 = load i32, ptr %697, align 8, !tbaa !13
  %699 = sitofp i32 %698 to double
  %700 = fcmp une double %699, 0.000000e+00
  br i1 %700, label %701, label %711

701:                                              ; preds = %687
  %702 = getelementptr inbounds [4 x double], ptr %20, i64 0, i64 3
  %703 = load double, ptr %702, align 8, !tbaa !11
  %704 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %705 = getelementptr inbounds %struct.TA_LibcPriv, ptr %704, i32 0, i32 8
  %706 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %705, i64 0, i64 8
  %707 = getelementptr inbounds %struct.TA_CandleSetting, ptr %706, i32 0, i32 2
  %708 = load i32, ptr %707, align 8, !tbaa !13
  %709 = sitofp i32 %708 to double
  %710 = fdiv double %703, %709
  br label %842

711:                                              ; preds = %687
  %712 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %713 = getelementptr inbounds %struct.TA_LibcPriv, ptr %712, i32 0, i32 8
  %714 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %713, i64 0, i64 8
  %715 = getelementptr inbounds %struct.TA_CandleSetting, ptr %714, i32 0, i32 1
  %716 = load i32, ptr %715, align 4, !tbaa !15
  %717 = icmp eq i32 %716, 0
  br i1 %717, label %718, label %733

718:                                              ; preds = %711
  %719 = load ptr, ptr %16, align 8, !tbaa !9
  %720 = load i32, ptr %21, align 4, !tbaa !5
  %721 = sub nsw i32 %720, 3
  %722 = sext i32 %721 to i64
  %723 = getelementptr inbounds double, ptr %719, i64 %722
  %724 = load double, ptr %723, align 8, !tbaa !11
  %725 = load ptr, ptr %13, align 8, !tbaa !9
  %726 = load i32, ptr %21, align 4, !tbaa !5
  %727 = sub nsw i32 %726, 3
  %728 = sext i32 %727 to i64
  %729 = getelementptr inbounds double, ptr %725, i64 %728
  %730 = load double, ptr %729, align 8, !tbaa !11
  %731 = fsub double %724, %730
  %732 = call double @llvm.fabs.f64(double %731)
  br label %840

733:                                              ; preds = %711
  %734 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %735 = getelementptr inbounds %struct.TA_LibcPriv, ptr %734, i32 0, i32 8
  %736 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %735, i64 0, i64 8
  %737 = getelementptr inbounds %struct.TA_CandleSetting, ptr %736, i32 0, i32 1
  %738 = load i32, ptr %737, align 4, !tbaa !15
  %739 = icmp eq i32 %738, 1
  br i1 %739, label %740, label %754

740:                                              ; preds = %733
  %741 = load ptr, ptr %14, align 8, !tbaa !9
  %742 = load i32, ptr %21, align 4, !tbaa !5
  %743 = sub nsw i32 %742, 3
  %744 = sext i32 %743 to i64
  %745 = getelementptr inbounds double, ptr %741, i64 %744
  %746 = load double, ptr %745, align 8, !tbaa !11
  %747 = load ptr, ptr %15, align 8, !tbaa !9
  %748 = load i32, ptr %21, align 4, !tbaa !5
  %749 = sub nsw i32 %748, 3
  %750 = sext i32 %749 to i64
  %751 = getelementptr inbounds double, ptr %747, i64 %750
  %752 = load double, ptr %751, align 8, !tbaa !11
  %753 = fsub double %746, %752
  br label %838

754:                                              ; preds = %733
  %755 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %756 = getelementptr inbounds %struct.TA_LibcPriv, ptr %755, i32 0, i32 8
  %757 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %756, i64 0, i64 8
  %758 = getelementptr inbounds %struct.TA_CandleSetting, ptr %757, i32 0, i32 1
  %759 = load i32, ptr %758, align 4, !tbaa !15
  %760 = icmp eq i32 %759, 2
  br i1 %760, label %761, label %835

761:                                              ; preds = %754
  %762 = load ptr, ptr %14, align 8, !tbaa !9
  %763 = load i32, ptr %21, align 4, !tbaa !5
  %764 = sub nsw i32 %763, 3
  %765 = sext i32 %764 to i64
  %766 = getelementptr inbounds double, ptr %762, i64 %765
  %767 = load double, ptr %766, align 8, !tbaa !11
  %768 = load ptr, ptr %16, align 8, !tbaa !9
  %769 = load i32, ptr %21, align 4, !tbaa !5
  %770 = sub nsw i32 %769, 3
  %771 = sext i32 %770 to i64
  %772 = getelementptr inbounds double, ptr %768, i64 %771
  %773 = load double, ptr %772, align 8, !tbaa !11
  %774 = load ptr, ptr %13, align 8, !tbaa !9
  %775 = load i32, ptr %21, align 4, !tbaa !5
  %776 = sub nsw i32 %775, 3
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds double, ptr %774, i64 %777
  %779 = load double, ptr %778, align 8, !tbaa !11
  %780 = fcmp oge double %773, %779
  br i1 %780, label %781, label %788

781:                                              ; preds = %761
  %782 = load ptr, ptr %16, align 8, !tbaa !9
  %783 = load i32, ptr %21, align 4, !tbaa !5
  %784 = sub nsw i32 %783, 3
  %785 = sext i32 %784 to i64
  %786 = getelementptr inbounds double, ptr %782, i64 %785
  %787 = load double, ptr %786, align 8, !tbaa !11
  br label %795

788:                                              ; preds = %761
  %789 = load ptr, ptr %13, align 8, !tbaa !9
  %790 = load i32, ptr %21, align 4, !tbaa !5
  %791 = sub nsw i32 %790, 3
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds double, ptr %789, i64 %792
  %794 = load double, ptr %793, align 8, !tbaa !11
  br label %795

795:                                              ; preds = %788, %781
  %796 = phi double [ %787, %781 ], [ %794, %788 ]
  %797 = fsub double %767, %796
  %798 = load ptr, ptr %16, align 8, !tbaa !9
  %799 = load i32, ptr %21, align 4, !tbaa !5
  %800 = sub nsw i32 %799, 3
  %801 = sext i32 %800 to i64
  %802 = getelementptr inbounds double, ptr %798, i64 %801
  %803 = load double, ptr %802, align 8, !tbaa !11
  %804 = load ptr, ptr %13, align 8, !tbaa !9
  %805 = load i32, ptr %21, align 4, !tbaa !5
  %806 = sub nsw i32 %805, 3
  %807 = sext i32 %806 to i64
  %808 = getelementptr inbounds double, ptr %804, i64 %807
  %809 = load double, ptr %808, align 8, !tbaa !11
  %810 = fcmp oge double %803, %809
  br i1 %810, label %811, label %818

811:                                              ; preds = %795
  %812 = load ptr, ptr %13, align 8, !tbaa !9
  %813 = load i32, ptr %21, align 4, !tbaa !5
  %814 = sub nsw i32 %813, 3
  %815 = sext i32 %814 to i64
  %816 = getelementptr inbounds double, ptr %812, i64 %815
  %817 = load double, ptr %816, align 8, !tbaa !11
  br label %825

818:                                              ; preds = %795
  %819 = load ptr, ptr %16, align 8, !tbaa !9
  %820 = load i32, ptr %21, align 4, !tbaa !5
  %821 = sub nsw i32 %820, 3
  %822 = sext i32 %821 to i64
  %823 = getelementptr inbounds double, ptr %819, i64 %822
  %824 = load double, ptr %823, align 8, !tbaa !11
  br label %825

825:                                              ; preds = %818, %811
  %826 = phi double [ %817, %811 ], [ %824, %818 ]
  %827 = load ptr, ptr %15, align 8, !tbaa !9
  %828 = load i32, ptr %21, align 4, !tbaa !5
  %829 = sub nsw i32 %828, 3
  %830 = sext i32 %829 to i64
  %831 = getelementptr inbounds double, ptr %827, i64 %830
  %832 = load double, ptr %831, align 8, !tbaa !11
  %833 = fsub double %826, %832
  %834 = fadd double %797, %833
  br label %836

835:                                              ; preds = %754
  br label %836

836:                                              ; preds = %835, %825
  %837 = phi double [ %834, %825 ], [ 0.000000e+00, %835 ]
  br label %838

838:                                              ; preds = %836, %740
  %839 = phi double [ %753, %740 ], [ %837, %836 ]
  br label %840

840:                                              ; preds = %838, %718
  %841 = phi double [ %732, %718 ], [ %839, %838 ]
  br label %842

842:                                              ; preds = %840, %701
  %843 = phi double [ %710, %701 ], [ %841, %840 ]
  %844 = fmul double %693, %843
  %845 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %846 = getelementptr inbounds %struct.TA_LibcPriv, ptr %845, i32 0, i32 8
  %847 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %846, i64 0, i64 8
  %848 = getelementptr inbounds %struct.TA_CandleSetting, ptr %847, i32 0, i32 1
  %849 = load i32, ptr %848, align 4, !tbaa !15
  %850 = icmp eq i32 %849, 2
  %851 = zext i1 %850 to i64
  %852 = select i1 %850, double 2.000000e+00, double 1.000000e+00
  %853 = fdiv double %844, %852
  %854 = fadd double %688, %853
  %855 = fcmp ole double %659, %854
  br i1 %855, label %856, label %1426

856:                                              ; preds = %842
  %857 = load ptr, ptr %13, align 8, !tbaa !9
  %858 = load i32, ptr %21, align 4, !tbaa !5
  %859 = sub nsw i32 %858, 1
  %860 = sext i32 %859 to i64
  %861 = getelementptr inbounds double, ptr %857, i64 %860
  %862 = load double, ptr %861, align 8, !tbaa !11
  %863 = load ptr, ptr %13, align 8, !tbaa !9
  %864 = load i32, ptr %21, align 4, !tbaa !5
  %865 = sub nsw i32 %864, 2
  %866 = sext i32 %865 to i64
  %867 = getelementptr inbounds double, ptr %863, i64 %866
  %868 = load double, ptr %867, align 8, !tbaa !11
  %869 = load ptr, ptr %16, align 8, !tbaa !9
  %870 = load i32, ptr %21, align 4, !tbaa !5
  %871 = sub nsw i32 %870, 2
  %872 = sext i32 %871 to i64
  %873 = getelementptr inbounds double, ptr %869, i64 %872
  %874 = load double, ptr %873, align 8, !tbaa !11
  %875 = fcmp olt double %868, %874
  br i1 %875, label %876, label %883

876:                                              ; preds = %856
  %877 = load ptr, ptr %13, align 8, !tbaa !9
  %878 = load i32, ptr %21, align 4, !tbaa !5
  %879 = sub nsw i32 %878, 2
  %880 = sext i32 %879 to i64
  %881 = getelementptr inbounds double, ptr %877, i64 %880
  %882 = load double, ptr %881, align 8, !tbaa !11
  br label %890

883:                                              ; preds = %856
  %884 = load ptr, ptr %16, align 8, !tbaa !9
  %885 = load i32, ptr %21, align 4, !tbaa !5
  %886 = sub nsw i32 %885, 2
  %887 = sext i32 %886 to i64
  %888 = getelementptr inbounds double, ptr %884, i64 %887
  %889 = load double, ptr %888, align 8, !tbaa !11
  br label %890

890:                                              ; preds = %883, %876
  %891 = phi double [ %882, %876 ], [ %889, %883 ]
  %892 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %893 = getelementptr inbounds %struct.TA_LibcPriv, ptr %892, i32 0, i32 8
  %894 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %893, i64 0, i64 8
  %895 = getelementptr inbounds %struct.TA_CandleSetting, ptr %894, i32 0, i32 3
  %896 = load double, ptr %895, align 8, !tbaa !18
  %897 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %898 = getelementptr inbounds %struct.TA_LibcPriv, ptr %897, i32 0, i32 8
  %899 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %898, i64 0, i64 8
  %900 = getelementptr inbounds %struct.TA_CandleSetting, ptr %899, i32 0, i32 2
  %901 = load i32, ptr %900, align 8, !tbaa !13
  %902 = sitofp i32 %901 to double
  %903 = fcmp une double %902, 0.000000e+00
  br i1 %903, label %904, label %914

904:                                              ; preds = %890
  %905 = getelementptr inbounds [4 x double], ptr %20, i64 0, i64 2
  %906 = load double, ptr %905, align 16, !tbaa !11
  %907 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %908 = getelementptr inbounds %struct.TA_LibcPriv, ptr %907, i32 0, i32 8
  %909 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %908, i64 0, i64 8
  %910 = getelementptr inbounds %struct.TA_CandleSetting, ptr %909, i32 0, i32 2
  %911 = load i32, ptr %910, align 8, !tbaa !13
  %912 = sitofp i32 %911 to double
  %913 = fdiv double %906, %912
  br label %1045

914:                                              ; preds = %890
  %915 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %916 = getelementptr inbounds %struct.TA_LibcPriv, ptr %915, i32 0, i32 8
  %917 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %916, i64 0, i64 8
  %918 = getelementptr inbounds %struct.TA_CandleSetting, ptr %917, i32 0, i32 1
  %919 = load i32, ptr %918, align 4, !tbaa !15
  %920 = icmp eq i32 %919, 0
  br i1 %920, label %921, label %936

921:                                              ; preds = %914
  %922 = load ptr, ptr %16, align 8, !tbaa !9
  %923 = load i32, ptr %21, align 4, !tbaa !5
  %924 = sub nsw i32 %923, 2
  %925 = sext i32 %924 to i64
  %926 = getelementptr inbounds double, ptr %922, i64 %925
  %927 = load double, ptr %926, align 8, !tbaa !11
  %928 = load ptr, ptr %13, align 8, !tbaa !9
  %929 = load i32, ptr %21, align 4, !tbaa !5
  %930 = sub nsw i32 %929, 2
  %931 = sext i32 %930 to i64
  %932 = getelementptr inbounds double, ptr %928, i64 %931
  %933 = load double, ptr %932, align 8, !tbaa !11
  %934 = fsub double %927, %933
  %935 = call double @llvm.fabs.f64(double %934)
  br label %1043

936:                                              ; preds = %914
  %937 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %938 = getelementptr inbounds %struct.TA_LibcPriv, ptr %937, i32 0, i32 8
  %939 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %938, i64 0, i64 8
  %940 = getelementptr inbounds %struct.TA_CandleSetting, ptr %939, i32 0, i32 1
  %941 = load i32, ptr %940, align 4, !tbaa !15
  %942 = icmp eq i32 %941, 1
  br i1 %942, label %943, label %957

943:                                              ; preds = %936
  %944 = load ptr, ptr %14, align 8, !tbaa !9
  %945 = load i32, ptr %21, align 4, !tbaa !5
  %946 = sub nsw i32 %945, 2
  %947 = sext i32 %946 to i64
  %948 = getelementptr inbounds double, ptr %944, i64 %947
  %949 = load double, ptr %948, align 8, !tbaa !11
  %950 = load ptr, ptr %15, align 8, !tbaa !9
  %951 = load i32, ptr %21, align 4, !tbaa !5
  %952 = sub nsw i32 %951, 2
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds double, ptr %950, i64 %953
  %955 = load double, ptr %954, align 8, !tbaa !11
  %956 = fsub double %949, %955
  br label %1041

957:                                              ; preds = %936
  %958 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %959 = getelementptr inbounds %struct.TA_LibcPriv, ptr %958, i32 0, i32 8
  %960 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %959, i64 0, i64 8
  %961 = getelementptr inbounds %struct.TA_CandleSetting, ptr %960, i32 0, i32 1
  %962 = load i32, ptr %961, align 4, !tbaa !15
  %963 = icmp eq i32 %962, 2
  br i1 %963, label %964, label %1038

964:                                              ; preds = %957
  %965 = load ptr, ptr %14, align 8, !tbaa !9
  %966 = load i32, ptr %21, align 4, !tbaa !5
  %967 = sub nsw i32 %966, 2
  %968 = sext i32 %967 to i64
  %969 = getelementptr inbounds double, ptr %965, i64 %968
  %970 = load double, ptr %969, align 8, !tbaa !11
  %971 = load ptr, ptr %16, align 8, !tbaa !9
  %972 = load i32, ptr %21, align 4, !tbaa !5
  %973 = sub nsw i32 %972, 2
  %974 = sext i32 %973 to i64
  %975 = getelementptr inbounds double, ptr %971, i64 %974
  %976 = load double, ptr %975, align 8, !tbaa !11
  %977 = load ptr, ptr %13, align 8, !tbaa !9
  %978 = load i32, ptr %21, align 4, !tbaa !5
  %979 = sub nsw i32 %978, 2
  %980 = sext i32 %979 to i64
  %981 = getelementptr inbounds double, ptr %977, i64 %980
  %982 = load double, ptr %981, align 8, !tbaa !11
  %983 = fcmp oge double %976, %982
  br i1 %983, label %984, label %991

984:                                              ; preds = %964
  %985 = load ptr, ptr %16, align 8, !tbaa !9
  %986 = load i32, ptr %21, align 4, !tbaa !5
  %987 = sub nsw i32 %986, 2
  %988 = sext i32 %987 to i64
  %989 = getelementptr inbounds double, ptr %985, i64 %988
  %990 = load double, ptr %989, align 8, !tbaa !11
  br label %998

991:                                              ; preds = %964
  %992 = load ptr, ptr %13, align 8, !tbaa !9
  %993 = load i32, ptr %21, align 4, !tbaa !5
  %994 = sub nsw i32 %993, 2
  %995 = sext i32 %994 to i64
  %996 = getelementptr inbounds double, ptr %992, i64 %995
  %997 = load double, ptr %996, align 8, !tbaa !11
  br label %998

998:                                              ; preds = %991, %984
  %999 = phi double [ %990, %984 ], [ %997, %991 ]
  %1000 = fsub double %970, %999
  %1001 = load ptr, ptr %16, align 8, !tbaa !9
  %1002 = load i32, ptr %21, align 4, !tbaa !5
  %1003 = sub nsw i32 %1002, 2
  %1004 = sext i32 %1003 to i64
  %1005 = getelementptr inbounds double, ptr %1001, i64 %1004
  %1006 = load double, ptr %1005, align 8, !tbaa !11
  %1007 = load ptr, ptr %13, align 8, !tbaa !9
  %1008 = load i32, ptr %21, align 4, !tbaa !5
  %1009 = sub nsw i32 %1008, 2
  %1010 = sext i32 %1009 to i64
  %1011 = getelementptr inbounds double, ptr %1007, i64 %1010
  %1012 = load double, ptr %1011, align 8, !tbaa !11
  %1013 = fcmp oge double %1006, %1012
  br i1 %1013, label %1014, label %1021

1014:                                             ; preds = %998
  %1015 = load ptr, ptr %13, align 8, !tbaa !9
  %1016 = load i32, ptr %21, align 4, !tbaa !5
  %1017 = sub nsw i32 %1016, 2
  %1018 = sext i32 %1017 to i64
  %1019 = getelementptr inbounds double, ptr %1015, i64 %1018
  %1020 = load double, ptr %1019, align 8, !tbaa !11
  br label %1028

1021:                                             ; preds = %998
  %1022 = load ptr, ptr %16, align 8, !tbaa !9
  %1023 = load i32, ptr %21, align 4, !tbaa !5
  %1024 = sub nsw i32 %1023, 2
  %1025 = sext i32 %1024 to i64
  %1026 = getelementptr inbounds double, ptr %1022, i64 %1025
  %1027 = load double, ptr %1026, align 8, !tbaa !11
  br label %1028

1028:                                             ; preds = %1021, %1014
  %1029 = phi double [ %1020, %1014 ], [ %1027, %1021 ]
  %1030 = load ptr, ptr %15, align 8, !tbaa !9
  %1031 = load i32, ptr %21, align 4, !tbaa !5
  %1032 = sub nsw i32 %1031, 2
  %1033 = sext i32 %1032 to i64
  %1034 = getelementptr inbounds double, ptr %1030, i64 %1033
  %1035 = load double, ptr %1034, align 8, !tbaa !11
  %1036 = fsub double %1029, %1035
  %1037 = fadd double %1000, %1036
  br label %1039

1038:                                             ; preds = %957
  br label %1039

1039:                                             ; preds = %1038, %1028
  %1040 = phi double [ %1037, %1028 ], [ 0.000000e+00, %1038 ]
  br label %1041

1041:                                             ; preds = %1039, %943
  %1042 = phi double [ %956, %943 ], [ %1040, %1039 ]
  br label %1043

1043:                                             ; preds = %1041, %921
  %1044 = phi double [ %935, %921 ], [ %1042, %1041 ]
  br label %1045

1045:                                             ; preds = %1043, %904
  %1046 = phi double [ %913, %904 ], [ %1044, %1043 ]
  %1047 = fmul double %896, %1046
  %1048 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1049 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1048, i32 0, i32 8
  %1050 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1049, i64 0, i64 8
  %1051 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1050, i32 0, i32 1
  %1052 = load i32, ptr %1051, align 4, !tbaa !15
  %1053 = icmp eq i32 %1052, 2
  %1054 = zext i1 %1053 to i64
  %1055 = select i1 %1053, double 2.000000e+00, double 1.000000e+00
  %1056 = fdiv double %1047, %1055
  %1057 = fsub double %891, %1056
  %1058 = fcmp oge double %862, %1057
  br i1 %1058, label %1059, label %1426

1059:                                             ; preds = %1045
  %1060 = load ptr, ptr %13, align 8, !tbaa !9
  %1061 = load i32, ptr %21, align 4, !tbaa !5
  %1062 = sub nsw i32 %1061, 1
  %1063 = sext i32 %1062 to i64
  %1064 = getelementptr inbounds double, ptr %1060, i64 %1063
  %1065 = load double, ptr %1064, align 8, !tbaa !11
  %1066 = load ptr, ptr %13, align 8, !tbaa !9
  %1067 = load i32, ptr %21, align 4, !tbaa !5
  %1068 = sub nsw i32 %1067, 2
  %1069 = sext i32 %1068 to i64
  %1070 = getelementptr inbounds double, ptr %1066, i64 %1069
  %1071 = load double, ptr %1070, align 8, !tbaa !11
  %1072 = load ptr, ptr %16, align 8, !tbaa !9
  %1073 = load i32, ptr %21, align 4, !tbaa !5
  %1074 = sub nsw i32 %1073, 2
  %1075 = sext i32 %1074 to i64
  %1076 = getelementptr inbounds double, ptr %1072, i64 %1075
  %1077 = load double, ptr %1076, align 8, !tbaa !11
  %1078 = fcmp ogt double %1071, %1077
  br i1 %1078, label %1079, label %1086

1079:                                             ; preds = %1059
  %1080 = load ptr, ptr %13, align 8, !tbaa !9
  %1081 = load i32, ptr %21, align 4, !tbaa !5
  %1082 = sub nsw i32 %1081, 2
  %1083 = sext i32 %1082 to i64
  %1084 = getelementptr inbounds double, ptr %1080, i64 %1083
  %1085 = load double, ptr %1084, align 8, !tbaa !11
  br label %1093

1086:                                             ; preds = %1059
  %1087 = load ptr, ptr %16, align 8, !tbaa !9
  %1088 = load i32, ptr %21, align 4, !tbaa !5
  %1089 = sub nsw i32 %1088, 2
  %1090 = sext i32 %1089 to i64
  %1091 = getelementptr inbounds double, ptr %1087, i64 %1090
  %1092 = load double, ptr %1091, align 8, !tbaa !11
  br label %1093

1093:                                             ; preds = %1086, %1079
  %1094 = phi double [ %1085, %1079 ], [ %1092, %1086 ]
  %1095 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1096 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1095, i32 0, i32 8
  %1097 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1096, i64 0, i64 8
  %1098 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1097, i32 0, i32 3
  %1099 = load double, ptr %1098, align 8, !tbaa !18
  %1100 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1101 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1100, i32 0, i32 8
  %1102 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1101, i64 0, i64 8
  %1103 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1102, i32 0, i32 2
  %1104 = load i32, ptr %1103, align 8, !tbaa !13
  %1105 = sitofp i32 %1104 to double
  %1106 = fcmp une double %1105, 0.000000e+00
  br i1 %1106, label %1107, label %1117

1107:                                             ; preds = %1093
  %1108 = getelementptr inbounds [4 x double], ptr %20, i64 0, i64 2
  %1109 = load double, ptr %1108, align 16, !tbaa !11
  %1110 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1111 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1110, i32 0, i32 8
  %1112 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1111, i64 0, i64 8
  %1113 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1112, i32 0, i32 2
  %1114 = load i32, ptr %1113, align 8, !tbaa !13
  %1115 = sitofp i32 %1114 to double
  %1116 = fdiv double %1109, %1115
  br label %1248

1117:                                             ; preds = %1093
  %1118 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1119 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1118, i32 0, i32 8
  %1120 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1119, i64 0, i64 8
  %1121 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1120, i32 0, i32 1
  %1122 = load i32, ptr %1121, align 4, !tbaa !15
  %1123 = icmp eq i32 %1122, 0
  br i1 %1123, label %1124, label %1139

1124:                                             ; preds = %1117
  %1125 = load ptr, ptr %16, align 8, !tbaa !9
  %1126 = load i32, ptr %21, align 4, !tbaa !5
  %1127 = sub nsw i32 %1126, 2
  %1128 = sext i32 %1127 to i64
  %1129 = getelementptr inbounds double, ptr %1125, i64 %1128
  %1130 = load double, ptr %1129, align 8, !tbaa !11
  %1131 = load ptr, ptr %13, align 8, !tbaa !9
  %1132 = load i32, ptr %21, align 4, !tbaa !5
  %1133 = sub nsw i32 %1132, 2
  %1134 = sext i32 %1133 to i64
  %1135 = getelementptr inbounds double, ptr %1131, i64 %1134
  %1136 = load double, ptr %1135, align 8, !tbaa !11
  %1137 = fsub double %1130, %1136
  %1138 = call double @llvm.fabs.f64(double %1137)
  br label %1246

1139:                                             ; preds = %1117
  %1140 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1141 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1140, i32 0, i32 8
  %1142 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1141, i64 0, i64 8
  %1143 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1142, i32 0, i32 1
  %1144 = load i32, ptr %1143, align 4, !tbaa !15
  %1145 = icmp eq i32 %1144, 1
  br i1 %1145, label %1146, label %1160

1146:                                             ; preds = %1139
  %1147 = load ptr, ptr %14, align 8, !tbaa !9
  %1148 = load i32, ptr %21, align 4, !tbaa !5
  %1149 = sub nsw i32 %1148, 2
  %1150 = sext i32 %1149 to i64
  %1151 = getelementptr inbounds double, ptr %1147, i64 %1150
  %1152 = load double, ptr %1151, align 8, !tbaa !11
  %1153 = load ptr, ptr %15, align 8, !tbaa !9
  %1154 = load i32, ptr %21, align 4, !tbaa !5
  %1155 = sub nsw i32 %1154, 2
  %1156 = sext i32 %1155 to i64
  %1157 = getelementptr inbounds double, ptr %1153, i64 %1156
  %1158 = load double, ptr %1157, align 8, !tbaa !11
  %1159 = fsub double %1152, %1158
  br label %1244

1160:                                             ; preds = %1139
  %1161 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1162 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1161, i32 0, i32 8
  %1163 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1162, i64 0, i64 8
  %1164 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1163, i32 0, i32 1
  %1165 = load i32, ptr %1164, align 4, !tbaa !15
  %1166 = icmp eq i32 %1165, 2
  br i1 %1166, label %1167, label %1241

1167:                                             ; preds = %1160
  %1168 = load ptr, ptr %14, align 8, !tbaa !9
  %1169 = load i32, ptr %21, align 4, !tbaa !5
  %1170 = sub nsw i32 %1169, 2
  %1171 = sext i32 %1170 to i64
  %1172 = getelementptr inbounds double, ptr %1168, i64 %1171
  %1173 = load double, ptr %1172, align 8, !tbaa !11
  %1174 = load ptr, ptr %16, align 8, !tbaa !9
  %1175 = load i32, ptr %21, align 4, !tbaa !5
  %1176 = sub nsw i32 %1175, 2
  %1177 = sext i32 %1176 to i64
  %1178 = getelementptr inbounds double, ptr %1174, i64 %1177
  %1179 = load double, ptr %1178, align 8, !tbaa !11
  %1180 = load ptr, ptr %13, align 8, !tbaa !9
  %1181 = load i32, ptr %21, align 4, !tbaa !5
  %1182 = sub nsw i32 %1181, 2
  %1183 = sext i32 %1182 to i64
  %1184 = getelementptr inbounds double, ptr %1180, i64 %1183
  %1185 = load double, ptr %1184, align 8, !tbaa !11
  %1186 = fcmp oge double %1179, %1185
  br i1 %1186, label %1187, label %1194

1187:                                             ; preds = %1167
  %1188 = load ptr, ptr %16, align 8, !tbaa !9
  %1189 = load i32, ptr %21, align 4, !tbaa !5
  %1190 = sub nsw i32 %1189, 2
  %1191 = sext i32 %1190 to i64
  %1192 = getelementptr inbounds double, ptr %1188, i64 %1191
  %1193 = load double, ptr %1192, align 8, !tbaa !11
  br label %1201

1194:                                             ; preds = %1167
  %1195 = load ptr, ptr %13, align 8, !tbaa !9
  %1196 = load i32, ptr %21, align 4, !tbaa !5
  %1197 = sub nsw i32 %1196, 2
  %1198 = sext i32 %1197 to i64
  %1199 = getelementptr inbounds double, ptr %1195, i64 %1198
  %1200 = load double, ptr %1199, align 8, !tbaa !11
  br label %1201

1201:                                             ; preds = %1194, %1187
  %1202 = phi double [ %1193, %1187 ], [ %1200, %1194 ]
  %1203 = fsub double %1173, %1202
  %1204 = load ptr, ptr %16, align 8, !tbaa !9
  %1205 = load i32, ptr %21, align 4, !tbaa !5
  %1206 = sub nsw i32 %1205, 2
  %1207 = sext i32 %1206 to i64
  %1208 = getelementptr inbounds double, ptr %1204, i64 %1207
  %1209 = load double, ptr %1208, align 8, !tbaa !11
  %1210 = load ptr, ptr %13, align 8, !tbaa !9
  %1211 = load i32, ptr %21, align 4, !tbaa !5
  %1212 = sub nsw i32 %1211, 2
  %1213 = sext i32 %1212 to i64
  %1214 = getelementptr inbounds double, ptr %1210, i64 %1213
  %1215 = load double, ptr %1214, align 8, !tbaa !11
  %1216 = fcmp oge double %1209, %1215
  br i1 %1216, label %1217, label %1224

1217:                                             ; preds = %1201
  %1218 = load ptr, ptr %13, align 8, !tbaa !9
  %1219 = load i32, ptr %21, align 4, !tbaa !5
  %1220 = sub nsw i32 %1219, 2
  %1221 = sext i32 %1220 to i64
  %1222 = getelementptr inbounds double, ptr %1218, i64 %1221
  %1223 = load double, ptr %1222, align 8, !tbaa !11
  br label %1231

1224:                                             ; preds = %1201
  %1225 = load ptr, ptr %16, align 8, !tbaa !9
  %1226 = load i32, ptr %21, align 4, !tbaa !5
  %1227 = sub nsw i32 %1226, 2
  %1228 = sext i32 %1227 to i64
  %1229 = getelementptr inbounds double, ptr %1225, i64 %1228
  %1230 = load double, ptr %1229, align 8, !tbaa !11
  br label %1231

1231:                                             ; preds = %1224, %1217
  %1232 = phi double [ %1223, %1217 ], [ %1230, %1224 ]
  %1233 = load ptr, ptr %15, align 8, !tbaa !9
  %1234 = load i32, ptr %21, align 4, !tbaa !5
  %1235 = sub nsw i32 %1234, 2
  %1236 = sext i32 %1235 to i64
  %1237 = getelementptr inbounds double, ptr %1233, i64 %1236
  %1238 = load double, ptr %1237, align 8, !tbaa !11
  %1239 = fsub double %1232, %1238
  %1240 = fadd double %1203, %1239
  br label %1242

1241:                                             ; preds = %1160
  br label %1242

1242:                                             ; preds = %1241, %1231
  %1243 = phi double [ %1240, %1231 ], [ 0.000000e+00, %1241 ]
  br label %1244

1244:                                             ; preds = %1242, %1146
  %1245 = phi double [ %1159, %1146 ], [ %1243, %1242 ]
  br label %1246

1246:                                             ; preds = %1244, %1124
  %1247 = phi double [ %1138, %1124 ], [ %1245, %1244 ]
  br label %1248

1248:                                             ; preds = %1246, %1107
  %1249 = phi double [ %1116, %1107 ], [ %1247, %1246 ]
  %1250 = fmul double %1099, %1249
  %1251 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1252 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1251, i32 0, i32 8
  %1253 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1252, i64 0, i64 8
  %1254 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1253, i32 0, i32 1
  %1255 = load i32, ptr %1254, align 4, !tbaa !15
  %1256 = icmp eq i32 %1255, 2
  %1257 = zext i1 %1256 to i64
  %1258 = select i1 %1256, double 2.000000e+00, double 1.000000e+00
  %1259 = fdiv double %1250, %1258
  %1260 = fadd double %1094, %1259
  %1261 = fcmp ole double %1065, %1260
  br i1 %1261, label %1262, label %1426

1262:                                             ; preds = %1248
  %1263 = load ptr, ptr %16, align 8, !tbaa !9
  %1264 = load i32, ptr %21, align 4, !tbaa !5
  %1265 = sub nsw i32 %1264, 1
  %1266 = sext i32 %1265 to i64
  %1267 = getelementptr inbounds double, ptr %1263, i64 %1266
  %1268 = load double, ptr %1267, align 8, !tbaa !11
  %1269 = load ptr, ptr %13, align 8, !tbaa !9
  %1270 = load i32, ptr %21, align 4, !tbaa !5
  %1271 = sub nsw i32 %1270, 1
  %1272 = sext i32 %1271 to i64
  %1273 = getelementptr inbounds double, ptr %1269, i64 %1272
  %1274 = load double, ptr %1273, align 8, !tbaa !11
  %1275 = fcmp oge double %1268, %1274
  %1276 = zext i1 %1275 to i64
  %1277 = select i1 %1275, i32 1, i32 -1
  %1278 = icmp eq i32 %1277, 1
  br i1 %1278, label %1279, label %1333

1279:                                             ; preds = %1262
  %1280 = load ptr, ptr %16, align 8, !tbaa !9
  %1281 = load i32, ptr %21, align 4, !tbaa !5
  %1282 = sub nsw i32 %1281, 1
  %1283 = sext i32 %1282 to i64
  %1284 = getelementptr inbounds double, ptr %1280, i64 %1283
  %1285 = load double, ptr %1284, align 8, !tbaa !11
  %1286 = load ptr, ptr %16, align 8, !tbaa !9
  %1287 = load i32, ptr %21, align 4, !tbaa !5
  %1288 = sub nsw i32 %1287, 2
  %1289 = sext i32 %1288 to i64
  %1290 = getelementptr inbounds double, ptr %1286, i64 %1289
  %1291 = load double, ptr %1290, align 8, !tbaa !11
  %1292 = fcmp ogt double %1285, %1291
  br i1 %1292, label %1293, label %1333

1293:                                             ; preds = %1279
  %1294 = load ptr, ptr %16, align 8, !tbaa !9
  %1295 = load i32, ptr %21, align 4, !tbaa !5
  %1296 = sub nsw i32 %1295, 2
  %1297 = sext i32 %1296 to i64
  %1298 = getelementptr inbounds double, ptr %1294, i64 %1297
  %1299 = load double, ptr %1298, align 8, !tbaa !11
  %1300 = load ptr, ptr %16, align 8, !tbaa !9
  %1301 = load i32, ptr %21, align 4, !tbaa !5
  %1302 = sub nsw i32 %1301, 3
  %1303 = sext i32 %1302 to i64
  %1304 = getelementptr inbounds double, ptr %1300, i64 %1303
  %1305 = load double, ptr %1304, align 8, !tbaa !11
  %1306 = fcmp ogt double %1299, %1305
  br i1 %1306, label %1307, label %1333

1307:                                             ; preds = %1293
  %1308 = load ptr, ptr %13, align 8, !tbaa !9
  %1309 = load i32, ptr %21, align 4, !tbaa !5
  %1310 = sext i32 %1309 to i64
  %1311 = getelementptr inbounds double, ptr %1308, i64 %1310
  %1312 = load double, ptr %1311, align 8, !tbaa !11
  %1313 = load ptr, ptr %16, align 8, !tbaa !9
  %1314 = load i32, ptr %21, align 4, !tbaa !5
  %1315 = sub nsw i32 %1314, 1
  %1316 = sext i32 %1315 to i64
  %1317 = getelementptr inbounds double, ptr %1313, i64 %1316
  %1318 = load double, ptr %1317, align 8, !tbaa !11
  %1319 = fcmp ogt double %1312, %1318
  br i1 %1319, label %1320, label %1333

1320:                                             ; preds = %1307
  %1321 = load ptr, ptr %16, align 8, !tbaa !9
  %1322 = load i32, ptr %21, align 4, !tbaa !5
  %1323 = sext i32 %1322 to i64
  %1324 = getelementptr inbounds double, ptr %1321, i64 %1323
  %1325 = load double, ptr %1324, align 8, !tbaa !11
  %1326 = load ptr, ptr %13, align 8, !tbaa !9
  %1327 = load i32, ptr %21, align 4, !tbaa !5
  %1328 = sub nsw i32 %1327, 3
  %1329 = sext i32 %1328 to i64
  %1330 = getelementptr inbounds double, ptr %1326, i64 %1329
  %1331 = load double, ptr %1330, align 8, !tbaa !11
  %1332 = fcmp olt double %1325, %1331
  br i1 %1332, label %1404, label %1333

1333:                                             ; preds = %1320, %1307, %1293, %1279, %1262
  %1334 = load ptr, ptr %16, align 8, !tbaa !9
  %1335 = load i32, ptr %21, align 4, !tbaa !5
  %1336 = sub nsw i32 %1335, 1
  %1337 = sext i32 %1336 to i64
  %1338 = getelementptr inbounds double, ptr %1334, i64 %1337
  %1339 = load double, ptr %1338, align 8, !tbaa !11
  %1340 = load ptr, ptr %13, align 8, !tbaa !9
  %1341 = load i32, ptr %21, align 4, !tbaa !5
  %1342 = sub nsw i32 %1341, 1
  %1343 = sext i32 %1342 to i64
  %1344 = getelementptr inbounds double, ptr %1340, i64 %1343
  %1345 = load double, ptr %1344, align 8, !tbaa !11
  %1346 = fcmp oge double %1339, %1345
  %1347 = zext i1 %1346 to i64
  %1348 = select i1 %1346, i32 1, i32 -1
  %1349 = icmp eq i32 %1348, -1
  br i1 %1349, label %1350, label %1426

1350:                                             ; preds = %1333
  %1351 = load ptr, ptr %16, align 8, !tbaa !9
  %1352 = load i32, ptr %21, align 4, !tbaa !5
  %1353 = sub nsw i32 %1352, 1
  %1354 = sext i32 %1353 to i64
  %1355 = getelementptr inbounds double, ptr %1351, i64 %1354
  %1356 = load double, ptr %1355, align 8, !tbaa !11
  %1357 = load ptr, ptr %16, align 8, !tbaa !9
  %1358 = load i32, ptr %21, align 4, !tbaa !5
  %1359 = sub nsw i32 %1358, 2
  %1360 = sext i32 %1359 to i64
  %1361 = getelementptr inbounds double, ptr %1357, i64 %1360
  %1362 = load double, ptr %1361, align 8, !tbaa !11
  %1363 = fcmp olt double %1356, %1362
  br i1 %1363, label %1364, label %1426

1364:                                             ; preds = %1350
  %1365 = load ptr, ptr %16, align 8, !tbaa !9
  %1366 = load i32, ptr %21, align 4, !tbaa !5
  %1367 = sub nsw i32 %1366, 2
  %1368 = sext i32 %1367 to i64
  %1369 = getelementptr inbounds double, ptr %1365, i64 %1368
  %1370 = load double, ptr %1369, align 8, !tbaa !11
  %1371 = load ptr, ptr %16, align 8, !tbaa !9
  %1372 = load i32, ptr %21, align 4, !tbaa !5
  %1373 = sub nsw i32 %1372, 3
  %1374 = sext i32 %1373 to i64
  %1375 = getelementptr inbounds double, ptr %1371, i64 %1374
  %1376 = load double, ptr %1375, align 8, !tbaa !11
  %1377 = fcmp olt double %1370, %1376
  br i1 %1377, label %1378, label %1426

1378:                                             ; preds = %1364
  %1379 = load ptr, ptr %13, align 8, !tbaa !9
  %1380 = load i32, ptr %21, align 4, !tbaa !5
  %1381 = sext i32 %1380 to i64
  %1382 = getelementptr inbounds double, ptr %1379, i64 %1381
  %1383 = load double, ptr %1382, align 8, !tbaa !11
  %1384 = load ptr, ptr %16, align 8, !tbaa !9
  %1385 = load i32, ptr %21, align 4, !tbaa !5
  %1386 = sub nsw i32 %1385, 1
  %1387 = sext i32 %1386 to i64
  %1388 = getelementptr inbounds double, ptr %1384, i64 %1387
  %1389 = load double, ptr %1388, align 8, !tbaa !11
  %1390 = fcmp olt double %1383, %1389
  br i1 %1390, label %1391, label %1426

1391:                                             ; preds = %1378
  %1392 = load ptr, ptr %16, align 8, !tbaa !9
  %1393 = load i32, ptr %21, align 4, !tbaa !5
  %1394 = sext i32 %1393 to i64
  %1395 = getelementptr inbounds double, ptr %1392, i64 %1394
  %1396 = load double, ptr %1395, align 8, !tbaa !11
  %1397 = load ptr, ptr %13, align 8, !tbaa !9
  %1398 = load i32, ptr %21, align 4, !tbaa !5
  %1399 = sub nsw i32 %1398, 3
  %1400 = sext i32 %1399 to i64
  %1401 = getelementptr inbounds double, ptr %1397, i64 %1400
  %1402 = load double, ptr %1401, align 8, !tbaa !11
  %1403 = fcmp ogt double %1396, %1402
  br i1 %1403, label %1404, label %1426

1404:                                             ; preds = %1391, %1320
  %1405 = load ptr, ptr %16, align 8, !tbaa !9
  %1406 = load i32, ptr %21, align 4, !tbaa !5
  %1407 = sub nsw i32 %1406, 1
  %1408 = sext i32 %1407 to i64
  %1409 = getelementptr inbounds double, ptr %1405, i64 %1408
  %1410 = load double, ptr %1409, align 8, !tbaa !11
  %1411 = load ptr, ptr %13, align 8, !tbaa !9
  %1412 = load i32, ptr %21, align 4, !tbaa !5
  %1413 = sub nsw i32 %1412, 1
  %1414 = sext i32 %1413 to i64
  %1415 = getelementptr inbounds double, ptr %1411, i64 %1414
  %1416 = load double, ptr %1415, align 8, !tbaa !11
  %1417 = fcmp oge double %1410, %1416
  %1418 = zext i1 %1417 to i64
  %1419 = select i1 %1417, i32 1, i32 -1
  %1420 = mul nsw i32 %1419, 100
  %1421 = load ptr, ptr %19, align 8, !tbaa !9
  %1422 = load i32, ptr %22, align 4, !tbaa !5
  %1423 = add nsw i32 %1422, 1
  store i32 %1423, ptr %22, align 4, !tbaa !5
  %1424 = sext i32 %1422 to i64
  %1425 = getelementptr inbounds i32, ptr %1421, i64 %1424
  store i32 %1420, ptr %1425, align 4, !tbaa !5
  br label %1432

1426:                                             ; preds = %1391, %1378, %1364, %1350, %1333, %1248, %1045, %842, %639, %419, %387, %355
  %1427 = load ptr, ptr %19, align 8, !tbaa !9
  %1428 = load i32, ptr %22, align 4, !tbaa !5
  %1429 = add nsw i32 %1428, 1
  store i32 %1429, ptr %22, align 4, !tbaa !5
  %1430 = sext i32 %1428 to i64
  %1431 = getelementptr inbounds i32, ptr %1427, i64 %1430
  store i32 0, ptr %1431, align 4, !tbaa !5
  br label %1432

1432:                                             ; preds = %1426, %1404
  store i32 3, ptr %23, align 4, !tbaa !5
  br label %1433

1433:                                             ; preds = %1731, %1432
  %1434 = load i32, ptr %23, align 4, !tbaa !5
  %1435 = icmp sge i32 %1434, 2
  br i1 %1435, label %1436, label %1734

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

1443:                                             ; preds = %1436
  %1444 = load ptr, ptr %16, align 8, !tbaa !9
  %1445 = load i32, ptr %21, align 4, !tbaa !5
  %1446 = load i32, ptr %23, align 4, !tbaa !5
  %1447 = sub nsw i32 %1445, %1446
  %1448 = sext i32 %1447 to i64
  %1449 = getelementptr inbounds double, ptr %1444, i64 %1448
  %1450 = load double, ptr %1449, align 8, !tbaa !11
  %1451 = load ptr, ptr %13, align 8, !tbaa !9
  %1452 = load i32, ptr %21, align 4, !tbaa !5
  %1453 = load i32, ptr %23, align 4, !tbaa !5
  %1454 = sub nsw i32 %1452, %1453
  %1455 = sext i32 %1454 to i64
  %1456 = getelementptr inbounds double, ptr %1451, i64 %1455
  %1457 = load double, ptr %1456, align 8, !tbaa !11
  %1458 = fsub double %1450, %1457
  %1459 = call double @llvm.fabs.f64(double %1458)
  br label %1579

1460:                                             ; preds = %1436
  %1461 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1462 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1461, i32 0, i32 8
  %1463 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1462, i64 0, i64 8
  %1464 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1463, i32 0, i32 1
  %1465 = load i32, ptr %1464, align 4, !tbaa !15
  %1466 = icmp eq i32 %1465, 1
  br i1 %1466, label %1467, label %1483

1467:                                             ; preds = %1460
  %1468 = load ptr, ptr %14, align 8, !tbaa !9
  %1469 = load i32, ptr %21, align 4, !tbaa !5
  %1470 = load i32, ptr %23, align 4, !tbaa !5
  %1471 = sub nsw i32 %1469, %1470
  %1472 = sext i32 %1471 to i64
  %1473 = getelementptr inbounds double, ptr %1468, i64 %1472
  %1474 = load double, ptr %1473, align 8, !tbaa !11
  %1475 = load ptr, ptr %15, align 8, !tbaa !9
  %1476 = load i32, ptr %21, align 4, !tbaa !5
  %1477 = load i32, ptr %23, align 4, !tbaa !5
  %1478 = sub nsw i32 %1476, %1477
  %1479 = sext i32 %1478 to i64
  %1480 = getelementptr inbounds double, ptr %1475, i64 %1479
  %1481 = load double, ptr %1480, align 8, !tbaa !11
  %1482 = fsub double %1474, %1481
  br label %1577

1483:                                             ; preds = %1460
  %1484 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1485 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1484, i32 0, i32 8
  %1486 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1485, i64 0, i64 8
  %1487 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1486, i32 0, i32 1
  %1488 = load i32, ptr %1487, align 4, !tbaa !15
  %1489 = icmp eq i32 %1488, 2
  br i1 %1489, label %1490, label %1574

1490:                                             ; preds = %1483
  %1491 = load ptr, ptr %14, align 8, !tbaa !9
  %1492 = load i32, ptr %21, align 4, !tbaa !5
  %1493 = load i32, ptr %23, align 4, !tbaa !5
  %1494 = sub nsw i32 %1492, %1493
  %1495 = sext i32 %1494 to i64
  %1496 = getelementptr inbounds double, ptr %1491, i64 %1495
  %1497 = load double, ptr %1496, align 8, !tbaa !11
  %1498 = load ptr, ptr %16, align 8, !tbaa !9
  %1499 = load i32, ptr %21, 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
  %1505 = load ptr, ptr %13, align 8, !tbaa !9
  %1506 = load i32, ptr %21, align 4, !tbaa !5
  %1507 = load i32, ptr %23, align 4, !tbaa !5
  %1508 = sub nsw i32 %1506, %1507
  %1509 = sext i32 %1508 to i64
  %1510 = getelementptr inbounds double, ptr %1505, i64 %1509
  %1511 = load double, ptr %1510, align 8, !tbaa !11
  %1512 = fcmp oge double %1504, %1511
  br i1 %1512, label %1513, label %1521

1513:                                             ; preds = %1490
  %1514 = load ptr, ptr %16, align 8, !tbaa !9
  %1515 = load i32, ptr %21, align 4, !tbaa !5
  %1516 = load i32, ptr %23, align 4, !tbaa !5
  %1517 = sub nsw i32 %1515, %1516
  %1518 = sext i32 %1517 to i64
  %1519 = getelementptr inbounds double, ptr %1514, i64 %1518
  %1520 = load double, ptr %1519, align 8, !tbaa !11
  br label %1529

1521:                                             ; preds = %1490
  %1522 = load ptr, ptr %13, align 8, !tbaa !9
  %1523 = load i32, ptr %21, align 4, !tbaa !5
  %1524 = load i32, ptr %23, align 4, !tbaa !5
  %1525 = sub nsw i32 %1523, %1524
  %1526 = sext i32 %1525 to i64
  %1527 = getelementptr inbounds double, ptr %1522, i64 %1526
  %1528 = load double, ptr %1527, align 8, !tbaa !11
  br label %1529

1529:                                             ; preds = %1521, %1513
  %1530 = phi double [ %1520, %1513 ], [ %1528, %1521 ]
  %1531 = fsub double %1497, %1530
  %1532 = load ptr, ptr %16, align 8, !tbaa !9
  %1533 = load i32, ptr %21, align 4, !tbaa !5
  %1534 = load i32, ptr %23, align 4, !tbaa !5
  %1535 = sub nsw i32 %1533, %1534
  %1536 = sext i32 %1535 to i64
  %1537 = getelementptr inbounds double, ptr %1532, i64 %1536
  %1538 = load double, ptr %1537, align 8, !tbaa !11
  %1539 = load ptr, ptr %13, align 8, !tbaa !9
  %1540 = load i32, ptr %21, align 4, !tbaa !5
  %1541 = load i32, ptr %23, align 4, !tbaa !5
  %1542 = sub nsw i32 %1540, %1541
  %1543 = sext i32 %1542 to i64
  %1544 = getelementptr inbounds double, ptr %1539, i64 %1543
  %1545 = load double, ptr %1544, align 8, !tbaa !11
  %1546 = fcmp oge double %1538, %1545
  br i1 %1546, label %1547, label %1555

1547:                                             ; preds = %1529
  %1548 = load ptr, ptr %13, align 8, !tbaa !9
  %1549 = load i32, ptr %21, align 4, !tbaa !5
  %1550 = load i32, ptr %23, align 4, !tbaa !5
  %1551 = sub nsw i32 %1549, %1550
  %1552 = sext i32 %1551 to i64
  %1553 = getelementptr inbounds double, ptr %1548, i64 %1552
  %1554 = load double, ptr %1553, align 8, !tbaa !11
  br label %1563

1555:                                             ; preds = %1529
  %1556 = load ptr, ptr %16, align 8, !tbaa !9
  %1557 = load i32, ptr %21, align 4, !tbaa !5
  %1558 = load i32, ptr %23, align 4, !tbaa !5
  %1559 = sub nsw i32 %1557, %1558
  %1560 = sext i32 %1559 to i64
  %1561 = getelementptr inbounds double, ptr %1556, i64 %1560
  %1562 = load double, ptr %1561, align 8, !tbaa !11
  br label %1563

1563:                                             ; preds = %1555, %1547
  %1564 = phi double [ %1554, %1547 ], [ %1562, %1555 ]
  %1565 = load ptr, ptr %15, align 8, !tbaa !9
  %1566 = load i32, ptr %21, align 4, !tbaa !5
  %1567 = load i32, ptr %23, align 4, !tbaa !5
  %1568 = sub nsw i32 %1566, %1567
  %1569 = sext i32 %1568 to i64
  %1570 = getelementptr inbounds double, ptr %1565, i64 %1569
  %1571 = load double, ptr %1570, align 8, !tbaa !11
  %1572 = fsub double %1564, %1571
  %1573 = fadd double %1531, %1572
  br label %1575

1574:                                             ; preds = %1483
  br label %1575

1575:                                             ; preds = %1574, %1563
  %1576 = phi double [ %1573, %1563 ], [ 0.000000e+00, %1574 ]
  br label %1577

1577:                                             ; preds = %1575, %1467
  %1578 = phi double [ %1482, %1467 ], [ %1576, %1575 ]
  br label %1579

1579:                                             ; preds = %1577, %1443
  %1580 = phi double [ %1459, %1443 ], [ %1578, %1577 ]
  %1581 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1582 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1581, i32 0, i32 8
  %1583 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1582, i64 0, i64 8
  %1584 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1583, i32 0, i32 1
  %1585 = load i32, ptr %1584, align 4, !tbaa !15
  %1586 = icmp eq i32 %1585, 0
  br i1 %1586, label %1587, label %1604

1587:                                             ; preds = %1579
  %1588 = load ptr, ptr %16, align 8, !tbaa !9
  %1589 = load i32, ptr %24, align 4, !tbaa !5
  %1590 = load i32, ptr %23, align 4, !tbaa !5
  %1591 = sub nsw i32 %1589, %1590
  %1592 = sext i32 %1591 to i64
  %1593 = getelementptr inbounds double, ptr %1588, i64 %1592
  %1594 = load double, ptr %1593, align 8, !tbaa !11
  %1595 = load ptr, ptr %13, align 8, !tbaa !9
  %1596 = load i32, ptr %24, align 4, !tbaa !5
  %1597 = load i32, ptr %23, align 4, !tbaa !5
  %1598 = sub nsw i32 %1596, %1597
  %1599 = sext i32 %1598 to i64
  %1600 = getelementptr inbounds double, ptr %1595, i64 %1599
  %1601 = load double, ptr %1600, align 8, !tbaa !11
  %1602 = fsub double %1594, %1601
  %1603 = call double @llvm.fabs.f64(double %1602)
  br label %1723

1604:                                             ; preds = %1579
  %1605 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1606 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1605, i32 0, i32 8
  %1607 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1606, i64 0, i64 8
  %1608 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1607, i32 0, i32 1
  %1609 = load i32, ptr %1608, align 4, !tbaa !15
  %1610 = icmp eq i32 %1609, 1
  br i1 %1610, label %1611, label %1627

1611:                                             ; preds = %1604
  %1612 = load ptr, ptr %14, align 8, !tbaa !9
  %1613 = load i32, ptr %24, align 4, !tbaa !5
  %1614 = load i32, ptr %23, align 4, !tbaa !5
  %1615 = sub nsw i32 %1613, %1614
  %1616 = sext i32 %1615 to i64
  %1617 = getelementptr inbounds double, ptr %1612, i64 %1616
  %1618 = load double, ptr %1617, align 8, !tbaa !11
  %1619 = load ptr, ptr %15, align 8, !tbaa !9
  %1620 = load i32, ptr %24, align 4, !tbaa !5
  %1621 = load i32, ptr %23, align 4, !tbaa !5
  %1622 = sub nsw i32 %1620, %1621
  %1623 = sext i32 %1622 to i64
  %1624 = getelementptr inbounds double, ptr %1619, i64 %1623
  %1625 = load double, ptr %1624, align 8, !tbaa !11
  %1626 = fsub double %1618, %1625
  br label %1721

1627:                                             ; preds = %1604
  %1628 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1629 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1628, i32 0, i32 8
  %1630 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1629, i64 0, i64 8
  %1631 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1630, i32 0, i32 1
  %1632 = load i32, ptr %1631, align 4, !tbaa !15
  %1633 = icmp eq i32 %1632, 2
  br i1 %1633, label %1634, label %1718

1634:                                             ; preds = %1627
  %1635 = load ptr, ptr %14, align 8, !tbaa !9
  %1636 = load i32, ptr %24, align 4, !tbaa !5
  %1637 = load i32, ptr %23, align 4, !tbaa !5
  %1638 = sub nsw i32 %1636, %1637
  %1639 = sext i32 %1638 to i64
  %1640 = getelementptr inbounds double, ptr %1635, i64 %1639
  %1641 = load double, ptr %1640, align 8, !tbaa !11
  %1642 = load ptr, ptr %16, align 8, !tbaa !9
  %1643 = load i32, ptr %24, align 4, !tbaa !5
  %1644 = load i32, ptr %23, align 4, !tbaa !5
  %1645 = sub nsw i32 %1643, %1644
  %1646 = sext i32 %1645 to i64
  %1647 = getelementptr inbounds double, ptr %1642, i64 %1646
  %1648 = load double, ptr %1647, align 8, !tbaa !11
  %1649 = load ptr, ptr %13, align 8, !tbaa !9
  %1650 = load i32, ptr %24, align 4, !tbaa !5
  %1651 = load i32, ptr %23, align 4, !tbaa !5
  %1652 = sub nsw i32 %1650, %1651
  %1653 = sext i32 %1652 to i64
  %1654 = getelementptr inbounds double, ptr %1649, i64 %1653
  %1655 = load double, ptr %1654, align 8, !tbaa !11
  %1656 = fcmp oge double %1648, %1655
  br i1 %1656, label %1657, label %1665

1657:                                             ; preds = %1634
  %1658 = load ptr, ptr %16, align 8, !tbaa !9
  %1659 = load i32, ptr %24, align 4, !tbaa !5
  %1660 = load i32, ptr %23, align 4, !tbaa !5
  %1661 = sub nsw i32 %1659, %1660
  %1662 = sext i32 %1661 to i64
  %1663 = getelementptr inbounds double, ptr %1658, i64 %1662
  %1664 = load double, ptr %1663, align 8, !tbaa !11
  br label %1673

1665:                                             ; preds = %1634
  %1666 = load ptr, ptr %13, align 8, !tbaa !9
  %1667 = load i32, ptr %24, align 4, !tbaa !5
  %1668 = load i32, ptr %23, align 4, !tbaa !5
  %1669 = sub nsw i32 %1667, %1668
  %1670 = sext i32 %1669 to i64
  %1671 = getelementptr inbounds double, ptr %1666, i64 %1670
  %1672 = load double, ptr %1671, align 8, !tbaa !11
  br label %1673

1673:                                             ; preds = %1665, %1657
  %1674 = phi double [ %1664, %1657 ], [ %1672, %1665 ]
  %1675 = fsub double %1641, %1674
  %1676 = load ptr, ptr %16, align 8, !tbaa !9
  %1677 = load i32, ptr %24, align 4, !tbaa !5
  %1678 = load i32, ptr %23, align 4, !tbaa !5
  %1679 = sub nsw i32 %1677, %1678
  %1680 = sext i32 %1679 to i64
  %1681 = getelementptr inbounds double, ptr %1676, i64 %1680
  %1682 = load double, ptr %1681, align 8, !tbaa !11
  %1683 = load ptr, ptr %13, align 8, !tbaa !9
  %1684 = load i32, ptr %24, align 4, !tbaa !5
  %1685 = load i32, ptr %23, align 4, !tbaa !5
  %1686 = sub nsw i32 %1684, %1685
  %1687 = sext i32 %1686 to i64
  %1688 = getelementptr inbounds double, ptr %1683, i64 %1687
  %1689 = load double, ptr %1688, align 8, !tbaa !11
  %1690 = fcmp oge double %1682, %1689
  br i1 %1690, label %1691, label %1699

1691:                                             ; preds = %1673
  %1692 = load ptr, ptr %13, align 8, !tbaa !9
  %1693 = load i32, ptr %24, align 4, !tbaa !5
  %1694 = load i32, ptr %23, align 4, !tbaa !5
  %1695 = sub nsw i32 %1693, %1694
  %1696 = sext i32 %1695 to i64
  %1697 = getelementptr inbounds double, ptr %1692, i64 %1696
  %1698 = load double, ptr %1697, align 8, !tbaa !11
  br label %1707

1699:                                             ; preds = %1673
  %1700 = load ptr, ptr %16, align 8, !tbaa !9
  %1701 = load i32, ptr %24, align 4, !tbaa !5
  %1702 = load i32, ptr %23, align 4, !tbaa !5
  %1703 = sub nsw i32 %1701, %1702
  %1704 = sext i32 %1703 to i64
  %1705 = getelementptr inbounds double, ptr %1700, i64 %1704
  %1706 = load double, ptr %1705, align 8, !tbaa !11
  br label %1707

1707:                                             ; preds = %1699, %1691
  %1708 = phi double [ %1698, %1691 ], [ %1706, %1699 ]
  %1709 = load ptr, ptr %15, align 8, !tbaa !9
  %1710 = load i32, ptr %24, align 4, !tbaa !5
  %1711 = load i32, ptr %23, align 4, !tbaa !5
  %1712 = sub nsw i32 %1710, %1711
  %1713 = sext i32 %1712 to i64
  %1714 = getelementptr inbounds double, ptr %1709, i64 %1713
  %1715 = load double, ptr %1714, align 8, !tbaa !11
  %1716 = fsub double %1708, %1715
  %1717 = fadd double %1675, %1716
  br label %1719

1718:                                             ; preds = %1627
  br label %1719

1719:                                             ; preds = %1718, %1707
  %1720 = phi double [ %1717, %1707 ], [ 0.000000e+00, %1718 ]
  br label %1721

1721:                                             ; preds = %1719, %1611
  %1722 = phi double [ %1626, %1611 ], [ %1720, %1719 ]
  br label %1723

1723:                                             ; preds = %1721, %1587
  %1724 = phi double [ %1603, %1587 ], [ %1722, %1721 ]
  %1725 = fsub double %1580, %1724
  %1726 = load i32, ptr %23, align 4, !tbaa !5
  %1727 = sext i32 %1726 to i64
  %1728 = getelementptr inbounds [4 x double], ptr %20, i64 0, i64 %1727
  %1729 = load double, ptr %1728, align 8, !tbaa !11
  %1730 = fadd double %1729, %1725
  store double %1730, ptr %1728, align 8, !tbaa !11
  br label %1731

1731:                                             ; preds = %1723
  %1732 = load i32, ptr %23, align 4, !tbaa !5
  %1733 = add nsw i32 %1732, -1
  store i32 %1733, ptr %23, align 4, !tbaa !5
  br label %1433, !llvm.loop !19

1734:                                             ; preds = %1433
  %1735 = load i32, ptr %21, align 4, !tbaa !5
  %1736 = add nsw i32 %1735, 1
  store i32 %1736, ptr %21, align 4, !tbaa !5
  %1737 = load i32, ptr %24, align 4, !tbaa !5
  %1738 = add nsw i32 %1737, 1
  store i32 %1738, ptr %24, align 4, !tbaa !5
  br label %1739

1739:                                             ; preds = %1734
  %1740 = load i32, ptr %21, align 4, !tbaa !5
  %1741 = load i32, ptr %12, align 4, !tbaa !5
  %1742 = icmp sle i32 %1740, %1741
  br i1 %1742, label %355, label %1743, !llvm.loop !20

1743:                                             ; preds = %1739
  %1744 = load i32, ptr %22, align 4, !tbaa !5
  %1745 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 %1744, ptr %1745, align 4, !tbaa !5
  %1746 = load i32, ptr %11, align 4, !tbaa !5
  %1747 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 %1746, ptr %1747, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %26, align 4
  br label %1748

1748:                                             ; preds = %1743, %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 32, ptr %20) #3
  %1749 = load i32, ptr %10, align 4
  ret i32 %1749
}

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

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

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

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

25:                                               ; preds = %21
  %26 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %27 = getelementptr inbounds i8, ptr %26, i64 408
  %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 404
  %32 = load i32, ptr %31, align 4, !tbaa !14
  switch i32 %32, label %.preheader [
    i32 0, label %.thread.us.preheader
    i32 1, label %.thread495.us.preheader
    i32 2, label %.thread496.us.preheader
  ]

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

.thread495.us.preheader:                          ; preds = %.lr.ph
  %35 = sext i32 %29 to i64
  %36 = zext nneg i32 %spec.select to i64
  br label %.thread495.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.iv566 = phi i64 [ %37, %.thread.us.preheader ], [ %indvars.iv.next567, %.thread.us ]
  %39 = phi <2 x double> [ zeroinitializer, %.thread.us.preheader ], [ %47, %.thread.us ]
  %40 = add nsw i64 %indvars.iv566, -3
  %41 = getelementptr inbounds double, ptr %5, i64 %40
  %42 = getelementptr inbounds double, ptr %2, i64 %40
  %43 = load <2 x double>, ptr %41, align 8, !tbaa !15
  %44 = load <2 x double>, ptr %42, align 8, !tbaa !15
  %45 = fsub <2 x double> %43, %44
  %46 = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %45)
  %47 = fadd <2 x double> %46, %39
  %indvars.iv.next567 = add nsw i64 %indvars.iv566, 1
  %48 = icmp slt i64 %indvars.iv.next567, %38
  br i1 %48, label %.thread.us, label %.preheader, !llvm.loop !16

.thread495.us:                                    ; preds = %.thread495.us.preheader, %.thread495.us
  %indvars.iv563 = phi i64 [ %35, %.thread495.us.preheader ], [ %indvars.iv.next564, %.thread495.us ]
  %49 = phi <2 x double> [ zeroinitializer, %.thread495.us.preheader ], [ %56, %.thread495.us ]
  %50 = add nsw i64 %indvars.iv563, -3
  %51 = getelementptr inbounds double, ptr %3, i64 %50
  %52 = getelementptr inbounds double, ptr %4, i64 %50
  %53 = load <2 x double>, ptr %51, align 8, !tbaa !15
  %54 = load <2 x double>, ptr %52, align 8, !tbaa !15
  %55 = fsub <2 x double> %53, %54
  %56 = fadd <2 x double> %55, %49
  %indvars.iv.next564 = add nsw i64 %indvars.iv563, 1
  %57 = icmp slt i64 %indvars.iv.next564, %36
  br i1 %57, label %.thread495.us, label %.preheader, !llvm.loop !16

.thread496.us:                                    ; preds = %.thread496.us.preheader, %.thread496.us
  %indvars.iv = phi i64 [ %33, %.thread496.us.preheader ], [ %indvars.iv.next, %.thread496.us ]
  %58 = phi <2 x double> [ zeroinitializer, %.thread496.us.preheader ], [ %74, %.thread496.us ]
  %59 = add nsw i64 %indvars.iv, -3
  %60 = getelementptr inbounds double, ptr %3, i64 %59
  %61 = getelementptr inbounds double, ptr %5, i64 %59
  %62 = getelementptr inbounds double, ptr %2, i64 %59
  %63 = getelementptr inbounds double, ptr %4, i64 %59
  %64 = load <2 x double>, ptr %60, align 8, !tbaa !15
  %65 = load <2 x double>, ptr %61, align 8, !tbaa !15
  %66 = load <2 x double>, ptr %62, align 8, !tbaa !15
  %67 = fcmp ult <2 x double> %65, %66
  %68 = select <2 x i1> %67, <2 x double> %66, <2 x double> %65
  %69 = fsub <2 x double> %64, %68
  %70 = select <2 x i1> %67, <2 x double> %65, <2 x double> %66
  %71 = load <2 x double>, ptr %63, align 8, !tbaa !15
  %72 = fsub <2 x double> %70, %71
  %73 = fadd <2 x double> %69, %72
  %74 = fadd <2 x double> %73, %58
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %75 = icmp slt i64 %indvars.iv.next, %34
  br i1 %75, label %.thread496.us, label %.preheader, !llvm.loop !16

.preheader:                                       ; preds = %.thread496.us, %.thread495.us, %.thread.us, %.lr.ph, %25
  %76 = phi <2 x double> [ zeroinitializer, %25 ], [ zeroinitializer, %.lr.ph ], [ %47, %.thread.us ], [ %56, %.thread495.us ], [ %74, %.thread496.us ]
  %77 = getelementptr inbounds i8, ptr %26, i64 404
  %78 = getelementptr inbounds i8, ptr %26, i64 416
  %79 = sext i32 %22 to i64
  %80 = zext nneg i32 %0 to i64
  %smax = tail call i64 @llvm.smax.i64(i64 %79, i64 %80)
  %81 = sext i32 %1 to i64
  %82 = sext i32 %29 to i64
  br label %83

83:                                               ; preds = %.preheader, %.split544.us
  %indvars.iv585 = phi i64 [ %82, %.preheader ], [ %indvars.iv.next586, %.split544.us ]
  %indvars.iv583 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next584, %.split544.us ]
  %indvars.iv581 = phi i64 [ %smax, %.preheader ], [ %indvars.iv.next582, %.split544.us ]
  %84 = phi <2 x double> [ %76, %.preheader ], [ %320, %.split544.us ]
  %85 = add nsw i64 %indvars.iv581, -3
  %86 = getelementptr inbounds double, ptr %5, i64 %85
  %87 = load double, ptr %86, align 8, !tbaa !15
  %88 = getelementptr inbounds double, ptr %2, i64 %85
  %89 = load double, ptr %88, align 8, !tbaa !15
  %90 = fcmp ult double %87, %89
  %91 = add nsw i64 %indvars.iv581, -2
  %92 = getelementptr inbounds double, ptr %5, i64 %91
  %93 = load double, ptr %92, align 8, !tbaa !15
  %94 = getelementptr inbounds double, ptr %2, i64 %91
  %95 = load double, ptr %94, align 8, !tbaa !15
  %96 = fcmp oge double %93, %95
  %97 = xor i1 %90, %96
  br i1 %97, label %98, label %.thread508

98:                                               ; preds = %83
  %99 = add nsw i64 %indvars.iv581, -1
  %100 = getelementptr inbounds double, ptr %5, i64 %99
  %101 = load double, ptr %100, align 8, !tbaa !15
  %102 = getelementptr inbounds double, ptr %2, i64 %99
  %103 = load double, ptr %102, align 8, !tbaa !15
  %104 = fcmp oge double %101, %103
  %105 = xor i1 %96, %104
  br i1 %105, label %.thread508, label %106

106:                                              ; preds = %98
  %107 = getelementptr inbounds double, ptr %5, i64 %indvars.iv581
  %108 = load double, ptr %107, align 8, !tbaa !15
  %109 = getelementptr inbounds double, ptr %2, i64 %indvars.iv581
  %110 = load double, ptr %109, align 8, !tbaa !15
  %111 = fcmp oge double %108, %110
  %112 = xor i1 %104, %111
  br i1 %112, label %113, label %.thread508

113:                                              ; preds = %106
  %114 = fcmp olt double %89, %87
  %.484 = select i1 %114, double %89, double %87
  %115 = load double, ptr %78, align 8, !tbaa !18
  %116 = load i32, ptr %27, align 8, !tbaa !11
  %.not477 = icmp eq i32 %116, 0
  br i1 %.not477, label %117, label %136

117:                                              ; preds = %113
  %118 = load i32, ptr %77, align 4, !tbaa !14
  switch i32 %118, label %.thread [
    i32 0, label %119
    i32 1, label %122
    i32 2, label %.thread602
  ]

119:                                              ; preds = %117
  %120 = fsub double %87, %89
  %121 = tail call double @llvm.fabs.f64(double %120)
  br label %.thread

122:                                              ; preds = %117
  %123 = getelementptr inbounds double, ptr %3, i64 %85
  %124 = load double, ptr %123, align 8, !tbaa !15
  %125 = getelementptr inbounds double, ptr %4, i64 %85
  %126 = load double, ptr %125, align 8, !tbaa !15
  %127 = fsub double %124, %126
  br label %.thread

.thread602:                                       ; preds = %117
  %128 = getelementptr inbounds double, ptr %3, i64 %85
  %129 = load double, ptr %128, align 8, !tbaa !15
  %.485 = select i1 %90, double %89, double %87
  %130 = fsub double %129, %.485
  %131 = select i1 %90, double %87, double %89
  %132 = getelementptr inbounds double, ptr %4, i64 %85
  %133 = load double, ptr %132, align 8, !tbaa !15
  %134 = fsub double %131, %133
  %135 = fadd double %130, %134
  br label %.thread

136:                                              ; preds = %113
  %137 = sitofp i32 %116 to double
  %138 = extractelement <2 x double> %84, i64 0
  %139 = fdiv double %138, %137
  %.pre = load i32, ptr %77, align 4, !tbaa !14
  %.pre.fr = freeze i32 %.pre
  %140 = icmp eq i32 %.pre.fr, 2
  br i1 %140, label %141, label %.thread

141:                                              ; preds = %136
  br label %.thread

.thread:                                          ; preds = %117, %122, %119, %.thread602, %136, %141
  %.pn = phi double [ %139, %136 ], [ %135, %.thread602 ], [ %139, %141 ], [ 0.000000e+00, %117 ], [ %127, %122 ], [ %121, %119 ]
  %142 = phi i32 [ %.pre.fr, %136 ], [ 2, %.thread602 ], [ %.pre.fr, %141 ], [ %118, %117 ], [ %118, %122 ], [ %118, %119 ]
  %143 = phi double [ 1.000000e+00, %136 ], [ 2.000000e+00, %.thread602 ], [ 2.000000e+00, %141 ], [ 1.000000e+00, %117 ], [ 1.000000e+00, %122 ], [ 1.000000e+00, %119 ]
  %144 = fmul double %115, %.pn
  %145 = fdiv double %144, %143
  %146 = fsub double %.484, %145
  %147 = fcmp ult double %95, %146
  br i1 %147, label %.thread508, label %148

148:                                              ; preds = %.thread
  %149 = fcmp ogt double %89, %87
  %.486 = select i1 %149, double %89, double %87
  br i1 %.not477, label %150, label %.thread497

150:                                              ; preds = %148
  switch i32 %142, label %169 [
    i32 0, label %151
    i32 1, label %154
    i32 2, label %160
  ]

151:                                              ; preds = %150
  %152 = fsub double %87, %89
  %153 = tail call double @llvm.fabs.f64(double %152)
  br label %169

154:                                              ; preds = %150
  %155 = getelementptr inbounds double, ptr %3, i64 %85
  %156 = load double, ptr %155, align 8, !tbaa !15
  %157 = getelementptr inbounds double, ptr %4, i64 %85
  %158 = load double, ptr %157, align 8, !tbaa !15
  %159 = fsub double %156, %158
  br label %169

160:                                              ; preds = %150
  %161 = getelementptr inbounds double, ptr %3, i64 %85
  %162 = load double, ptr %161, align 8, !tbaa !15
  %.487 = select i1 %90, double %89, double %87
  %163 = fsub double %162, %.487
  %164 = select i1 %90, double %87, double %89
  %165 = getelementptr inbounds double, ptr %4, i64 %85
  %166 = load double, ptr %165, align 8, !tbaa !15
  %167 = fsub double %164, %166
  %168 = fadd double %163, %167
  br label %169

169:                                              ; preds = %150, %151, %160, %154
  %170 = phi double [ %153, %151 ], [ %159, %154 ], [ %168, %160 ], [ 0.000000e+00, %150 ]
  %171 = fmul double %115, %170
  %172 = fdiv double %171, %143
  %173 = fadd double %.486, %172
  %174 = fcmp ugt double %95, %173
  br i1 %174, label %.thread508, label %189

.thread497:                                       ; preds = %148
  %175 = sitofp i32 %116 to double
  %176 = extractelement <2 x double> %84, i64 0
  %177 = fdiv double %176, %175
  %178 = fmul double %115, %177
  %179 = fdiv double %178, %143
  %180 = fadd double %.486, %179
  %181 = fcmp ugt double %95, %180
  br i1 %181, label %.thread508, label %.thread498

.thread498:                                       ; preds = %.thread497
  %182 = fcmp olt double %95, %93
  %.488499 = select i1 %182, double %95, double %93
  %183 = extractelement <2 x double> %84, i64 1
  %184 = fdiv double %183, %175
  %185 = fmul double %115, %184
  %186 = fdiv double %185, %143
  %187 = fsub double %.488499, %186
  %188 = fcmp ult double %103, %187
  br i1 %188, label %.thread508, label %.thread504

189:                                              ; preds = %169
  %190 = fcmp olt double %95, %93
  %.488 = select i1 %190, double %95, double %93
  switch i32 %142, label %210 [
    i32 0, label %191
    i32 1, label %194
    i32 2, label %200
  ]

191:                                              ; preds = %189
  %192 = fsub double %93, %95
  %193 = tail call double @llvm.fabs.f64(double %192)
  br label %210

194:                                              ; preds = %189
  %195 = getelementptr inbounds double, ptr %3, i64 %91
  %196 = load double, ptr %195, align 8, !tbaa !15
  %197 = getelementptr inbounds double, ptr %4, i64 %91
  %198 = load double, ptr %197, align 8, !tbaa !15
  %199 = fsub double %196, %198
  br label %210

200:                                              ; preds = %189
  %201 = getelementptr inbounds double, ptr %3, i64 %91
  %202 = load double, ptr %201, align 8, !tbaa !15
  %203 = fcmp ult double %93, %95
  %.489 = select i1 %203, double %95, double %93
  %204 = fsub double %202, %.489
  %205 = select i1 %203, double %93, double %95
  %206 = getelementptr inbounds double, ptr %4, i64 %91
  %207 = load double, ptr %206, align 8, !tbaa !15
  %208 = fsub double %205, %207
  %209 = fadd double %204, %208
  br label %210

210:                                              ; preds = %189, %191, %200, %194
  %211 = phi double [ %193, %191 ], [ %199, %194 ], [ %209, %200 ], [ 0.000000e+00, %189 ]
  %212 = fmul double %115, %211
  %213 = fdiv double %212, %143
  %214 = fsub double %.488, %213
  %215 = fcmp ult double %103, %214
  br i1 %215, label %.thread508, label %217

.thread504:                                       ; preds = %.thread498
  %216 = fcmp ogt double %95, %93
  %.490505 = select i1 %216, double %95, double %93
  br label %238

217:                                              ; preds = %210
  %218 = fcmp ogt double %95, %93
  %.490 = select i1 %218, double %95, double %93
  switch i32 %142, label %238 [
    i32 0, label %219
    i32 1, label %222
    i32 2, label %228
  ]

219:                                              ; preds = %217
  %220 = fsub double %93, %95
  %221 = tail call double @llvm.fabs.f64(double %220)
  br label %238

222:                                              ; preds = %217
  %223 = getelementptr inbounds double, ptr %3, i64 %91
  %224 = load double, ptr %223, align 8, !tbaa !15
  %225 = getelementptr inbounds double, ptr %4, i64 %91
  %226 = load double, ptr %225, align 8, !tbaa !15
  %227 = fsub double %224, %226
  br label %238

228:                                              ; preds = %217
  %229 = getelementptr inbounds double, ptr %3, i64 %91
  %230 = load double, ptr %229, align 8, !tbaa !15
  %231 = fcmp ult double %93, %95
  %.491 = select i1 %231, double %95, double %93
  %232 = fsub double %230, %.491
  %233 = select i1 %231, double %93, double %95
  %234 = getelementptr inbounds double, ptr %4, i64 %91
  %235 = load double, ptr %234, align 8, !tbaa !15
  %236 = fsub double %233, %235
  %237 = fadd double %232, %236
  br label %238

238:                                              ; preds = %217, %219, %228, %222, %.thread504
  %.490506 = phi double [ %.490505, %.thread504 ], [ %.490, %219 ], [ %.490, %222 ], [ %.490, %228 ], [ %.490, %217 ]
  %239 = phi double [ %184, %.thread504 ], [ %221, %219 ], [ %227, %222 ], [ %237, %228 ], [ 0.000000e+00, %217 ]
  %240 = fmul double %115, %239
  %241 = fdiv double %240, %143
  %242 = fadd double %.490506, %241
  %243 = fcmp ugt double %103, %242
  br i1 %243, label %.thread508, label %244

244:                                              ; preds = %238
  %245 = fcmp ult double %101, %103
  br i1 %245, label %251, label %246

246:                                              ; preds = %244
  %247 = fcmp ogt double %101, %93
  %248 = fcmp ogt double %93, %87
  %or.cond512 = and i1 %248, %247
  %249 = fcmp ogt double %110, %101
  %or.cond513 = and i1 %or.cond512, %249
  %250 = fcmp olt double %108, %89
  %or.cond514 = and i1 %250, %or.cond513
  br i1 %or.cond514, label %256, label %.thread508

251:                                              ; preds = %244
  %252 = fcmp olt double %101, %93
  %253 = fcmp olt double %93, %87
  %or.cond515 = and i1 %253, %252
  %254 = fcmp olt double %110, %101
  %or.cond516 = and i1 %or.cond515, %254
  %255 = fcmp ogt double %108, %89
  %or.cond517 = and i1 %255, %or.cond516
  br i1 %or.cond517, label %256, label %.thread508

256:                                              ; preds = %251, %246
  %257 = select i1 %104, i32 100, i32 -100
  br label %.thread508

.thread508:                                       ; preds = %83, %98, %106, %.thread, %169, %210, %238, %251, %.thread497, %.thread498, %246, %256
  %.sink = phi i32 [ %257, %256 ], [ 0, %246 ], [ 0, %.thread498 ], [ 0, %.thread497 ], [ 0, %251 ], [ 0, %238 ], [ 0, %210 ], [ 0, %169 ], [ 0, %.thread ], [ 0, %106 ], [ 0, %98 ], [ 0, %83 ]
  %258 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv583
  store i32 %.sink, ptr %258, align 4, !tbaa !5
  %indvars.iv.next584 = add nuw nsw i64 %indvars.iv583, 1
  %259 = load i32, ptr %77, align 4, !tbaa !14
  switch i32 %259, label %.split544.us [
    i32 0, label %.thread509.us.preheader
    i32 1, label %.thread510.us.preheader
    i32 2, label %.thread511.us.preheader
  ]

.thread511.us.preheader:                          ; preds = %.thread508
  %260 = add nsw i64 %indvars.iv581, -3
  %261 = getelementptr inbounds double, ptr %3, i64 %260
  %262 = getelementptr inbounds double, ptr %5, i64 %260
  %263 = getelementptr inbounds double, ptr %2, i64 %260
  %264 = getelementptr inbounds double, ptr %4, i64 %260
  %265 = add nsw i64 %indvars.iv585, -3
  %266 = getelementptr inbounds double, ptr %3, i64 %265
  %267 = getelementptr inbounds double, ptr %5, i64 %265
  %268 = getelementptr inbounds double, ptr %2, i64 %265
  %269 = getelementptr inbounds double, ptr %4, i64 %265
  %270 = load <2 x double>, ptr %261, align 8, !tbaa !15
  %271 = load <2 x double>, ptr %262, align 8, !tbaa !15
  %272 = load <2 x double>, ptr %263, align 8, !tbaa !15
  %273 = fcmp ult <2 x double> %271, %272
  %274 = select <2 x i1> %273, <2 x double> %272, <2 x double> %271
  %275 = fsub <2 x double> %270, %274
  %276 = select <2 x i1> %273, <2 x double> %271, <2 x double> %272
  %277 = load <2 x double>, ptr %264, align 8, !tbaa !15
  %278 = fsub <2 x double> %276, %277
  %279 = fadd <2 x double> %275, %278
  %280 = load <2 x double>, ptr %266, align 8, !tbaa !15
  %281 = load <2 x double>, ptr %267, align 8, !tbaa !15
  %282 = load <2 x double>, ptr %268, align 8, !tbaa !15
  %283 = fcmp ult <2 x double> %281, %282
  %284 = select <2 x i1> %283, <2 x double> %282, <2 x double> %281
  %285 = fsub <2 x double> %280, %284
  %286 = select <2 x i1> %283, <2 x double> %281, <2 x double> %282
  %287 = load <2 x double>, ptr %269, align 8, !tbaa !15
  %288 = fsub <2 x double> %286, %287
  %289 = fadd <2 x double> %285, %288
  %290 = fsub <2 x double> %279, %289
  br label %.split544.us

.thread510.us.preheader:                          ; preds = %.thread508
  %291 = add nsw i64 %indvars.iv581, -3
  %292 = getelementptr inbounds double, ptr %3, i64 %291
  %293 = getelementptr inbounds double, ptr %4, i64 %291
  %294 = add nsw i64 %indvars.iv585, -3
  %295 = getelementptr inbounds double, ptr %3, i64 %294
  %296 = getelementptr inbounds double, ptr %4, i64 %294
  %297 = load <2 x double>, ptr %292, align 8, !tbaa !15
  %298 = load <2 x double>, ptr %293, align 8, !tbaa !15
  %299 = fsub <2 x double> %297, %298
  %300 = load <2 x double>, ptr %295, align 8, !tbaa !15
  %301 = load <2 x double>, ptr %296, align 8, !tbaa !15
  %302 = fsub <2 x double> %300, %301
  %303 = fsub <2 x double> %299, %302
  br label %.split544.us

.thread509.us.preheader:                          ; preds = %.thread508
  %304 = add nsw i64 %indvars.iv581, -3
  %305 = getelementptr inbounds double, ptr %5, i64 %304
  %306 = getelementptr inbounds double, ptr %2, i64 %304
  %307 = add nsw i64 %indvars.iv585, -3
  %308 = getelementptr inbounds double, ptr %5, i64 %307
  %309 = getelementptr inbounds double, ptr %2, i64 %307
  %310 = load <2 x double>, ptr %305, align 8, !tbaa !15
  %311 = load <2 x double>, ptr %306, align 8, !tbaa !15
  %312 = fsub <2 x double> %310, %311
  %313 = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %312)
  %314 = load <2 x double>, ptr %308, align 8, !tbaa !15
  %315 = load <2 x double>, ptr %309, align 8, !tbaa !15
  %316 = fsub <2 x double> %314, %315
  %317 = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %316)
  %318 = fsub <2 x double> %313, %317
  br label %.split544.us

.split544.us:                                     ; preds = %.thread508, %.thread511.us.preheader, %.thread510.us.preheader, %.thread509.us.preheader
  %319 = phi <2 x double> [ %290, %.thread511.us.preheader ], [ %303, %.thread510.us.preheader ], [ %318, %.thread509.us.preheader ], [ zeroinitializer, %.thread508 ]
  %320 = fadd <2 x double> %84, %319
  %indvars.iv.next582 = add nuw nsw i64 %indvars.iv581, 1
  %indvars.iv.next586 = add nsw i64 %indvars.iv585, 1
  %.not481.not = icmp slt i64 %indvars.iv581, %81
  br i1 %.not481.not, label %83, label %321, !llvm.loop !19

321:                                              ; preds = %.split544.us
  %322 = trunc nuw i64 %indvars.iv.next584 to i32
  store i32 %322, ptr %7, align 4, !tbaa !5
  store i32 %spec.select, ptr %6, align 4, !tbaa !5
  br label %323

323:                                              ; preds = %13, %11, %9, %321, %24
  %.0 = phi i32 [ 0, %24 ], [ 0, %321 ], [ 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