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

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

; 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

; Function Attrs: nounwind uwtable
define dso_local i32 @TA_S_CDLHIGHWAVE(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 %1402

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

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

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

56:                                               ; preds = %52
  %57 = call i32 @TA_CDLHIGHWAVE_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 %1402

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 2
  %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 5
  %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 = %207, %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 %213

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 2
  %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 %111

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 float, ptr %98, i64 %100
  %102 = load float, ptr %101, align 4, !tbaa !16
  %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 float, ptr %103, i64 %105
  %107 = load float, ptr %106, align 4, !tbaa !16
  %108 = fsub float %102, %107
  %109 = fpext float %108 to double
  %110 = call double @llvm.fabs.f64(double %109)
  br label %207

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

118:                                              ; preds = %111
  %119 = load ptr, ptr %14, align 8, !tbaa !9
  %120 = load i32, ptr %22, align 4, !tbaa !5
  %121 = sext i32 %120 to i64
  %122 = getelementptr inbounds float, ptr %119, i64 %121
  %123 = load float, ptr %122, align 4, !tbaa !16
  %124 = load ptr, ptr %15, align 8, !tbaa !9
  %125 = load i32, ptr %22, align 4, !tbaa !5
  %126 = sext i32 %125 to i64
  %127 = getelementptr inbounds float, ptr %124, i64 %126
  %128 = load float, ptr %127, align 4, !tbaa !16
  %129 = fsub float %123, %128
  br label %204

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

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

154:                                              ; preds = %137
  %155 = load ptr, ptr %16, align 8, !tbaa !9
  %156 = load i32, ptr %22, align 4, !tbaa !5
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds float, ptr %155, i64 %157
  %159 = load float, ptr %158, align 4, !tbaa !16
  br label %166

160:                                              ; preds = %137
  %161 = load ptr, ptr %13, align 8, !tbaa !9
  %162 = load i32, ptr %22, align 4, !tbaa !5
  %163 = sext i32 %162 to i64
  %164 = getelementptr inbounds float, ptr %161, i64 %163
  %165 = load float, ptr %164, align 4, !tbaa !16
  br label %166

166:                                              ; preds = %160, %154
  %167 = phi float [ %159, %154 ], [ %165, %160 ]
  %168 = fsub float %142, %167
  %169 = load ptr, ptr %16, align 8, !tbaa !9
  %170 = load i32, ptr %22, align 4, !tbaa !5
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds float, ptr %169, i64 %171
  %173 = load float, ptr %172, align 4, !tbaa !16
  %174 = load ptr, ptr %13, align 8, !tbaa !9
  %175 = load i32, ptr %22, align 4, !tbaa !5
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds float, ptr %174, i64 %176
  %178 = load float, ptr %177, align 4, !tbaa !16
  %179 = fcmp oge float %173, %178
  br i1 %179, label %180, label %186

180:                                              ; preds = %166
  %181 = load ptr, ptr %13, align 8, !tbaa !9
  %182 = load i32, ptr %22, align 4, !tbaa !5
  %183 = sext i32 %182 to i64
  %184 = getelementptr inbounds float, ptr %181, i64 %183
  %185 = load float, ptr %184, align 4, !tbaa !16
  br label %192

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

192:                                              ; preds = %186, %180
  %193 = phi float [ %185, %180 ], [ %191, %186 ]
  %194 = load ptr, ptr %15, align 8, !tbaa !9
  %195 = load i32, ptr %22, align 4, !tbaa !5
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds float, ptr %194, i64 %196
  %198 = load float, ptr %197, align 4, !tbaa !16
  %199 = fsub float %193, %198
  %200 = fadd float %168, %199
  br label %202

201:                                              ; preds = %130
  br label %202

202:                                              ; preds = %201, %192
  %203 = phi float [ %200, %192 ], [ 0.000000e+00, %201 ]
  br label %204

204:                                              ; preds = %202, %118
  %205 = phi float [ %129, %118 ], [ %203, %202 ]
  %206 = fpext float %205 to double
  br label %207

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

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

215:                                              ; preds = %336, %213
  %216 = load i32, ptr %22, align 4, !tbaa !5
  %217 = load i32, ptr %11, align 4, !tbaa !5
  %218 = icmp slt i32 %216, %217
  br i1 %218, label %219, label %342

219:                                              ; preds = %215
  %220 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %221 = getelementptr inbounds %struct.TA_LibcPriv, ptr %220, i32 0, i32 8
  %222 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %221, i64 0, i64 5
  %223 = getelementptr inbounds %struct.TA_CandleSetting, ptr %222, i32 0, i32 1
  %224 = load i32, ptr %223, align 4, !tbaa !15
  %225 = icmp eq i32 %224, 0
  br i1 %225, label %226, label %240

226:                                              ; preds = %219
  %227 = load ptr, ptr %16, align 8, !tbaa !9
  %228 = load i32, ptr %22, align 4, !tbaa !5
  %229 = sext i32 %228 to i64
  %230 = getelementptr inbounds float, ptr %227, i64 %229
  %231 = load float, ptr %230, align 4, !tbaa !16
  %232 = load ptr, ptr %13, align 8, !tbaa !9
  %233 = load i32, ptr %22, align 4, !tbaa !5
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds float, ptr %232, i64 %234
  %236 = load float, ptr %235, align 4, !tbaa !16
  %237 = fsub float %231, %236
  %238 = fpext float %237 to double
  %239 = call double @llvm.fabs.f64(double %238)
  br label %336

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

247:                                              ; preds = %240
  %248 = load ptr, ptr %14, align 8, !tbaa !9
  %249 = load i32, ptr %22, align 4, !tbaa !5
  %250 = sext i32 %249 to i64
  %251 = getelementptr inbounds float, ptr %248, i64 %250
  %252 = load float, ptr %251, align 4, !tbaa !16
  %253 = load ptr, ptr %15, align 8, !tbaa !9
  %254 = load i32, ptr %22, align 4, !tbaa !5
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds float, ptr %253, i64 %255
  %257 = load float, ptr %256, align 4, !tbaa !16
  %258 = fsub float %252, %257
  br label %333

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

266:                                              ; preds = %259
  %267 = load ptr, ptr %14, align 8, !tbaa !9
  %268 = load i32, ptr %22, align 4, !tbaa !5
  %269 = sext i32 %268 to i64
  %270 = getelementptr inbounds float, ptr %267, i64 %269
  %271 = load float, ptr %270, align 4, !tbaa !16
  %272 = load ptr, ptr %16, align 8, !tbaa !9
  %273 = load i32, ptr %22, align 4, !tbaa !5
  %274 = sext i32 %273 to i64
  %275 = getelementptr inbounds float, ptr %272, i64 %274
  %276 = load float, ptr %275, align 4, !tbaa !16
  %277 = load ptr, ptr %13, align 8, !tbaa !9
  %278 = load i32, ptr %22, align 4, !tbaa !5
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds float, ptr %277, i64 %279
  %281 = load float, ptr %280, align 4, !tbaa !16
  %282 = fcmp oge float %276, %281
  br i1 %282, label %283, label %289

283:                                              ; preds = %266
  %284 = load ptr, ptr %16, align 8, !tbaa !9
  %285 = load i32, ptr %22, align 4, !tbaa !5
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds float, ptr %284, i64 %286
  %288 = load float, ptr %287, align 4, !tbaa !16
  br label %295

289:                                              ; preds = %266
  %290 = load ptr, ptr %13, align 8, !tbaa !9
  %291 = load i32, ptr %22, align 4, !tbaa !5
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds float, ptr %290, i64 %292
  %294 = load float, ptr %293, align 4, !tbaa !16
  br label %295

295:                                              ; preds = %289, %283
  %296 = phi float [ %288, %283 ], [ %294, %289 ]
  %297 = fsub float %271, %296
  %298 = load ptr, ptr %16, align 8, !tbaa !9
  %299 = load i32, ptr %22, align 4, !tbaa !5
  %300 = sext i32 %299 to i64
  %301 = getelementptr inbounds float, ptr %298, i64 %300
  %302 = load float, ptr %301, align 4, !tbaa !16
  %303 = load ptr, ptr %13, align 8, !tbaa !9
  %304 = load i32, ptr %22, align 4, !tbaa !5
  %305 = sext i32 %304 to i64
  %306 = getelementptr inbounds float, ptr %303, i64 %305
  %307 = load float, ptr %306, align 4, !tbaa !16
  %308 = fcmp oge float %302, %307
  br i1 %308, label %309, label %315

309:                                              ; preds = %295
  %310 = load ptr, ptr %13, align 8, !tbaa !9
  %311 = load i32, ptr %22, align 4, !tbaa !5
  %312 = sext i32 %311 to i64
  %313 = getelementptr inbounds float, ptr %310, i64 %312
  %314 = load float, ptr %313, align 4, !tbaa !16
  br label %321

315:                                              ; preds = %295
  %316 = load ptr, ptr %16, align 8, !tbaa !9
  %317 = load i32, ptr %22, align 4, !tbaa !5
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds float, ptr %316, i64 %318
  %320 = load float, ptr %319, align 4, !tbaa !16
  br label %321

321:                                              ; preds = %315, %309
  %322 = phi float [ %314, %309 ], [ %320, %315 ]
  %323 = load ptr, ptr %15, align 8, !tbaa !9
  %324 = load i32, ptr %22, align 4, !tbaa !5
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds float, ptr %323, i64 %325
  %327 = load float, ptr %326, align 4, !tbaa !16
  %328 = fsub float %322, %327
  %329 = fadd float %297, %328
  br label %331

330:                                              ; preds = %259
  br label %331

331:                                              ; preds = %330, %321
  %332 = phi float [ %329, %321 ], [ 0.000000e+00, %330 ]
  br label %333

333:                                              ; preds = %331, %247
  %334 = phi float [ %258, %247 ], [ %332, %331 ]
  %335 = fpext float %334 to double
  br label %336

336:                                              ; preds = %333, %226
  %337 = phi double [ %239, %226 ], [ %335, %333 ]
  %338 = load double, ptr %21, align 8, !tbaa !11
  %339 = fadd double %338, %337
  store double %339, ptr %21, align 8, !tbaa !11
  %340 = load i32, ptr %22, align 4, !tbaa !5
  %341 = add nsw i32 %340, 1
  store i32 %341, ptr %22, align 4, !tbaa !5
  br label %215, !llvm.loop !20

342:                                              ; preds = %215
  store i32 0, ptr %23, align 4, !tbaa !5
  br label %343

343:                                              ; preds = %1393, %342
  %344 = load ptr, ptr %16, align 8, !tbaa !9
  %345 = load i32, ptr %22, align 4, !tbaa !5
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds float, ptr %344, i64 %346
  %348 = load float, ptr %347, align 4, !tbaa !16
  %349 = load ptr, ptr %13, align 8, !tbaa !9
  %350 = load i32, ptr %22, align 4, !tbaa !5
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds float, ptr %349, i64 %351
  %353 = load float, ptr %352, align 4, !tbaa !16
  %354 = fsub float %348, %353
  %355 = fpext float %354 to double
  %356 = call double @llvm.fabs.f64(double %355)
  %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 2
  %360 = getelementptr inbounds %struct.TA_CandleSetting, ptr %359, i32 0, i32 3
  %361 = load double, ptr %360, align 8, !tbaa !21
  %362 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %363 = getelementptr inbounds %struct.TA_LibcPriv, ptr %362, i32 0, i32 8
  %364 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %363, i64 0, i64 2
  %365 = getelementptr inbounds %struct.TA_CandleSetting, ptr %364, i32 0, i32 2
  %366 = load i32, ptr %365, align 8, !tbaa !13
  %367 = sitofp i32 %366 to double
  %368 = fcmp une double %367, 0.000000e+00
  br i1 %368, label %369, label %378

369:                                              ; preds = %343
  %370 = load double, ptr %20, align 8, !tbaa !11
  %371 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %372 = getelementptr inbounds %struct.TA_LibcPriv, ptr %371, i32 0, i32 8
  %373 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %372, i64 0, i64 2
  %374 = getelementptr inbounds %struct.TA_CandleSetting, ptr %373, i32 0, i32 2
  %375 = load i32, ptr %374, align 8, !tbaa !13
  %376 = sitofp i32 %375 to double
  %377 = fdiv double %370, %376
  br label %497

378:                                              ; preds = %343
  %379 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %380 = getelementptr inbounds %struct.TA_LibcPriv, ptr %379, i32 0, i32 8
  %381 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %380, i64 0, i64 2
  %382 = getelementptr inbounds %struct.TA_CandleSetting, ptr %381, i32 0, i32 1
  %383 = load i32, ptr %382, align 4, !tbaa !15
  %384 = icmp eq i32 %383, 0
  br i1 %384, label %385, label %399

385:                                              ; preds = %378
  %386 = load ptr, ptr %16, align 8, !tbaa !9
  %387 = load i32, ptr %22, align 4, !tbaa !5
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds float, ptr %386, i64 %388
  %390 = load float, ptr %389, align 4, !tbaa !16
  %391 = load ptr, ptr %13, align 8, !tbaa !9
  %392 = load i32, ptr %22, align 4, !tbaa !5
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds float, ptr %391, i64 %393
  %395 = load float, ptr %394, align 4, !tbaa !16
  %396 = fsub float %390, %395
  %397 = fpext float %396 to double
  %398 = call double @llvm.fabs.f64(double %397)
  br label %495

399:                                              ; preds = %378
  %400 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %401 = getelementptr inbounds %struct.TA_LibcPriv, ptr %400, i32 0, i32 8
  %402 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %401, i64 0, i64 2
  %403 = getelementptr inbounds %struct.TA_CandleSetting, ptr %402, i32 0, i32 1
  %404 = load i32, ptr %403, align 4, !tbaa !15
  %405 = icmp eq i32 %404, 1
  br i1 %405, label %406, label %418

406:                                              ; preds = %399
  %407 = load ptr, ptr %14, align 8, !tbaa !9
  %408 = load i32, ptr %22, align 4, !tbaa !5
  %409 = sext i32 %408 to i64
  %410 = getelementptr inbounds float, ptr %407, i64 %409
  %411 = load float, ptr %410, align 4, !tbaa !16
  %412 = load ptr, ptr %15, align 8, !tbaa !9
  %413 = load i32, ptr %22, align 4, !tbaa !5
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds float, ptr %412, i64 %414
  %416 = load float, ptr %415, align 4, !tbaa !16
  %417 = fsub float %411, %416
  br label %492

418:                                              ; preds = %399
  %419 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %420 = getelementptr inbounds %struct.TA_LibcPriv, ptr %419, i32 0, i32 8
  %421 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %420, i64 0, i64 2
  %422 = getelementptr inbounds %struct.TA_CandleSetting, ptr %421, i32 0, i32 1
  %423 = load i32, ptr %422, align 4, !tbaa !15
  %424 = icmp eq i32 %423, 2
  br i1 %424, label %425, label %489

425:                                              ; preds = %418
  %426 = load ptr, ptr %14, align 8, !tbaa !9
  %427 = load i32, ptr %22, align 4, !tbaa !5
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds float, ptr %426, i64 %428
  %430 = load float, ptr %429, align 4, !tbaa !16
  %431 = load ptr, ptr %16, align 8, !tbaa !9
  %432 = load i32, ptr %22, align 4, !tbaa !5
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds float, ptr %431, i64 %433
  %435 = load float, ptr %434, align 4, !tbaa !16
  %436 = load ptr, ptr %13, align 8, !tbaa !9
  %437 = load i32, ptr %22, align 4, !tbaa !5
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds float, ptr %436, i64 %438
  %440 = load float, ptr %439, align 4, !tbaa !16
  %441 = fcmp oge float %435, %440
  br i1 %441, label %442, label %448

442:                                              ; preds = %425
  %443 = load ptr, ptr %16, align 8, !tbaa !9
  %444 = load i32, ptr %22, align 4, !tbaa !5
  %445 = sext i32 %444 to i64
  %446 = getelementptr inbounds float, ptr %443, i64 %445
  %447 = load float, ptr %446, align 4, !tbaa !16
  br label %454

448:                                              ; preds = %425
  %449 = load ptr, ptr %13, align 8, !tbaa !9
  %450 = load i32, ptr %22, align 4, !tbaa !5
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds float, ptr %449, i64 %451
  %453 = load float, ptr %452, align 4, !tbaa !16
  br label %454

454:                                              ; preds = %448, %442
  %455 = phi float [ %447, %442 ], [ %453, %448 ]
  %456 = fsub float %430, %455
  %457 = load ptr, ptr %16, align 8, !tbaa !9
  %458 = load i32, ptr %22, align 4, !tbaa !5
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds float, ptr %457, i64 %459
  %461 = load float, ptr %460, align 4, !tbaa !16
  %462 = load ptr, ptr %13, align 8, !tbaa !9
  %463 = load i32, ptr %22, align 4, !tbaa !5
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds float, ptr %462, i64 %464
  %466 = load float, ptr %465, align 4, !tbaa !16
  %467 = fcmp oge float %461, %466
  br i1 %467, label %468, label %474

468:                                              ; preds = %454
  %469 = load ptr, ptr %13, align 8, !tbaa !9
  %470 = load i32, ptr %22, align 4, !tbaa !5
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds float, ptr %469, i64 %471
  %473 = load float, ptr %472, align 4, !tbaa !16
  br label %480

474:                                              ; preds = %454
  %475 = load ptr, ptr %16, align 8, !tbaa !9
  %476 = load i32, ptr %22, align 4, !tbaa !5
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds float, ptr %475, i64 %477
  %479 = load float, ptr %478, align 4, !tbaa !16
  br label %480

480:                                              ; preds = %474, %468
  %481 = phi float [ %473, %468 ], [ %479, %474 ]
  %482 = load ptr, ptr %15, align 8, !tbaa !9
  %483 = load i32, ptr %22, align 4, !tbaa !5
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds float, ptr %482, i64 %484
  %486 = load float, ptr %485, align 4, !tbaa !16
  %487 = fsub float %481, %486
  %488 = fadd float %456, %487
  br label %490

489:                                              ; preds = %418
  br label %490

490:                                              ; preds = %489, %480
  %491 = phi float [ %488, %480 ], [ 0.000000e+00, %489 ]
  br label %492

492:                                              ; preds = %490, %406
  %493 = phi float [ %417, %406 ], [ %491, %490 ]
  %494 = fpext float %493 to double
  br label %495

495:                                              ; preds = %492, %385
  %496 = phi double [ %398, %385 ], [ %494, %492 ]
  br label %497

497:                                              ; preds = %495, %369
  %498 = phi double [ %377, %369 ], [ %496, %495 ]
  %499 = fmul double %361, %498
  %500 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %501 = getelementptr inbounds %struct.TA_LibcPriv, ptr %500, i32 0, i32 8
  %502 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %501, i64 0, i64 2
  %503 = getelementptr inbounds %struct.TA_CandleSetting, ptr %502, i32 0, i32 1
  %504 = load i32, ptr %503, align 4, !tbaa !15
  %505 = icmp eq i32 %504, 2
  %506 = zext i1 %505 to i64
  %507 = select i1 %505, double 2.000000e+00, double 1.000000e+00
  %508 = fdiv double %499, %507
  %509 = fcmp olt double %356, %508
  br i1 %509, label %510, label %902

510:                                              ; preds = %497
  %511 = load ptr, ptr %14, align 8, !tbaa !9
  %512 = load i32, ptr %22, align 4, !tbaa !5
  %513 = sext i32 %512 to i64
  %514 = getelementptr inbounds float, ptr %511, i64 %513
  %515 = load float, ptr %514, align 4, !tbaa !16
  %516 = load ptr, ptr %16, align 8, !tbaa !9
  %517 = load i32, ptr %22, align 4, !tbaa !5
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds float, ptr %516, i64 %518
  %520 = load float, ptr %519, align 4, !tbaa !16
  %521 = load ptr, ptr %13, align 8, !tbaa !9
  %522 = load i32, ptr %22, align 4, !tbaa !5
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds float, ptr %521, i64 %523
  %525 = load float, ptr %524, align 4, !tbaa !16
  %526 = fcmp oge float %520, %525
  br i1 %526, label %527, label %533

527:                                              ; preds = %510
  %528 = load ptr, ptr %16, align 8, !tbaa !9
  %529 = load i32, ptr %22, align 4, !tbaa !5
  %530 = sext i32 %529 to i64
  %531 = getelementptr inbounds float, ptr %528, i64 %530
  %532 = load float, ptr %531, align 4, !tbaa !16
  br label %539

533:                                              ; preds = %510
  %534 = load ptr, ptr %13, align 8, !tbaa !9
  %535 = load i32, ptr %22, align 4, !tbaa !5
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds float, ptr %534, i64 %536
  %538 = load float, ptr %537, align 4, !tbaa !16
  br label %539

539:                                              ; preds = %533, %527
  %540 = phi float [ %532, %527 ], [ %538, %533 ]
  %541 = fsub float %515, %540
  %542 = fpext float %541 to double
  %543 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %544 = getelementptr inbounds %struct.TA_LibcPriv, ptr %543, i32 0, i32 8
  %545 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %544, i64 0, i64 5
  %546 = getelementptr inbounds %struct.TA_CandleSetting, ptr %545, i32 0, i32 3
  %547 = load double, ptr %546, align 8, !tbaa !21
  %548 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %549 = getelementptr inbounds %struct.TA_LibcPriv, ptr %548, i32 0, i32 8
  %550 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %549, i64 0, i64 5
  %551 = getelementptr inbounds %struct.TA_CandleSetting, ptr %550, i32 0, i32 2
  %552 = load i32, ptr %551, align 8, !tbaa !13
  %553 = sitofp i32 %552 to double
  %554 = fcmp une double %553, 0.000000e+00
  br i1 %554, label %555, label %564

555:                                              ; preds = %539
  %556 = load double, ptr %21, align 8, !tbaa !11
  %557 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %558 = getelementptr inbounds %struct.TA_LibcPriv, ptr %557, i32 0, i32 8
  %559 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %558, i64 0, i64 5
  %560 = getelementptr inbounds %struct.TA_CandleSetting, ptr %559, i32 0, i32 2
  %561 = load i32, ptr %560, align 8, !tbaa !13
  %562 = sitofp i32 %561 to double
  %563 = fdiv double %556, %562
  br label %683

564:                                              ; preds = %539
  %565 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %566 = getelementptr inbounds %struct.TA_LibcPriv, ptr %565, i32 0, i32 8
  %567 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %566, i64 0, i64 5
  %568 = getelementptr inbounds %struct.TA_CandleSetting, ptr %567, i32 0, i32 1
  %569 = load i32, ptr %568, align 4, !tbaa !15
  %570 = icmp eq i32 %569, 0
  br i1 %570, label %571, label %585

571:                                              ; preds = %564
  %572 = load ptr, ptr %16, align 8, !tbaa !9
  %573 = load i32, ptr %22, align 4, !tbaa !5
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds float, ptr %572, i64 %574
  %576 = load float, ptr %575, align 4, !tbaa !16
  %577 = load ptr, ptr %13, align 8, !tbaa !9
  %578 = load i32, ptr %22, align 4, !tbaa !5
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds float, ptr %577, i64 %579
  %581 = load float, ptr %580, align 4, !tbaa !16
  %582 = fsub float %576, %581
  %583 = fpext float %582 to double
  %584 = call double @llvm.fabs.f64(double %583)
  br label %681

585:                                              ; preds = %564
  %586 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %587 = getelementptr inbounds %struct.TA_LibcPriv, ptr %586, i32 0, i32 8
  %588 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %587, i64 0, i64 5
  %589 = getelementptr inbounds %struct.TA_CandleSetting, ptr %588, i32 0, i32 1
  %590 = load i32, ptr %589, align 4, !tbaa !15
  %591 = icmp eq i32 %590, 1
  br i1 %591, label %592, label %604

592:                                              ; preds = %585
  %593 = load ptr, ptr %14, align 8, !tbaa !9
  %594 = load i32, ptr %22, align 4, !tbaa !5
  %595 = sext i32 %594 to i64
  %596 = getelementptr inbounds float, ptr %593, i64 %595
  %597 = load float, ptr %596, align 4, !tbaa !16
  %598 = load ptr, ptr %15, align 8, !tbaa !9
  %599 = load i32, ptr %22, align 4, !tbaa !5
  %600 = sext i32 %599 to i64
  %601 = getelementptr inbounds float, ptr %598, i64 %600
  %602 = load float, ptr %601, align 4, !tbaa !16
  %603 = fsub float %597, %602
  br label %678

604:                                              ; preds = %585
  %605 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %606 = getelementptr inbounds %struct.TA_LibcPriv, ptr %605, i32 0, i32 8
  %607 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %606, i64 0, i64 5
  %608 = getelementptr inbounds %struct.TA_CandleSetting, ptr %607, i32 0, i32 1
  %609 = load i32, ptr %608, align 4, !tbaa !15
  %610 = icmp eq i32 %609, 2
  br i1 %610, label %611, label %675

611:                                              ; preds = %604
  %612 = load ptr, ptr %14, align 8, !tbaa !9
  %613 = load i32, ptr %22, align 4, !tbaa !5
  %614 = sext i32 %613 to i64
  %615 = getelementptr inbounds float, ptr %612, i64 %614
  %616 = load float, ptr %615, align 4, !tbaa !16
  %617 = load ptr, ptr %16, align 8, !tbaa !9
  %618 = load i32, ptr %22, align 4, !tbaa !5
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds float, ptr %617, i64 %619
  %621 = load float, ptr %620, align 4, !tbaa !16
  %622 = load ptr, ptr %13, align 8, !tbaa !9
  %623 = load i32, ptr %22, align 4, !tbaa !5
  %624 = sext i32 %623 to i64
  %625 = getelementptr inbounds float, ptr %622, i64 %624
  %626 = load float, ptr %625, align 4, !tbaa !16
  %627 = fcmp oge float %621, %626
  br i1 %627, label %628, label %634

628:                                              ; preds = %611
  %629 = load ptr, ptr %16, align 8, !tbaa !9
  %630 = load i32, ptr %22, align 4, !tbaa !5
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds float, ptr %629, i64 %631
  %633 = load float, ptr %632, align 4, !tbaa !16
  br label %640

634:                                              ; preds = %611
  %635 = load ptr, ptr %13, align 8, !tbaa !9
  %636 = load i32, ptr %22, align 4, !tbaa !5
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds float, ptr %635, i64 %637
  %639 = load float, ptr %638, align 4, !tbaa !16
  br label %640

640:                                              ; preds = %634, %628
  %641 = phi float [ %633, %628 ], [ %639, %634 ]
  %642 = fsub float %616, %641
  %643 = load ptr, ptr %16, align 8, !tbaa !9
  %644 = load i32, ptr %22, align 4, !tbaa !5
  %645 = sext i32 %644 to i64
  %646 = getelementptr inbounds float, ptr %643, i64 %645
  %647 = load float, ptr %646, align 4, !tbaa !16
  %648 = load ptr, ptr %13, align 8, !tbaa !9
  %649 = load i32, ptr %22, align 4, !tbaa !5
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds float, ptr %648, i64 %650
  %652 = load float, ptr %651, align 4, !tbaa !16
  %653 = fcmp oge float %647, %652
  br i1 %653, label %654, label %660

654:                                              ; preds = %640
  %655 = load ptr, ptr %13, align 8, !tbaa !9
  %656 = load i32, ptr %22, align 4, !tbaa !5
  %657 = sext i32 %656 to i64
  %658 = getelementptr inbounds float, ptr %655, i64 %657
  %659 = load float, ptr %658, align 4, !tbaa !16
  br label %666

660:                                              ; preds = %640
  %661 = load ptr, ptr %16, align 8, !tbaa !9
  %662 = load i32, ptr %22, align 4, !tbaa !5
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds float, ptr %661, i64 %663
  %665 = load float, ptr %664, align 4, !tbaa !16
  br label %666

666:                                              ; preds = %660, %654
  %667 = phi float [ %659, %654 ], [ %665, %660 ]
  %668 = load ptr, ptr %15, align 8, !tbaa !9
  %669 = load i32, ptr %22, align 4, !tbaa !5
  %670 = sext i32 %669 to i64
  %671 = getelementptr inbounds float, ptr %668, i64 %670
  %672 = load float, ptr %671, align 4, !tbaa !16
  %673 = fsub float %667, %672
  %674 = fadd float %642, %673
  br label %676

675:                                              ; preds = %604
  br label %676

676:                                              ; preds = %675, %666
  %677 = phi float [ %674, %666 ], [ 0.000000e+00, %675 ]
  br label %678

678:                                              ; preds = %676, %592
  %679 = phi float [ %603, %592 ], [ %677, %676 ]
  %680 = fpext float %679 to double
  br label %681

681:                                              ; preds = %678, %571
  %682 = phi double [ %584, %571 ], [ %680, %678 ]
  br label %683

683:                                              ; preds = %681, %555
  %684 = phi double [ %563, %555 ], [ %682, %681 ]
  %685 = fmul double %547, %684
  %686 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %687 = getelementptr inbounds %struct.TA_LibcPriv, ptr %686, i32 0, i32 8
  %688 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %687, i64 0, i64 5
  %689 = getelementptr inbounds %struct.TA_CandleSetting, ptr %688, i32 0, i32 1
  %690 = load i32, ptr %689, align 4, !tbaa !15
  %691 = icmp eq i32 %690, 2
  %692 = zext i1 %691 to i64
  %693 = select i1 %691, double 2.000000e+00, double 1.000000e+00
  %694 = fdiv double %685, %693
  %695 = fcmp ogt double %542, %694
  br i1 %695, label %696, label %902

696:                                              ; preds = %683
  %697 = load ptr, ptr %16, align 8, !tbaa !9
  %698 = load i32, ptr %22, align 4, !tbaa !5
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds float, ptr %697, i64 %699
  %701 = load float, ptr %700, align 4, !tbaa !16
  %702 = load ptr, ptr %13, align 8, !tbaa !9
  %703 = load i32, ptr %22, align 4, !tbaa !5
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds float, ptr %702, i64 %704
  %706 = load float, ptr %705, align 4, !tbaa !16
  %707 = fcmp oge float %701, %706
  br i1 %707, label %708, label %714

708:                                              ; preds = %696
  %709 = load ptr, ptr %13, align 8, !tbaa !9
  %710 = load i32, ptr %22, align 4, !tbaa !5
  %711 = sext i32 %710 to i64
  %712 = getelementptr inbounds float, ptr %709, i64 %711
  %713 = load float, ptr %712, align 4, !tbaa !16
  br label %720

714:                                              ; preds = %696
  %715 = load ptr, ptr %16, align 8, !tbaa !9
  %716 = load i32, ptr %22, align 4, !tbaa !5
  %717 = sext i32 %716 to i64
  %718 = getelementptr inbounds float, ptr %715, i64 %717
  %719 = load float, ptr %718, align 4, !tbaa !16
  br label %720

720:                                              ; preds = %714, %708
  %721 = phi float [ %713, %708 ], [ %719, %714 ]
  %722 = load ptr, ptr %15, align 8, !tbaa !9
  %723 = load i32, ptr %22, align 4, !tbaa !5
  %724 = sext i32 %723 to i64
  %725 = getelementptr inbounds float, ptr %722, i64 %724
  %726 = load float, ptr %725, align 4, !tbaa !16
  %727 = fsub float %721, %726
  %728 = fpext float %727 to double
  %729 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %730 = getelementptr inbounds %struct.TA_LibcPriv, ptr %729, i32 0, i32 8
  %731 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %730, i64 0, i64 5
  %732 = getelementptr inbounds %struct.TA_CandleSetting, ptr %731, i32 0, i32 3
  %733 = load double, ptr %732, align 8, !tbaa !21
  %734 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %735 = getelementptr inbounds %struct.TA_LibcPriv, ptr %734, i32 0, i32 8
  %736 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %735, i64 0, i64 5
  %737 = getelementptr inbounds %struct.TA_CandleSetting, ptr %736, i32 0, i32 2
  %738 = load i32, ptr %737, align 8, !tbaa !13
  %739 = sitofp i32 %738 to double
  %740 = fcmp une double %739, 0.000000e+00
  br i1 %740, label %741, label %750

741:                                              ; preds = %720
  %742 = load double, ptr %21, align 8, !tbaa !11
  %743 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %744 = getelementptr inbounds %struct.TA_LibcPriv, ptr %743, i32 0, i32 8
  %745 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %744, i64 0, i64 5
  %746 = getelementptr inbounds %struct.TA_CandleSetting, ptr %745, i32 0, i32 2
  %747 = load i32, ptr %746, align 8, !tbaa !13
  %748 = sitofp i32 %747 to double
  %749 = fdiv double %742, %748
  br label %869

750:                                              ; preds = %720
  %751 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %752 = getelementptr inbounds %struct.TA_LibcPriv, ptr %751, i32 0, i32 8
  %753 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %752, i64 0, i64 5
  %754 = getelementptr inbounds %struct.TA_CandleSetting, ptr %753, i32 0, i32 1
  %755 = load i32, ptr %754, align 4, !tbaa !15
  %756 = icmp eq i32 %755, 0
  br i1 %756, label %757, label %771

757:                                              ; preds = %750
  %758 = load ptr, ptr %16, align 8, !tbaa !9
  %759 = load i32, ptr %22, align 4, !tbaa !5
  %760 = sext i32 %759 to i64
  %761 = getelementptr inbounds float, ptr %758, i64 %760
  %762 = load float, ptr %761, align 4, !tbaa !16
  %763 = load ptr, ptr %13, align 8, !tbaa !9
  %764 = load i32, ptr %22, align 4, !tbaa !5
  %765 = sext i32 %764 to i64
  %766 = getelementptr inbounds float, ptr %763, i64 %765
  %767 = load float, ptr %766, align 4, !tbaa !16
  %768 = fsub float %762, %767
  %769 = fpext float %768 to double
  %770 = call double @llvm.fabs.f64(double %769)
  br label %867

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

778:                                              ; preds = %771
  %779 = load ptr, ptr %14, align 8, !tbaa !9
  %780 = load i32, ptr %22, align 4, !tbaa !5
  %781 = sext i32 %780 to i64
  %782 = getelementptr inbounds float, ptr %779, i64 %781
  %783 = load float, ptr %782, align 4, !tbaa !16
  %784 = load ptr, ptr %15, align 8, !tbaa !9
  %785 = load i32, ptr %22, align 4, !tbaa !5
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds float, ptr %784, i64 %786
  %788 = load float, ptr %787, align 4, !tbaa !16
  %789 = fsub float %783, %788
  br label %864

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

797:                                              ; preds = %790
  %798 = load ptr, ptr %14, align 8, !tbaa !9
  %799 = load i32, ptr %22, align 4, !tbaa !5
  %800 = sext i32 %799 to i64
  %801 = getelementptr inbounds float, ptr %798, i64 %800
  %802 = load float, ptr %801, align 4, !tbaa !16
  %803 = load ptr, ptr %16, align 8, !tbaa !9
  %804 = load i32, ptr %22, align 4, !tbaa !5
  %805 = sext i32 %804 to i64
  %806 = getelementptr inbounds float, ptr %803, i64 %805
  %807 = load float, ptr %806, align 4, !tbaa !16
  %808 = load ptr, ptr %13, align 8, !tbaa !9
  %809 = load i32, ptr %22, align 4, !tbaa !5
  %810 = sext i32 %809 to i64
  %811 = getelementptr inbounds float, ptr %808, i64 %810
  %812 = load float, ptr %811, align 4, !tbaa !16
  %813 = fcmp oge float %807, %812
  br i1 %813, label %814, label %820

814:                                              ; preds = %797
  %815 = load ptr, ptr %16, align 8, !tbaa !9
  %816 = load i32, ptr %22, align 4, !tbaa !5
  %817 = sext i32 %816 to i64
  %818 = getelementptr inbounds float, ptr %815, i64 %817
  %819 = load float, ptr %818, align 4, !tbaa !16
  br label %826

820:                                              ; preds = %797
  %821 = load ptr, ptr %13, align 8, !tbaa !9
  %822 = load i32, ptr %22, align 4, !tbaa !5
  %823 = sext i32 %822 to i64
  %824 = getelementptr inbounds float, ptr %821, i64 %823
  %825 = load float, ptr %824, align 4, !tbaa !16
  br label %826

826:                                              ; preds = %820, %814
  %827 = phi float [ %819, %814 ], [ %825, %820 ]
  %828 = fsub float %802, %827
  %829 = load ptr, ptr %16, align 8, !tbaa !9
  %830 = load i32, ptr %22, align 4, !tbaa !5
  %831 = sext i32 %830 to i64
  %832 = getelementptr inbounds float, ptr %829, i64 %831
  %833 = load float, ptr %832, align 4, !tbaa !16
  %834 = load ptr, ptr %13, align 8, !tbaa !9
  %835 = load i32, ptr %22, align 4, !tbaa !5
  %836 = sext i32 %835 to i64
  %837 = getelementptr inbounds float, ptr %834, i64 %836
  %838 = load float, ptr %837, align 4, !tbaa !16
  %839 = fcmp oge float %833, %838
  br i1 %839, label %840, label %846

840:                                              ; preds = %826
  %841 = load ptr, ptr %13, align 8, !tbaa !9
  %842 = load i32, ptr %22, align 4, !tbaa !5
  %843 = sext i32 %842 to i64
  %844 = getelementptr inbounds float, ptr %841, i64 %843
  %845 = load float, ptr %844, align 4, !tbaa !16
  br label %852

846:                                              ; preds = %826
  %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 float, ptr %847, i64 %849
  %851 = load float, ptr %850, align 4, !tbaa !16
  br label %852

852:                                              ; preds = %846, %840
  %853 = phi float [ %845, %840 ], [ %851, %846 ]
  %854 = load ptr, ptr %15, align 8, !tbaa !9
  %855 = load i32, ptr %22, align 4, !tbaa !5
  %856 = sext i32 %855 to i64
  %857 = getelementptr inbounds float, ptr %854, i64 %856
  %858 = load float, ptr %857, align 4, !tbaa !16
  %859 = fsub float %853, %858
  %860 = fadd float %828, %859
  br label %862

861:                                              ; preds = %790
  br label %862

862:                                              ; preds = %861, %852
  %863 = phi float [ %860, %852 ], [ 0.000000e+00, %861 ]
  br label %864

864:                                              ; preds = %862, %778
  %865 = phi float [ %789, %778 ], [ %863, %862 ]
  %866 = fpext float %865 to double
  br label %867

867:                                              ; preds = %864, %757
  %868 = phi double [ %770, %757 ], [ %866, %864 ]
  br label %869

869:                                              ; preds = %867, %741
  %870 = phi double [ %749, %741 ], [ %868, %867 ]
  %871 = fmul double %733, %870
  %872 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %873 = getelementptr inbounds %struct.TA_LibcPriv, ptr %872, i32 0, i32 8
  %874 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %873, i64 0, i64 5
  %875 = getelementptr inbounds %struct.TA_CandleSetting, ptr %874, i32 0, i32 1
  %876 = load i32, ptr %875, align 4, !tbaa !15
  %877 = icmp eq i32 %876, 2
  %878 = zext i1 %877 to i64
  %879 = select i1 %877, double 2.000000e+00, double 1.000000e+00
  %880 = fdiv double %871, %879
  %881 = fcmp ogt double %728, %880
  br i1 %881, label %882, label %902

882:                                              ; preds = %869
  %883 = load ptr, ptr %16, align 8, !tbaa !9
  %884 = load i32, ptr %22, align 4, !tbaa !5
  %885 = sext i32 %884 to i64
  %886 = getelementptr inbounds float, ptr %883, i64 %885
  %887 = load float, ptr %886, align 4, !tbaa !16
  %888 = load ptr, ptr %13, align 8, !tbaa !9
  %889 = load i32, ptr %22, align 4, !tbaa !5
  %890 = sext i32 %889 to i64
  %891 = getelementptr inbounds float, ptr %888, i64 %890
  %892 = load float, ptr %891, align 4, !tbaa !16
  %893 = fcmp oge float %887, %892
  %894 = zext i1 %893 to i64
  %895 = select i1 %893, i32 1, i32 -1
  %896 = mul nsw i32 %895, 100
  %897 = load ptr, ptr %19, align 8, !tbaa !9
  %898 = load i32, ptr %23, align 4, !tbaa !5
  %899 = add nsw i32 %898, 1
  store i32 %899, ptr %23, align 4, !tbaa !5
  %900 = sext i32 %898 to i64
  %901 = getelementptr inbounds i32, ptr %897, i64 %900
  store i32 %896, ptr %901, align 4, !tbaa !5
  br label %908

902:                                              ; preds = %869, %683, %497
  %903 = load ptr, ptr %19, align 8, !tbaa !9
  %904 = load i32, ptr %23, align 4, !tbaa !5
  %905 = add nsw i32 %904, 1
  store i32 %905, ptr %23, align 4, !tbaa !5
  %906 = sext i32 %904 to i64
  %907 = getelementptr inbounds i32, ptr %903, i64 %906
  store i32 0, ptr %907, align 4, !tbaa !5
  br label %908

908:                                              ; preds = %902, %882
  %909 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %910 = getelementptr inbounds %struct.TA_LibcPriv, ptr %909, i32 0, i32 8
  %911 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %910, i64 0, i64 2
  %912 = getelementptr inbounds %struct.TA_CandleSetting, ptr %911, i32 0, i32 1
  %913 = load i32, ptr %912, align 4, !tbaa !15
  %914 = icmp eq i32 %913, 0
  br i1 %914, label %915, label %929

915:                                              ; preds = %908
  %916 = load ptr, ptr %16, align 8, !tbaa !9
  %917 = load i32, ptr %22, align 4, !tbaa !5
  %918 = sext i32 %917 to i64
  %919 = getelementptr inbounds float, ptr %916, i64 %918
  %920 = load float, ptr %919, align 4, !tbaa !16
  %921 = load ptr, ptr %13, align 8, !tbaa !9
  %922 = load i32, ptr %22, align 4, !tbaa !5
  %923 = sext i32 %922 to i64
  %924 = getelementptr inbounds float, ptr %921, i64 %923
  %925 = load float, ptr %924, align 4, !tbaa !16
  %926 = fsub float %920, %925
  %927 = fpext float %926 to double
  %928 = call double @llvm.fabs.f64(double %927)
  br label %1025

929:                                              ; preds = %908
  %930 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %931 = getelementptr inbounds %struct.TA_LibcPriv, ptr %930, i32 0, i32 8
  %932 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %931, i64 0, i64 2
  %933 = getelementptr inbounds %struct.TA_CandleSetting, ptr %932, i32 0, i32 1
  %934 = load i32, ptr %933, align 4, !tbaa !15
  %935 = icmp eq i32 %934, 1
  br i1 %935, label %936, label %948

936:                                              ; preds = %929
  %937 = load ptr, ptr %14, align 8, !tbaa !9
  %938 = load i32, ptr %22, align 4, !tbaa !5
  %939 = sext i32 %938 to i64
  %940 = getelementptr inbounds float, ptr %937, i64 %939
  %941 = load float, ptr %940, align 4, !tbaa !16
  %942 = load ptr, ptr %15, align 8, !tbaa !9
  %943 = load i32, ptr %22, align 4, !tbaa !5
  %944 = sext i32 %943 to i64
  %945 = getelementptr inbounds float, ptr %942, i64 %944
  %946 = load float, ptr %945, align 4, !tbaa !16
  %947 = fsub float %941, %946
  br label %1022

948:                                              ; preds = %929
  %949 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %950 = getelementptr inbounds %struct.TA_LibcPriv, ptr %949, i32 0, i32 8
  %951 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %950, i64 0, i64 2
  %952 = getelementptr inbounds %struct.TA_CandleSetting, ptr %951, i32 0, i32 1
  %953 = load i32, ptr %952, align 4, !tbaa !15
  %954 = icmp eq i32 %953, 2
  br i1 %954, label %955, label %1019

955:                                              ; preds = %948
  %956 = load ptr, ptr %14, align 8, !tbaa !9
  %957 = load i32, ptr %22, align 4, !tbaa !5
  %958 = sext i32 %957 to i64
  %959 = getelementptr inbounds float, ptr %956, i64 %958
  %960 = load float, ptr %959, align 4, !tbaa !16
  %961 = load ptr, ptr %16, align 8, !tbaa !9
  %962 = load i32, ptr %22, align 4, !tbaa !5
  %963 = sext i32 %962 to i64
  %964 = getelementptr inbounds float, ptr %961, i64 %963
  %965 = load float, ptr %964, align 4, !tbaa !16
  %966 = load ptr, ptr %13, align 8, !tbaa !9
  %967 = load i32, ptr %22, align 4, !tbaa !5
  %968 = sext i32 %967 to i64
  %969 = getelementptr inbounds float, ptr %966, i64 %968
  %970 = load float, ptr %969, align 4, !tbaa !16
  %971 = fcmp oge float %965, %970
  br i1 %971, label %972, label %978

972:                                              ; preds = %955
  %973 = load ptr, ptr %16, align 8, !tbaa !9
  %974 = load i32, ptr %22, align 4, !tbaa !5
  %975 = sext i32 %974 to i64
  %976 = getelementptr inbounds float, ptr %973, i64 %975
  %977 = load float, ptr %976, align 4, !tbaa !16
  br label %984

978:                                              ; preds = %955
  %979 = load ptr, ptr %13, align 8, !tbaa !9
  %980 = load i32, ptr %22, align 4, !tbaa !5
  %981 = sext i32 %980 to i64
  %982 = getelementptr inbounds float, ptr %979, i64 %981
  %983 = load float, ptr %982, align 4, !tbaa !16
  br label %984

984:                                              ; preds = %978, %972
  %985 = phi float [ %977, %972 ], [ %983, %978 ]
  %986 = fsub float %960, %985
  %987 = load ptr, ptr %16, align 8, !tbaa !9
  %988 = load i32, ptr %22, align 4, !tbaa !5
  %989 = sext i32 %988 to i64
  %990 = getelementptr inbounds float, ptr %987, i64 %989
  %991 = load float, ptr %990, align 4, !tbaa !16
  %992 = load ptr, ptr %13, align 8, !tbaa !9
  %993 = load i32, ptr %22, align 4, !tbaa !5
  %994 = sext i32 %993 to i64
  %995 = getelementptr inbounds float, ptr %992, i64 %994
  %996 = load float, ptr %995, align 4, !tbaa !16
  %997 = fcmp oge float %991, %996
  br i1 %997, label %998, label %1004

998:                                              ; preds = %984
  %999 = load ptr, ptr %13, align 8, !tbaa !9
  %1000 = load i32, ptr %22, align 4, !tbaa !5
  %1001 = sext i32 %1000 to i64
  %1002 = getelementptr inbounds float, ptr %999, i64 %1001
  %1003 = load float, ptr %1002, align 4, !tbaa !16
  br label %1010

1004:                                             ; preds = %984
  %1005 = load ptr, ptr %16, align 8, !tbaa !9
  %1006 = load i32, ptr %22, align 4, !tbaa !5
  %1007 = sext i32 %1006 to i64
  %1008 = getelementptr inbounds float, ptr %1005, i64 %1007
  %1009 = load float, ptr %1008, align 4, !tbaa !16
  br label %1010

1010:                                             ; preds = %1004, %998
  %1011 = phi float [ %1003, %998 ], [ %1009, %1004 ]
  %1012 = load ptr, ptr %15, align 8, !tbaa !9
  %1013 = load i32, ptr %22, align 4, !tbaa !5
  %1014 = sext i32 %1013 to i64
  %1015 = getelementptr inbounds float, ptr %1012, i64 %1014
  %1016 = load float, ptr %1015, align 4, !tbaa !16
  %1017 = fsub float %1011, %1016
  %1018 = fadd float %986, %1017
  br label %1020

1019:                                             ; preds = %948
  br label %1020

1020:                                             ; preds = %1019, %1010
  %1021 = phi float [ %1018, %1010 ], [ 0.000000e+00, %1019 ]
  br label %1022

1022:                                             ; preds = %1020, %936
  %1023 = phi float [ %947, %936 ], [ %1021, %1020 ]
  %1024 = fpext float %1023 to double
  br label %1025

1025:                                             ; preds = %1022, %915
  %1026 = phi double [ %928, %915 ], [ %1024, %1022 ]
  %1027 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1028 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1027, i32 0, i32 8
  %1029 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1028, i64 0, i64 2
  %1030 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1029, i32 0, i32 1
  %1031 = load i32, ptr %1030, align 4, !tbaa !15
  %1032 = icmp eq i32 %1031, 0
  br i1 %1032, label %1033, label %1047

1033:                                             ; preds = %1025
  %1034 = load ptr, ptr %16, align 8, !tbaa !9
  %1035 = load i32, ptr %24, align 4, !tbaa !5
  %1036 = sext i32 %1035 to i64
  %1037 = getelementptr inbounds float, ptr %1034, i64 %1036
  %1038 = load float, ptr %1037, align 4, !tbaa !16
  %1039 = load ptr, ptr %13, align 8, !tbaa !9
  %1040 = load i32, ptr %24, align 4, !tbaa !5
  %1041 = sext i32 %1040 to i64
  %1042 = getelementptr inbounds float, ptr %1039, i64 %1041
  %1043 = load float, ptr %1042, align 4, !tbaa !16
  %1044 = fsub float %1038, %1043
  %1045 = fpext float %1044 to double
  %1046 = call double @llvm.fabs.f64(double %1045)
  br label %1143

1047:                                             ; preds = %1025
  %1048 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1049 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1048, i32 0, i32 8
  %1050 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1049, i64 0, i64 2
  %1051 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1050, i32 0, i32 1
  %1052 = load i32, ptr %1051, align 4, !tbaa !15
  %1053 = icmp eq i32 %1052, 1
  br i1 %1053, label %1054, label %1066

1054:                                             ; preds = %1047
  %1055 = load ptr, ptr %14, align 8, !tbaa !9
  %1056 = load i32, ptr %24, align 4, !tbaa !5
  %1057 = sext i32 %1056 to i64
  %1058 = getelementptr inbounds float, ptr %1055, i64 %1057
  %1059 = load float, ptr %1058, align 4, !tbaa !16
  %1060 = load ptr, ptr %15, align 8, !tbaa !9
  %1061 = load i32, ptr %24, align 4, !tbaa !5
  %1062 = sext i32 %1061 to i64
  %1063 = getelementptr inbounds float, ptr %1060, i64 %1062
  %1064 = load float, ptr %1063, align 4, !tbaa !16
  %1065 = fsub float %1059, %1064
  br label %1140

1066:                                             ; preds = %1047
  %1067 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1068 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1067, i32 0, i32 8
  %1069 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1068, i64 0, i64 2
  %1070 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1069, i32 0, i32 1
  %1071 = load i32, ptr %1070, align 4, !tbaa !15
  %1072 = icmp eq i32 %1071, 2
  br i1 %1072, label %1073, label %1137

1073:                                             ; preds = %1066
  %1074 = load ptr, ptr %14, align 8, !tbaa !9
  %1075 = load i32, ptr %24, align 4, !tbaa !5
  %1076 = sext i32 %1075 to i64
  %1077 = getelementptr inbounds float, ptr %1074, i64 %1076
  %1078 = load float, ptr %1077, align 4, !tbaa !16
  %1079 = load ptr, ptr %16, align 8, !tbaa !9
  %1080 = load i32, ptr %24, align 4, !tbaa !5
  %1081 = sext i32 %1080 to i64
  %1082 = getelementptr inbounds float, ptr %1079, i64 %1081
  %1083 = load float, ptr %1082, align 4, !tbaa !16
  %1084 = load ptr, ptr %13, align 8, !tbaa !9
  %1085 = load i32, ptr %24, align 4, !tbaa !5
  %1086 = sext i32 %1085 to i64
  %1087 = getelementptr inbounds float, ptr %1084, i64 %1086
  %1088 = load float, ptr %1087, align 4, !tbaa !16
  %1089 = fcmp oge float %1083, %1088
  br i1 %1089, label %1090, label %1096

1090:                                             ; preds = %1073
  %1091 = load ptr, ptr %16, align 8, !tbaa !9
  %1092 = load i32, ptr %24, align 4, !tbaa !5
  %1093 = sext i32 %1092 to i64
  %1094 = getelementptr inbounds float, ptr %1091, i64 %1093
  %1095 = load float, ptr %1094, align 4, !tbaa !16
  br label %1102

1096:                                             ; preds = %1073
  %1097 = load ptr, ptr %13, align 8, !tbaa !9
  %1098 = load i32, ptr %24, align 4, !tbaa !5
  %1099 = sext i32 %1098 to i64
  %1100 = getelementptr inbounds float, ptr %1097, i64 %1099
  %1101 = load float, ptr %1100, align 4, !tbaa !16
  br label %1102

1102:                                             ; preds = %1096, %1090
  %1103 = phi float [ %1095, %1090 ], [ %1101, %1096 ]
  %1104 = fsub float %1078, %1103
  %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 float, ptr %1105, i64 %1107
  %1109 = load float, ptr %1108, align 4, !tbaa !16
  %1110 = load ptr, ptr %13, align 8, !tbaa !9
  %1111 = load i32, ptr %24, align 4, !tbaa !5
  %1112 = sext i32 %1111 to i64
  %1113 = getelementptr inbounds float, ptr %1110, i64 %1112
  %1114 = load float, ptr %1113, align 4, !tbaa !16
  %1115 = fcmp oge float %1109, %1114
  br i1 %1115, label %1116, label %1122

1116:                                             ; preds = %1102
  %1117 = load ptr, ptr %13, align 8, !tbaa !9
  %1118 = load i32, ptr %24, align 4, !tbaa !5
  %1119 = sext i32 %1118 to i64
  %1120 = getelementptr inbounds float, ptr %1117, i64 %1119
  %1121 = load float, ptr %1120, align 4, !tbaa !16
  br label %1128

1122:                                             ; preds = %1102
  %1123 = load ptr, ptr %16, align 8, !tbaa !9
  %1124 = load i32, ptr %24, align 4, !tbaa !5
  %1125 = sext i32 %1124 to i64
  %1126 = getelementptr inbounds float, ptr %1123, i64 %1125
  %1127 = load float, ptr %1126, align 4, !tbaa !16
  br label %1128

1128:                                             ; preds = %1122, %1116
  %1129 = phi float [ %1121, %1116 ], [ %1127, %1122 ]
  %1130 = load ptr, ptr %15, align 8, !tbaa !9
  %1131 = load i32, ptr %24, align 4, !tbaa !5
  %1132 = sext i32 %1131 to i64
  %1133 = getelementptr inbounds float, ptr %1130, i64 %1132
  %1134 = load float, ptr %1133, align 4, !tbaa !16
  %1135 = fsub float %1129, %1134
  %1136 = fadd float %1104, %1135
  br label %1138

1137:                                             ; preds = %1066
  br label %1138

1138:                                             ; preds = %1137, %1128
  %1139 = phi float [ %1136, %1128 ], [ 0.000000e+00, %1137 ]
  br label %1140

1140:                                             ; preds = %1138, %1054
  %1141 = phi float [ %1065, %1054 ], [ %1139, %1138 ]
  %1142 = fpext float %1141 to double
  br label %1143

1143:                                             ; preds = %1140, %1033
  %1144 = phi double [ %1046, %1033 ], [ %1142, %1140 ]
  %1145 = fsub double %1026, %1144
  %1146 = load double, ptr %20, align 8, !tbaa !11
  %1147 = fadd double %1146, %1145
  store double %1147, ptr %20, align 8, !tbaa !11
  %1148 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1149 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1148, i32 0, i32 8
  %1150 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1149, i64 0, i64 5
  %1151 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1150, i32 0, i32 1
  %1152 = load i32, ptr %1151, align 4, !tbaa !15
  %1153 = icmp eq i32 %1152, 0
  br i1 %1153, label %1154, label %1168

1154:                                             ; preds = %1143
  %1155 = load ptr, ptr %16, align 8, !tbaa !9
  %1156 = load i32, ptr %22, align 4, !tbaa !5
  %1157 = sext i32 %1156 to i64
  %1158 = getelementptr inbounds float, ptr %1155, i64 %1157
  %1159 = load float, ptr %1158, align 4, !tbaa !16
  %1160 = load ptr, ptr %13, align 8, !tbaa !9
  %1161 = load i32, ptr %22, align 4, !tbaa !5
  %1162 = sext i32 %1161 to i64
  %1163 = getelementptr inbounds float, ptr %1160, i64 %1162
  %1164 = load float, ptr %1163, align 4, !tbaa !16
  %1165 = fsub float %1159, %1164
  %1166 = fpext float %1165 to double
  %1167 = call double @llvm.fabs.f64(double %1166)
  br label %1264

1168:                                             ; preds = %1143
  %1169 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1170 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1169, i32 0, i32 8
  %1171 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1170, i64 0, i64 5
  %1172 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1171, i32 0, i32 1
  %1173 = load i32, ptr %1172, align 4, !tbaa !15
  %1174 = icmp eq i32 %1173, 1
  br i1 %1174, label %1175, label %1187

1175:                                             ; preds = %1168
  %1176 = load ptr, ptr %14, align 8, !tbaa !9
  %1177 = load i32, ptr %22, align 4, !tbaa !5
  %1178 = sext i32 %1177 to i64
  %1179 = getelementptr inbounds float, ptr %1176, i64 %1178
  %1180 = load float, ptr %1179, align 4, !tbaa !16
  %1181 = load ptr, ptr %15, align 8, !tbaa !9
  %1182 = load i32, ptr %22, align 4, !tbaa !5
  %1183 = sext i32 %1182 to i64
  %1184 = getelementptr inbounds float, ptr %1181, i64 %1183
  %1185 = load float, ptr %1184, align 4, !tbaa !16
  %1186 = fsub float %1180, %1185
  br label %1261

1187:                                             ; preds = %1168
  %1188 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1189 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1188, i32 0, i32 8
  %1190 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1189, i64 0, i64 5
  %1191 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1190, i32 0, i32 1
  %1192 = load i32, ptr %1191, align 4, !tbaa !15
  %1193 = icmp eq i32 %1192, 2
  br i1 %1193, label %1194, label %1258

1194:                                             ; preds = %1187
  %1195 = load ptr, ptr %14, align 8, !tbaa !9
  %1196 = load i32, ptr %22, align 4, !tbaa !5
  %1197 = sext i32 %1196 to i64
  %1198 = getelementptr inbounds float, ptr %1195, i64 %1197
  %1199 = load float, ptr %1198, align 4, !tbaa !16
  %1200 = load ptr, ptr %16, align 8, !tbaa !9
  %1201 = load i32, ptr %22, align 4, !tbaa !5
  %1202 = sext i32 %1201 to i64
  %1203 = getelementptr inbounds float, ptr %1200, i64 %1202
  %1204 = load float, ptr %1203, align 4, !tbaa !16
  %1205 = load ptr, ptr %13, align 8, !tbaa !9
  %1206 = load i32, ptr %22, align 4, !tbaa !5
  %1207 = sext i32 %1206 to i64
  %1208 = getelementptr inbounds float, ptr %1205, i64 %1207
  %1209 = load float, ptr %1208, align 4, !tbaa !16
  %1210 = fcmp oge float %1204, %1209
  br i1 %1210, label %1211, label %1217

1211:                                             ; preds = %1194
  %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 float, ptr %1212, i64 %1214
  %1216 = load float, ptr %1215, align 4, !tbaa !16
  br label %1223

1217:                                             ; preds = %1194
  %1218 = load ptr, ptr %13, align 8, !tbaa !9
  %1219 = load i32, ptr %22, align 4, !tbaa !5
  %1220 = sext i32 %1219 to i64
  %1221 = getelementptr inbounds float, ptr %1218, i64 %1220
  %1222 = load float, ptr %1221, align 4, !tbaa !16
  br label %1223

1223:                                             ; preds = %1217, %1211
  %1224 = phi float [ %1216, %1211 ], [ %1222, %1217 ]
  %1225 = fsub float %1199, %1224
  %1226 = load ptr, ptr %16, align 8, !tbaa !9
  %1227 = load i32, ptr %22, align 4, !tbaa !5
  %1228 = sext i32 %1227 to i64
  %1229 = getelementptr inbounds float, ptr %1226, i64 %1228
  %1230 = load float, ptr %1229, align 4, !tbaa !16
  %1231 = load ptr, ptr %13, align 8, !tbaa !9
  %1232 = load i32, ptr %22, align 4, !tbaa !5
  %1233 = sext i32 %1232 to i64
  %1234 = getelementptr inbounds float, ptr %1231, i64 %1233
  %1235 = load float, ptr %1234, align 4, !tbaa !16
  %1236 = fcmp oge float %1230, %1235
  br i1 %1236, label %1237, label %1243

1237:                                             ; preds = %1223
  %1238 = load ptr, ptr %13, align 8, !tbaa !9
  %1239 = load i32, ptr %22, align 4, !tbaa !5
  %1240 = sext i32 %1239 to i64
  %1241 = getelementptr inbounds float, ptr %1238, i64 %1240
  %1242 = load float, ptr %1241, align 4, !tbaa !16
  br label %1249

1243:                                             ; preds = %1223
  %1244 = load ptr, ptr %16, align 8, !tbaa !9
  %1245 = load i32, ptr %22, align 4, !tbaa !5
  %1246 = sext i32 %1245 to i64
  %1247 = getelementptr inbounds float, ptr %1244, i64 %1246
  %1248 = load float, ptr %1247, align 4, !tbaa !16
  br label %1249

1249:                                             ; preds = %1243, %1237
  %1250 = phi float [ %1242, %1237 ], [ %1248, %1243 ]
  %1251 = load ptr, ptr %15, align 8, !tbaa !9
  %1252 = load i32, ptr %22, align 4, !tbaa !5
  %1253 = sext i32 %1252 to i64
  %1254 = getelementptr inbounds float, ptr %1251, i64 %1253
  %1255 = load float, ptr %1254, align 4, !tbaa !16
  %1256 = fsub float %1250, %1255
  %1257 = fadd float %1225, %1256
  br label %1259

1258:                                             ; preds = %1187
  br label %1259

1259:                                             ; preds = %1258, %1249
  %1260 = phi float [ %1257, %1249 ], [ 0.000000e+00, %1258 ]
  br label %1261

1261:                                             ; preds = %1259, %1175
  %1262 = phi float [ %1186, %1175 ], [ %1260, %1259 ]
  %1263 = fpext float %1262 to double
  br label %1264

1264:                                             ; preds = %1261, %1154
  %1265 = phi double [ %1167, %1154 ], [ %1263, %1261 ]
  %1266 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1267 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1266, i32 0, i32 8
  %1268 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1267, i64 0, i64 5
  %1269 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1268, i32 0, i32 1
  %1270 = load i32, ptr %1269, align 4, !tbaa !15
  %1271 = icmp eq i32 %1270, 0
  br i1 %1271, label %1272, label %1286

1272:                                             ; preds = %1264
  %1273 = load ptr, ptr %16, align 8, !tbaa !9
  %1274 = load i32, ptr %25, align 4, !tbaa !5
  %1275 = sext i32 %1274 to i64
  %1276 = getelementptr inbounds float, ptr %1273, i64 %1275
  %1277 = load float, ptr %1276, align 4, !tbaa !16
  %1278 = load ptr, ptr %13, align 8, !tbaa !9
  %1279 = load i32, ptr %25, align 4, !tbaa !5
  %1280 = sext i32 %1279 to i64
  %1281 = getelementptr inbounds float, ptr %1278, i64 %1280
  %1282 = load float, ptr %1281, align 4, !tbaa !16
  %1283 = fsub float %1277, %1282
  %1284 = fpext float %1283 to double
  %1285 = call double @llvm.fabs.f64(double %1284)
  br label %1382

1286:                                             ; preds = %1264
  %1287 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1288 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1287, i32 0, i32 8
  %1289 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1288, i64 0, i64 5
  %1290 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1289, i32 0, i32 1
  %1291 = load i32, ptr %1290, align 4, !tbaa !15
  %1292 = icmp eq i32 %1291, 1
  br i1 %1292, label %1293, label %1305

1293:                                             ; preds = %1286
  %1294 = load ptr, ptr %14, align 8, !tbaa !9
  %1295 = load i32, ptr %25, align 4, !tbaa !5
  %1296 = sext i32 %1295 to i64
  %1297 = getelementptr inbounds float, ptr %1294, i64 %1296
  %1298 = load float, ptr %1297, align 4, !tbaa !16
  %1299 = load ptr, ptr %15, align 8, !tbaa !9
  %1300 = load i32, ptr %25, align 4, !tbaa !5
  %1301 = sext i32 %1300 to i64
  %1302 = getelementptr inbounds float, ptr %1299, i64 %1301
  %1303 = load float, ptr %1302, align 4, !tbaa !16
  %1304 = fsub float %1298, %1303
  br label %1379

1305:                                             ; preds = %1286
  %1306 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1307 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1306, i32 0, i32 8
  %1308 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1307, i64 0, i64 5
  %1309 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1308, i32 0, i32 1
  %1310 = load i32, ptr %1309, align 4, !tbaa !15
  %1311 = icmp eq i32 %1310, 2
  br i1 %1311, label %1312, label %1376

1312:                                             ; preds = %1305
  %1313 = load ptr, ptr %14, align 8, !tbaa !9
  %1314 = load i32, ptr %25, align 4, !tbaa !5
  %1315 = sext i32 %1314 to i64
  %1316 = getelementptr inbounds float, ptr %1313, i64 %1315
  %1317 = load float, ptr %1316, align 4, !tbaa !16
  %1318 = load ptr, ptr %16, align 8, !tbaa !9
  %1319 = load i32, ptr %25, align 4, !tbaa !5
  %1320 = sext i32 %1319 to i64
  %1321 = getelementptr inbounds float, ptr %1318, i64 %1320
  %1322 = load float, ptr %1321, align 4, !tbaa !16
  %1323 = load ptr, ptr %13, align 8, !tbaa !9
  %1324 = load i32, ptr %25, align 4, !tbaa !5
  %1325 = sext i32 %1324 to i64
  %1326 = getelementptr inbounds float, ptr %1323, i64 %1325
  %1327 = load float, ptr %1326, align 4, !tbaa !16
  %1328 = fcmp oge float %1322, %1327
  br i1 %1328, label %1329, label %1335

1329:                                             ; preds = %1312
  %1330 = load ptr, ptr %16, align 8, !tbaa !9
  %1331 = load i32, ptr %25, align 4, !tbaa !5
  %1332 = sext i32 %1331 to i64
  %1333 = getelementptr inbounds float, ptr %1330, i64 %1332
  %1334 = load float, ptr %1333, align 4, !tbaa !16
  br label %1341

1335:                                             ; preds = %1312
  %1336 = load ptr, ptr %13, align 8, !tbaa !9
  %1337 = load i32, ptr %25, align 4, !tbaa !5
  %1338 = sext i32 %1337 to i64
  %1339 = getelementptr inbounds float, ptr %1336, i64 %1338
  %1340 = load float, ptr %1339, align 4, !tbaa !16
  br label %1341

1341:                                             ; preds = %1335, %1329
  %1342 = phi float [ %1334, %1329 ], [ %1340, %1335 ]
  %1343 = fsub float %1317, %1342
  %1344 = load ptr, ptr %16, align 8, !tbaa !9
  %1345 = load i32, ptr %25, align 4, !tbaa !5
  %1346 = sext i32 %1345 to i64
  %1347 = getelementptr inbounds float, ptr %1344, i64 %1346
  %1348 = load float, ptr %1347, align 4, !tbaa !16
  %1349 = load ptr, ptr %13, align 8, !tbaa !9
  %1350 = load i32, ptr %25, align 4, !tbaa !5
  %1351 = sext i32 %1350 to i64
  %1352 = getelementptr inbounds float, ptr %1349, i64 %1351
  %1353 = load float, ptr %1352, align 4, !tbaa !16
  %1354 = fcmp oge float %1348, %1353
  br i1 %1354, label %1355, label %1361

1355:                                             ; preds = %1341
  %1356 = load ptr, ptr %13, align 8, !tbaa !9
  %1357 = load i32, ptr %25, align 4, !tbaa !5
  %1358 = sext i32 %1357 to i64
  %1359 = getelementptr inbounds float, ptr %1356, i64 %1358
  %1360 = load float, ptr %1359, align 4, !tbaa !16
  br label %1367

1361:                                             ; preds = %1341
  %1362 = load ptr, ptr %16, align 8, !tbaa !9
  %1363 = load i32, ptr %25, align 4, !tbaa !5
  %1364 = sext i32 %1363 to i64
  %1365 = getelementptr inbounds float, ptr %1362, i64 %1364
  %1366 = load float, ptr %1365, align 4, !tbaa !16
  br label %1367

1367:                                             ; preds = %1361, %1355
  %1368 = phi float [ %1360, %1355 ], [ %1366, %1361 ]
  %1369 = load ptr, ptr %15, align 8, !tbaa !9
  %1370 = load i32, ptr %25, align 4, !tbaa !5
  %1371 = sext i32 %1370 to i64
  %1372 = getelementptr inbounds float, ptr %1369, i64 %1371
  %1373 = load float, ptr %1372, align 4, !tbaa !16
  %1374 = fsub float %1368, %1373
  %1375 = fadd float %1343, %1374
  br label %1377

1376:                                             ; preds = %1305
  br label %1377

1377:                                             ; preds = %1376, %1367
  %1378 = phi float [ %1375, %1367 ], [ 0.000000e+00, %1376 ]
  br label %1379

1379:                                             ; preds = %1377, %1293
  %1380 = phi float [ %1304, %1293 ], [ %1378, %1377 ]
  %1381 = fpext float %1380 to double
  br label %1382

1382:                                             ; preds = %1379, %1272
  %1383 = phi double [ %1285, %1272 ], [ %1381, %1379 ]
  %1384 = fsub double %1265, %1383
  %1385 = load double, ptr %21, align 8, !tbaa !11
  %1386 = fadd double %1385, %1384
  store double %1386, ptr %21, align 8, !tbaa !11
  %1387 = load i32, ptr %22, align 4, !tbaa !5
  %1388 = add nsw i32 %1387, 1
  store i32 %1388, ptr %22, align 4, !tbaa !5
  %1389 = load i32, ptr %24, align 4, !tbaa !5
  %1390 = add nsw i32 %1389, 1
  store i32 %1390, ptr %24, align 4, !tbaa !5
  %1391 = load i32, ptr %25, align 4, !tbaa !5
  %1392 = add nsw i32 %1391, 1
  store i32 %1392, ptr %25, align 4, !tbaa !5
  br label %1393

1393:                                             ; preds = %1382
  %1394 = load i32, ptr %22, align 4, !tbaa !5
  %1395 = load i32, ptr %12, align 4, !tbaa !5
  %1396 = icmp sle i32 %1394, %1395
  br i1 %1396, label %343, label %1397, !llvm.loop !22

1397:                                             ; preds = %1393
  %1398 = load i32, ptr %23, align 4, !tbaa !5
  %1399 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 %1398, ptr %1399, align 4, !tbaa !5
  %1400 = load i32, ptr %11, align 4, !tbaa !5
  %1401 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 %1400, ptr %1401, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %27, align 4
  br label %1402

1402:                                             ; preds = %1397, %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
  %1403 = load i32, ptr %10, align 4
  ret i32 %1403
}

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 = !{!17, !17, i64 0}
!17 = !{!"float", !7, i64 0}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.mustprogress"}
!20 = distinct !{!20, !19}
!21 = !{!14, !12, i64 16}
!22 = distinct !{!22, !19}


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

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

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

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

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

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

