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

; 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_CDLMATCHINGLOW_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_CDLMATCHINGLOW(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 i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = 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 4, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  %26 = load i32, ptr %11, align 4, !tbaa !5
  %27 = icmp slt i32 %26, 0
  br i1 %27, label %28, label %29

28:                                               ; preds = %9
  store i32 12, ptr %10, align 4
  store i32 1, ptr %25, align 4
  br label %909

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

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

36:                                               ; preds = %32, %29
  store i32 13, ptr %10, align 4
  store i32 1, ptr %25, align 4
  br label %909

37:                                               ; preds = %32
  %38 = load ptr, ptr %13, align 8, !tbaa !9
  %39 = icmp ne ptr %38, null
  br i1 %39, label %40, label %49

40:                                               ; preds = %37
  %41 = load ptr, ptr %14, align 8, !tbaa !9
  %42 = icmp ne ptr %41, null
  br i1 %42, label %43, label %49

43:                                               ; preds = %40
  %44 = load ptr, ptr %15, align 8, !tbaa !9
  %45 = icmp ne ptr %44, null
  br i1 %45, label %46, label %49

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

49:                                               ; preds = %46, %43, %40, %37
  store i32 2, ptr %10, align 4
  store i32 1, ptr %25, align 4
  br label %909

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

53:                                               ; preds = %50
  store i32 2, ptr %10, align 4
  store i32 1, ptr %25, align 4
  br label %909

54:                                               ; preds = %50
  %55 = call i32 @TA_CDLMATCHINGLOW_Lookback()
  store i32 %55, ptr %24, align 4, !tbaa !5
  %56 = load i32, ptr %11, align 4, !tbaa !5
  %57 = load i32, ptr %24, align 4, !tbaa !5
  %58 = icmp slt i32 %56, %57
  br i1 %58, label %59, label %61

59:                                               ; preds = %54
  %60 = load i32, ptr %24, align 4, !tbaa !5
  store i32 %60, ptr %11, align 4, !tbaa !5
  br label %61

61:                                               ; preds = %59, %54
  %62 = load i32, ptr %11, align 4, !tbaa !5
  %63 = load i32, ptr %12, align 4, !tbaa !5
  %64 = icmp sgt i32 %62, %63
  br i1 %64, label %65, label %68

65:                                               ; preds = %61
  %66 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 0, ptr %66, align 4, !tbaa !5
  %67 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 0, ptr %67, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %25, align 4
  br label %909

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

77:                                               ; preds = %212, %68
  %78 = load i32, ptr %21, align 4, !tbaa !5
  %79 = load i32, ptr %11, align 4, !tbaa !5
  %80 = icmp slt i32 %78, %79
  br i1 %80, label %81, label %218

81:                                               ; preds = %77
  %82 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %83 = getelementptr inbounds %struct.TA_LibcPriv, ptr %82, i32 0, i32 8
  %84 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %83, i64 0, i64 10
  %85 = getelementptr inbounds %struct.TA_CandleSetting, ptr %84, i32 0, i32 1
  %86 = load i32, ptr %85, align 4, !tbaa !15
  %87 = icmp eq i32 %86, 0
  br i1 %87, label %88, label %104

88:                                               ; preds = %81
  %89 = load ptr, ptr %16, align 8, !tbaa !9
  %90 = load i32, ptr %21, align 4, !tbaa !5
  %91 = sub nsw i32 %90, 1
  %92 = sext i32 %91 to i64
  %93 = getelementptr inbounds float, ptr %89, i64 %92
  %94 = load float, ptr %93, align 4, !tbaa !16
  %95 = load ptr, ptr %13, align 8, !tbaa !9
  %96 = load i32, ptr %21, align 4, !tbaa !5
  %97 = sub nsw i32 %96, 1
  %98 = sext i32 %97 to i64
  %99 = getelementptr inbounds float, ptr %95, i64 %98
  %100 = load float, ptr %99, align 4, !tbaa !16
  %101 = fsub float %94, %100
  %102 = fpext float %101 to double
  %103 = call double @llvm.fabs.f64(double %102)
  br label %212

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

111:                                              ; preds = %104
  %112 = load ptr, ptr %14, align 8, !tbaa !9
  %113 = load i32, ptr %21, align 4, !tbaa !5
  %114 = sub nsw i32 %113, 1
  %115 = sext i32 %114 to i64
  %116 = getelementptr inbounds float, ptr %112, i64 %115
  %117 = load float, ptr %116, align 4, !tbaa !16
  %118 = load ptr, ptr %15, align 8, !tbaa !9
  %119 = load i32, ptr %21, align 4, !tbaa !5
  %120 = sub nsw i32 %119, 1
  %121 = sext i32 %120 to i64
  %122 = getelementptr inbounds float, ptr %118, i64 %121
  %123 = load float, ptr %122, align 4, !tbaa !16
  %124 = fsub float %117, %123
  br label %209

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

132:                                              ; preds = %125
  %133 = load ptr, ptr %14, align 8, !tbaa !9
  %134 = load i32, ptr %21, align 4, !tbaa !5
  %135 = sub nsw i32 %134, 1
  %136 = sext i32 %135 to i64
  %137 = getelementptr inbounds float, ptr %133, i64 %136
  %138 = load float, ptr %137, align 4, !tbaa !16
  %139 = load ptr, ptr %16, align 8, !tbaa !9
  %140 = load i32, ptr %21, align 4, !tbaa !5
  %141 = sub nsw i32 %140, 1
  %142 = sext i32 %141 to i64
  %143 = getelementptr inbounds float, ptr %139, i64 %142
  %144 = load float, ptr %143, align 4, !tbaa !16
  %145 = load ptr, ptr %13, align 8, !tbaa !9
  %146 = load i32, ptr %21, align 4, !tbaa !5
  %147 = sub nsw i32 %146, 1
  %148 = sext i32 %147 to i64
  %149 = getelementptr inbounds float, ptr %145, i64 %148
  %150 = load float, ptr %149, align 4, !tbaa !16
  %151 = fcmp oge float %144, %150
  br i1 %151, label %152, label %159

152:                                              ; preds = %132
  %153 = load ptr, ptr %16, align 8, !tbaa !9
  %154 = load i32, ptr %21, align 4, !tbaa !5
  %155 = sub nsw i32 %154, 1
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds float, ptr %153, i64 %156
  %158 = load float, ptr %157, align 4, !tbaa !16
  br label %166

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

166:                                              ; preds = %159, %152
  %167 = phi float [ %158, %152 ], [ %165, %159 ]
  %168 = fsub float %138, %167
  %169 = load ptr, ptr %16, align 8, !tbaa !9
  %170 = load i32, ptr %21, align 4, !tbaa !5
  %171 = sub nsw i32 %170, 1
  %172 = sext i32 %171 to i64
  %173 = getelementptr inbounds float, ptr %169, i64 %172
  %174 = load float, ptr %173, align 4, !tbaa !16
  %175 = load ptr, ptr %13, align 8, !tbaa !9
  %176 = load i32, ptr %21, align 4, !tbaa !5
  %177 = sub nsw i32 %176, 1
  %178 = sext i32 %177 to i64
  %179 = getelementptr inbounds float, ptr %175, i64 %178
  %180 = load float, ptr %179, align 4, !tbaa !16
  %181 = fcmp oge float %174, %180
  br i1 %181, label %182, label %189

182:                                              ; preds = %166
  %183 = load ptr, ptr %13, align 8, !tbaa !9
  %184 = load i32, ptr %21, align 4, !tbaa !5
  %185 = sub nsw i32 %184, 1
  %186 = sext i32 %185 to i64
  %187 = getelementptr inbounds float, ptr %183, i64 %186
  %188 = load float, ptr %187, align 4, !tbaa !16
  br label %196

189:                                              ; preds = %166
  %190 = load ptr, ptr %16, align 8, !tbaa !9
  %191 = load i32, ptr %21, align 4, !tbaa !5
  %192 = sub nsw i32 %191, 1
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds float, ptr %190, i64 %193
  %195 = load float, ptr %194, align 4, !tbaa !16
  br label %196

196:                                              ; preds = %189, %182
  %197 = phi float [ %188, %182 ], [ %195, %189 ]
  %198 = load ptr, ptr %15, align 8, !tbaa !9
  %199 = load i32, ptr %21, align 4, !tbaa !5
  %200 = sub nsw i32 %199, 1
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds float, ptr %198, i64 %201
  %203 = load float, ptr %202, align 4, !tbaa !16
  %204 = fsub float %197, %203
  %205 = fadd float %168, %204
  br label %207

206:                                              ; preds = %125
  br label %207

207:                                              ; preds = %206, %196
  %208 = phi float [ %205, %196 ], [ 0.000000e+00, %206 ]
  br label %209

209:                                              ; preds = %207, %111
  %210 = phi float [ %124, %111 ], [ %208, %207 ]
  %211 = fpext float %210 to double
  br label %212

212:                                              ; preds = %209, %88
  %213 = phi double [ %103, %88 ], [ %211, %209 ]
  %214 = load double, ptr %20, align 8, !tbaa !11
  %215 = fadd double %214, %213
  store double %215, ptr %20, align 8, !tbaa !11
  %216 = load i32, ptr %21, align 4, !tbaa !5
  %217 = add nsw i32 %216, 1
  store i32 %217, ptr %21, align 4, !tbaa !5
  br label %77, !llvm.loop !18

218:                                              ; preds = %77
  %219 = load i32, ptr %11, align 4, !tbaa !5
  store i32 %219, ptr %21, align 4, !tbaa !5
  store i32 0, ptr %22, align 4, !tbaa !5
  br label %220

220:                                              ; preds = %900, %218
  %221 = load ptr, ptr %16, align 8, !tbaa !9
  %222 = load i32, ptr %21, align 4, !tbaa !5
  %223 = sub nsw i32 %222, 1
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds float, ptr %221, i64 %224
  %226 = load float, ptr %225, align 4, !tbaa !16
  %227 = load ptr, ptr %13, align 8, !tbaa !9
  %228 = load i32, ptr %21, align 4, !tbaa !5
  %229 = sub nsw i32 %228, 1
  %230 = sext i32 %229 to i64
  %231 = getelementptr inbounds float, ptr %227, i64 %230
  %232 = load float, ptr %231, align 4, !tbaa !16
  %233 = fcmp oge float %226, %232
  %234 = zext i1 %233 to i64
  %235 = select i1 %233, i32 1, i32 -1
  %236 = icmp eq i32 %235, -1
  br i1 %236, label %237, label %622

237:                                              ; preds = %220
  %238 = load ptr, ptr %16, align 8, !tbaa !9
  %239 = load i32, ptr %21, align 4, !tbaa !5
  %240 = sext i32 %239 to i64
  %241 = getelementptr inbounds float, ptr %238, i64 %240
  %242 = load float, ptr %241, align 4, !tbaa !16
  %243 = load ptr, ptr %13, align 8, !tbaa !9
  %244 = load i32, ptr %21, align 4, !tbaa !5
  %245 = sext i32 %244 to i64
  %246 = getelementptr inbounds float, ptr %243, i64 %245
  %247 = load float, ptr %246, align 4, !tbaa !16
  %248 = fcmp oge float %242, %247
  %249 = zext i1 %248 to i64
  %250 = select i1 %248, i32 1, i32 -1
  %251 = icmp eq i32 %250, -1
  br i1 %251, label %252, label %622

252:                                              ; preds = %237
  %253 = load ptr, ptr %16, align 8, !tbaa !9
  %254 = load i32, ptr %21, 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 = fpext float %257 to double
  %259 = load ptr, ptr %16, align 8, !tbaa !9
  %260 = load i32, ptr %21, align 4, !tbaa !5
  %261 = sub nsw i32 %260, 1
  %262 = sext i32 %261 to i64
  %263 = getelementptr inbounds float, ptr %259, i64 %262
  %264 = load float, ptr %263, align 4, !tbaa !16
  %265 = fpext float %264 to double
  %266 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %267 = getelementptr inbounds %struct.TA_LibcPriv, ptr %266, i32 0, i32 8
  %268 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %267, i64 0, i64 10
  %269 = getelementptr inbounds %struct.TA_CandleSetting, ptr %268, i32 0, i32 3
  %270 = load double, ptr %269, align 8, !tbaa !20
  %271 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %272 = getelementptr inbounds %struct.TA_LibcPriv, ptr %271, i32 0, i32 8
  %273 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %272, i64 0, i64 10
  %274 = getelementptr inbounds %struct.TA_CandleSetting, ptr %273, i32 0, i32 2
  %275 = load i32, ptr %274, align 8, !tbaa !13
  %276 = sitofp i32 %275 to double
  %277 = fcmp une double %276, 0.000000e+00
  br i1 %277, label %278, label %287

278:                                              ; preds = %252
  %279 = load double, ptr %20, align 8, !tbaa !11
  %280 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %281 = getelementptr inbounds %struct.TA_LibcPriv, ptr %280, i32 0, i32 8
  %282 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %281, i64 0, i64 10
  %283 = getelementptr inbounds %struct.TA_CandleSetting, ptr %282, i32 0, i32 2
  %284 = load i32, ptr %283, align 8, !tbaa !13
  %285 = sitofp i32 %284 to double
  %286 = fdiv double %279, %285
  br label %420

287:                                              ; preds = %252
  %288 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %289 = getelementptr inbounds %struct.TA_LibcPriv, ptr %288, i32 0, i32 8
  %290 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %289, i64 0, i64 10
  %291 = getelementptr inbounds %struct.TA_CandleSetting, ptr %290, i32 0, i32 1
  %292 = load i32, ptr %291, align 4, !tbaa !15
  %293 = icmp eq i32 %292, 0
  br i1 %293, label %294, label %310

294:                                              ; preds = %287
  %295 = load ptr, ptr %16, align 8, !tbaa !9
  %296 = load i32, ptr %21, align 4, !tbaa !5
  %297 = sub nsw i32 %296, 1
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds float, ptr %295, i64 %298
  %300 = load float, ptr %299, align 4, !tbaa !16
  %301 = load ptr, ptr %13, align 8, !tbaa !9
  %302 = load i32, ptr %21, align 4, !tbaa !5
  %303 = sub nsw i32 %302, 1
  %304 = sext i32 %303 to i64
  %305 = getelementptr inbounds float, ptr %301, i64 %304
  %306 = load float, ptr %305, align 4, !tbaa !16
  %307 = fsub float %300, %306
  %308 = fpext float %307 to double
  %309 = call double @llvm.fabs.f64(double %308)
  br label %418

310:                                              ; preds = %287
  %311 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %312 = getelementptr inbounds %struct.TA_LibcPriv, ptr %311, i32 0, i32 8
  %313 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %312, i64 0, i64 10
  %314 = getelementptr inbounds %struct.TA_CandleSetting, ptr %313, i32 0, i32 1
  %315 = load i32, ptr %314, align 4, !tbaa !15
  %316 = icmp eq i32 %315, 1
  br i1 %316, label %317, label %331

317:                                              ; preds = %310
  %318 = load ptr, ptr %14, align 8, !tbaa !9
  %319 = load i32, ptr %21, align 4, !tbaa !5
  %320 = sub nsw i32 %319, 1
  %321 = sext i32 %320 to i64
  %322 = getelementptr inbounds float, ptr %318, i64 %321
  %323 = load float, ptr %322, align 4, !tbaa !16
  %324 = load ptr, ptr %15, align 8, !tbaa !9
  %325 = load i32, ptr %21, align 4, !tbaa !5
  %326 = sub nsw i32 %325, 1
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds float, ptr %324, i64 %327
  %329 = load float, ptr %328, align 4, !tbaa !16
  %330 = fsub float %323, %329
  br label %415

331:                                              ; preds = %310
  %332 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %333 = getelementptr inbounds %struct.TA_LibcPriv, ptr %332, i32 0, i32 8
  %334 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %333, i64 0, i64 10
  %335 = getelementptr inbounds %struct.TA_CandleSetting, ptr %334, i32 0, i32 1
  %336 = load i32, ptr %335, align 4, !tbaa !15
  %337 = icmp eq i32 %336, 2
  br i1 %337, label %338, label %412

338:                                              ; preds = %331
  %339 = load ptr, ptr %14, align 8, !tbaa !9
  %340 = load i32, ptr %21, align 4, !tbaa !5
  %341 = sub nsw i32 %340, 1
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds float, ptr %339, i64 %342
  %344 = load float, ptr %343, align 4, !tbaa !16
  %345 = load ptr, ptr %16, align 8, !tbaa !9
  %346 = load i32, ptr %21, align 4, !tbaa !5
  %347 = sub nsw i32 %346, 1
  %348 = sext i32 %347 to i64
  %349 = getelementptr inbounds float, ptr %345, i64 %348
  %350 = load float, ptr %349, align 4, !tbaa !16
  %351 = load ptr, ptr %13, align 8, !tbaa !9
  %352 = load i32, ptr %21, align 4, !tbaa !5
  %353 = sub nsw i32 %352, 1
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds float, ptr %351, i64 %354
  %356 = load float, ptr %355, align 4, !tbaa !16
  %357 = fcmp oge float %350, %356
  br i1 %357, label %358, label %365

358:                                              ; preds = %338
  %359 = load ptr, ptr %16, align 8, !tbaa !9
  %360 = load i32, ptr %21, align 4, !tbaa !5
  %361 = sub nsw i32 %360, 1
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds float, ptr %359, i64 %362
  %364 = load float, ptr %363, align 4, !tbaa !16
  br label %372

365:                                              ; preds = %338
  %366 = load ptr, ptr %13, align 8, !tbaa !9
  %367 = load i32, ptr %21, align 4, !tbaa !5
  %368 = sub nsw i32 %367, 1
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds float, ptr %366, i64 %369
  %371 = load float, ptr %370, align 4, !tbaa !16
  br label %372

372:                                              ; preds = %365, %358
  %373 = phi float [ %364, %358 ], [ %371, %365 ]
  %374 = fsub float %344, %373
  %375 = load ptr, ptr %16, align 8, !tbaa !9
  %376 = load i32, ptr %21, align 4, !tbaa !5
  %377 = sub nsw i32 %376, 1
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds float, ptr %375, i64 %378
  %380 = load float, ptr %379, align 4, !tbaa !16
  %381 = load ptr, ptr %13, align 8, !tbaa !9
  %382 = load i32, ptr %21, align 4, !tbaa !5
  %383 = sub nsw i32 %382, 1
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds float, ptr %381, i64 %384
  %386 = load float, ptr %385, align 4, !tbaa !16
  %387 = fcmp oge float %380, %386
  br i1 %387, label %388, label %395

388:                                              ; preds = %372
  %389 = load ptr, ptr %13, align 8, !tbaa !9
  %390 = load i32, ptr %21, align 4, !tbaa !5
  %391 = sub nsw i32 %390, 1
  %392 = sext i32 %391 to i64
  %393 = getelementptr inbounds float, ptr %389, i64 %392
  %394 = load float, ptr %393, align 4, !tbaa !16
  br label %402

395:                                              ; preds = %372
  %396 = load ptr, ptr %16, align 8, !tbaa !9
  %397 = load i32, ptr %21, align 4, !tbaa !5
  %398 = sub nsw i32 %397, 1
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds float, ptr %396, i64 %399
  %401 = load float, ptr %400, align 4, !tbaa !16
  br label %402

402:                                              ; preds = %395, %388
  %403 = phi float [ %394, %388 ], [ %401, %395 ]
  %404 = load ptr, ptr %15, align 8, !tbaa !9
  %405 = load i32, ptr %21, align 4, !tbaa !5
  %406 = sub nsw i32 %405, 1
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds float, ptr %404, i64 %407
  %409 = load float, ptr %408, align 4, !tbaa !16
  %410 = fsub float %403, %409
  %411 = fadd float %374, %410
  br label %413

412:                                              ; preds = %331
  br label %413

413:                                              ; preds = %412, %402
  %414 = phi float [ %411, %402 ], [ 0.000000e+00, %412 ]
  br label %415

415:                                              ; preds = %413, %317
  %416 = phi float [ %330, %317 ], [ %414, %413 ]
  %417 = fpext float %416 to double
  br label %418

418:                                              ; preds = %415, %294
  %419 = phi double [ %309, %294 ], [ %417, %415 ]
  br label %420

420:                                              ; preds = %418, %278
  %421 = phi double [ %286, %278 ], [ %419, %418 ]
  %422 = fmul double %270, %421
  %423 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %424 = getelementptr inbounds %struct.TA_LibcPriv, ptr %423, i32 0, i32 8
  %425 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %424, i64 0, i64 10
  %426 = getelementptr inbounds %struct.TA_CandleSetting, ptr %425, i32 0, i32 1
  %427 = load i32, ptr %426, align 4, !tbaa !15
  %428 = icmp eq i32 %427, 2
  %429 = zext i1 %428 to i64
  %430 = select i1 %428, double 2.000000e+00, double 1.000000e+00
  %431 = fdiv double %422, %430
  %432 = fadd double %265, %431
  %433 = fcmp ole double %258, %432
  br i1 %433, label %434, label %622

434:                                              ; preds = %420
  %435 = load ptr, ptr %16, align 8, !tbaa !9
  %436 = load i32, ptr %21, align 4, !tbaa !5
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds float, ptr %435, i64 %437
  %439 = load float, ptr %438, align 4, !tbaa !16
  %440 = fpext float %439 to double
  %441 = load ptr, ptr %16, align 8, !tbaa !9
  %442 = load i32, ptr %21, align 4, !tbaa !5
  %443 = sub nsw i32 %442, 1
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds float, ptr %441, i64 %444
  %446 = load float, ptr %445, align 4, !tbaa !16
  %447 = fpext float %446 to double
  %448 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %449 = getelementptr inbounds %struct.TA_LibcPriv, ptr %448, i32 0, i32 8
  %450 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %449, i64 0, i64 10
  %451 = getelementptr inbounds %struct.TA_CandleSetting, ptr %450, i32 0, i32 3
  %452 = load double, ptr %451, align 8, !tbaa !20
  %453 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %454 = getelementptr inbounds %struct.TA_LibcPriv, ptr %453, i32 0, i32 8
  %455 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %454, i64 0, i64 10
  %456 = getelementptr inbounds %struct.TA_CandleSetting, ptr %455, i32 0, i32 2
  %457 = load i32, ptr %456, align 8, !tbaa !13
  %458 = sitofp i32 %457 to double
  %459 = fcmp une double %458, 0.000000e+00
  br i1 %459, label %460, label %469

460:                                              ; preds = %434
  %461 = load double, ptr %20, align 8, !tbaa !11
  %462 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %463 = getelementptr inbounds %struct.TA_LibcPriv, ptr %462, i32 0, i32 8
  %464 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %463, i64 0, i64 10
  %465 = getelementptr inbounds %struct.TA_CandleSetting, ptr %464, i32 0, i32 2
  %466 = load i32, ptr %465, align 8, !tbaa !13
  %467 = sitofp i32 %466 to double
  %468 = fdiv double %461, %467
  br label %602

469:                                              ; preds = %434
  %470 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %471 = getelementptr inbounds %struct.TA_LibcPriv, ptr %470, i32 0, i32 8
  %472 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %471, i64 0, i64 10
  %473 = getelementptr inbounds %struct.TA_CandleSetting, ptr %472, i32 0, i32 1
  %474 = load i32, ptr %473, align 4, !tbaa !15
  %475 = icmp eq i32 %474, 0
  br i1 %475, label %476, label %492

476:                                              ; preds = %469
  %477 = load ptr, ptr %16, align 8, !tbaa !9
  %478 = load i32, ptr %21, align 4, !tbaa !5
  %479 = sub nsw i32 %478, 1
  %480 = sext i32 %479 to i64
  %481 = getelementptr inbounds float, ptr %477, i64 %480
  %482 = load float, ptr %481, align 4, !tbaa !16
  %483 = load ptr, ptr %13, align 8, !tbaa !9
  %484 = load i32, ptr %21, align 4, !tbaa !5
  %485 = sub nsw i32 %484, 1
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds float, ptr %483, i64 %486
  %488 = load float, ptr %487, align 4, !tbaa !16
  %489 = fsub float %482, %488
  %490 = fpext float %489 to double
  %491 = call double @llvm.fabs.f64(double %490)
  br label %600

492:                                              ; preds = %469
  %493 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %494 = getelementptr inbounds %struct.TA_LibcPriv, ptr %493, i32 0, i32 8
  %495 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %494, i64 0, i64 10
  %496 = getelementptr inbounds %struct.TA_CandleSetting, ptr %495, i32 0, i32 1
  %497 = load i32, ptr %496, align 4, !tbaa !15
  %498 = icmp eq i32 %497, 1
  br i1 %498, label %499, label %513

499:                                              ; preds = %492
  %500 = load ptr, ptr %14, align 8, !tbaa !9
  %501 = load i32, ptr %21, align 4, !tbaa !5
  %502 = sub nsw i32 %501, 1
  %503 = sext i32 %502 to i64
  %504 = getelementptr inbounds float, ptr %500, i64 %503
  %505 = load float, ptr %504, align 4, !tbaa !16
  %506 = load ptr, ptr %15, align 8, !tbaa !9
  %507 = load i32, ptr %21, align 4, !tbaa !5
  %508 = sub nsw i32 %507, 1
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds float, ptr %506, i64 %509
  %511 = load float, ptr %510, align 4, !tbaa !16
  %512 = fsub float %505, %511
  br label %597

513:                                              ; preds = %492
  %514 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %515 = getelementptr inbounds %struct.TA_LibcPriv, ptr %514, i32 0, i32 8
  %516 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %515, i64 0, i64 10
  %517 = getelementptr inbounds %struct.TA_CandleSetting, ptr %516, i32 0, i32 1
  %518 = load i32, ptr %517, align 4, !tbaa !15
  %519 = icmp eq i32 %518, 2
  br i1 %519, label %520, label %594

520:                                              ; preds = %513
  %521 = load ptr, ptr %14, align 8, !tbaa !9
  %522 = load i32, ptr %21, align 4, !tbaa !5
  %523 = sub nsw i32 %522, 1
  %524 = sext i32 %523 to i64
  %525 = getelementptr inbounds float, ptr %521, i64 %524
  %526 = load float, ptr %525, align 4, !tbaa !16
  %527 = load ptr, ptr %16, align 8, !tbaa !9
  %528 = load i32, ptr %21, align 4, !tbaa !5
  %529 = sub nsw i32 %528, 1
  %530 = sext i32 %529 to i64
  %531 = getelementptr inbounds float, ptr %527, i64 %530
  %532 = load float, ptr %531, align 4, !tbaa !16
  %533 = load ptr, ptr %13, align 8, !tbaa !9
  %534 = load i32, ptr %21, align 4, !tbaa !5
  %535 = sub nsw i32 %534, 1
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds float, ptr %533, i64 %536
  %538 = load float, ptr %537, align 4, !tbaa !16
  %539 = fcmp oge float %532, %538
  br i1 %539, label %540, label %547

540:                                              ; preds = %520
  %541 = load ptr, ptr %16, align 8, !tbaa !9
  %542 = load i32, ptr %21, align 4, !tbaa !5
  %543 = sub nsw i32 %542, 1
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds float, ptr %541, i64 %544
  %546 = load float, ptr %545, align 4, !tbaa !16
  br label %554

547:                                              ; preds = %520
  %548 = load ptr, ptr %13, align 8, !tbaa !9
  %549 = load i32, ptr %21, align 4, !tbaa !5
  %550 = sub nsw i32 %549, 1
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds float, ptr %548, i64 %551
  %553 = load float, ptr %552, align 4, !tbaa !16
  br label %554

554:                                              ; preds = %547, %540
  %555 = phi float [ %546, %540 ], [ %553, %547 ]
  %556 = fsub float %526, %555
  %557 = load ptr, ptr %16, align 8, !tbaa !9
  %558 = load i32, ptr %21, align 4, !tbaa !5
  %559 = sub nsw i32 %558, 1
  %560 = sext i32 %559 to i64
  %561 = getelementptr inbounds float, ptr %557, i64 %560
  %562 = load float, ptr %561, align 4, !tbaa !16
  %563 = load ptr, ptr %13, align 8, !tbaa !9
  %564 = load i32, ptr %21, align 4, !tbaa !5
  %565 = sub nsw i32 %564, 1
  %566 = sext i32 %565 to i64
  %567 = getelementptr inbounds float, ptr %563, i64 %566
  %568 = load float, ptr %567, align 4, !tbaa !16
  %569 = fcmp oge float %562, %568
  br i1 %569, label %570, label %577

570:                                              ; preds = %554
  %571 = load ptr, ptr %13, align 8, !tbaa !9
  %572 = load i32, ptr %21, align 4, !tbaa !5
  %573 = sub nsw i32 %572, 1
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds float, ptr %571, i64 %574
  %576 = load float, ptr %575, align 4, !tbaa !16
  br label %584

577:                                              ; preds = %554
  %578 = load ptr, ptr %16, align 8, !tbaa !9
  %579 = load i32, ptr %21, align 4, !tbaa !5
  %580 = sub nsw i32 %579, 1
  %581 = sext i32 %580 to i64
  %582 = getelementptr inbounds float, ptr %578, i64 %581
  %583 = load float, ptr %582, align 4, !tbaa !16
  br label %584

584:                                              ; preds = %577, %570
  %585 = phi float [ %576, %570 ], [ %583, %577 ]
  %586 = load ptr, ptr %15, align 8, !tbaa !9
  %587 = load i32, ptr %21, align 4, !tbaa !5
  %588 = sub nsw i32 %587, 1
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds float, ptr %586, i64 %589
  %591 = load float, ptr %590, align 4, !tbaa !16
  %592 = fsub float %585, %591
  %593 = fadd float %556, %592
  br label %595

594:                                              ; preds = %513
  br label %595

595:                                              ; preds = %594, %584
  %596 = phi float [ %593, %584 ], [ 0.000000e+00, %594 ]
  br label %597

597:                                              ; preds = %595, %499
  %598 = phi float [ %512, %499 ], [ %596, %595 ]
  %599 = fpext float %598 to double
  br label %600

600:                                              ; preds = %597, %476
  %601 = phi double [ %491, %476 ], [ %599, %597 ]
  br label %602

602:                                              ; preds = %600, %460
  %603 = phi double [ %468, %460 ], [ %601, %600 ]
  %604 = fmul double %452, %603
  %605 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %606 = getelementptr inbounds %struct.TA_LibcPriv, ptr %605, i32 0, i32 8
  %607 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %606, i64 0, i64 10
  %608 = getelementptr inbounds %struct.TA_CandleSetting, ptr %607, i32 0, i32 1
  %609 = load i32, ptr %608, align 4, !tbaa !15
  %610 = icmp eq i32 %609, 2
  %611 = zext i1 %610 to i64
  %612 = select i1 %610, double 2.000000e+00, double 1.000000e+00
  %613 = fdiv double %604, %612
  %614 = fsub double %447, %613
  %615 = fcmp oge double %440, %614
  br i1 %615, label %616, label %622

616:                                              ; preds = %602
  %617 = load ptr, ptr %19, align 8, !tbaa !9
  %618 = load i32, ptr %22, align 4, !tbaa !5
  %619 = add nsw i32 %618, 1
  store i32 %619, ptr %22, align 4, !tbaa !5
  %620 = sext i32 %618 to i64
  %621 = getelementptr inbounds i32, ptr %617, i64 %620
  store i32 100, ptr %621, align 4, !tbaa !5
  br label %628

622:                                              ; preds = %602, %420, %237, %220
  %623 = load ptr, ptr %19, align 8, !tbaa !9
  %624 = load i32, ptr %22, align 4, !tbaa !5
  %625 = add nsw i32 %624, 1
  store i32 %625, ptr %22, align 4, !tbaa !5
  %626 = sext i32 %624 to i64
  %627 = getelementptr inbounds i32, ptr %623, i64 %626
  store i32 0, ptr %627, align 4, !tbaa !5
  br label %628

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

635:                                              ; preds = %628
  %636 = load ptr, ptr %16, align 8, !tbaa !9
  %637 = load i32, ptr %21, align 4, !tbaa !5
  %638 = sub nsw i32 %637, 1
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds float, ptr %636, i64 %639
  %641 = load float, ptr %640, align 4, !tbaa !16
  %642 = load ptr, ptr %13, align 8, !tbaa !9
  %643 = load i32, ptr %21, align 4, !tbaa !5
  %644 = sub nsw i32 %643, 1
  %645 = sext i32 %644 to i64
  %646 = getelementptr inbounds float, ptr %642, i64 %645
  %647 = load float, ptr %646, align 4, !tbaa !16
  %648 = fsub float %641, %647
  %649 = fpext float %648 to double
  %650 = call double @llvm.fabs.f64(double %649)
  br label %759

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

658:                                              ; preds = %651
  %659 = load ptr, ptr %14, align 8, !tbaa !9
  %660 = load i32, ptr %21, align 4, !tbaa !5
  %661 = sub nsw i32 %660, 1
  %662 = sext i32 %661 to i64
  %663 = getelementptr inbounds float, ptr %659, i64 %662
  %664 = load float, ptr %663, align 4, !tbaa !16
  %665 = load ptr, ptr %15, align 8, !tbaa !9
  %666 = load i32, ptr %21, align 4, !tbaa !5
  %667 = sub nsw i32 %666, 1
  %668 = sext i32 %667 to i64
  %669 = getelementptr inbounds float, ptr %665, i64 %668
  %670 = load float, ptr %669, align 4, !tbaa !16
  %671 = fsub float %664, %670
  br label %756

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

679:                                              ; preds = %672
  %680 = load ptr, ptr %14, align 8, !tbaa !9
  %681 = load i32, ptr %21, align 4, !tbaa !5
  %682 = sub nsw i32 %681, 1
  %683 = sext i32 %682 to i64
  %684 = getelementptr inbounds float, ptr %680, i64 %683
  %685 = load float, ptr %684, align 4, !tbaa !16
  %686 = load ptr, ptr %16, align 8, !tbaa !9
  %687 = load i32, ptr %21, align 4, !tbaa !5
  %688 = sub nsw i32 %687, 1
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds float, ptr %686, i64 %689
  %691 = load float, ptr %690, align 4, !tbaa !16
  %692 = load ptr, ptr %13, align 8, !tbaa !9
  %693 = load i32, ptr %21, align 4, !tbaa !5
  %694 = sub nsw i32 %693, 1
  %695 = sext i32 %694 to i64
  %696 = getelementptr inbounds float, ptr %692, i64 %695
  %697 = load float, ptr %696, align 4, !tbaa !16
  %698 = fcmp oge float %691, %697
  br i1 %698, label %699, label %706

699:                                              ; preds = %679
  %700 = load ptr, ptr %16, align 8, !tbaa !9
  %701 = load i32, ptr %21, align 4, !tbaa !5
  %702 = sub nsw i32 %701, 1
  %703 = sext i32 %702 to i64
  %704 = getelementptr inbounds float, ptr %700, i64 %703
  %705 = load float, ptr %704, align 4, !tbaa !16
  br label %713

706:                                              ; preds = %679
  %707 = load ptr, ptr %13, align 8, !tbaa !9
  %708 = load i32, ptr %21, align 4, !tbaa !5
  %709 = sub nsw i32 %708, 1
  %710 = sext i32 %709 to i64
  %711 = getelementptr inbounds float, ptr %707, i64 %710
  %712 = load float, ptr %711, align 4, !tbaa !16
  br label %713

713:                                              ; preds = %706, %699
  %714 = phi float [ %705, %699 ], [ %712, %706 ]
  %715 = fsub float %685, %714
  %716 = load ptr, ptr %16, align 8, !tbaa !9
  %717 = load i32, ptr %21, align 4, !tbaa !5
  %718 = sub nsw i32 %717, 1
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds float, ptr %716, i64 %719
  %721 = load float, ptr %720, align 4, !tbaa !16
  %722 = load ptr, ptr %13, align 8, !tbaa !9
  %723 = load i32, ptr %21, align 4, !tbaa !5
  %724 = sub nsw i32 %723, 1
  %725 = sext i32 %724 to i64
  %726 = getelementptr inbounds float, ptr %722, i64 %725
  %727 = load float, ptr %726, align 4, !tbaa !16
  %728 = fcmp oge float %721, %727
  br i1 %728, label %729, label %736

729:                                              ; preds = %713
  %730 = load ptr, ptr %13, align 8, !tbaa !9
  %731 = load i32, ptr %21, align 4, !tbaa !5
  %732 = sub nsw i32 %731, 1
  %733 = sext i32 %732 to i64
  %734 = getelementptr inbounds float, ptr %730, i64 %733
  %735 = load float, ptr %734, align 4, !tbaa !16
  br label %743

736:                                              ; preds = %713
  %737 = load ptr, ptr %16, align 8, !tbaa !9
  %738 = load i32, ptr %21, align 4, !tbaa !5
  %739 = sub nsw i32 %738, 1
  %740 = sext i32 %739 to i64
  %741 = getelementptr inbounds float, ptr %737, i64 %740
  %742 = load float, ptr %741, align 4, !tbaa !16
  br label %743

743:                                              ; preds = %736, %729
  %744 = phi float [ %735, %729 ], [ %742, %736 ]
  %745 = load ptr, ptr %15, align 8, !tbaa !9
  %746 = load i32, ptr %21, align 4, !tbaa !5
  %747 = sub nsw i32 %746, 1
  %748 = sext i32 %747 to i64
  %749 = getelementptr inbounds float, ptr %745, i64 %748
  %750 = load float, ptr %749, align 4, !tbaa !16
  %751 = fsub float %744, %750
  %752 = fadd float %715, %751
  br label %754

753:                                              ; preds = %672
  br label %754

754:                                              ; preds = %753, %743
  %755 = phi float [ %752, %743 ], [ 0.000000e+00, %753 ]
  br label %756

756:                                              ; preds = %754, %658
  %757 = phi float [ %671, %658 ], [ %755, %754 ]
  %758 = fpext float %757 to double
  br label %759

759:                                              ; preds = %756, %635
  %760 = phi double [ %650, %635 ], [ %758, %756 ]
  %761 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %762 = getelementptr inbounds %struct.TA_LibcPriv, ptr %761, i32 0, i32 8
  %763 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %762, i64 0, i64 10
  %764 = getelementptr inbounds %struct.TA_CandleSetting, ptr %763, i32 0, i32 1
  %765 = load i32, ptr %764, align 4, !tbaa !15
  %766 = icmp eq i32 %765, 0
  br i1 %766, label %767, label %783

767:                                              ; preds = %759
  %768 = load ptr, ptr %16, align 8, !tbaa !9
  %769 = load i32, ptr %23, align 4, !tbaa !5
  %770 = sub nsw i32 %769, 1
  %771 = sext i32 %770 to i64
  %772 = getelementptr inbounds float, ptr %768, i64 %771
  %773 = load float, ptr %772, align 4, !tbaa !16
  %774 = load ptr, ptr %13, align 8, !tbaa !9
  %775 = load i32, ptr %23, align 4, !tbaa !5
  %776 = sub nsw i32 %775, 1
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds float, ptr %774, i64 %777
  %779 = load float, ptr %778, align 4, !tbaa !16
  %780 = fsub float %773, %779
  %781 = fpext float %780 to double
  %782 = call double @llvm.fabs.f64(double %781)
  br label %891

783:                                              ; preds = %759
  %784 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %785 = getelementptr inbounds %struct.TA_LibcPriv, ptr %784, i32 0, i32 8
  %786 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %785, i64 0, i64 10
  %787 = getelementptr inbounds %struct.TA_CandleSetting, ptr %786, i32 0, i32 1
  %788 = load i32, ptr %787, align 4, !tbaa !15
  %789 = icmp eq i32 %788, 1
  br i1 %789, label %790, label %804

790:                                              ; preds = %783
  %791 = load ptr, ptr %14, align 8, !tbaa !9
  %792 = load i32, ptr %23, align 4, !tbaa !5
  %793 = sub nsw i32 %792, 1
  %794 = sext i32 %793 to i64
  %795 = getelementptr inbounds float, ptr %791, i64 %794
  %796 = load float, ptr %795, align 4, !tbaa !16
  %797 = load ptr, ptr %15, align 8, !tbaa !9
  %798 = load i32, ptr %23, align 4, !tbaa !5
  %799 = sub nsw i32 %798, 1
  %800 = sext i32 %799 to i64
  %801 = getelementptr inbounds float, ptr %797, i64 %800
  %802 = load float, ptr %801, align 4, !tbaa !16
  %803 = fsub float %796, %802
  br label %888

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

811:                                              ; preds = %804
  %812 = load ptr, ptr %14, align 8, !tbaa !9
  %813 = load i32, ptr %23, align 4, !tbaa !5
  %814 = sub nsw i32 %813, 1
  %815 = sext i32 %814 to i64
  %816 = getelementptr inbounds float, ptr %812, i64 %815
  %817 = load float, ptr %816, align 4, !tbaa !16
  %818 = load ptr, ptr %16, align 8, !tbaa !9
  %819 = load i32, ptr %23, align 4, !tbaa !5
  %820 = sub nsw i32 %819, 1
  %821 = sext i32 %820 to i64
  %822 = getelementptr inbounds float, ptr %818, i64 %821
  %823 = load float, ptr %822, align 4, !tbaa !16
  %824 = load ptr, ptr %13, align 8, !tbaa !9
  %825 = load i32, ptr %23, align 4, !tbaa !5
  %826 = sub nsw i32 %825, 1
  %827 = sext i32 %826 to i64
  %828 = getelementptr inbounds float, ptr %824, i64 %827
  %829 = load float, ptr %828, align 4, !tbaa !16
  %830 = fcmp oge float %823, %829
  br i1 %830, label %831, label %838

831:                                              ; preds = %811
  %832 = load ptr, ptr %16, align 8, !tbaa !9
  %833 = load i32, ptr %23, align 4, !tbaa !5
  %834 = sub nsw i32 %833, 1
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds float, ptr %832, i64 %835
  %837 = load float, ptr %836, align 4, !tbaa !16
  br label %845

838:                                              ; preds = %811
  %839 = load ptr, ptr %13, align 8, !tbaa !9
  %840 = load i32, ptr %23, align 4, !tbaa !5
  %841 = sub nsw i32 %840, 1
  %842 = sext i32 %841 to i64
  %843 = getelementptr inbounds float, ptr %839, i64 %842
  %844 = load float, ptr %843, align 4, !tbaa !16
  br label %845

845:                                              ; preds = %838, %831
  %846 = phi float [ %837, %831 ], [ %844, %838 ]
  %847 = fsub float %817, %846
  %848 = load ptr, ptr %16, align 8, !tbaa !9
  %849 = load i32, ptr %23, align 4, !tbaa !5
  %850 = sub nsw i32 %849, 1
  %851 = sext i32 %850 to i64
  %852 = getelementptr inbounds float, ptr %848, i64 %851
  %853 = load float, ptr %852, align 4, !tbaa !16
  %854 = load ptr, ptr %13, align 8, !tbaa !9
  %855 = load i32, ptr %23, align 4, !tbaa !5
  %856 = sub nsw i32 %855, 1
  %857 = sext i32 %856 to i64
  %858 = getelementptr inbounds float, ptr %854, i64 %857
  %859 = load float, ptr %858, align 4, !tbaa !16
  %860 = fcmp oge float %853, %859
  br i1 %860, label %861, label %868

861:                                              ; preds = %845
  %862 = load ptr, ptr %13, align 8, !tbaa !9
  %863 = load i32, ptr %23, align 4, !tbaa !5
  %864 = sub nsw i32 %863, 1
  %865 = sext i32 %864 to i64
  %866 = getelementptr inbounds float, ptr %862, i64 %865
  %867 = load float, ptr %866, align 4, !tbaa !16
  br label %875

868:                                              ; preds = %845
  %869 = load ptr, ptr %16, align 8, !tbaa !9
  %870 = load i32, ptr %23, align 4, !tbaa !5
  %871 = sub nsw i32 %870, 1
  %872 = sext i32 %871 to i64
  %873 = getelementptr inbounds float, ptr %869, i64 %872
  %874 = load float, ptr %873, align 4, !tbaa !16
  br label %875

875:                                              ; preds = %868, %861
  %876 = phi float [ %867, %861 ], [ %874, %868 ]
  %877 = load ptr, ptr %15, align 8, !tbaa !9
  %878 = load i32, ptr %23, align 4, !tbaa !5
  %879 = sub nsw i32 %878, 1
  %880 = sext i32 %879 to i64
  %881 = getelementptr inbounds float, ptr %877, i64 %880
  %882 = load float, ptr %881, align 4, !tbaa !16
  %883 = fsub float %876, %882
  %884 = fadd float %847, %883
  br label %886

885:                                              ; preds = %804
  br label %886

886:                                              ; preds = %885, %875
  %887 = phi float [ %884, %875 ], [ 0.000000e+00, %885 ]
  br label %888

888:                                              ; preds = %886, %790
  %889 = phi float [ %803, %790 ], [ %887, %886 ]
  %890 = fpext float %889 to double
  br label %891

891:                                              ; preds = %888, %767
  %892 = phi double [ %782, %767 ], [ %890, %888 ]
  %893 = fsub double %760, %892
  %894 = load double, ptr %20, align 8, !tbaa !11
  %895 = fadd double %894, %893
  store double %895, ptr %20, align 8, !tbaa !11
  %896 = load i32, ptr %21, align 4, !tbaa !5
  %897 = add nsw i32 %896, 1
  store i32 %897, ptr %21, align 4, !tbaa !5
  %898 = load i32, ptr %23, align 4, !tbaa !5
  %899 = add nsw i32 %898, 1
  store i32 %899, ptr %23, align 4, !tbaa !5
  br label %900

900:                                              ; preds = %891
  %901 = load i32, ptr %21, align 4, !tbaa !5
  %902 = load i32, ptr %12, align 4, !tbaa !5
  %903 = icmp sle i32 %901, %902
  br i1 %903, label %220, label %904, !llvm.loop !21

904:                                              ; preds = %900
  %905 = load i32, ptr %22, align 4, !tbaa !5
  %906 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 %905, ptr %906, align 4, !tbaa !5
  %907 = load i32, ptr %11, align 4, !tbaa !5
  %908 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 %907, ptr %908, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %25, align 4
  br label %909

909:                                              ; preds = %904, %65, %53, %49, %36, %28
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  %910 = load i32, ptr %10, align 4
  ret i32 %910
}

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 = !{!14, !12, i64 16}
!21 = distinct !{!21, !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_CDLMATCHINGLOW_Lookback() local_unnamed_addr #0

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

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

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

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

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

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

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

.lr.ph.split.us.preheader:                        ; preds = %.lr.ph
  %37 = sext i32 %29 to i64
  %38 = 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.iv288 = phi i64 [ %37, %.lr.ph.split.us.preheader ], [ %indvars.iv.next289, %.lr.ph.split.us ]
  %.0203265.us = phi double [ 0.000000e+00, %.lr.ph.split.us.preheader ], [ %47, %.lr.ph.split.us ]
  %39 = add nsw i64 %indvars.iv288, -1
  %40 = getelementptr inbounds float, ptr %5, i64 %39
  %41 = load float, ptr %40, align 4, !tbaa !15
  %42 = getelementptr inbounds float, ptr %2, i64 %39
  %43 = load float, ptr %42, align 4, !tbaa !15
  %44 = fsub float %41, %43
  %45 = tail call float @llvm.fabs.f32(float %44)
  %46 = fpext float %45 to double
  %47 = fadd double %.0203265.us, %46
  %indvars.iv.next289 = add nsw i64 %indvars.iv288, 1
  %48 = icmp slt i64 %indvars.iv.next289, %38
  br i1 %48, label %.lr.ph.split.us, label %.preheader, !llvm.loop !17

.lr.ph.split.us267:                               ; preds = %.lr.ph.split.us267.preheader, %.lr.ph.split.us267
  %indvars.iv285 = phi i64 [ %35, %.lr.ph.split.us267.preheader ], [ %indvars.iv.next286, %.lr.ph.split.us267 ]
  %.0203265.us269 = phi double [ 0.000000e+00, %.lr.ph.split.us267.preheader ], [ %56, %.lr.ph.split.us267 ]
  %49 = add nsw i64 %indvars.iv285, -1
  %50 = getelementptr inbounds float, ptr %3, i64 %49
  %51 = load float, ptr %50, align 4, !tbaa !15
  %52 = getelementptr inbounds float, ptr %4, i64 %49
  %53 = load float, ptr %52, align 4, !tbaa !15
  %54 = fsub float %51, %53
  %55 = fpext float %54 to double
  %56 = fadd double %.0203265.us269, %55
  %indvars.iv.next286 = add nsw i64 %indvars.iv285, 1
  %57 = icmp slt i64 %indvars.iv.next286, %36
  br i1 %57, label %.lr.ph.split.us267, label %.preheader, !llvm.loop !17

.lr.ph.split.us273:                               ; preds = %.lr.ph.split.us273.preheader, %.lr.ph.split.us273
  %indvars.iv = phi i64 [ %33, %.lr.ph.split.us273.preheader ], [ %indvars.iv.next, %.lr.ph.split.us273 ]
  %.0203265.us275 = phi double [ 0.000000e+00, %.lr.ph.split.us273.preheader ], [ %73, %.lr.ph.split.us273 ]
  %58 = add nsw i64 %indvars.iv, -1
  %59 = getelementptr inbounds float, ptr %3, i64 %58
  %60 = load float, ptr %59, align 4, !tbaa !15
  %61 = getelementptr inbounds float, ptr %5, i64 %58
  %62 = load float, ptr %61, align 4, !tbaa !15
  %63 = getelementptr inbounds float, ptr %2, i64 %58
  %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 %58
  %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 %.0203265.us275, %72
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %74 = icmp slt i64 %indvars.iv.next, %34
  br i1 %74, label %.lr.ph.split.us273, label %.preheader, !llvm.loop !17

.preheader:                                       ; preds = %.lr.ph.split.us273, %.lr.ph.split.us267, %.lr.ph.split.us, %.lr.ph, %25
  %.0203.lcssa = phi double [ 0.000000e+00, %25 ], [ 0.000000e+00, %.lr.ph ], [ %47, %.lr.ph.split.us ], [ %56, %.lr.ph.split.us267 ], [ %73, %.lr.ph.split.us273 ]
  %75 = getelementptr inbounds i8, ptr %26, i64 452
  %76 = getelementptr inbounds i8, ptr %26, i64 464
  %77 = sext i32 %22 to i64
  %78 = zext nneg i32 %0 to i64
  %smax = tail call i64 @llvm.smax.i64(i64 %77, i64 %78)
  %79 = sext i32 %1 to i64
  %80 = sext i32 %29 to i64
  br label %81

81:                                               ; preds = %.preheader, %217
  %indvars.iv295 = phi i64 [ %80, %.preheader ], [ %indvars.iv.next296, %217 ]
  %indvars.iv293 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next294, %217 ]
  %indvars.iv291 = phi i64 [ %smax, %.preheader ], [ %indvars.iv.next292, %217 ]
  %.1204 = phi double [ %.0203.lcssa, %.preheader ], [ %221, %217 ]
  %82 = add nsw i64 %indvars.iv291, -1
  %83 = getelementptr inbounds float, ptr %5, i64 %82
  %84 = load float, ptr %83, align 4, !tbaa !15
  %85 = getelementptr inbounds float, ptr %2, i64 %82
  %86 = load float, ptr %85, align 4, !tbaa !15
  %87 = fcmp ult float %84, %86
  br i1 %87, label %88, label %168

