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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

117:                                              ; preds = %110
  %118 = load ptr, ptr %14, align 8, !tbaa !9
  %119 = load i32, ptr %22, align 4, !tbaa !5
  %120 = sext i32 %119 to i64
  %121 = getelementptr inbounds double, ptr %118, i64 %120
  %122 = load double, ptr %121, align 8, !tbaa !11
  %123 = load ptr, ptr %15, align 8, !tbaa !9
  %124 = load i32, ptr %22, align 4, !tbaa !5
  %125 = sext i32 %124 to i64
  %126 = getelementptr inbounds double, ptr %123, i64 %125
  %127 = load double, ptr %126, align 8, !tbaa !11
  %128 = fsub double %122, %127
  br label %203

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

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

153:                                              ; preds = %136
  %154 = load ptr, ptr %16, align 8, !tbaa !9
  %155 = load i32, ptr %22, align 4, !tbaa !5
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds double, ptr %154, i64 %156
  %158 = load double, ptr %157, align 8, !tbaa !11
  br label %165

159:                                              ; preds = %136
  %160 = load ptr, ptr %13, align 8, !tbaa !9
  %161 = load i32, ptr %22, align 4, !tbaa !5
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds double, ptr %160, i64 %162
  %164 = load double, ptr %163, align 8, !tbaa !11
  br label %165

165:                                              ; preds = %159, %153
  %166 = phi double [ %158, %153 ], [ %164, %159 ]
  %167 = fsub double %141, %166
  %168 = load ptr, ptr %16, align 8, !tbaa !9
  %169 = load i32, ptr %22, align 4, !tbaa !5
  %170 = sext i32 %169 to i64
  %171 = getelementptr inbounds double, ptr %168, i64 %170
  %172 = load double, ptr %171, align 8, !tbaa !11
  %173 = load ptr, ptr %13, align 8, !tbaa !9
  %174 = load i32, ptr %22, align 4, !tbaa !5
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds double, ptr %173, i64 %175
  %177 = load double, ptr %176, align 8, !tbaa !11
  %178 = fcmp oge double %172, %177
  br i1 %178, label %179, label %185

179:                                              ; preds = %165
  %180 = load ptr, ptr %13, align 8, !tbaa !9
  %181 = load i32, ptr %22, align 4, !tbaa !5
  %182 = sext i32 %181 to i64
  %183 = getelementptr inbounds double, ptr %180, i64 %182
  %184 = load double, ptr %183, align 8, !tbaa !11
  br label %191

185:                                              ; preds = %165
  %186 = load ptr, ptr %16, align 8, !tbaa !9
  %187 = load i32, ptr %22, align 4, !tbaa !5
  %188 = sext i32 %187 to i64
  %189 = getelementptr inbounds double, ptr %186, i64 %188
  %190 = load double, ptr %189, align 8, !tbaa !11
  br label %191

191:                                              ; preds = %185, %179
  %192 = phi double [ %184, %179 ], [ %190, %185 ]
  %193 = load ptr, ptr %15, align 8, !tbaa !9
  %194 = load i32, ptr %22, align 4, !tbaa !5
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds double, ptr %193, i64 %195
  %197 = load double, ptr %196, align 8, !tbaa !11
  %198 = fsub double %192, %197
  %199 = fadd double %167, %198
  br label %201

200:                                              ; preds = %129
  br label %201

201:                                              ; preds = %200, %191
  %202 = phi double [ %199, %191 ], [ 0.000000e+00, %200 ]
  br label %203

203:                                              ; preds = %201, %117
  %204 = phi double [ %128, %117 ], [ %202, %201 ]
  br label %205

205:                                              ; preds = %203, %97
  %206 = phi double [ %109, %97 ], [ %204, %203 ]
  %207 = load double, ptr %20, align 8, !tbaa !11
  %208 = fadd double %207, %206
  store double %208, ptr %20, align 8, !tbaa !11
  %209 = load i32, ptr %22, align 4, !tbaa !5
  %210 = add nsw i32 %209, 1
  store i32 %210, ptr %22, align 4, !tbaa !5
  br label %86, !llvm.loop !16

211:                                              ; preds = %86
  %212 = load i32, ptr %25, align 4, !tbaa !5
  store i32 %212, ptr %22, align 4, !tbaa !5
  br label %213

213:                                              ; preds = %332, %211
  %214 = load i32, ptr %22, align 4, !tbaa !5
  %215 = load i32, ptr %11, align 4, !tbaa !5
  %216 = icmp slt i32 %214, %215
  br i1 %216, label %217, label %338

217:                                              ; preds = %213
  %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 7
  %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 %237

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

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

244:                                              ; preds = %237
  %245 = load ptr, ptr %14, align 8, !tbaa !9
  %246 = load i32, ptr %22, align 4, !tbaa !5
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds double, ptr %245, i64 %247
  %249 = load double, ptr %248, align 8, !tbaa !11
  %250 = load ptr, ptr %15, align 8, !tbaa !9
  %251 = load i32, ptr %22, align 4, !tbaa !5
  %252 = sext i32 %251 to i64
  %253 = getelementptr inbounds double, ptr %250, i64 %252
  %254 = load double, ptr %253, align 8, !tbaa !11
  %255 = fsub double %249, %254
  br label %330

256:                                              ; preds = %237
  %257 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %258 = getelementptr inbounds %struct.TA_LibcPriv, ptr %257, i32 0, i32 8
  %259 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %258, i64 0, i64 7
  %260 = getelementptr inbounds %struct.TA_CandleSetting, ptr %259, i32 0, i32 1
  %261 = load i32, ptr %260, align 4, !tbaa !15
  %262 = icmp eq i32 %261, 2
  br i1 %262, label %263, label %327

263:                                              ; preds = %256
  %264 = load ptr, ptr %14, align 8, !tbaa !9
  %265 = load i32, ptr %22, align 4, !tbaa !5
  %266 = sext i32 %265 to i64
  %267 = getelementptr inbounds double, ptr %264, i64 %266
  %268 = load double, ptr %267, align 8, !tbaa !11
  %269 = load ptr, ptr %16, align 8, !tbaa !9
  %270 = load i32, ptr %22, align 4, !tbaa !5
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds double, ptr %269, i64 %271
  %273 = load double, ptr %272, align 8, !tbaa !11
  %274 = load ptr, ptr %13, align 8, !tbaa !9
  %275 = load i32, ptr %22, align 4, !tbaa !5
  %276 = sext i32 %275 to i64
  %277 = getelementptr inbounds double, ptr %274, i64 %276
  %278 = load double, ptr %277, align 8, !tbaa !11
  %279 = fcmp oge double %273, %278
  br i1 %279, label %280, label %286

280:                                              ; preds = %263
  %281 = load ptr, ptr %16, align 8, !tbaa !9
  %282 = load i32, ptr %22, align 4, !tbaa !5
  %283 = sext i32 %282 to i64
  %284 = getelementptr inbounds double, ptr %281, i64 %283
  %285 = load double, ptr %284, align 8, !tbaa !11
  br label %292

286:                                              ; preds = %263
  %287 = load ptr, ptr %13, align 8, !tbaa !9
  %288 = load i32, ptr %22, align 4, !tbaa !5
  %289 = sext i32 %288 to i64
  %290 = getelementptr inbounds double, ptr %287, i64 %289
  %291 = load double, ptr %290, align 8, !tbaa !11
  br label %292

292:                                              ; preds = %286, %280
  %293 = phi double [ %285, %280 ], [ %291, %286 ]
  %294 = fsub double %268, %293
  %295 = load ptr, ptr %16, align 8, !tbaa !9
  %296 = load i32, ptr %22, align 4, !tbaa !5
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds double, ptr %295, i64 %297
  %299 = load double, ptr %298, align 8, !tbaa !11
  %300 = load ptr, ptr %13, align 8, !tbaa !9
  %301 = load i32, ptr %22, align 4, !tbaa !5
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds double, ptr %300, i64 %302
  %304 = load double, ptr %303, align 8, !tbaa !11
  %305 = fcmp oge double %299, %304
  br i1 %305, label %306, label %312

306:                                              ; preds = %292
  %307 = load ptr, ptr %13, align 8, !tbaa !9
  %308 = load i32, ptr %22, align 4, !tbaa !5
  %309 = sext i32 %308 to i64
  %310 = getelementptr inbounds double, ptr %307, i64 %309
  %311 = load double, ptr %310, align 8, !tbaa !11
  br label %318

312:                                              ; preds = %292
  %313 = load ptr, ptr %16, align 8, !tbaa !9
  %314 = load i32, ptr %22, align 4, !tbaa !5
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds double, ptr %313, i64 %315
  %317 = load double, ptr %316, align 8, !tbaa !11
  br label %318

318:                                              ; preds = %312, %306
  %319 = phi double [ %311, %306 ], [ %317, %312 ]
  %320 = load ptr, ptr %15, align 8, !tbaa !9
  %321 = load i32, ptr %22, align 4, !tbaa !5
  %322 = sext i32 %321 to i64
  %323 = getelementptr inbounds double, ptr %320, i64 %322
  %324 = load double, ptr %323, align 8, !tbaa !11
  %325 = fsub double %319, %324
  %326 = fadd double %294, %325
  br label %328

327:                                              ; preds = %256
  br label %328

328:                                              ; preds = %327, %318
  %329 = phi double [ %326, %318 ], [ 0.000000e+00, %327 ]
  br label %330

330:                                              ; preds = %328, %244
  %331 = phi double [ %255, %244 ], [ %329, %328 ]
  br label %332

332:                                              ; preds = %330, %224
  %333 = phi double [ %236, %224 ], [ %331, %330 ]
  %334 = load double, ptr %21, align 8, !tbaa !11
  %335 = fadd double %334, %333
  store double %335, ptr %21, align 8, !tbaa !11
  %336 = load i32, ptr %22, align 4, !tbaa !5
  %337 = add nsw i32 %336, 1
  store i32 %337, ptr %22, align 4, !tbaa !5
  br label %213, !llvm.loop !18

338:                                              ; preds = %213
  store i32 0, ptr %23, align 4, !tbaa !5
  br label %339

339:                                              ; preds = %1402, %338
  %340 = load ptr, ptr %16, align 8, !tbaa !9
  %341 = load i32, ptr %22, align 4, !tbaa !5
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds double, ptr %340, i64 %342
  %344 = load double, ptr %343, align 8, !tbaa !11
  %345 = load ptr, ptr %13, align 8, !tbaa !9
  %346 = load i32, ptr %22, align 4, !tbaa !5
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds double, ptr %345, i64 %347
  %349 = load double, ptr %348, align 8, !tbaa !11
  %350 = fsub double %344, %349
  %351 = call double @llvm.fabs.f64(double %350)
  %352 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %353 = getelementptr inbounds %struct.TA_LibcPriv, ptr %352, i32 0, i32 8
  %354 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %353, i64 0, i64 0
  %355 = getelementptr inbounds %struct.TA_CandleSetting, ptr %354, i32 0, i32 3
  %356 = load double, ptr %355, align 8, !tbaa !19
  %357 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %358 = getelementptr inbounds %struct.TA_LibcPriv, ptr %357, i32 0, i32 8
  %359 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %358, i64 0, i64 0
  %360 = getelementptr inbounds %struct.TA_CandleSetting, ptr %359, i32 0, i32 2
  %361 = load i32, ptr %360, align 8, !tbaa !13
  %362 = sitofp i32 %361 to double
  %363 = fcmp une double %362, 0.000000e+00
  br i1 %363, label %364, label %373

364:                                              ; preds = %339
  %365 = load double, ptr %20, align 8, !tbaa !11
  %366 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %367 = getelementptr inbounds %struct.TA_LibcPriv, ptr %366, i32 0, i32 8
  %368 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %367, i64 0, i64 0
  %369 = getelementptr inbounds %struct.TA_CandleSetting, ptr %368, i32 0, i32 2
  %370 = load i32, ptr %369, align 8, !tbaa !13
  %371 = sitofp i32 %370 to double
  %372 = fdiv double %365, %371
  br label %490

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