25:                                               ; preds = %21
  %26 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %27 = getelementptr inbounds i8, ptr %26, i64 264
  %28 = load i32, ptr %27, align 8, !tbaa !11
  %29 = sub i32 %spec.select, %28
  %30 = getelementptr inbounds i8, ptr %26, i64 336
  %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 %.preheader441

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

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

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

.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.iv472 = phi i64 [ %40, %.lr.ph.split.us.preheader ], [ %indvars.iv.next473, %.lr.ph.split.us ]
  %.0338442.us = phi double [ 0.000000e+00, %.lr.ph.split.us.preheader ], [ %49, %.lr.ph.split.us ]
  %42 = getelementptr inbounds float, ptr %5, i64 %indvars.iv472
  %43 = load float, ptr %42, align 4, !tbaa !15
  %44 = getelementptr inbounds float, ptr %2, i64 %indvars.iv472
  %45 = load float, ptr %44, align 4, !tbaa !15
  %46 = fsub float %43, %45
  %47 = tail call float @llvm.fabs.f32(float %46)
  %48 = fpext float %47 to double
  %49 = fadd double %.0338442.us, %48
  %indvars.iv.next473 = add nsw i64 %indvars.iv472, 1
  %50 = icmp slt i64 %indvars.iv.next473, %41
  br i1 %50, label %.lr.ph.split.us, label %.preheader441, !llvm.loop !17