88:                                               ; preds = %81
  %89 = getelementptr inbounds float, ptr %5, i64 %indvars.iv291
  %90 = load float, ptr %89, align 4, !tbaa !15
  %91 = getelementptr inbounds float, ptr %2, i64 %indvars.iv291
  %92 = load float, ptr %91, align 4, !tbaa !15
  %93 = fcmp ult float %90, %92
  br i1 %93, label %94, label %168

94:                                               ; preds = %88
  %95 = fpext float %90 to double
  %96 = fpext float %84 to double
  %97 = load double, ptr %76, align 8, !tbaa !19
  %98 = load i32, ptr %27, align 8, !tbaa !11
  %.not242 = icmp eq i32 %98, 0
  br i1 %.not242, label %99, label %.thread300

99:                                               ; preds = %94
  %100 = load i32, ptr %75, align 4, !tbaa !14
  switch i32 %100, label %118 [
    i32 0, label %101
    i32 1, label %104
    i32 2, label %110
  ]

101:                                              ; preds = %99
  %102 = fsub float %84, %86
  %103 = tail call float @llvm.fabs.f32(float %102)
  br label %118

104:                                              ; preds = %99
  %105 = getelementptr inbounds float, ptr %3, i64 %82
  %106 = load float, ptr %105, align 4, !tbaa !15
  %107 = getelementptr inbounds float, ptr %4, i64 %82
  %108 = load float, ptr %107, align 4, !tbaa !15
  %109 = fsub float %106, %108
  br label %118