380:                                              ; preds = %373
  %381 = load ptr, ptr %16, align 8, !tbaa !9
  %382 = load i32, ptr %22, align 4, !tbaa !5
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds double, ptr %381, i64 %383
  %385 = load double, ptr %384, align 8, !tbaa !11
  %386 = load ptr, ptr %13, align 8, !tbaa !9
  %387 = load i32, ptr %22, align 4, !tbaa !5
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds double, ptr %386, i64 %388
  %390 = load double, ptr %389, align 8, !tbaa !11
  %391 = fsub double %385, %390
  %392 = call double @llvm.fabs.f64(double %391)
  br label %488

393:                                              ; preds = %373
  %394 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %395 = getelementptr inbounds %struct.TA_LibcPriv, ptr %394, i32 0, i32 8
  %396 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %395, i64 0, i64 0
  %397 = getelementptr inbounds %struct.TA_CandleSetting, ptr %396, i32 0, i32 1
  %398 = load i32, ptr %397, align 4, !tbaa !15
  %399 = icmp eq i32 %398, 1
  br i1 %399, label %400, label %412

400:                                              ; preds = %393
  %401 = load ptr, ptr %14, align 8, !tbaa !9
  %402 = load i32, ptr %22, align 4, !tbaa !5
  %403 = sext i32 %402 to i64
  %404 = getelementptr inbounds double, ptr %401, i64 %403
  %405 = load double, ptr %404, align 8, !tbaa !11
  %406 = load ptr, ptr %15, align 8, !tbaa !9
  %407 = load i32, ptr %22, align 4, !tbaa !5
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds double, ptr %406, i64 %408
  %410 = load double, ptr %409, align 8, !tbaa !11
  %411 = fsub double %405, %410
  br label %486

412:                                              ; preds = %393
  %413 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %414 = getelementptr inbounds %struct.TA_LibcPriv, ptr %413, i32 0, i32 8
  %415 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %414, i64 0, i64 0
  %416 = getelementptr inbounds %struct.TA_CandleSetting, ptr %415, i32 0, i32 1
  %417 = load i32, ptr %416, align 4, !tbaa !15
  %418 = icmp eq i32 %417, 2
  br i1 %418, label %419, label %483

419:                                              ; preds = %412
  %420 = load ptr, ptr %14, align 8, !tbaa !9
  %421 = load i32, ptr %22, 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 %16, align 8, !tbaa !9
  %426 = load i32, ptr %22, 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 = load ptr, ptr %13, align 8, !tbaa !9
  %431 = load i32, ptr %22, align 4, !tbaa !5
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds double, ptr %430, i64 %432
  %434 = load double, ptr %433, align 8, !tbaa !11
  %435 = fcmp oge double %429, %434
  br i1 %435, label %436, label %442

436:                                              ; preds = %419
  %437 = load ptr, ptr %16, align 8, !tbaa !9
  %438 = load i32, ptr %22, align 4, !tbaa !5
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds double, ptr %437, i64 %439
  %441 = load double, ptr %440, align 8, !tbaa !11
  br label %448

442:                                              ; preds = %419
  %443 = load ptr, ptr %13, align 8, !tbaa !9
  %444 = load i32, ptr %22, align 4, !tbaa !5
  %445 = sext i32 %444 to i64
  %446 = getelementptr inbounds double, ptr %443, i64 %445
  %447 = load double, ptr %446, align 8, !tbaa !11
  br label %448

448:                                              ; preds = %442, %436
  %449 = phi double [ %441, %436 ], [ %447, %442 ]
  %450 = fsub double %424, %449
  %451 = load ptr, ptr %16, align 8, !tbaa !9
  %452 = load i32, ptr %22, align 4, !tbaa !5
  %453 = sext i32 %452 to i64
  %454 = getelementptr inbounds double, ptr %451, i64 %453
  %455 = load double, ptr %454, align 8, !tbaa !11
  %456 = load ptr, ptr %13, align 8, !tbaa !9
  %457 = load i32, ptr %22, align 4, !tbaa !5
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds double, ptr %456, i64 %458
  %460 = load double, ptr %459, align 8, !tbaa !11
  %461 = fcmp oge double %455, %460
  br i1 %461, label %462, label %468

462:                                              ; preds = %448
  %463 = load ptr, ptr %13, align 8, !tbaa !9
  %464 = load i32, ptr %22, align 4, !tbaa !5
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds double, ptr %463, i64 %465
  %467 = load double, ptr %466, align 8, !tbaa !11
  br label %474

468:                                              ; preds = %448
  %469 = load ptr, ptr %16, align 8, !tbaa !9
  %470 = load i32, ptr %22, align 4, !tbaa !5
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds double, ptr %469, i64 %471
  %473 = load double, ptr %472, align 8, !tbaa !11
  br label %474

474:                                              ; preds = %468, %462
  %475 = phi double [ %467, %462 ], [ %473, %468 ]
  %476 = load ptr, ptr %15, align 8, !tbaa !9
  %477 = load i32, ptr %22, align 4, !tbaa !5
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds double, ptr %476, i64 %478
  %480 = load double, ptr %479, align 8, !tbaa !11
  %481 = fsub double %475, %480
  %482 = fadd double %450, %481
  br label %484

483:                                              ; preds = %412
  br label %484

484:                                              ; preds = %483, %474
  %485 = phi double [ %482, %474 ], [ 0.000000e+00, %483 ]
  br label %486

486:                                              ; preds = %484, %400
  %487 = phi double [ %411, %400 ], [ %485, %484 ]
  br label %488

488:                                              ; preds = %486, %380
  %489 = phi double [ %392, %380 ], [ %487, %486 ]
  br label %490

490:                                              ; preds = %488, %364
  %491 = phi double [ %372, %364 ], [ %489, %488 ]
  %492 = fmul double %356, %491
  %493 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %494 = getelementptr inbounds %struct.TA_LibcPriv, ptr %493, i32 0, i32 8
  %495 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %494, i64 0, i64 0
  %496 = getelementptr inbounds %struct.TA_CandleSetting, ptr %495, i32 0, i32 1
  %497 = load i32, ptr %496, align 4, !tbaa !15
  %498 = icmp eq i32 %497, 2
  %499 = zext i1 %498 to i64
  %500 = select i1 %498, double 2.000000e+00, double 1.000000e+00
  %501 = fdiv double %492, %500
  %502 = fcmp ogt double %351, %501
  br i1 %502, label %503, label %919

503:                                              ; preds = %490
  %504 = load ptr, ptr %16, align 8, !tbaa !9
  %505 = load i32, ptr %22, align 4, !tbaa !5
  %506 = sext i32 %505 to i64
  %507 = getelementptr inbounds double, ptr %504, i64 %506
  %508 = load double, ptr %507, align 8, !tbaa !11
  %509 = load ptr, ptr %13, align 8, !tbaa !9
  %510 = load i32, ptr %22, align 4, !tbaa !5
  %511 = sext i32 %510 to i64
  %512 = getelementptr inbounds double, ptr %509, i64 %511
  %513 = load double, ptr %512, align 8, !tbaa !11
  %514 = fcmp oge double %508, %513
  %515 = zext i1 %514 to i64
  %516 = select i1 %514, i32 1, i32 -1
  %517 = icmp eq i32 %516, 1
  br i1 %517, label %518, label %701

518:                                              ; preds = %503
  %519 = load ptr, ptr %14, align 8, !tbaa !9
  %520 = load i32, ptr %22, align 4, !tbaa !5
  %521 = sext i32 %520 to i64
  %522 = getelementptr inbounds double, ptr %519, i64 %521
  %523 = load double, ptr %522, align 8, !tbaa !11
  %524 = load ptr, ptr %16, align 8, !tbaa !9
  %525 = load i32, ptr %22, align 4, !tbaa !5
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds double, ptr %524, i64 %526
  %528 = load double, ptr %527, align 8, !tbaa !11
  %529 = load ptr, ptr %13, align 8, !tbaa !9
  %530 = load i32, ptr %22, align 4, !tbaa !5
  %531 = sext i32 %530 to i64
  %532 = getelementptr inbounds double, ptr %529, i64 %531
  %533 = load double, ptr %532, align 8, !tbaa !11
  %534 = fcmp oge double %528, %533
  br i1 %534, label %535, label %541

535:                                              ; preds = %518
  %536 = load ptr, ptr %16, align 8, !tbaa !9
  %537 = load i32, ptr %22, align 4, !tbaa !5
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds double, ptr %536, i64 %538
  %540 = load double, ptr %539, align 8, !tbaa !11
  br label %547

541:                                              ; preds = %518
  %542 = load ptr, ptr %13, align 8, !tbaa !9
  %543 = load i32, ptr %22, align 4, !tbaa !5
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds double, ptr %542, i64 %544
  %546 = load double, ptr %545, align 8, !tbaa !11
  br label %547

547:                                              ; preds = %541, %535
  %548 = phi double [ %540, %535 ], [ %546, %541 ]
  %549 = fsub double %523, %548
  %550 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %551 = getelementptr inbounds %struct.TA_LibcPriv, ptr %550, i32 0, i32 8
  %552 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %551, i64 0, i64 7
  %553 = getelementptr inbounds %struct.TA_CandleSetting, ptr %552, i32 0, i32 3
  %554 = load double, ptr %553, align 8, !tbaa !19
  %555 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %556 = getelementptr inbounds %struct.TA_LibcPriv, ptr %555, i32 0, i32 8
  %557 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %556, i64 0, i64 7
  %558 = getelementptr inbounds %struct.TA_CandleSetting, ptr %557, i32 0, i32 2
  %559 = load i32, ptr %558, align 8, !tbaa !13
  %560 = sitofp i32 %559 to double
  %561 = fcmp une double %560, 0.000000e+00
  br i1 %561, label %562, label %571

562:                                              ; preds = %547
  %563 = load double, ptr %21, align 8, !tbaa !11
  %564 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %565 = getelementptr inbounds %struct.TA_LibcPriv, ptr %564, i32 0, i32 8
  %566 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %565, i64 0, i64 7
  %567 = getelementptr inbounds %struct.TA_CandleSetting, ptr %566, i32 0, i32 2
  %568 = load i32, ptr %567, align 8, !tbaa !13
  %569 = sitofp i32 %568 to double
  %570 = fdiv double %563, %569
  br label %688

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

578:                                              ; preds = %571
  %579 = load ptr, ptr %16, align 8, !tbaa !9
  %580 = load i32, ptr %22, align 4, !tbaa !5
  %581 = sext i32 %580 to i64
  %582 = getelementptr inbounds double, ptr %579, i64 %581
  %583 = load double, ptr %582, align 8, !tbaa !11
  %584 = load ptr, ptr %13, align 8, !tbaa !9
  %585 = load i32, ptr %22, align 4, !tbaa !5
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds double, ptr %584, i64 %586
  %588 = load double, ptr %587, align 8, !tbaa !11
  %589 = fsub double %583, %588
  %590 = call double @llvm.fabs.f64(double %589)
  br label %686

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

598:                                              ; preds = %591
  %599 = load ptr, ptr %14, align 8, !tbaa !9
  %600 = load i32, ptr %22, align 4, !tbaa !5
  %601 = sext i32 %600 to i64
  %602 = getelementptr inbounds double, ptr %599, i64 %601
  %603 = load double, ptr %602, align 8, !tbaa !11
  %604 = load ptr, ptr %15, align 8, !tbaa !9
  %605 = load i32, ptr %22, align 4, !tbaa !5
  %606 = sext i32 %605 to i64
  %607 = getelementptr inbounds double, ptr %604, i64 %606
  %608 = load double, ptr %607, align 8, !tbaa !11
  %609 = fsub double %603, %608
  br label %684

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