.lr.ph.split.us444:                               ; preds = %.lr.ph.split.us444.preheader, %.lr.ph.split.us444
  %indvars.iv469 = phi i64 [ %38, %.lr.ph.split.us444.preheader ], [ %indvars.iv.next470, %.lr.ph.split.us444 ]
  %.0338442.us446 = phi double [ 0.000000e+00, %.lr.ph.split.us444.preheader ], [ %57, %.lr.ph.split.us444 ]
  %51 = getelementptr inbounds float, ptr %3, i64 %indvars.iv469
  %52 = load float, ptr %51, align 4, !tbaa !15
  %53 = getelementptr inbounds float, ptr %4, i64 %indvars.iv469
  %54 = load float, ptr %53, align 4, !tbaa !15
  %55 = fsub float %52, %54
  %56 = fpext float %55 to double
  %57 = fadd double %.0338442.us446, %56
  %indvars.iv.next470 = add nsw i64 %indvars.iv469, 1
  %58 = icmp slt i64 %indvars.iv.next470, %39
  br i1 %58, label %.lr.ph.split.us444, label %.preheader441, !llvm.loop !17

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

.preheader441:                                    ; preds = %.lr.ph.split.us450, %.lr.ph.split.us444, %.lr.ph.split.us, %.lr.ph, %25
  %.0338.lcssa = phi double [ 0.000000e+00, %25 ], [ 0.000000e+00, %.lr.ph ], [ %49, %.lr.ph.split.us ], [ %57, %.lr.ph.split.us444 ], [ %73, %.lr.ph.split.us450 ]
  %75 = icmp sgt i32 %31, 0
  br i1 %75, label %.lr.ph458, label %.preheader441..preheader_crit_edge