110:                                              ; preds = %99
  %111 = getelementptr inbounds float, ptr %3, i64 %82
  %112 = load float, ptr %111, align 4, !tbaa !15
  %113 = fsub float %112, %86
  %114 = getelementptr inbounds float, ptr %4, i64 %82
  %115 = load float, ptr %114, align 4, !tbaa !15
  %116 = fsub float %84, %115
  %117 = fadd float %113, %116
  br label %118

118:                                              ; preds = %104, %110, %99, %101
  %.sink = phi float [ %103, %101 ], [ %109, %104 ], [ %117, %110 ], [ 0.000000e+00, %99 ]
  %119 = fpext float %.sink to double
  %120 = fmul double %97, %119
  %121 = icmp eq i32 %100, 2
  %122 = select i1 %121, double 2.000000e+00, double 1.000000e+00
  %123 = fdiv double %120, %122
  %124 = fadd double %123, %96
  %125 = fcmp ult double %124, %95
  br i1 %125, label %168, label %134

.thread300:                                       ; preds = %94
  %126 = sitofp i32 %98 to double
  %127 = fdiv double %.1204, %126
  %.pre = load i32, ptr %75, align 4, !tbaa !14
  %128 = fmul double %97, %127
  %129 = icmp eq i32 %.pre, 2
  %130 = select i1 %129, double 2.000000e+00, double 1.000000e+00
  %131 = fdiv double %128, %130
  %132 = fadd double %131, %96
  %133 = fcmp ult double %132, %95
  br i1 %133, label %168, label %.thread301