617:                                              ; preds = %610
  %618 = load ptr, ptr %14, align 8, !tbaa !9
  %619 = load i32, ptr %22, align 4, !tbaa !5
  %620 = sext i32 %619 to i64
  %621 = getelementptr inbounds double, ptr %618, i64 %620
  %622 = load double, ptr %621, align 8, !tbaa !11
  %623 = load ptr, ptr %16, align 8, !tbaa !9
  %624 = load i32, ptr %22, align 4, !tbaa !5
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds double, ptr %623, i64 %625
  %627 = load double, ptr %626, align 8, !tbaa !11
  %628 = load ptr, ptr %13, align 8, !tbaa !9
  %629 = load i32, ptr %22, align 4, !tbaa !5
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds double, ptr %628, i64 %630
  %632 = load double, ptr %631, align 8, !tbaa !11
  %633 = fcmp oge double %627, %632
  br i1 %633, label %634, label %640

634:                                              ; preds = %617
  %635 = load ptr, ptr %16, align 8, !tbaa !9
  %636 = load i32, ptr %22, align 4, !tbaa !5
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds double, ptr %635, i64 %637
  %639 = load double, ptr %638, align 8, !tbaa !11
  br label %646

640:                                              ; preds = %617
  %641 = load ptr, ptr %13, align 8, !tbaa !9
  %642 = load i32, ptr %22, align 4, !tbaa !5
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds double, ptr %641, i64 %643
  %645 = load double, ptr %644, align 8, !tbaa !11
  br label %646

646:                                              ; preds = %640, %634
  %647 = phi double [ %639, %634 ], [ %645, %640 ]
  %648 = fsub double %622, %647
  %649 = load ptr, ptr %16, align 8, !tbaa !9
  %650 = load i32, ptr %22, align 4, !tbaa !5
  %651 = sext i32 %650 to i64
  %652 = getelementptr inbounds double, ptr %649, i64 %651
  %653 = load double, ptr %652, align 8, !tbaa !11
  %654 = load ptr, ptr %13, align 8, !tbaa !9
  %655 = load i32, ptr %22, align 4, !tbaa !5
  %656 = sext i32 %655 to i64
  %657 = getelementptr inbounds double, ptr %654, i64 %656
  %658 = load double, ptr %657, align 8, !tbaa !11
  %659 = fcmp oge double %653, %658
  br i1 %659, label %660, label %666

660:                                              ; preds = %646
  %661 = load ptr, ptr %13, align 8, !tbaa !9
  %662 = load i32, ptr %22, align 4, !tbaa !5
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds double, ptr %661, i64 %663
  %665 = load double, ptr %664, align 8, !tbaa !11
  br label %672

666:                                              ; preds = %646
  %667 = load ptr, ptr %16, align 8, !tbaa !9
  %668 = load i32, ptr %22, align 4, !tbaa !5
  %669 = sext i32 %668 to i64
  %670 = getelementptr inbounds double, ptr %667, i64 %669
  %671 = load double, ptr %670, align 8, !tbaa !11
  br label %672

672:                                              ; preds = %666, %660
  %673 = phi double [ %665, %660 ], [ %671, %666 ]
  %674 = load ptr, ptr %15, align 8, !tbaa !9
  %675 = load i32, ptr %22, align 4, !tbaa !5
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds double, ptr %674, i64 %676
  %678 = load double, ptr %677, align 8, !tbaa !11
  %679 = fsub double %673, %678
  %680 = fadd double %648, %679
  br label %682

681:                                              ; preds = %610
  br label %682

682:                                              ; preds = %681, %672
  %683 = phi double [ %680, %672 ], [ 0.000000e+00, %681 ]
  br label %684

684:                                              ; preds = %682, %598
  %685 = phi double [ %609, %598 ], [ %683, %682 ]
  br label %686

686:                                              ; preds = %684, %578
  %687 = phi double [ %590, %578 ], [ %685, %684 ]
  br label %688

688:                                              ; preds = %686, %562
  %689 = phi double [ %570, %562 ], [ %687, %686 ]
  %690 = fmul double %554, %689
  %691 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %692 = getelementptr inbounds %struct.TA_LibcPriv, ptr %691, i32 0, i32 8
  %693 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %692, i64 0, i64 7
  %694 = getelementptr inbounds %struct.TA_CandleSetting, ptr %693, i32 0, i32 1
  %695 = load i32, ptr %694, align 4, !tbaa !15
  %696 = icmp eq i32 %695, 2
  %697 = zext i1 %696 to i64
  %698 = select i1 %696, double 2.000000e+00, double 1.000000e+00
  %699 = fdiv double %690, %698
  %700 = fcmp olt double %549, %699
  br i1 %700, label %899, label %701

701:                                              ; preds = %688, %503
  %702 = load ptr, ptr %16, align 8, !tbaa !9
  %703 = load i32, ptr %22, align 4, !tbaa !5
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds double, ptr %702, i64 %704
  %706 = load double, ptr %705, align 8, !tbaa !11
  %707 = load ptr, ptr %13, align 8, !tbaa !9
  %708 = load i32, ptr %22, align 4, !tbaa !5
  %709 = sext i32 %708 to i64
  %710 = getelementptr inbounds double, ptr %707, i64 %709
  %711 = load double, ptr %710, align 8, !tbaa !11
  %712 = fcmp oge double %706, %711
  %713 = zext i1 %712 to i64
  %714 = select i1 %712, i32 1, i32 -1
  %715 = icmp eq i32 %714, -1
  br i1 %715, label %716, label %919

716:                                              ; preds = %701
  %717 = load ptr, ptr %16, align 8, !tbaa !9
  %718 = load i32, ptr %22, align 4, !tbaa !5
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds double, ptr %717, i64 %719
  %721 = load double, ptr %720, align 8, !tbaa !11
  %722 = load ptr, ptr %13, align 8, !tbaa !9
  %723 = load i32, ptr %22, align 4, !tbaa !5
  %724 = sext i32 %723 to i64
  %725 = getelementptr inbounds double, ptr %722, i64 %724
  %726 = load double, ptr %725, align 8, !tbaa !11
  %727 = fcmp oge double %721, %726
  br i1 %727, label %728, label %734

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

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

740:                                              ; preds = %734, %728
  %741 = phi double [ %733, %728 ], [ %739, %734 ]
  %742 = load ptr, ptr %15, align 8, !tbaa !9
  %743 = load i32, ptr %22, align 4, !tbaa !5
  %744 = sext i32 %743 to i64
  %745 = getelementptr inbounds double, ptr %742, i64 %744
  %746 = load double, ptr %745, align 8, !tbaa !11
  %747 = fsub double %741, %746
  %748 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %749 = getelementptr inbounds %struct.TA_LibcPriv, ptr %748, i32 0, i32 8
  %750 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %749, i64 0, i64 7
  %751 = getelementptr inbounds %struct.TA_CandleSetting, ptr %750, i32 0, i32 3
  %752 = load double, ptr %751, align 8, !tbaa !19
  %753 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %754 = getelementptr inbounds %struct.TA_LibcPriv, ptr %753, i32 0, i32 8
  %755 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %754, i64 0, i64 7
  %756 = getelementptr inbounds %struct.TA_CandleSetting, ptr %755, i32 0, i32 2
  %757 = load i32, ptr %756, align 8, !tbaa !13
  %758 = sitofp i32 %757 to double
  %759 = fcmp une double %758, 0.000000e+00
  br i1 %759, label %760, label %769

760:                                              ; preds = %740
  %761 = load double, ptr %21, align 8, !tbaa !11
  %762 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %763 = getelementptr inbounds %struct.TA_LibcPriv, ptr %762, i32 0, i32 8
  %764 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %763, i64 0, i64 7
  %765 = getelementptr inbounds %struct.TA_CandleSetting, ptr %764, i32 0, i32 2
  %766 = load i32, ptr %765, align 8, !tbaa !13
  %767 = sitofp i32 %766 to double
  %768 = fdiv double %761, %767
  br label %886

769:                                              ; preds = %740
  %770 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %771 = getelementptr inbounds %struct.TA_LibcPriv, ptr %770, i32 0, i32 8
  %772 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %771, i64 0, i64 7
  %773 = getelementptr inbounds %struct.TA_CandleSetting, ptr %772, i32 0, i32 1
  %774 = load i32, ptr %773, align 4, !tbaa !15
  %775 = icmp eq i32 %774, 0
  br i1 %775, label %776, label %789

776:                                              ; preds = %769
  %777 = load ptr, ptr %16, align 8, !tbaa !9
  %778 = load i32, ptr %22, align 4, !tbaa !5
  %779 = sext i32 %778 to i64
  %780 = getelementptr inbounds double, ptr %777, i64 %779
  %781 = load double, ptr %780, align 8, !tbaa !11
  %782 = load ptr, ptr %13, align 8, !tbaa !9
  %783 = load i32, ptr %22, align 4, !tbaa !5
  %784 = sext i32 %783 to i64
  %785 = getelementptr inbounds double, ptr %782, i64 %784
  %786 = load double, ptr %785, align 8, !tbaa !11
  %787 = fsub double %781, %786
  %788 = call double @llvm.fabs.f64(double %787)
  br label %884

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

796:                                              ; preds = %789
  %797 = load ptr, ptr %14, align 8, !tbaa !9
  %798 = load i32, ptr %22, align 4, !tbaa !5
  %799 = sext i32 %798 to i64
  %800 = getelementptr inbounds double, ptr %797, i64 %799
  %801 = load double, ptr %800, align 8, !tbaa !11
  %802 = load ptr, ptr %15, align 8, !tbaa !9
  %803 = load i32, ptr %22, align 4, !tbaa !5
  %804 = sext i32 %803 to i64
  %805 = getelementptr inbounds double, ptr %802, i64 %804
  %806 = load double, ptr %805, align 8, !tbaa !11
  %807 = fsub double %801, %806
  br label %882

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

815:                                              ; preds = %808
  %816 = load ptr, ptr %14, align 8, !tbaa !9
  %817 = load i32, ptr %22, align 4, !tbaa !5
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds double, ptr %816, i64 %818
  %820 = load double, ptr %819, align 8, !tbaa !11
  %821 = load ptr, ptr %16, align 8, !tbaa !9
  %822 = load i32, ptr %22, align 4, !tbaa !5
  %823 = sext i32 %822 to i64
  %824 = getelementptr inbounds double, ptr %821, i64 %823
  %825 = load double, ptr %824, align 8, !tbaa !11
  %826 = load ptr, ptr %13, align 8, !tbaa !9
  %827 = load i32, ptr %22, align 4, !tbaa !5
  %828 = sext i32 %827 to i64
  %829 = getelementptr inbounds double, ptr %826, i64 %828
  %830 = load double, ptr %829, align 8, !tbaa !11
  %831 = fcmp oge double %825, %830
  br i1 %831, label %832, label %838

832:                                              ; preds = %815
  %833 = load ptr, ptr %16, align 8, !tbaa !9
  %834 = load i32, ptr %22, align 4, !tbaa !5
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds double, ptr %833, i64 %835
  %837 = load double, ptr %836, align 8, !tbaa !11
  br label %844

838:                                              ; preds = %815
  %839 = load ptr, ptr %13, align 8, !tbaa !9
  %840 = load i32, ptr %22, align 4, !tbaa !5
  %841 = sext i32 %840 to i64
  %842 = getelementptr inbounds double, ptr %839, i64 %841
  %843 = load double, ptr %842, align 8, !tbaa !11
  br label %844