.preheader441..preheader_crit_edge:               ; preds = %.preheader441
  %.pre494 = sext i32 %32 to i64
  br label %.preheader

.lr.ph458:                                        ; preds = %.preheader441
  %76 = getelementptr inbounds i8, ptr %26, i64 332
  %77 = load i32, ptr %76, align 4, !tbaa !14
  %78 = sext i32 %32 to i64
  %79 = zext nneg i32 %spec.select to i64
  br label %90

.preheader.loopexit:                              ; preds = %118
  %80 = trunc nsw i64 %indvars.iv.next476 to i32
  br label %.preheader

.preheader:                                       ; preds = %.preheader441..preheader_crit_edge, %.preheader.loopexit
  %.pre-phi = phi i64 [ %.pre494, %.preheader441..preheader_crit_edge ], [ %78, %.preheader.loopexit ]
  %.0336.lcssa = phi double [ 0.000000e+00, %.preheader441..preheader_crit_edge ], [ %120, %.preheader.loopexit ]
  %.1335.lcssa = phi i32 [ %32, %.preheader441..preheader_crit_edge ], [ %80, %.preheader.loopexit ]
  %81 = getelementptr inbounds i8, ptr %26, i64 272
  %82 = load double, ptr %81, align 8, !tbaa !19
  %83 = getelementptr inbounds i8, ptr %26, i64 260
  %84 = getelementptr inbounds i8, ptr %26, i64 332
  %85 = getelementptr inbounds i8, ptr %26, i64 344
  %86 = zext i32 %.1335.lcssa to i64
  %87 = sext i32 %29 to i64
  %smax = tail call i32 @llvm.smax.i32(i32 %.1335.lcssa, i32 %1)
  %88 = add i32 %smax, 1
  %89 = sub i32 %88, %.1335.lcssa
  %wide.trip.count = zext i32 %89 to i64
  br label %122