134:                                              ; preds = %118
  br i1 %.not242, label %138, label %.thread301

.thread301:                                       ; preds = %.thread300, %134
  %135 = phi double [ %122, %134 ], [ %130, %.thread300 ]
  %136 = sitofp i32 %98 to double
  %137 = fdiv double %.1204, %136
  br label %161

138:                                              ; preds = %134
  switch i32 %100, label %149 [
    i32 0, label %139
    i32 1, label %143
  ]

139:                                              ; preds = %138
  %140 = fsub float %84, %86
  %141 = tail call float @llvm.fabs.f32(float %140)
  %142 = fpext float %141 to double
  br label %161

143:                                              ; preds = %138
  %144 = getelementptr inbounds float, ptr %3, i64 %82
  %145 = load float, ptr %144, align 4, !tbaa !15
  %146 = getelementptr inbounds float, ptr %4, i64 %82
  %147 = load float, ptr %146, align 4, !tbaa !15
  %148 = fsub float %145, %147
  br label %158

149:                                              ; preds = %138
  br i1 %121, label %150, label %158

150:                                              ; preds = %149
  %151 = getelementptr inbounds float, ptr %3, i64 %82
  %152 = load float, ptr %151, align 4, !tbaa !15
  %153 = fsub float %152, %86
  %154 = getelementptr inbounds float, ptr %4, i64 %82
  %155 = load float, ptr %154, align 4, !tbaa !15
  %156 = fsub float %84, %155
  %157 = fadd float %153, %156
  br label %158