844:                                              ; preds = %838, %832
  %845 = phi double [ %837, %832 ], [ %843, %838 ]
  %846 = fsub double %820, %845
  %847 = load ptr, ptr %16, align 8, !tbaa !9
  %848 = load i32, ptr %22, align 4, !tbaa !5
  %849 = sext i32 %848 to i64
  %850 = getelementptr inbounds double, ptr %847, i64 %849
  %851 = load double, ptr %850, align 8, !tbaa !11
  %852 = load ptr, ptr %13, align 8, !tbaa !9
  %853 = load i32, ptr %22, align 4, !tbaa !5
  %854 = sext i32 %853 to i64
  %855 = getelementptr inbounds double, ptr %852, i64 %854
  %856 = load double, ptr %855, align 8, !tbaa !11
  %857 = fcmp oge double %851, %856
  br i1 %857, label %858, label %864

858:                                              ; preds = %844
  %859 = load ptr, ptr %13, align 8, !tbaa !9
  %860 = load i32, ptr %22, align 4, !tbaa !5
  %861 = sext i32 %860 to i64
  %862 = getelementptr inbounds double, ptr %859, i64 %861
  %863 = load double, ptr %862, align 8, !tbaa !11
  br label %870

864:                                              ; preds = %844
  %865 = load ptr, ptr %16, align 8, !tbaa !9
  %866 = load i32, ptr %22, align 4, !tbaa !5
  %867 = sext i32 %866 to i64
  %868 = getelementptr inbounds double, ptr %865, i64 %867
  %869 = load double, ptr %868, align 8, !tbaa !11
  br label %870

870:                                              ; preds = %864, %858
  %871 = phi double [ %863, %858 ], [ %869, %864 ]
  %872 = load ptr, ptr %15, align 8, !tbaa !9
  %873 = load i32, ptr %22, align 4, !tbaa !5
  %874 = sext i32 %873 to i64
  %875 = getelementptr inbounds double, ptr %872, i64 %874
  %876 = load double, ptr %875, align 8, !tbaa !11
  %877 = fsub double %871, %876
  %878 = fadd double %846, %877
  br label %880

879:                                              ; preds = %808
  br label %880

880:                                              ; preds = %879, %870
  %881 = phi double [ %878, %870 ], [ 0.000000e+00, %879 ]
  br label %882

882:                                              ; preds = %880, %796
  %883 = phi double [ %807, %796 ], [ %881, %880 ]
  br label %884

884:                                              ; preds = %882, %776
  %885 = phi double [ %788, %776 ], [ %883, %882 ]
  br label %886

886:                                              ; preds = %884, %760
  %887 = phi double [ %768, %760 ], [ %885, %884 ]
  %888 = fmul double %752, %887
  %889 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %890 = getelementptr inbounds %struct.TA_LibcPriv, ptr %889, i32 0, i32 8
  %891 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %890, i64 0, i64 7
  %892 = getelementptr inbounds %struct.TA_CandleSetting, ptr %891, i32 0, i32 1
  %893 = load i32, ptr %892, align 4, !tbaa !15
  %894 = icmp eq i32 %893, 2
  %895 = zext i1 %894 to i64
  %896 = select i1 %894, double 2.000000e+00, double 1.000000e+00
  %897 = fdiv double %888, %896
  %898 = fcmp olt double %747, %897
  br i1 %898, label %899, label %919

899:                                              ; preds = %886, %688
  %900 = load ptr, ptr %16, align 8, !tbaa !9
  %901 = load i32, ptr %22, align 4, !tbaa !5
  %902 = sext i32 %901 to i64
  %903 = getelementptr inbounds double, ptr %900, i64 %902
  %904 = load double, ptr %903, align 8, !tbaa !11
  %905 = load ptr, ptr %13, align 8, !tbaa !9
  %906 = load i32, ptr %22, align 4, !tbaa !5
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds double, ptr %905, i64 %907
  %909 = load double, ptr %908, align 8, !tbaa !11
  %910 = fcmp oge double %904, %909
  %911 = zext i1 %910 to i64
  %912 = select i1 %910, i32 1, i32 -1
  %913 = mul nsw i32 %912, 100
  %914 = load ptr, ptr %19, align 8, !tbaa !9
  %915 = load i32, ptr %23, align 4, !tbaa !5
  %916 = add nsw i32 %915, 1
  store i32 %916, ptr %23, align 4, !tbaa !5
  %917 = sext i32 %915 to i64
  %918 = getelementptr inbounds i32, ptr %914, i64 %917
  store i32 %913, ptr %918, align 4, !tbaa !5
  br label %925

919:                                              ; preds = %886, %701, %490
  %920 = load ptr, ptr %19, align 8, !tbaa !9
  %921 = load i32, ptr %23, align 4, !tbaa !5
  %922 = add nsw i32 %921, 1
  store i32 %922, ptr %23, align 4, !tbaa !5
  %923 = sext i32 %921 to i64
  %924 = getelementptr inbounds i32, ptr %920, i64 %923
  store i32 0, ptr %924, align 4, !tbaa !5
  br label %925

925:                                              ; preds = %919, %899
  %926 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %927 = getelementptr inbounds %struct.TA_LibcPriv, ptr %926, i32 0, i32 8
  %928 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %927, i64 0, i64 0
  %929 = getelementptr inbounds %struct.TA_CandleSetting, ptr %928, i32 0, i32 1
  %930 = load i32, ptr %929, align 4, !tbaa !15
  %931 = icmp eq i32 %930, 0
  br i1 %931, label %932, label %945

932:                                              ; preds = %925
  %933 = load ptr, ptr %16, align 8, !tbaa !9
  %934 = load i32, ptr %22, align 4, !tbaa !5
  %935 = sext i32 %934 to i64
  %936 = getelementptr inbounds double, ptr %933, i64 %935
  %937 = load double, ptr %936, align 8, !tbaa !11
  %938 = load ptr, ptr %13, align 8, !tbaa !9
  %939 = load i32, ptr %22, align 4, !tbaa !5
  %940 = sext i32 %939 to i64
  %941 = getelementptr inbounds double, ptr %938, i64 %940
  %942 = load double, ptr %941, align 8, !tbaa !11
  %943 = fsub double %937, %942
  %944 = call double @llvm.fabs.f64(double %943)
  br label %1040

945:                                              ; preds = %925
  %946 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %947 = getelementptr inbounds %struct.TA_LibcPriv, ptr %946, i32 0, i32 8
  %948 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %947, i64 0, i64 0
  %949 = getelementptr inbounds %struct.TA_CandleSetting, ptr %948, i32 0, i32 1
  %950 = load i32, ptr %949, align 4, !tbaa !15
  %951 = icmp eq i32 %950, 1
  br i1 %951, label %952, label %964

952:                                              ; preds = %945
  %953 = load ptr, ptr %14, align 8, !tbaa !9
  %954 = load i32, ptr %22, align 4, !tbaa !5
  %955 = sext i32 %954 to i64
  %956 = getelementptr inbounds double, ptr %953, i64 %955
  %957 = load double, ptr %956, align 8, !tbaa !11
  %958 = load ptr, ptr %15, align 8, !tbaa !9
  %959 = load i32, ptr %22, align 4, !tbaa !5
  %960 = sext i32 %959 to i64
  %961 = getelementptr inbounds double, ptr %958, i64 %960
  %962 = load double, ptr %961, align 8, !tbaa !11
  %963 = fsub double %957, %962
  br label %1038

964:                                              ; preds = %945
  %965 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %966 = getelementptr inbounds %struct.TA_LibcPriv, ptr %965, i32 0, i32 8
  %967 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %966, i64 0, i64 0
  %968 = getelementptr inbounds %struct.TA_CandleSetting, ptr %967, i32 0, i32 1
  %969 = load i32, ptr %968, align 4, !tbaa !15
  %970 = icmp eq i32 %969, 2
  br i1 %970, label %971, label %1035

971:                                              ; preds = %964
  %972 = load ptr, ptr %14, align 8, !tbaa !9
  %973 = load i32, ptr %22, align 4, !tbaa !5
  %974 = sext i32 %973 to i64
  %975 = getelementptr inbounds double, ptr %972, i64 %974
  %976 = load double, ptr %975, align 8, !tbaa !11
  %977 = load ptr, ptr %16, align 8, !tbaa !9
  %978 = load i32, ptr %22, align 4, !tbaa !5
  %979 = sext i32 %978 to i64
  %980 = getelementptr inbounds double, ptr %977, i64 %979
  %981 = load double, ptr %980, align 8, !tbaa !11
  %982 = load ptr, ptr %13, align 8, !tbaa !9
  %983 = load i32, ptr %22, align 4, !tbaa !5
  %984 = sext i32 %983 to i64
  %985 = getelementptr inbounds double, ptr %982, i64 %984
  %986 = load double, ptr %985, align 8, !tbaa !11
  %987 = fcmp oge double %981, %986
  br i1 %987, label %988, label %994

988:                                              ; preds = %971
  %989 = load ptr, ptr %16, align 8, !tbaa !9
  %990 = load i32, ptr %22, align 4, !tbaa !5
  %991 = sext i32 %990 to i64
  %992 = getelementptr inbounds double, ptr %989, i64 %991
  %993 = load double, ptr %992, align 8, !tbaa !11
  br label %1000

994:                                              ; preds = %971
  %995 = load ptr, ptr %13, align 8, !tbaa !9
  %996 = load i32, ptr %22, align 4, !tbaa !5
  %997 = sext i32 %996 to i64
  %998 = getelementptr inbounds double, ptr %995, i64 %997
  %999 = load double, ptr %998, align 8, !tbaa !11
  br label %1000

1000:                                             ; preds = %994, %988
  %1001 = phi double [ %993, %988 ], [ %999, %994 ]
  %1002 = fsub double %976, %1001
  %1003 = load ptr, ptr %16, align 8, !tbaa !9
  %1004 = load i32, ptr %22, align 4, !tbaa !5
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds double, ptr %1003, i64 %1005
  %1007 = load double, ptr %1006, align 8, !tbaa !11
  %1008 = load ptr, ptr %13, align 8, !tbaa !9
  %1009 = load i32, ptr %22, align 4, !tbaa !5
  %1010 = sext i32 %1009 to i64
  %1011 = getelementptr inbounds double, ptr %1008, i64 %1010
  %1012 = load double, ptr %1011, align 8, !tbaa !11
  %1013 = fcmp oge double %1007, %1012
  br i1 %1013, label %1014, label %1020

1014:                                             ; preds = %1000
  %1015 = load ptr, ptr %13, align 8, !tbaa !9
  %1016 = load i32, ptr %22, align 4, !tbaa !5
  %1017 = sext i32 %1016 to i64
  %1018 = getelementptr inbounds double, ptr %1015, i64 %1017
  %1019 = load double, ptr %1018, align 8, !tbaa !11
  br label %1026

1020:                                             ; preds = %1000
  %1021 = load ptr, ptr %16, align 8, !tbaa !9
  %1022 = load i32, ptr %22, align 4, !tbaa !5
  %1023 = sext i32 %1022 to i64
  %1024 = getelementptr inbounds double, ptr %1021, i64 %1023
  %1025 = load double, ptr %1024, align 8, !tbaa !11
  br label %1026

1026:                                             ; preds = %1020, %1014
  %1027 = phi double [ %1019, %1014 ], [ %1025, %1020 ]
  %1028 = load ptr, ptr %15, align 8, !tbaa !9
  %1029 = load i32, ptr %22, align 4, !tbaa !5
  %1030 = sext i32 %1029 to i64
  %1031 = getelementptr inbounds double, ptr %1028, i64 %1030
  %1032 = load double, ptr %1031, align 8, !tbaa !11
  %1033 = fsub double %1027, %1032
  %1034 = fadd double %1002, %1033
  br label %1036

1035:                                             ; preds = %964
  br label %1036

1036:                                             ; preds = %1035, %1026
  %1037 = phi double [ %1034, %1026 ], [ 0.000000e+00, %1035 ]
  br label %1038

1038:                                             ; preds = %1036, %952
  %1039 = phi double [ %963, %952 ], [ %1037, %1036 ]
  br label %1040