90:                                               ; preds = %.lr.ph458, %118
  %indvars.iv475 = phi i64 [ %78, %.lr.ph458 ], [ %indvars.iv.next476, %118 ]
  %.0336456 = phi double [ 0.000000e+00, %.lr.ph458 ], [ %120, %118 ]
  switch i32 %77, label %118 [
    i32 0, label %91
    i32 1, label %98
    i32 2, label %104
  ]

91:                                               ; preds = %90
  %92 = getelementptr inbounds float, ptr %5, i64 %indvars.iv475
  %93 = load float, ptr %92, align 4, !tbaa !15
  %94 = getelementptr inbounds float, ptr %2, i64 %indvars.iv475
  %95 = load float, ptr %94, align 4, !tbaa !15
  %96 = fsub float %93, %95
  %97 = tail call float @llvm.fabs.f32(float %96)
  br label %118

98:                                               ; preds = %90
  %99 = getelementptr inbounds float, ptr %3, i64 %indvars.iv475
  %100 = load float, ptr %99, align 4, !tbaa !15
  %101 = getelementptr inbounds float, ptr %4, i64 %indvars.iv475
  %102 = load float, ptr %101, align 4, !tbaa !15
  %103 = fsub float %100, %102
  br label %118

104:                                              ; preds = %90
  %105 = getelementptr inbounds float, ptr %3, i64 %indvars.iv475
  %106 = load float, ptr %105, align 4, !tbaa !15
  %107 = getelementptr inbounds float, ptr %5, i64 %indvars.iv475
  %108 = load float, ptr %107, align 4, !tbaa !15
  %109 = getelementptr inbounds float, ptr %2, i64 %indvars.iv475
  %110 = load float, ptr %109, align 4, !tbaa !15
  %111 = fcmp ult float %108, %110
  %.412 = select i1 %111, float %110, float %108
  %112 = fsub float %106, %.412
  %113 = select i1 %111, float %108, float %110
  %114 = getelementptr inbounds float, ptr %4, i64 %indvars.iv475
  %115 = load float, ptr %114, align 4, !tbaa !15
  %116 = fsub float %113, %115
  %117 = fadd float %112, %116
  br label %118