158:                                              ; preds = %150, %149, %143
  %159 = phi float [ %148, %143 ], [ %157, %150 ], [ 0.000000e+00, %149 ]
  %160 = fpext float %159 to double
  br label %161

161:                                              ; preds = %139, %158, %.thread301
  %162 = phi double [ %135, %.thread301 ], [ %122, %139 ], [ %122, %158 ]
  %163 = phi double [ %137, %.thread301 ], [ %142, %139 ], [ %160, %158 ]
  %164 = fmul double %97, %163
  %165 = fdiv double %164, %162
  %166 = fsub double %96, %165
  %167 = fcmp ugt double %166, %95
  br i1 %167, label %168, label %169

168:                                              ; preds = %.thread300, %161, %118, %88, %81
  br label %169

169:                                              ; preds = %161, %168
  %.sink306 = phi i32 [ 0, %168 ], [ 100, %161 ]
  %170 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv293
  store i32 %.sink306, ptr %170, align 4, !tbaa !5
  %indvars.iv.next294 = add nuw nsw i64 %indvars.iv293, 1
  %171 = load i32, ptr %75, align 4, !tbaa !14
  switch i32 %171, label %217 [
    i32 0, label %.thread
    i32 1, label %.thread254
    i32 2, label %.thread256
  ]