1040:                                             ; preds = %1038, %932
  %1041 = phi double [ %944, %932 ], [ %1039, %1038 ]
  %1042 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1043 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1042, i32 0, i32 8
  %1044 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1043, i64 0, i64 0
  %1045 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1044, i32 0, i32 1
  %1046 = load i32, ptr %1045, align 4, !tbaa !15
  %1047 = icmp eq i32 %1046, 0
  br i1 %1047, label %1048, label %1061

1048:                                             ; preds = %1040
  %1049 = load ptr, ptr %16, align 8, !tbaa !9
  %1050 = load i32, ptr %24, align 4, !tbaa !5
  %1051 = sext i32 %1050 to i64
  %1052 = getelementptr inbounds double, ptr %1049, i64 %1051
  %1053 = load double, ptr %1052, align 8, !tbaa !11
  %1054 = load ptr, ptr %13, align 8, !tbaa !9
  %1055 = load i32, ptr %24, align 4, !tbaa !5
  %1056 = sext i32 %1055 to i64
  %1057 = getelementptr inbounds double, ptr %1054, i64 %1056
  %1058 = load double, ptr %1057, align 8, !tbaa !11
  %1059 = fsub double %1053, %1058
  %1060 = call double @llvm.fabs.f64(double %1059)
  br label %1156

1061:                                             ; preds = %1040
  %1062 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1063 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1062, i32 0, i32 8
  %1064 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1063, i64 0, i64 0
  %1065 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1064, i32 0, i32 1
  %1066 = load i32, ptr %1065, align 4, !tbaa !15
  %1067 = icmp eq i32 %1066, 1
  br i1 %1067, label %1068, label %1080

1068:                                             ; preds = %1061
  %1069 = load ptr, ptr %14, align 8, !tbaa !9
  %1070 = load i32, ptr %24, align 4, !tbaa !5
  %1071 = sext i32 %1070 to i64
  %1072 = getelementptr inbounds double, ptr %1069, i64 %1071
  %1073 = load double, ptr %1072, align 8, !tbaa !11
  %1074 = load ptr, ptr %15, align 8, !tbaa !9
  %1075 = load i32, ptr %24, align 4, !tbaa !5
  %1076 = sext i32 %1075 to i64
  %1077 = getelementptr inbounds double, ptr %1074, i64 %1076
  %1078 = load double, ptr %1077, align 8, !tbaa !11
  %1079 = fsub double %1073, %1078
  br label %1154

1080:                                             ; preds = %1061
  %1081 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1082 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1081, i32 0, i32 8
  %1083 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1082, i64 0, i64 0
  %1084 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1083, i32 0, i32 1
  %1085 = load i32, ptr %1084, align 4, !tbaa !15
  %1086 = icmp eq i32 %1085, 2
  br i1 %1086, label %1087, label %1151

1087:                                             ; preds = %1080
  %1088 = load ptr, ptr %14, align 8, !tbaa !9
  %1089 = load i32, ptr %24, align 4, !tbaa !5
  %1090 = sext i32 %1089 to i64
  %1091 = getelementptr inbounds double, ptr %1088, i64 %1090
  %1092 = load double, ptr %1091, align 8, !tbaa !11
  %1093 = load ptr, ptr %16, align 8, !tbaa !9
  %1094 = load i32, ptr %24, align 4, !tbaa !5
  %1095 = sext i32 %1094 to i64
  %1096 = getelementptr inbounds double, ptr %1093, i64 %1095
  %1097 = load double, ptr %1096, align 8, !tbaa !11
  %1098 = load ptr, ptr %13, align 8, !tbaa !9
  %1099 = load i32, ptr %24, align 4, !tbaa !5
  %1100 = sext i32 %1099 to i64
  %1101 = getelementptr inbounds double, ptr %1098, i64 %1100
  %1102 = load double, ptr %1101, align 8, !tbaa !11
  %1103 = fcmp oge double %1097, %1102
  br i1 %1103, label %1104, label %1110

1104:                                             ; preds = %1087
  %1105 = load ptr, ptr %16, align 8, !tbaa !9
  %1106 = load i32, ptr %24, align 4, !tbaa !5
  %1107 = sext i32 %1106 to i64
  %1108 = getelementptr inbounds double, ptr %1105, i64 %1107
  %1109 = load double, ptr %1108, align 8, !tbaa !11
  br label %1116

1110:                                             ; preds = %1087
  %1111 = load ptr, ptr %13, align 8, !tbaa !9
  %1112 = load i32, ptr %24, align 4, !tbaa !5
  %1113 = sext i32 %1112 to i64
  %1114 = getelementptr inbounds double, ptr %1111, i64 %1113
  %1115 = load double, ptr %1114, align 8, !tbaa !11
  br label %1116

1116:                                             ; preds = %1110, %1104
  %1117 = phi double [ %1109, %1104 ], [ %1115, %1110 ]
  %1118 = fsub double %1092, %1117
  %1119 = load ptr, ptr %16, align 8, !tbaa !9
  %1120 = load i32, ptr %24, align 4, !tbaa !5
  %1121 = sext i32 %1120 to i64
  %1122 = getelementptr inbounds double, ptr %1119, i64 %1121
  %1123 = load double, ptr %1122, align 8, !tbaa !11
  %1124 = load ptr, ptr %13, align 8, !tbaa !9
  %1125 = load i32, ptr %24, align 4, !tbaa !5
  %1126 = sext i32 %1125 to i64
  %1127 = getelementptr inbounds double, ptr %1124, i64 %1126
  %1128 = load double, ptr %1127, align 8, !tbaa !11
  %1129 = fcmp oge double %1123, %1128
  br i1 %1129, label %1130, label %1136

1130:                                             ; preds = %1116
  %1131 = load ptr, ptr %13, align 8, !tbaa !9
  %1132 = load i32, ptr %24, align 4, !tbaa !5
  %1133 = sext i32 %1132 to i64
  %1134 = getelementptr inbounds double, ptr %1131, i64 %1133
  %1135 = load double, ptr %1134, align 8, !tbaa !11
  br label %1142

1136:                                             ; preds = %1116
  %1137 = load ptr, ptr %16, align 8, !tbaa !9
  %1138 = load i32, ptr %24, align 4, !tbaa !5
  %1139 = sext i32 %1138 to i64
  %1140 = getelementptr inbounds double, ptr %1137, i64 %1139
  %1141 = load double, ptr %1140, align 8, !tbaa !11
  br label %1142

1142:                                             ; preds = %1136, %1130
  %1143 = phi double [ %1135, %1130 ], [ %1141, %1136 ]
  %1144 = load ptr, ptr %15, align 8, !tbaa !9
  %1145 = load i32, ptr %24, align 4, !tbaa !5
  %1146 = sext i32 %1145 to i64
  %1147 = getelementptr inbounds double, ptr %1144, i64 %1146
  %1148 = load double, ptr %1147, align 8, !tbaa !11
  %1149 = fsub double %1143, %1148
  %1150 = fadd double %1118, %1149
  br label %1152

1151:                                             ; preds = %1080
  br label %1152

1152:                                             ; preds = %1151, %1142
  %1153 = phi double [ %1150, %1142 ], [ 0.000000e+00, %1151 ]
  br label %1154

1154:                                             ; preds = %1152, %1068
  %1155 = phi double [ %1079, %1068 ], [ %1153, %1152 ]
  br label %1156

1156:                                             ; preds = %1154, %1048
  %1157 = phi double [ %1060, %1048 ], [ %1155, %1154 ]
  %1158 = fsub double %1041, %1157
  %1159 = load double, ptr %20, align 8, !tbaa !11
  %1160 = fadd double %1159, %1158
  store double %1160, ptr %20, align 8, !tbaa !11
  %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 7
  %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, 0
  br i1 %1166, label %1167, label %1180

1167:                                             ; preds = %1156
  %1168 = load ptr, ptr %16, align 8, !tbaa !9
  %1169 = load i32, ptr %22, align 4, !tbaa !5
  %1170 = sext i32 %1169 to i64
  %1171 = getelementptr inbounds double, ptr %1168, i64 %1170
  %1172 = load double, ptr %1171, align 8, !tbaa !11
  %1173 = load ptr, ptr %13, align 8, !tbaa !9
  %1174 = load i32, ptr %22, align 4, !tbaa !5
  %1175 = sext i32 %1174 to i64
  %1176 = getelementptr inbounds double, ptr %1173, i64 %1175
  %1177 = load double, ptr %1176, align 8, !tbaa !11
  %1178 = fsub double %1172, %1177
  %1179 = call double @llvm.fabs.f64(double %1178)
  br label %1275

1180:                                             ; preds = %1156
  %1181 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1182 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1181, i32 0, i32 8
  %1183 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1182, i64 0, i64 7
  %1184 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1183, i32 0, i32 1
  %1185 = load i32, ptr %1184, align 4, !tbaa !15
  %1186 = icmp eq i32 %1185, 1
  br i1 %1186, label %1187, label %1199

1187:                                             ; preds = %1180
  %1188 = load ptr, ptr %14, align 8, !tbaa !9
  %1189 = load i32, ptr %22, align 4, !tbaa !5
  %1190 = sext i32 %1189 to i64
  %1191 = getelementptr inbounds double, ptr %1188, i64 %1190
  %1192 = load double, ptr %1191, align 8, !tbaa !11
  %1193 = load ptr, ptr %15, align 8, !tbaa !9
  %1194 = load i32, ptr %22, align 4, !tbaa !5
  %1195 = sext i32 %1194 to i64
  %1196 = getelementptr inbounds double, ptr %1193, i64 %1195
  %1197 = load double, ptr %1196, align 8, !tbaa !11
  %1198 = fsub double %1192, %1197
  br label %1273

1199:                                             ; preds = %1180
  %1200 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1201 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1200, i32 0, i32 8
  %1202 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1201, i64 0, i64 7
  %1203 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1202, i32 0, i32 1
  %1204 = load i32, ptr %1203, align 4, !tbaa !15
  %1205 = icmp eq i32 %1204, 2
  br i1 %1205, label %1206, label %1270

1206:                                             ; preds = %1199
  %1207 = load ptr, ptr %14, align 8, !tbaa !9
  %1208 = load i32, ptr %22, align 4, !tbaa !5
  %1209 = sext i32 %1208 to i64
  %1210 = getelementptr inbounds double, ptr %1207, i64 %1209
  %1211 = load double, ptr %1210, align 8, !tbaa !11
  %1212 = load ptr, ptr %16, align 8, !tbaa !9
  %1213 = load i32, ptr %22, align 4, !tbaa !5
  %1214 = sext i32 %1213 to i64
  %1215 = getelementptr inbounds double, ptr %1212, i64 %1214
  %1216 = load double, ptr %1215, align 8, !tbaa !11
  %1217 = load ptr, ptr %13, align 8, !tbaa !9
  %1218 = load i32, ptr %22, align 4, !tbaa !5
  %1219 = sext i32 %1218 to i64
  %1220 = getelementptr inbounds double, ptr %1217, i64 %1219
  %1221 = load double, ptr %1220, align 8, !tbaa !11
  %1222 = fcmp oge double %1216, %1221
  br i1 %1222, label %1223, label %1229

1223:                                             ; preds = %1206
  %1224 = load ptr, ptr %16, align 8, !tbaa !9
  %1225 = load i32, ptr %22, align 4, !tbaa !5
  %1226 = sext i32 %1225 to i64
  %1227 = getelementptr inbounds double, ptr %1224, i64 %1226
  %1228 = load double, ptr %1227, align 8, !tbaa !11
  br label %1235

1229:                                             ; preds = %1206
  %1230 = load ptr, ptr %13, align 8, !tbaa !9
  %1231 = load i32, ptr %22, align 4, !tbaa !5
  %1232 = sext i32 %1231 to i64
  %1233 = getelementptr inbounds double, ptr %1230, i64 %1232
  %1234 = load double, ptr %1233, align 8, !tbaa !11
  br label %1235