118:                                              ; preds = %98, %104, %90, %91
  %.in409 = phi float [ %97, %91 ], [ %103, %98 ], [ %117, %104 ], [ 0.000000e+00, %90 ]
  %119 = fpext float %.in409 to double
  %120 = fadd double %.0336456, %119
  %indvars.iv.next476 = add nsw i64 %indvars.iv475, 1
  %121 = icmp slt i64 %indvars.iv.next476, %79
  br i1 %121, label %90, label %.preheader.loopexit, !llvm.loop !20

122:                                              ; preds = %.preheader, %317
  %indvars.iv484 = phi i64 [ %.pre-phi, %.preheader ], [ %indvars.iv.next485, %317 ]
  %indvars.iv482 = phi i64 [ %87, %.preheader ], [ %indvars.iv.next483, %317 ]
  %indvars.iv480 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next481, %317 ]
  %indvars.iv478 = phi i64 [ %86, %.preheader ], [ %indvars.iv.next479, %317 ]
  %.1339 = phi double [ %.0338.lcssa, %.preheader ], [ %275, %317 ]
  %.1337 = phi double [ %.0336.lcssa, %.preheader ], [ %321, %317 ]
  %123 = getelementptr inbounds float, ptr %5, i64 %indvars.iv478
  %124 = load float, ptr %123, align 4, !tbaa !15
  %125 = getelementptr inbounds float, ptr %2, i64 %indvars.iv478
  %126 = load float, ptr %125, align 4, !tbaa !15
  %127 = fsub float %124, %126
  %128 = tail call float @llvm.fabs.f32(float %127)
  %129 = fpext float %128 to double
  %130 = load i32, ptr %27, align 8, !tbaa !11
  %.not402 = icmp eq i32 %130, 0
  br i1 %.not402, label %134, label %131