.thread:                                          ; preds = %169
  %172 = fsub float %84, %86
  %173 = tail call float @llvm.fabs.f32(float %172)
  %174 = fpext float %173 to double
  %175 = add nsw i64 %indvars.iv295, -1
  %176 = getelementptr inbounds float, ptr %5, i64 %175
  %177 = load float, ptr %176, align 4, !tbaa !15
  %178 = getelementptr inbounds float, ptr %2, i64 %175
  %179 = load float, ptr %178, align 4, !tbaa !15
  %180 = fsub float %177, %179
  %181 = tail call float @llvm.fabs.f32(float %180)
  br label %217

.thread254:                                       ; preds = %169
  %182 = getelementptr inbounds float, ptr %3, i64 %82
  %183 = load float, ptr %182, align 4, !tbaa !15
  %184 = getelementptr inbounds float, ptr %4, i64 %82
  %185 = load float, ptr %184, align 4, !tbaa !15
  %186 = fsub float %183, %185
  %187 = fpext float %186 to double
  %188 = add nsw i64 %indvars.iv295, -1
  %189 = getelementptr inbounds float, ptr %3, i64 %188
  %190 = load float, ptr %189, align 4, !tbaa !15
  %191 = getelementptr inbounds float, ptr %4, i64 %188
  %192 = load float, ptr %191, align 4, !tbaa !15
  %193 = fsub float %190, %192
  br label %217