1235:                                             ; preds = %1229, %1223
  %1236 = phi double [ %1228, %1223 ], [ %1234, %1229 ]
  %1237 = fsub double %1211, %1236
  %1238 = load ptr, ptr %16, align 8, !tbaa !9
  %1239 = load i32, ptr %22, align 4, !tbaa !5
  %1240 = sext i32 %1239 to i64
  %1241 = getelementptr inbounds double, ptr %1238, i64 %1240
  %1242 = load double, ptr %1241, align 8, !tbaa !11
  %1243 = load ptr, ptr %13, align 8, !tbaa !9
  %1244 = load i32, ptr %22, align 4, !tbaa !5
  %1245 = sext i32 %1244 to i64
  %1246 = getelementptr inbounds double, ptr %1243, i64 %1245
  %1247 = load double, ptr %1246, align 8, !tbaa !11
  %1248 = fcmp oge double %1242, %1247
  br i1 %1248, label %1249, label %1255

1249:                                             ; preds = %1235
  %1250 = load ptr, ptr %13, align 8, !tbaa !9
  %1251 = load i32, ptr %22, align 4, !tbaa !5
  %1252 = sext i32 %1251 to i64
  %1253 = getelementptr inbounds double, ptr %1250, i64 %1252
  %1254 = load double, ptr %1253, align 8, !tbaa !11
  br label %1261

1255:                                             ; preds = %1235
  %1256 = load ptr, ptr %16, align 8, !tbaa !9
  %1257 = load i32, ptr %22, align 4, !tbaa !5
  %1258 = sext i32 %1257 to i64
  %1259 = getelementptr inbounds double, ptr %1256, i64 %1258
  %1260 = load double, ptr %1259, align 8, !tbaa !11
  br label %1261

1261:                                             ; preds = %1255, %1249
  %1262 = phi double [ %1254, %1249 ], [ %1260, %1255 ]
  %1263 = load ptr, ptr %15, align 8, !tbaa !9
  %1264 = load i32, ptr %22, align 4, !tbaa !5
  %1265 = sext i32 %1264 to i64
  %1266 = getelementptr inbounds double, ptr %1263, i64 %1265
  %1267 = load double, ptr %1266, align 8, !tbaa !11
  %1268 = fsub double %1262, %1267
  %1269 = fadd double %1237, %1268
  br label %1271

1270:                                             ; preds = %1199
  br label %1271

1271:                                             ; preds = %1270, %1261
  %1272 = phi double [ %1269, %1261 ], [ 0.000000e+00, %1270 ]
  br label %1273

1273:                                             ; preds = %1271, %1187
  %1274 = phi double [ %1198, %1187 ], [ %1272, %1271 ]
  br label %1275

1275:                                             ; preds = %1273, %1167
  %1276 = phi double [ %1179, %1167 ], [ %1274, %1273 ]
  %1277 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1278 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1277, i32 0, i32 8
  %1279 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1278, i64 0, i64 7
  %1280 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1279, i32 0, i32 1
  %1281 = load i32, ptr %1280, align 4, !tbaa !15
  %1282 = icmp eq i32 %1281, 0
  br i1 %1282, label %1283, label %1296

1283:                                             ; preds = %1275
  %1284 = load ptr, ptr %16, align 8, !tbaa !9
  %1285 = load i32, ptr %25, align 4, !tbaa !5
  %1286 = sext i32 %1285 to i64
  %1287 = getelementptr inbounds double, ptr %1284, i64 %1286
  %1288 = load double, ptr %1287, align 8, !tbaa !11
  %1289 = load ptr, ptr %13, align 8, !tbaa !9
  %1290 = load i32, ptr %25, align 4, !tbaa !5
  %1291 = sext i32 %1290 to i64
  %1292 = getelementptr inbounds double, ptr %1289, i64 %1291
  %1293 = load double, ptr %1292, align 8, !tbaa !11
  %1294 = fsub double %1288, %1293
  %1295 = call double @llvm.fabs.f64(double %1294)
  br label %1391

1296:                                             ; preds = %1275
  %1297 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1298 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1297, i32 0, i32 8
  %1299 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1298, i64 0, i64 7
  %1300 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1299, i32 0, i32 1
  %1301 = load i32, ptr %1300, align 4, !tbaa !15
  %1302 = icmp eq i32 %1301, 1
  br i1 %1302, label %1303, label %1315

1303:                                             ; preds = %1296
  %1304 = load ptr, ptr %14, align 8, !tbaa !9
  %1305 = load i32, ptr %25, align 4, !tbaa !5
  %1306 = sext i32 %1305 to i64
  %1307 = getelementptr inbounds double, ptr %1304, i64 %1306
  %1308 = load double, ptr %1307, align 8, !tbaa !11
  %1309 = load ptr, ptr %15, align 8, !tbaa !9
  %1310 = load i32, ptr %25, align 4, !tbaa !5
  %1311 = sext i32 %1310 to i64
  %1312 = getelementptr inbounds double, ptr %1309, i64 %1311
  %1313 = load double, ptr %1312, align 8, !tbaa !11
  %1314 = fsub double %1308, %1313
  br label %1389

1315:                                             ; preds = %1296
  %1316 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1317 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1316, i32 0, i32 8
  %1318 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1317, i64 0, i64 7
  %1319 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1318, i32 0, i32 1
  %1320 = load i32, ptr %1319, align 4, !tbaa !15
  %1321 = icmp eq i32 %1320, 2
  br i1 %1321, label %1322, label %1386

1322:                                             ; preds = %1315
  %1323 = load ptr, ptr %14, align 8, !tbaa !9
  %1324 = load i32, ptr %25, align 4, !tbaa !5
  %1325 = sext i32 %1324 to i64
  %1326 = getelementptr inbounds double, ptr %1323, i64 %1325
  %1327 = load double, ptr %1326, align 8, !tbaa !11
  %1328 = load ptr, ptr %16, align 8, !tbaa !9
  %1329 = load i32, ptr %25, align 4, !tbaa !5
  %1330 = sext i32 %1329 to i64
  %1331 = getelementptr inbounds double, ptr %1328, i64 %1330
  %1332 = load double, ptr %1331, align 8, !tbaa !11
  %1333 = load ptr, ptr %13, align 8, !tbaa !9
  %1334 = load i32, ptr %25, align 4, !tbaa !5
  %1335 = sext i32 %1334 to i64
  %1336 = getelementptr inbounds double, ptr %1333, i64 %1335
  %1337 = load double, ptr %1336, align 8, !tbaa !11
  %1338 = fcmp oge double %1332, %1337
  br i1 %1338, label %1339, label %1345

1339:                                             ; preds = %1322
  %1340 = load ptr, ptr %16, align 8, !tbaa !9
  %1341 = load i32, ptr %25, align 4, !tbaa !5
  %1342 = sext i32 %1341 to i64
  %1343 = getelementptr inbounds double, ptr %1340, i64 %1342
  %1344 = load double, ptr %1343, align 8, !tbaa !11
  br label %1351

1345:                                             ; preds = %1322
  %1346 = load ptr, ptr %13, align 8, !tbaa !9
  %1347 = load i32, ptr %25, align 4, !tbaa !5
  %1348 = sext i32 %1347 to i64
  %1349 = getelementptr inbounds double, ptr %1346, i64 %1348
  %1350 = load double, ptr %1349, align 8, !tbaa !11
  br label %1351

1351:                                             ; preds = %1345, %1339
  %1352 = phi double [ %1344, %1339 ], [ %1350, %1345 ]
  %1353 = fsub double %1327, %1352
  %1354 = load ptr, ptr %16, align 8, !tbaa !9
  %1355 = load i32, ptr %25, align 4, !tbaa !5
  %1356 = sext i32 %1355 to i64
  %1357 = getelementptr inbounds double, ptr %1354, i64 %1356
  %1358 = load double, ptr %1357, align 8, !tbaa !11
  %1359 = load ptr, ptr %13, align 8, !tbaa !9
  %1360 = load i32, ptr %25, align 4, !tbaa !5
  %1361 = sext i32 %1360 to i64
  %1362 = getelementptr inbounds double, ptr %1359, i64 %1361
  %1363 = load double, ptr %1362, align 8, !tbaa !11
  %1364 = fcmp oge double %1358, %1363
  br i1 %1364, label %1365, label %1371

1365:                                             ; preds = %1351
  %1366 = load ptr, ptr %13, align 8, !tbaa !9
  %1367 = load i32, ptr %25, align 4, !tbaa !5
  %1368 = sext i32 %1367 to i64
  %1369 = getelementptr inbounds double, ptr %1366, i64 %1368
  %1370 = load double, ptr %1369, align 8, !tbaa !11
  br label %1377

1371:                                             ; preds = %1351
  %1372 = load ptr, ptr %16, align 8, !tbaa !9
  %1373 = load i32, ptr %25, align 4, !tbaa !5
  %1374 = sext i32 %1373 to i64
  %1375 = getelementptr inbounds double, ptr %1372, i64 %1374
  %1376 = load double, ptr %1375, align 8, !tbaa !11
  br label %1377

1377:                                             ; preds = %1371, %1365
  %1378 = phi double [ %1370, %1365 ], [ %1376, %1371 ]
  %1379 = load ptr, ptr %15, align 8, !tbaa !9
  %1380 = load i32, ptr %25, 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 = fsub double %1378, %1383
  %1385 = fadd double %1353, %1384
  br label %1387

1386:                                             ; preds = %1315
  br label %1387

1387:                                             ; preds = %1386, %1377
  %1388 = phi double [ %1385, %1377 ], [ 0.000000e+00, %1386 ]
  br label %1389

1389:                                             ; preds = %1387, %1303
  %1390 = phi double [ %1314, %1303 ], [ %1388, %1387 ]
  br label %1391

1391:                                             ; preds = %1389, %1283
  %1392 = phi double [ %1295, %1283 ], [ %1390, %1389 ]
  %1393 = fsub double %1276, %1392
  %1394 = load double, ptr %21, align 8, !tbaa !11
  %1395 = fadd double %1394, %1393
  store double %1395, ptr %21, align 8, !tbaa !11
  %1396 = load i32, ptr %22, align 4, !tbaa !5
  %1397 = add nsw i32 %1396, 1
  store i32 %1397, ptr %22, align 4, !tbaa !5
  %1398 = load i32, ptr %24, align 4, !tbaa !5
  %1399 = add nsw i32 %1398, 1
  store i32 %1399, ptr %24, align 4, !tbaa !5
  %1400 = load i32, ptr %25, align 4, !tbaa !5
  %1401 = add nsw i32 %1400, 1
  store i32 %1401, ptr %25, align 4, !tbaa !5
  br label %1402

1402:                                             ; preds = %1391
  %1403 = load i32, ptr %22, align 4, !tbaa !5
  %1404 = load i32, ptr %12, align 4, !tbaa !5
  %1405 = icmp sle i32 %1403, %1404
  br i1 %1405, label %339, label %1406, !llvm.loop !20

1406:                                             ; preds = %1402
  %1407 = load i32, ptr %23, align 4, !tbaa !5
  %1408 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 %1407, ptr %1408, align 4, !tbaa !5
  %1409 = load i32, ptr %11, align 4, !tbaa !5
  %1410 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 %1409, ptr %1410, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %27, align 4
  br label %1411

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !6, i64 8}
!14 = !{!"", !6, i64 0, !6, i64 4, !6, i64 8, !12, i64 16}
!15 = !{!14, !6, i64 4}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}
!19 = !{!14, !12, i64 16}
!20 = distinct !{!20, !17}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@TA_Globals = external local_unnamed_addr global ptr, align 8

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

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

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

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

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

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

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

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

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

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