131:                                              ; preds = %122
  %132 = sitofp i32 %130 to double
  %133 = fdiv double %.1339, %132
  %.pre = load i32, ptr %83, align 4, !tbaa !14
  br label %155

134:                                              ; preds = %122
  %135 = load i32, ptr %83, align 4, !tbaa !14
  switch i32 %135, label %152 [
    i32 0, label %.thread495
    i32 1, label %136
    i32 2, label %142
  ]

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

142:                                              ; preds = %134
  %143 = getelementptr inbounds float, ptr %3, i64 %indvars.iv478
  %144 = load float, ptr %143, align 4, !tbaa !15
  %145 = fcmp ult float %124, %126
  %.413 = select i1 %145, float %126, float %124
  %146 = fsub float %144, %.413
  %147 = select i1 %145, float %124, float %126
  %148 = getelementptr inbounds float, ptr %4, i64 %indvars.iv478
  %149 = load float, ptr %148, align 4, !tbaa !15
  %150 = fsub float %147, %149
  %151 = fadd float %146, %150
  br label %152

152:                                              ; preds = %134, %142, %136
  %153 = phi float [ %141, %136 ], [ %151, %142 ], [ 0.000000e+00, %134 ]
  %154 = fpext float %153 to double
  br label %155

155:                                              ; preds = %152, %131
  %156 = phi i32 [ %.pre, %131 ], [ %135, %152 ]
  %157 = phi double [ %133, %131 ], [ %154, %152 ]
  %.fr = freeze i32 %156
  %158 = icmp eq i32 %.fr, 2
  br i1 %158, label %159, label %.thread495

159:                                              ; preds = %155
  br label %.thread495

.thread495:                                       ; preds = %134, %155, %159
  %.pn = phi double [ %157, %159 ], [ %157, %155 ], [ %129, %134 ]
  %160 = phi double [ 2.000000e+00, %159 ], [ 1.000000e+00, %155 ], [ 1.000000e+00, %134 ]
  %161 = fmul double %82, %.pn
  %162 = fdiv double %161, %160
  %163 = fcmp ogt double %162, %129
  br i1 %163, label %164, label %228

164:                                              ; preds = %.thread495
  %165 = getelementptr inbounds float, ptr %3, i64 %indvars.iv478
  %166 = load float, ptr %165, align 4, !tbaa !15
  %167 = fcmp ult float %124, %126
  %.414 = select i1 %167, float %126, float %124
  %168 = fsub float %166, %.414
  %169 = fpext float %168 to double
  %170 = load double, ptr %85, align 8, !tbaa !19
  %171 = load i32, ptr %30, align 8, !tbaa !11
  %.not403 = icmp eq i32 %171, 0
  br i1 %.not403, label %175, label %172