.thread256:                                       ; preds = %169
  %194 = getelementptr inbounds float, ptr %3, i64 %82
  %195 = load float, ptr %194, align 4, !tbaa !15
  %.250 = select i1 %87, float %86, float %84
  %196 = fsub float %195, %.250
  %197 = select i1 %87, float %84, float %86
  %198 = getelementptr inbounds float, ptr %4, i64 %82
  %199 = load float, ptr %198, align 4, !tbaa !15
  %200 = fsub float %197, %199
  %201 = fadd float %196, %200
  %202 = fpext float %201 to double
  %203 = add nsw i64 %indvars.iv295, -1
  %204 = getelementptr inbounds float, ptr %3, i64 %203
  %205 = load float, ptr %204, align 4, !tbaa !15
  %206 = getelementptr inbounds float, ptr %5, i64 %203
  %207 = load float, ptr %206, align 4, !tbaa !15
  %208 = getelementptr inbounds float, ptr %2, i64 %203
  %209 = load float, ptr %208, align 4, !tbaa !15
  %210 = fcmp ult float %207, %209
  %.251 = select i1 %210, float %209, float %207
  %211 = fsub float %205, %.251
  %212 = select i1 %210, float %207, float %209
  %213 = getelementptr inbounds float, ptr %4, i64 %203
  %214 = load float, ptr %213, align 4, !tbaa !15
  %215 = fsub float %212, %214
  %216 = fadd float %211, %215
  br label %217

217:                                              ; preds = %169, %.thread254, %.thread256, %.thread
  %218 = phi double [ %174, %.thread ], [ %187, %.thread254 ], [ %202, %.thread256 ], [ 0.000000e+00, %169 ]
  %.in244 = phi float [ %181, %.thread ], [ %193, %.thread254 ], [ %216, %.thread256 ], [ 0.000000e+00, %169 ]
  %219 = fpext float %.in244 to double
  %220 = fsub double %218, %219
  %221 = fadd double %.1204, %220
  %indvars.iv.next292 = add nuw nsw i64 %indvars.iv291, 1
  %indvars.iv.next296 = add nsw i64 %indvars.iv295, 1
  %.not245.not = icmp slt i64 %indvars.iv291, %79
  br i1 %.not245.not, label %81, label %222, !llvm.loop !20

222:                                              ; preds = %217
  %223 = trunc nuw i64 %indvars.iv.next294 to i32
  store i32 %223, ptr %7, align 4, !tbaa !5
  store i32 %spec.select, ptr %6, align 4, !tbaa !5
  br label %224

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #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}


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