.lr.ph.split.us440:                               ; preds = %.lr.ph.split.us440.preheader, %.lr.ph.split.us440
  %indvars.iv487 = phi i64 [ %38, %.lr.ph.split.us440.preheader ], [ %indvars.iv.next488, %.lr.ph.split.us440 ]
  %.0346438.us442 = phi double [ 0.000000e+00, %.lr.ph.split.us440.preheader ], [ %55, %.lr.ph.split.us440 ]
  %50 = getelementptr inbounds double, ptr %3, i64 %indvars.iv487
  %51 = load double, ptr %50, align 8, !tbaa !15
  %52 = getelementptr inbounds double, ptr %4, i64 %indvars.iv487
  %53 = load double, ptr %52, align 8, !tbaa !15
  %54 = fsub double %51, %53
  %55 = fadd double %.0346438.us442, %54
  %indvars.iv.next488 = add nsw i64 %indvars.iv487, 1
  %56 = icmp slt i64 %indvars.iv.next488, %39
  br i1 %56, label %.lr.ph.split.us440, label %.preheader437, !llvm.loop !16

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

.preheader437:                                    ; preds = %.lr.ph.split.us445, %.lr.ph.split.us440, %.lr.ph.split.us, %.lr.ph, %25
  %.0346.lcssa = phi double [ 0.000000e+00, %25 ], [ 0.000000e+00, %.lr.ph ], [ %48, %.lr.ph.split.us ], [ %55, %.lr.ph.split.us440 ], [ %70, %.lr.ph.split.us445 ]
  %72 = icmp sgt i32 %31, 0
  br i1 %72, label %.lr.ph452, label %.preheader

.lr.ph452:                                        ; preds = %.preheader437
  %73 = getelementptr inbounds i8, ptr %26, i64 380
  %74 = load i32, ptr %73, align 4, !tbaa !14
  switch i32 %74, label %.lr.ph452.split.preheader [
    i32 0, label %.lr.ph452.split.us.preheader
    i32 1, label %.lr.ph452.split.us457.preheader
    i32 2, label %.lr.ph452.split.us464.preheader
  ]

.lr.ph452.split.us464.preheader:                  ; preds = %.lr.ph452
  %75 = sext i32 %32 to i64
  %76 = zext nneg i32 %spec.select to i64
  br label %.lr.ph452.split.us464

.lr.ph452.split.us457.preheader:                  ; preds = %.lr.ph452
  %77 = sext i32 %32 to i64
  %78 = zext nneg i32 %spec.select to i64
  br label %.lr.ph452.split.us457

.lr.ph452.split.us.preheader:                     ; preds = %.lr.ph452
  %79 = sext i32 %32 to i64
  %80 = zext nneg i32 %spec.select to i64
  br label %.lr.ph452.split.us

.lr.ph452.split.preheader:                        ; preds = %.lr.ph452
  %81 = add nuw i32 %spec.select, 1
  %82 = sub i32 %81, %31
  %smax502 = tail call i32 @llvm.smax.i32(i32 %spec.select, i32 %82)
  br label %.preheader

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

.lr.ph452.split.us457:                            ; preds = %.lr.ph452.split.us457.preheader, %.lr.ph452.split.us457
  %indvars.iv496 = phi i64 [ %77, %.lr.ph452.split.us457.preheader ], [ %indvars.iv.next497, %.lr.ph452.split.us457 ]
  %.0344450.us459 = phi double [ 0.000000e+00, %.lr.ph452.split.us457.preheader ], [ %96, %.lr.ph452.split.us457 ]
  %91 = getelementptr inbounds double, ptr %3, i64 %indvars.iv496
  %92 = load double, ptr %91, align 8, !tbaa !15
  %93 = getelementptr inbounds double, ptr %4, i64 %indvars.iv496
  %94 = load double, ptr %93, align 8, !tbaa !15
  %95 = fsub double %92, %94
  %96 = fadd double %.0344450.us459, %95
  %indvars.iv.next497 = add nsw i64 %indvars.iv496, 1
  %97 = icmp slt i64 %indvars.iv.next497, %78
  br i1 %97, label %.lr.ph452.split.us457, label %.preheader.loopexit472, !llvm.loop !18

.lr.ph452.split.us464:                            ; preds = %.lr.ph452.split.us464.preheader, %.lr.ph452.split.us464
  %indvars.iv493 = phi i64 [ %75, %.lr.ph452.split.us464.preheader ], [ %indvars.iv.next494, %.lr.ph452.split.us464 ]
  %.0344450.us466 = phi double [ 0.000000e+00, %.lr.ph452.split.us464.preheader ], [ %111, %.lr.ph452.split.us464 ]
  %98 = getelementptr inbounds double, ptr %3, i64 %indvars.iv493
  %99 = load double, ptr %98, align 8, !tbaa !15
  %100 = getelementptr inbounds double, ptr %5, i64 %indvars.iv493
  %101 = load double, ptr %100, align 8, !tbaa !15
  %102 = getelementptr inbounds double, ptr %2, i64 %indvars.iv493
  %103 = load double, ptr %102, align 8, !tbaa !15
  %104 = fcmp ult double %101, %103
  %.415.us = select i1 %104, double %103, double %101
  %105 = fsub double %99, %.415.us
  %106 = select i1 %104, double %101, double %103
  %107 = getelementptr inbounds double, ptr %4, i64 %indvars.iv493
  %108 = load double, ptr %107, align 8, !tbaa !15
  %109 = fsub double %106, %108
  %110 = fadd double %105, %109
  %111 = fadd double %.0344450.us466, %110
  %indvars.iv.next494 = add nsw i64 %indvars.iv493, 1
  %112 = icmp slt i64 %indvars.iv.next494, %76
  br i1 %112, label %.lr.ph452.split.us464, label %.preheader.loopexit473, !llvm.loop !18

.preheader.loopexit471:                           ; preds = %.lr.ph452.split.us
  %113 = trunc nsw i64 %indvars.iv.next500 to i32
  br label %.preheader

.preheader.loopexit472:                           ; preds = %.lr.ph452.split.us457
  %114 = trunc nsw i64 %indvars.iv.next497 to i32
  br label %.preheader

.preheader.loopexit473:                           ; preds = %.lr.ph452.split.us464
  %115 = trunc nsw i64 %indvars.iv.next494 to i32
  br label %.preheader

.preheader:                                       ; preds = %.preheader.loopexit473, %.preheader.loopexit472, %.preheader.loopexit471, %.lr.ph452.split.preheader, %.preheader437
  %.0344.lcssa = phi double [ 0.000000e+00, %.preheader437 ], [ 0.000000e+00, %.lr.ph452.split.preheader ], [ %89, %.preheader.loopexit471 ], [ %96, %.preheader.loopexit472 ], [ %111, %.preheader.loopexit473 ]
  %.1343.lcssa = phi i32 [ %32, %.preheader437 ], [ %smax502, %.lr.ph452.split.preheader ], [ %113, %.preheader.loopexit471 ], [ %114, %.preheader.loopexit472 ], [ %115, %.preheader.loopexit473 ]
  %116 = getelementptr inbounds i8, ptr %26, i64 224
  %117 = load double, ptr %116, align 8, !tbaa !19
  %118 = getelementptr inbounds i8, ptr %26, i64 212
  %119 = getelementptr inbounds i8, ptr %26, i64 380
  %120 = getelementptr inbounds i8, ptr %26, i64 392
  %121 = zext i32 %.1343.lcssa to i64
  %122 = sext i32 %29 to i64
  %123 = sext i32 %32 to i64
  %smax518 = tail call i32 @llvm.smax.i32(i32 %.1343.lcssa, i32 %1)
  %124 = add i32 %smax518, 1
  %125 = sub i32 %124, %.1343.lcssa
  %wide.trip.count = zext i32 %125 to i64
  br label %126

126:                                              ; preds = %.preheader, %300
  %indvars.iv509 = phi i64 [ %123, %.preheader ], [ %indvars.iv.next510, %300 ]
  %indvars.iv507 = phi i64 [ %122, %.preheader ], [ %indvars.iv.next508, %300 ]
  %indvars.iv505 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next506, %300 ]
  %indvars.iv503 = phi i64 [ %121, %.preheader ], [ %indvars.iv.next504, %300 ]
  %.1347 = phi double [ %.0346.lcssa, %.preheader ], [ %260, %300 ]
  %.1345 = phi double [ %.0344.lcssa, %.preheader ], [ %304, %300 ]
  %127 = getelementptr inbounds double, ptr %5, i64 %indvars.iv503
  %128 = load double, ptr %127, align 8, !tbaa !15
  %129 = getelementptr inbounds double, ptr %2, i64 %indvars.iv503
  %130 = load double, ptr %129, align 8, !tbaa !15
  %131 = fsub double %128, %130
  %132 = tail call double @llvm.fabs.f64(double %131)
  %133 = load i32, ptr %27, align 8, !tbaa !11
  %.not410 = icmp eq i32 %133, 0
  br i1 %.not410, label %134, label %151

134:                                              ; preds = %126
  %135 = load i32, ptr %118, align 4, !tbaa !14
  switch i32 %135, label %.fold.split [
    i32 0, label %.thread
    i32 1, label %136
    i32 2, label %.thread523
  ]

136:                                              ; preds = %134
  %137 = getelementptr inbounds double, ptr %3, i64 %indvars.iv503
  %138 = load double, ptr %137, align 8, !tbaa !15
  %139 = getelementptr inbounds double, ptr %4, i64 %indvars.iv503
  %140 = load double, ptr %139, align 8, !tbaa !15
  %141 = fsub double %138, %140
  br label %.thread

.thread523:                                       ; preds = %134
  %142 = getelementptr inbounds double, ptr %3, i64 %indvars.iv503
  %143 = load double, ptr %142, align 8, !tbaa !15
  %144 = fcmp ult double %128, %130
  %.416 = select i1 %144, double %130, double %128
  %145 = fsub double %143, %.416
  %146 = select i1 %144, double %128, double %130
  %147 = getelementptr inbounds double, ptr %4, i64 %indvars.iv503
  %148 = load double, ptr %147, align 8, !tbaa !15
  %149 = fsub double %146, %148
  %150 = fadd double %145, %149
  br label %.thread

.fold.split:                                      ; preds = %134
  br label %.thread

151:                                              ; preds = %126
  %152 = sitofp i32 %133 to double
  %153 = fdiv double %.1347, %152
  %.pre = load i32, ptr %118, align 4, !tbaa !14
  %.pre.fr = freeze i32 %.pre
  %154 = icmp eq i32 %.pre.fr, 2
  br i1 %154, label %155, label %.thread

155:                                              ; preds = %151
  br label %.thread

.thread:                                          ; preds = %.fold.split, %134, %136, %.thread523, %151, %155
  %.pn = phi double [ %153, %151 ], [ %150, %.thread523 ], [ %153, %155 ], [ 0.000000e+00, %.fold.split ], [ %132, %134 ], [ %141, %136 ]
  %156 = phi double [ 1.000000e+00, %151 ], [ 2.000000e+00, %.thread523 ], [ 2.000000e+00, %155 ], [ 1.000000e+00, %.fold.split ], [ 1.000000e+00, %134 ], [ 1.000000e+00, %136 ]
  %157 = fmul double %117, %.pn
  %158 = fdiv double %157, %156
  %159 = fcmp ogt double %132, %158
  br i1 %159, label %160, label %215

160:                                              ; preds = %.thread
  %161 = fcmp ult double %128, %130
  %162 = load double, ptr %120, align 8, !tbaa !19
  %163 = load i32, ptr %30, align 8, !tbaa !11
  %.not412 = icmp eq i32 %163, 0
  br i1 %161, label %188, label %164

164:                                              ; preds = %160
  %165 = getelementptr inbounds double, ptr %3, i64 %indvars.iv503
  %166 = load double, ptr %165, align 8, !tbaa !15
  %167 = fsub double %166, %128
  br i1 %.not412, label %168, label %179

168:                                              ; preds = %164
  %169 = load i32, ptr %119, align 4, !tbaa !14
  switch i32 %169, label %.thread528 [
    i32 0, label %170
    i32 1, label %171
    i32 2, label %.thread530
  ]

170:                                              ; preds = %168
  br label %.thread528