172:                                              ; preds = %164
  %173 = sitofp i32 %171 to double
  %174 = fdiv double %.1337, %173
  %.pre493 = load i32, ptr %84, align 4, !tbaa !14
  br label %190

175:                                              ; preds = %164
  %176 = load i32, ptr %84, align 4, !tbaa !14
  switch i32 %176, label %187 [
    i32 0, label %.thread500
    i32 1, label %177
    i32 2, label %181
  ]

177:                                              ; preds = %175
  %178 = getelementptr inbounds float, ptr %4, i64 %indvars.iv478
  %179 = load float, ptr %178, align 4, !tbaa !15
  %180 = fsub float %166, %179
  br label %187

181:                                              ; preds = %175
  %182 = select i1 %167, float %124, float %126
  %183 = getelementptr inbounds float, ptr %4, i64 %indvars.iv478
  %184 = load float, ptr %183, align 4, !tbaa !15
  %185 = fsub float %182, %184
  %186 = fadd float %168, %185
  br label %187

187:                                              ; preds = %175, %181, %177
  %188 = phi float [ %180, %177 ], [ %186, %181 ], [ 0.000000e+00, %175 ]
  %189 = fpext float %188 to double
  br label %190

190:                                              ; preds = %187, %172
  %191 = phi i32 [ %.pre493, %172 ], [ %176, %187 ]
  %192 = phi double [ %174, %172 ], [ %189, %187 ]
  %.fr510 = freeze i32 %191
  %193 = fmul double %170, %192
  %194 = icmp eq i32 %.fr510, 2
  %195 = select i1 %194, double 2.000000e+00, double 1.000000e+00
  %196 = fdiv double %193, %195
  %197 = fcmp olt double %196, %169
  br i1 %197, label %203, label %228

.thread500:                                       ; preds = %175
  %198 = fmul double %170, %129
  %199 = fcmp olt double %198, %169
  br i1 %199, label %.thread503, label %228

.thread503:                                       ; preds = %.thread500
  %.416502 = select i1 %167, float %124, float %126
  %200 = getelementptr inbounds float, ptr %4, i64 %indvars.iv478
  %201 = load float, ptr %200, align 4, !tbaa !15
  %202 = fsub float %.416502, %201
  br label %218

203:                                              ; preds = %190
  %.416 = select i1 %167, float %124, float %126
  %204 = getelementptr inbounds float, ptr %4, i64 %indvars.iv478
  %205 = load float, ptr %204, align 4, !tbaa !15
  %206 = fsub float %.416, %205
  br i1 %.not403, label %210, label %207

207:                                              ; preds = %203
  %208 = sitofp i32 %171 to double
  %209 = fdiv double %.1337, %208
  br label %218

210:                                              ; preds = %203
  switch i32 %.fr510, label %215 [
    i32 0, label %218
    i32 1, label %211
    i32 2, label %213
  ]

211:                                              ; preds = %210
  %212 = fsub float %166, %205
  br label %215

213:                                              ; preds = %210
  %214 = fadd float %168, %206
  br label %215

215:                                              ; preds = %210, %213, %211
  %216 = phi float [ %212, %211 ], [ %214, %213 ], [ 0.000000e+00, %210 ]
  %217 = fpext float %216 to double
  br label %218

218:                                              ; preds = %.thread503, %210, %215, %207
  %.in = phi float [ %206, %207 ], [ %206, %215 ], [ %206, %210 ], [ %202, %.thread503 ]
  %219 = phi double [ %195, %207 ], [ %195, %215 ], [ %195, %210 ], [ 1.000000e+00, %.thread503 ]
  %220 = phi double [ %209, %207 ], [ %217, %215 ], [ %129, %210 ], [ %129, %.thread503 ]
  %221 = fpext float %.in to double
  %222 = fmul double %170, %220
  %223 = fdiv double %222, %219
  %224 = fcmp olt double %223, %221
  br i1 %224, label %225, label %228

225:                                              ; preds = %218
  %226 = fcmp oge float %124, %126
  %227 = select i1 %226, i32 100, i32 -100
  br label %228

228:                                              ; preds = %.thread495, %190, %218, %.thread500, %225
  %.sink = phi i32 [ %227, %225 ], [ 0, %.thread500 ], [ 0, %218 ], [ 0, %190 ], [ 0, %.thread495 ]
  %229 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv480
  store i32 %.sink, ptr %229, align 4, !tbaa !5
  %indvars.iv.next481 = add nuw nsw i64 %indvars.iv480, 1
  %230 = load i32, ptr %83, align 4, !tbaa !14
  switch i32 %230, label %271 [
    i32 0, label %.thread
    i32 1, label %.thread424
    i32 2, label %.thread426
  ]

.thread:                                          ; preds = %228
  %231 = getelementptr inbounds float, ptr %5, i64 %indvars.iv482
  %232 = load float, ptr %231, align 4, !tbaa !15
  %233 = getelementptr inbounds float, ptr %2, i64 %indvars.iv482
  %234 = load float, ptr %233, align 4, !tbaa !15
  %235 = fsub float %232, %234
  %236 = tail call float @llvm.fabs.f32(float %235)
  br label %271

.thread424:                                       ; preds = %228
  %237 = getelementptr inbounds float, ptr %3, i64 %indvars.iv478
  %238 = load float, ptr %237, align 4, !tbaa !15
  %239 = getelementptr inbounds float, ptr %4, i64 %indvars.iv478
  %240 = load float, ptr %239, align 4, !tbaa !15
  %241 = fsub float %238, %240
  %242 = fpext float %241 to double
  %243 = getelementptr inbounds float, ptr %3, i64 %indvars.iv482
  %244 = load float, ptr %243, align 4, !tbaa !15
  %245 = getelementptr inbounds float, ptr %4, i64 %indvars.iv482
  %246 = load float, ptr %245, align 4, !tbaa !15
  %247 = fsub float %244, %246
  br label %271

.thread426:                                       ; preds = %228
  %248 = getelementptr inbounds float, ptr %3, i64 %indvars.iv478
  %249 = load float, ptr %248, align 4, !tbaa !15
  %250 = fcmp ult float %124, %126
  %.418 = select i1 %250, float %126, float %124
  %251 = fsub float %249, %.418
  %252 = select i1 %250, float %124, float %126
  %253 = getelementptr inbounds float, ptr %4, i64 %indvars.iv478
  %254 = load float, ptr %253, align 4, !tbaa !15
  %255 = fsub float %252, %254
  %256 = fadd float %251, %255
  %257 = fpext float %256 to double
  %258 = getelementptr inbounds float, ptr %3, i64 %indvars.iv482
  %259 = load float, ptr %258, align 4, !tbaa !15
  %260 = getelementptr inbounds float, ptr %5, i64 %indvars.iv482
  %261 = load float, ptr %260, align 4, !tbaa !15
  %262 = getelementptr inbounds float, ptr %2, i64 %indvars.iv482
  %263 = load float, ptr %262, align 4, !tbaa !15
  %264 = fcmp ult float %261, %263
  %.419 = select i1 %264, float %263, float %261
  %265 = fsub float %259, %.419
  %266 = select i1 %264, float %261, float %263
  %267 = getelementptr inbounds float, ptr %4, i64 %indvars.iv482
  %268 = load float, ptr %267, align 4, !tbaa !15
  %269 = fsub float %266, %268
  %270 = fadd float %265, %269
  br label %271

271:                                              ; preds = %228, %.thread424, %.thread426, %.thread
  %272 = phi double [ %129, %.thread ], [ %242, %.thread424 ], [ %257, %.thread426 ], [ 0.000000e+00, %228 ]
  %.in405 = phi float [ %236, %.thread ], [ %247, %.thread424 ], [ %270, %.thread426 ], [ 0.000000e+00, %228 ]
  %273 = fpext float %.in405 to double
  %274 = fsub double %272, %273
  %275 = fadd double %.1339, %274
  %276 = load i32, ptr %84, align 4, !tbaa !14
  switch i32 %276, label %317 [
    i32 0, label %.thread428
    i32 1, label %.thread430
    i32 2, label %.thread432
  ]

.thread428:                                       ; preds = %271
  %277 = getelementptr inbounds float, ptr %5, i64 %indvars.iv484
  %278 = load float, ptr %277, align 4, !tbaa !15
  %279 = getelementptr inbounds float, ptr %2, i64 %indvars.iv484
  %280 = load float, ptr %279, align 4, !tbaa !15
  %281 = fsub float %278, %280
  %282 = tail call float @llvm.fabs.f32(float %281)
  br label %317

.thread430:                                       ; preds = %271
  %283 = getelementptr inbounds float, ptr %3, i64 %indvars.iv478
  %284 = load float, ptr %283, align 4, !tbaa !15
  %285 = getelementptr inbounds float, ptr %4, i64 %indvars.iv478
  %286 = load float, ptr %285, align 4, !tbaa !15
  %287 = fsub float %284, %286
  %288 = fpext float %287 to double
  %289 = getelementptr inbounds float, ptr %3, i64 %indvars.iv484
  %290 = load float, ptr %289, align 4, !tbaa !15
  %291 = getelementptr inbounds float, ptr %4, i64 %indvars.iv484
  %292 = load float, ptr %291, align 4, !tbaa !15
  %293 = fsub float %290, %292
  br label %317

.thread432:                                       ; preds = %271
  %294 = getelementptr inbounds float, ptr %3, i64 %indvars.iv478
  %295 = load float, ptr %294, align 4, !tbaa !15
  %296 = fcmp ult float %124, %126
  %.420 = select i1 %296, float %126, float %124
  %297 = fsub float %295, %.420
  %298 = select i1 %296, float %124, float %126
  %299 = getelementptr inbounds float, ptr %4, i64 %indvars.iv478
  %300 = load float, ptr %299, align 4, !tbaa !15
  %301 = fsub float %298, %300
  %302 = fadd float %297, %301
  %303 = fpext float %302 to double
  %304 = getelementptr inbounds float, ptr %3, i64 %indvars.iv484
  %305 = load float, ptr %304, align 4, !tbaa !15
  %306 = getelementptr inbounds float, ptr %5, i64 %indvars.iv484
  %307 = load float, ptr %306, align 4, !tbaa !15
  %308 = getelementptr inbounds float, ptr %2, i64 %indvars.iv484
  %309 = load float, ptr %308, align 4, !tbaa !15
  %310 = fcmp ult float %307, %309
  %.421 = select i1 %310, float %309, float %307
  %311 = fsub float %305, %.421
  %312 = select i1 %310, float %307, float %309
  %313 = getelementptr inbounds float, ptr %4, i64 %indvars.iv484
  %314 = load float, ptr %313, align 4, !tbaa !15
  %315 = fsub float %312, %314
  %316 = fadd float %311, %315
  br label %317

317:                                              ; preds = %271, %.thread430, %.thread432, %.thread428
  %318 = phi double [ %129, %.thread428 ], [ %288, %.thread430 ], [ %303, %.thread432 ], [ 0.000000e+00, %271 ]
  %.in407 = phi float [ %282, %.thread428 ], [ %293, %.thread430 ], [ %316, %.thread432 ], [ 0.000000e+00, %271 ]
  %319 = fpext float %.in407 to double
  %320 = fsub double %318, %319
  %321 = fadd double %.1337, %320
  %indvars.iv.next479 = add nuw nsw i64 %indvars.iv478, 1
  %indvars.iv.next483 = add nsw i64 %indvars.iv482, 1
  %indvars.iv.next485 = add nsw i64 %indvars.iv484, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next481, %wide.trip.count
  br i1 %exitcond.not, label %322, label %122, !llvm.loop !21

322:                                              ; preds = %317
  store i32 %89, ptr %7, align 4, !tbaa !5
  store i32 %spec.select, ptr %6, align 4, !tbaa !5
  br label %323

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #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 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 = !{!16, !16, i64 0}
!16 = !{!"float", !7, i64 0}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = !{!12, !13, i64 16}
!20 = distinct !{!20, !18}
!21 = distinct !{!21, !18}


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