171:                                              ; preds = %168
  %172 = getelementptr inbounds double, ptr %4, i64 %indvars.iv503
  %173 = load double, ptr %172, align 8, !tbaa !15
  %174 = fsub double %166, %173
  br label %.thread528

.thread530:                                       ; preds = %168
  %175 = getelementptr inbounds double, ptr %4, i64 %indvars.iv503
  %176 = load double, ptr %175, align 8, !tbaa !15
  %177 = fsub double %130, %176
  %178 = fadd double %167, %177
  br label %.thread528

179:                                              ; preds = %164
  %180 = sitofp i32 %163 to double
  %181 = fdiv double %.1345, %180
  %.pre519 = load i32, ptr %119, align 4, !tbaa !14
  %.pre519.fr = freeze i32 %.pre519
  %182 = icmp eq i32 %.pre519.fr, 2
  br i1 %182, label %183, label %.thread528

183:                                              ; preds = %179
  br label %.thread528

.thread528:                                       ; preds = %168, %171, %170, %.thread530, %179, %183
  %.pn547 = phi double [ %181, %179 ], [ %178, %.thread530 ], [ %181, %183 ], [ 0.000000e+00, %168 ], [ %174, %171 ], [ %132, %170 ]
  %184 = phi double [ 1.000000e+00, %179 ], [ 2.000000e+00, %.thread530 ], [ 2.000000e+00, %183 ], [ 1.000000e+00, %168 ], [ 1.000000e+00, %171 ], [ 1.000000e+00, %170 ]
  %185 = fmul double %162, %.pn547
  %186 = fdiv double %185, %184
  %187 = fcmp olt double %167, %186
  br i1 %187, label %212, label %215

188:                                              ; preds = %160
  %189 = getelementptr inbounds double, ptr %4, i64 %indvars.iv503
  %190 = load double, ptr %189, align 8, !tbaa !15
  %191 = fsub double %128, %190
  br i1 %.not412, label %192, label %203

192:                                              ; preds = %188
  %193 = load i32, ptr %119, align 4, !tbaa !14
  switch i32 %193, label %.thread535 [
    i32 0, label %194
    i32 1, label %195
    i32 2, label %.thread537
  ]

194:                                              ; preds = %192
  br label %.thread535

195:                                              ; preds = %192
  %196 = getelementptr inbounds double, ptr %3, i64 %indvars.iv503
  %197 = load double, ptr %196, align 8, !tbaa !15
  %198 = fsub double %197, %190
  br label %.thread535

.thread537:                                       ; preds = %192
  %199 = getelementptr inbounds double, ptr %3, i64 %indvars.iv503
  %200 = load double, ptr %199, align 8, !tbaa !15
  %201 = fsub double %200, %130
  %202 = fadd double %191, %201
  br label %.thread535

203:                                              ; preds = %188
  %204 = sitofp i32 %163 to double
  %205 = fdiv double %.1345, %204
  %.pre520 = load i32, ptr %119, align 4, !tbaa !14
  %.pre520.fr = freeze i32 %.pre520
  %206 = icmp eq i32 %.pre520.fr, 2
  br i1 %206, label %207, label %.thread535

207:                                              ; preds = %203
  br label %.thread535

.thread535:                                       ; preds = %192, %195, %194, %.thread537, %203, %207
  %.pn548 = phi double [ %205, %203 ], [ %202, %.thread537 ], [ %205, %207 ], [ 0.000000e+00, %192 ], [ %198, %195 ], [ %132, %194 ]
  %208 = phi double [ 1.000000e+00, %203 ], [ 2.000000e+00, %.thread537 ], [ 2.000000e+00, %207 ], [ 1.000000e+00, %192 ], [ 1.000000e+00, %195 ], [ 1.000000e+00, %194 ]
  %209 = fmul double %162, %.pn548
  %210 = fdiv double %209, %208
  %211 = fcmp olt double %191, %210
  br i1 %211, label %212, label %215

212:                                              ; preds = %.thread535, %.thread528
  %213 = fcmp oge double %128, %130
  %214 = select i1 %213, i32 100, i32 -100
  br label %215

215:                                              ; preds = %.thread, %.thread535, %.thread528, %212
  %.sink = phi i32 [ %214, %212 ], [ 0, %.thread528 ], [ 0, %.thread535 ], [ 0, %.thread ]
  %216 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv505
  store i32 %.sink, ptr %216, align 4, !tbaa !5
  %indvars.iv.next506 = add nuw nsw i64 %indvars.iv505, 1
  %217 = load i32, ptr %118, align 4, !tbaa !14
  switch i32 %217, label %256 [
    i32 0, label %.thread424
    i32 1, label %.thread425
    i32 2, label %.thread426
  ]

.thread425:                                       ; preds = %215
  %218 = getelementptr inbounds double, ptr %3, i64 %indvars.iv503
  %219 = load double, ptr %218, align 8, !tbaa !15
  %220 = getelementptr inbounds double, ptr %4, i64 %indvars.iv503
  %221 = load double, ptr %220, align 8, !tbaa !15
  %222 = fsub double %219, %221
  %223 = getelementptr inbounds double, ptr %3, i64 %indvars.iv507
  %224 = load double, ptr %223, align 8, !tbaa !15
  %225 = getelementptr inbounds double, ptr %4, i64 %indvars.iv507
  %226 = load double, ptr %225, align 8, !tbaa !15
  %227 = fsub double %224, %226
  br label %256

.thread426:                                       ; preds = %215
  %228 = getelementptr inbounds double, ptr %3, i64 %indvars.iv503
  %229 = load double, ptr %228, align 8, !tbaa !15
  %230 = fcmp ult double %128, %130
  %.419 = select i1 %230, double %130, double %128
  %231 = fsub double %229, %.419
  %232 = select i1 %230, double %128, double %130
  %233 = getelementptr inbounds double, ptr %4, i64 %indvars.iv503
  %234 = load double, ptr %233, align 8, !tbaa !15
  %235 = fsub double %232, %234
  %236 = fadd double %231, %235
  %237 = getelementptr inbounds double, ptr %3, i64 %indvars.iv507
  %238 = load double, ptr %237, align 8, !tbaa !15
  %239 = getelementptr inbounds double, ptr %5, i64 %indvars.iv507
  %240 = load double, ptr %239, align 8, !tbaa !15
  %241 = getelementptr inbounds double, ptr %2, i64 %indvars.iv507
  %242 = load double, ptr %241, align 8, !tbaa !15
  %243 = fcmp ult double %240, %242
  %.420 = select i1 %243, double %242, double %240
  %244 = fsub double %238, %.420
  %245 = select i1 %243, double %240, double %242
  %246 = getelementptr inbounds double, ptr %4, i64 %indvars.iv507
  %247 = load double, ptr %246, align 8, !tbaa !15
  %248 = fsub double %245, %247
  %249 = fadd double %244, %248
  br label %256

.thread424:                                       ; preds = %215
  %250 = getelementptr inbounds double, ptr %5, i64 %indvars.iv507
  %251 = load double, ptr %250, align 8, !tbaa !15
  %252 = getelementptr inbounds double, ptr %2, i64 %indvars.iv507
  %253 = load double, ptr %252, align 8, !tbaa !15
  %254 = fsub double %251, %253
  %255 = tail call double @llvm.fabs.f64(double %254)
  br label %256

256:                                              ; preds = %215, %.thread425, %.thread426, %.thread424
  %257 = phi double [ %132, %.thread424 ], [ %222, %.thread425 ], [ %236, %.thread426 ], [ 0.000000e+00, %215 ]
  %258 = phi double [ %255, %.thread424 ], [ %227, %.thread425 ], [ %249, %.thread426 ], [ 0.000000e+00, %215 ]
  %259 = fsub double %257, %258
  %260 = fadd double %.1347, %259
  %261 = load i32, ptr %119, align 4, !tbaa !14
  switch i32 %261, label %300 [
    i32 0, label %.thread427
    i32 1, label %.thread428
    i32 2, label %.thread429
  ]

.thread428:                                       ; preds = %256
  %262 = getelementptr inbounds double, ptr %3, i64 %indvars.iv503
  %263 = load double, ptr %262, align 8, !tbaa !15
  %264 = getelementptr inbounds double, ptr %4, i64 %indvars.iv503
  %265 = load double, ptr %264, align 8, !tbaa !15
  %266 = fsub double %263, %265
  %267 = getelementptr inbounds double, ptr %3, i64 %indvars.iv509
  %268 = load double, ptr %267, align 8, !tbaa !15
  %269 = getelementptr inbounds double, ptr %4, i64 %indvars.iv509
  %270 = load double, ptr %269, align 8, !tbaa !15
  %271 = fsub double %268, %270
  br label %300

.thread429:                                       ; preds = %256
  %272 = getelementptr inbounds double, ptr %3, i64 %indvars.iv503
  %273 = load double, ptr %272, align 8, !tbaa !15
  %274 = fcmp ult double %128, %130
  %.421 = select i1 %274, double %130, double %128
  %275 = fsub double %273, %.421
  %276 = select i1 %274, double %128, double %130
  %277 = getelementptr inbounds double, ptr %4, i64 %indvars.iv503
  %278 = load double, ptr %277, align 8, !tbaa !15
  %279 = fsub double %276, %278
  %280 = fadd double %275, %279
  %281 = getelementptr inbounds double, ptr %3, i64 %indvars.iv509
  %282 = load double, ptr %281, align 8, !tbaa !15
  %283 = getelementptr inbounds double, ptr %5, i64 %indvars.iv509
  %284 = load double, ptr %283, align 8, !tbaa !15
  %285 = getelementptr inbounds double, ptr %2, i64 %indvars.iv509
  %286 = load double, ptr %285, align 8, !tbaa !15
  %287 = fcmp ult double %284, %286
  %.422 = select i1 %287, double %286, double %284
  %288 = fsub double %282, %.422
  %289 = select i1 %287, double %284, double %286
  %290 = getelementptr inbounds double, ptr %4, i64 %indvars.iv509
  %291 = load double, ptr %290, align 8, !tbaa !15
  %292 = fsub double %289, %291
  %293 = fadd double %288, %292
  br label %300

.thread427:                                       ; preds = %256
  %294 = getelementptr inbounds double, ptr %5, i64 %indvars.iv509
  %295 = load double, ptr %294, align 8, !tbaa !15
  %296 = getelementptr inbounds double, ptr %2, i64 %indvars.iv509
  %297 = load double, ptr %296, align 8, !tbaa !15
  %298 = fsub double %295, %297
  %299 = tail call double @llvm.fabs.f64(double %298)
  br label %300

300:                                              ; preds = %256, %.thread428, %.thread429, %.thread427
  %301 = phi double [ %132, %.thread427 ], [ %266, %.thread428 ], [ %280, %.thread429 ], [ 0.000000e+00, %256 ]
  %302 = phi double [ %299, %.thread427 ], [ %271, %.thread428 ], [ %293, %.thread429 ], [ 0.000000e+00, %256 ]
  %303 = fsub double %301, %302
  %304 = fadd double %.1345, %303
  %indvars.iv.next504 = add nuw nsw i64 %indvars.iv503, 1
  %indvars.iv.next508 = add nsw i64 %indvars.iv507, 1
  %indvars.iv.next510 = add nsw i64 %indvars.iv509, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next506, %wide.trip.count
  br i1 %exitcond.not, label %305, label %126, !llvm.loop !20

305:                                              ; preds = %300
  store i32 %125, ptr %7, align 4, !tbaa !5
  store i32 %spec.select, ptr %6, align 4, !tbaa !5
  br label %306

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !6, i64 8}
!12 = !{!"", !6, i64 0, !6, i64 4, !6, i64 8, !13, i64 16}
!13 = !{!"double", !7, i64 0}
!14 = !{!12, !6, i64 4}
!15 = !{!13, !13, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}
!19 = !{!12, !13, i64 16}
!20 = distinct !{!20, !17}


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