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

; 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_CDLCOUNTERATTACK_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_CDLCOUNTERATTACK(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 [2 x double], align 16
  %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
  %28 = 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 16, 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
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #3
  %29 = load i32, ptr %11, align 4, !tbaa !5
  %30 = icmp slt i32 %29, 0
  br i1 %30, label %31, label %32

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

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

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

39:                                               ; preds = %35, %32
  store i32 13, ptr %10, align 4
  store i32 1, ptr %28, align 4
  br label %1859

40:                                               ; preds = %35
  %41 = load ptr, ptr %13, align 8, !tbaa !9
  %42 = icmp ne ptr %41, null
  br i1 %42, label %43, label %52

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

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

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

52:                                               ; preds = %49, %46, %43, %40
  store i32 2, ptr %10, align 4
  store i32 1, ptr %28, align 4
  br label %1859

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

56:                                               ; preds = %53
  store i32 2, ptr %10, align 4
  store i32 1, ptr %28, align 4
  br label %1859

57:                                               ; preds = %53
  %58 = call i32 @TA_CDLCOUNTERATTACK_Lookback()
  store i32 %58, ptr %27, align 4, !tbaa !5
  %59 = load i32, ptr %11, align 4, !tbaa !5
  %60 = load i32, ptr %27, align 4, !tbaa !5
  %61 = icmp slt i32 %59, %60
  br i1 %61, label %62, label %64

62:                                               ; preds = %57
  %63 = load i32, ptr %27, align 4, !tbaa !5
  store i32 %63, ptr %11, align 4, !tbaa !5
  br label %64

64:                                               ; preds = %62, %57
  %65 = load i32, ptr %11, align 4, !tbaa !5
  %66 = load i32, ptr %12, align 4, !tbaa !5
  %67 = icmp sgt i32 %65, %66
  br i1 %67, label %68, label %71

68:                                               ; preds = %64
  %69 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 0, ptr %69, align 4, !tbaa !5
  %70 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 0, ptr %70, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %28, align 4
  br label %1859

71:                                               ; preds = %64
  store double 0.000000e+00, ptr %20, align 8, !tbaa !11
  %72 = load i32, ptr %11, align 4, !tbaa !5
  %73 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %74 = getelementptr inbounds %struct.TA_LibcPriv, ptr %73, i32 0, i32 8
  %75 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %74, i64 0, i64 10
  %76 = getelementptr inbounds %struct.TA_CandleSetting, ptr %75, i32 0, i32 2
  %77 = load i32, ptr %76, align 8, !tbaa !13
  %78 = sub nsw i32 %72, %77
  store i32 %78, ptr %25, align 4, !tbaa !5
  %79 = getelementptr inbounds [2 x double], ptr %21, i64 0, i64 1
  store double 0.000000e+00, ptr %79, align 8, !tbaa !11
  %80 = getelementptr inbounds [2 x double], ptr %21, i64 0, i64 0
  store double 0.000000e+00, ptr %80, align 16, !tbaa !11
  %81 = load i32, ptr %11, align 4, !tbaa !5
  %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 0
  %85 = getelementptr inbounds %struct.TA_CandleSetting, ptr %84, i32 0, i32 2
  %86 = load i32, ptr %85, align 8, !tbaa !13
  %87 = sub nsw i32 %81, %86
  store i32 %87, ptr %26, align 4, !tbaa !5
  %88 = load i32, ptr %25, align 4, !tbaa !5
  store i32 %88, ptr %22, align 4, !tbaa !5
  br label %89

89:                                               ; preds = %224, %71
  %90 = load i32, ptr %22, align 4, !tbaa !5
  %91 = load i32, ptr %11, align 4, !tbaa !5
  %92 = icmp slt i32 %90, %91
  br i1 %92, label %93, label %230

93:                                               ; preds = %89
  %94 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %95 = getelementptr inbounds %struct.TA_LibcPriv, ptr %94, i32 0, i32 8
  %96 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %95, i64 0, i64 10
  %97 = getelementptr inbounds %struct.TA_CandleSetting, ptr %96, i32 0, i32 1
  %98 = load i32, ptr %97, align 4, !tbaa !15
  %99 = icmp eq i32 %98, 0
  br i1 %99, label %100, label %116

100:                                              ; preds = %93
  %101 = load ptr, ptr %16, align 8, !tbaa !9
  %102 = load i32, ptr %22, align 4, !tbaa !5
  %103 = sub nsw i32 %102, 1
  %104 = sext i32 %103 to i64
  %105 = getelementptr inbounds float, ptr %101, i64 %104
  %106 = load float, ptr %105, align 4, !tbaa !16
  %107 = load ptr, ptr %13, align 8, !tbaa !9
  %108 = load i32, ptr %22, align 4, !tbaa !5
  %109 = sub nsw i32 %108, 1
  %110 = sext i32 %109 to i64
  %111 = getelementptr inbounds float, ptr %107, i64 %110
  %112 = load float, ptr %111, align 4, !tbaa !16
  %113 = fsub float %106, %112
  %114 = fpext float %113 to double
  %115 = call double @llvm.fabs.f64(double %114)
  br label %224

116:                                              ; preds = %93
  %117 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %118 = getelementptr inbounds %struct.TA_LibcPriv, ptr %117, i32 0, i32 8
  %119 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %118, i64 0, i64 10
  %120 = getelementptr inbounds %struct.TA_CandleSetting, ptr %119, i32 0, i32 1
  %121 = load i32, ptr %120, align 4, !tbaa !15
  %122 = icmp eq i32 %121, 1
  br i1 %122, label %123, label %137

123:                                              ; preds = %116
  %124 = load ptr, ptr %14, align 8, !tbaa !9
  %125 = load i32, ptr %22, align 4, !tbaa !5
  %126 = sub nsw i32 %125, 1
  %127 = sext i32 %126 to i64
  %128 = getelementptr inbounds float, ptr %124, i64 %127
  %129 = load float, ptr %128, align 4, !tbaa !16
  %130 = load ptr, ptr %15, align 8, !tbaa !9
  %131 = load i32, ptr %22, align 4, !tbaa !5
  %132 = sub nsw i32 %131, 1
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds float, ptr %130, i64 %133
  %135 = load float, ptr %134, align 4, !tbaa !16
  %136 = fsub float %129, %135
  br label %221

137:                                              ; preds = %116
  %138 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %139 = getelementptr inbounds %struct.TA_LibcPriv, ptr %138, i32 0, i32 8
  %140 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %139, i64 0, i64 10
  %141 = getelementptr inbounds %struct.TA_CandleSetting, ptr %140, i32 0, i32 1
  %142 = load i32, ptr %141, align 4, !tbaa !15
  %143 = icmp eq i32 %142, 2
  br i1 %143, label %144, label %218

144:                                              ; preds = %137
  %145 = load ptr, ptr %14, align 8, !tbaa !9
  %146 = load i32, ptr %22, 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 = load ptr, ptr %16, align 8, !tbaa !9
  %152 = load i32, ptr %22, align 4, !tbaa !5
  %153 = sub nsw i32 %152, 1
  %154 = sext i32 %153 to i64
  %155 = getelementptr inbounds float, ptr %151, i64 %154
  %156 = load float, ptr %155, align 4, !tbaa !16
  %157 = load ptr, ptr %13, align 8, !tbaa !9
  %158 = load i32, ptr %22, align 4, !tbaa !5
  %159 = sub nsw i32 %158, 1
  %160 = sext i32 %159 to i64
  %161 = getelementptr inbounds float, ptr %157, i64 %160
  %162 = load float, ptr %161, align 4, !tbaa !16
  %163 = fcmp oge float %156, %162
  br i1 %163, label %164, label %171

164:                                              ; preds = %144
  %165 = load ptr, ptr %16, align 8, !tbaa !9
  %166 = load i32, ptr %22, align 4, !tbaa !5
  %167 = sub nsw i32 %166, 1
  %168 = sext i32 %167 to i64
  %169 = getelementptr inbounds float, ptr %165, i64 %168
  %170 = load float, ptr %169, align 4, !tbaa !16
  br label %178

171:                                              ; preds = %144
  %172 = load ptr, ptr %13, align 8, !tbaa !9
  %173 = load i32, ptr %22, align 4, !tbaa !5
  %174 = sub nsw i32 %173, 1
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds float, ptr %172, i64 %175
  %177 = load float, ptr %176, align 4, !tbaa !16
  br label %178

178:                                              ; preds = %171, %164
  %179 = phi float [ %170, %164 ], [ %177, %171 ]
  %180 = fsub float %150, %179
  %181 = load ptr, ptr %16, align 8, !tbaa !9
  %182 = load i32, ptr %22, align 4, !tbaa !5
  %183 = sub nsw i32 %182, 1
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds float, ptr %181, i64 %184
  %186 = load float, ptr %185, align 4, !tbaa !16
  %187 = load ptr, ptr %13, align 8, !tbaa !9
  %188 = load i32, ptr %22, align 4, !tbaa !5
  %189 = sub nsw i32 %188, 1
  %190 = sext i32 %189 to i64
  %191 = getelementptr inbounds float, ptr %187, i64 %190
  %192 = load float, ptr %191, align 4, !tbaa !16
  %193 = fcmp oge float %186, %192
  br i1 %193, label %194, label %201

194:                                              ; preds = %178
  %195 = load ptr, ptr %13, align 8, !tbaa !9
  %196 = load i32, ptr %22, align 4, !tbaa !5
  %197 = sub nsw i32 %196, 1
  %198 = sext i32 %197 to i64
  %199 = getelementptr inbounds float, ptr %195, i64 %198
  %200 = load float, ptr %199, align 4, !tbaa !16
  br label %208

201:                                              ; preds = %178
  %202 = load ptr, ptr %16, align 8, !tbaa !9
  %203 = load i32, ptr %22, align 4, !tbaa !5
  %204 = sub nsw i32 %203, 1
  %205 = sext i32 %204 to i64
  %206 = getelementptr inbounds float, ptr %202, i64 %205
  %207 = load float, ptr %206, align 4, !tbaa !16
  br label %208

208:                                              ; preds = %201, %194
  %209 = phi float [ %200, %194 ], [ %207, %201 ]
  %210 = load ptr, ptr %15, align 8, !tbaa !9
  %211 = load i32, ptr %22, align 4, !tbaa !5
  %212 = sub nsw i32 %211, 1
  %213 = sext i32 %212 to i64
  %214 = getelementptr inbounds float, ptr %210, i64 %213
  %215 = load float, ptr %214, align 4, !tbaa !16
  %216 = fsub float %209, %215
  %217 = fadd float %180, %216
  br label %219

218:                                              ; preds = %137
  br label %219

219:                                              ; preds = %218, %208
  %220 = phi float [ %217, %208 ], [ 0.000000e+00, %218 ]
  br label %221

221:                                              ; preds = %219, %123
  %222 = phi float [ %136, %123 ], [ %220, %219 ]
  %223 = fpext float %222 to double
  br label %224

224:                                              ; preds = %221, %100
  %225 = phi double [ %115, %100 ], [ %223, %221 ]
  %226 = load double, ptr %20, align 8, !tbaa !11
  %227 = fadd double %226, %225
  store double %227, ptr %20, align 8, !tbaa !11
  %228 = load i32, ptr %22, align 4, !tbaa !5
  %229 = add nsw i32 %228, 1
  store i32 %229, ptr %22, align 4, !tbaa !5
  br label %89, !llvm.loop !18

230:                                              ; preds = %89
  %231 = load i32, ptr %26, align 4, !tbaa !5
  store i32 %231, ptr %22, align 4, !tbaa !5
  br label %232

232:                                              ; preds = %488, %230
  %233 = load i32, ptr %22, align 4, !tbaa !5
  %234 = load i32, ptr %11, align 4, !tbaa !5
  %235 = icmp slt i32 %233, %234
  br i1 %235, label %236, label %495

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

243:                                              ; preds = %236
  %244 = load ptr, ptr %16, align 8, !tbaa !9
  %245 = load i32, ptr %22, align 4, !tbaa !5
  %246 = sub nsw i32 %245, 1
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds float, ptr %244, i64 %247
  %249 = load float, ptr %248, align 4, !tbaa !16
  %250 = load ptr, ptr %13, align 8, !tbaa !9
  %251 = load i32, ptr %22, align 4, !tbaa !5
  %252 = sub nsw i32 %251, 1
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds float, ptr %250, i64 %253
  %255 = load float, ptr %254, align 4, !tbaa !16
  %256 = fsub float %249, %255
  %257 = fpext float %256 to double
  %258 = call double @llvm.fabs.f64(double %257)
  br label %367

259:                                              ; preds = %236
  %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 0
  %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, 1
  br i1 %265, label %266, label %280

266:                                              ; preds = %259
  %267 = load ptr, ptr %14, align 8, !tbaa !9
  %268 = load i32, ptr %22, align 4, !tbaa !5
  %269 = sub nsw i32 %268, 1
  %270 = sext i32 %269 to i64
  %271 = getelementptr inbounds float, ptr %267, i64 %270
  %272 = load float, ptr %271, align 4, !tbaa !16
  %273 = load ptr, ptr %15, align 8, !tbaa !9
  %274 = load i32, ptr %22, align 4, !tbaa !5
  %275 = sub nsw i32 %274, 1
  %276 = sext i32 %275 to i64
  %277 = getelementptr inbounds float, ptr %273, i64 %276
  %278 = load float, ptr %277, align 4, !tbaa !16
  %279 = fsub float %272, %278
  br label %364

280:                                              ; preds = %259
  %281 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %282 = getelementptr inbounds %struct.TA_LibcPriv, ptr %281, i32 0, i32 8
  %283 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %282, i64 0, i64 0
  %284 = getelementptr inbounds %struct.TA_CandleSetting, ptr %283, i32 0, i32 1
  %285 = load i32, ptr %284, align 4, !tbaa !15
  %286 = icmp eq i32 %285, 2
  br i1 %286, label %287, label %361

287:                                              ; preds = %280
  %288 = load ptr, ptr %14, align 8, !tbaa !9
  %289 = load i32, ptr %22, align 4, !tbaa !5
  %290 = sub nsw i32 %289, 1
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds float, ptr %288, i64 %291
  %293 = load float, ptr %292, align 4, !tbaa !16
  %294 = load ptr, ptr %16, align 8, !tbaa !9
  %295 = load i32, ptr %22, align 4, !tbaa !5
  %296 = sub nsw i32 %295, 1
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds float, ptr %294, i64 %297
  %299 = load float, ptr %298, align 4, !tbaa !16
  %300 = load ptr, ptr %13, align 8, !tbaa !9
  %301 = load i32, ptr %22, align 4, !tbaa !5
  %302 = sub nsw i32 %301, 1
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds float, ptr %300, i64 %303
  %305 = load float, ptr %304, align 4, !tbaa !16
  %306 = fcmp oge float %299, %305
  br i1 %306, label %307, label %314

307:                                              ; preds = %287
  %308 = load ptr, ptr %16, align 8, !tbaa !9
  %309 = load i32, ptr %22, align 4, !tbaa !5
  %310 = sub nsw i32 %309, 1
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds float, ptr %308, i64 %311
  %313 = load float, ptr %312, align 4, !tbaa !16
  br label %321

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

321:                                              ; preds = %314, %307
  %322 = phi float [ %313, %307 ], [ %320, %314 ]
  %323 = fsub float %293, %322
  %324 = load ptr, ptr %16, align 8, !tbaa !9
  %325 = load i32, ptr %22, 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 = load ptr, ptr %13, align 8, !tbaa !9
  %331 = load i32, ptr %22, align 4, !tbaa !5
  %332 = sub nsw i32 %331, 1
  %333 = sext i32 %332 to i64
  %334 = getelementptr inbounds float, ptr %330, i64 %333
  %335 = load float, ptr %334, align 4, !tbaa !16
  %336 = fcmp oge float %329, %335
  br i1 %336, label %337, label %344

337:                                              ; preds = %321
  %338 = load ptr, ptr %13, align 8, !tbaa !9
  %339 = load i32, ptr %22, align 4, !tbaa !5
  %340 = sub nsw i32 %339, 1
  %341 = sext i32 %340 to i64
  %342 = getelementptr inbounds float, ptr %338, i64 %341
  %343 = load float, ptr %342, align 4, !tbaa !16
  br label %351

344:                                              ; preds = %321
  %345 = load ptr, ptr %16, align 8, !tbaa !9
  %346 = load i32, ptr %22, 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
  br label %351

351:                                              ; preds = %344, %337
  %352 = phi float [ %343, %337 ], [ %350, %344 ]
  %353 = load ptr, ptr %15, align 8, !tbaa !9
  %354 = load i32, ptr %22, align 4, !tbaa !5
  %355 = sub nsw i32 %354, 1
  %356 = sext i32 %355 to i64
  %357 = getelementptr inbounds float, ptr %353, i64 %356
  %358 = load float, ptr %357, align 4, !tbaa !16
  %359 = fsub float %352, %358
  %360 = fadd float %323, %359
  br label %362

361:                                              ; preds = %280
  br label %362

362:                                              ; preds = %361, %351
  %363 = phi float [ %360, %351 ], [ 0.000000e+00, %361 ]
  br label %364

364:                                              ; preds = %362, %266
  %365 = phi float [ %279, %266 ], [ %363, %362 ]
  %366 = fpext float %365 to double
  br label %367

367:                                              ; preds = %364, %243
  %368 = phi double [ %258, %243 ], [ %366, %364 ]
  %369 = getelementptr inbounds [2 x double], ptr %21, i64 0, i64 1
  %370 = load double, ptr %369, align 8, !tbaa !11
  %371 = fadd double %370, %368
  store double %371, ptr %369, align 8, !tbaa !11
  %372 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %373 = getelementptr inbounds %struct.TA_LibcPriv, ptr %372, i32 0, i32 8
  %374 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %373, i64 0, i64 0
  %375 = getelementptr inbounds %struct.TA_CandleSetting, ptr %374, i32 0, i32 1
  %376 = load i32, ptr %375, align 4, !tbaa !15
  %377 = icmp eq i32 %376, 0
  br i1 %377, label %378, label %392

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

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

399:                                              ; preds = %392
  %400 = load ptr, ptr %14, align 8, !tbaa !9
  %401 = load i32, ptr %22, align 4, !tbaa !5
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds float, ptr %400, i64 %402
  %404 = load float, ptr %403, align 4, !tbaa !16
  %405 = load ptr, ptr %15, align 8, !tbaa !9
  %406 = load i32, ptr %22, align 4, !tbaa !5
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds float, ptr %405, i64 %407
  %409 = load float, ptr %408, align 4, !tbaa !16
  %410 = fsub float %404, %409
  br label %485

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

418:                                              ; preds = %411
  %419 = load ptr, ptr %14, align 8, !tbaa !9
  %420 = load i32, ptr %22, align 4, !tbaa !5
  %421 = sext i32 %420 to i64
  %422 = getelementptr inbounds float, ptr %419, i64 %421
  %423 = load float, ptr %422, align 4, !tbaa !16
  %424 = load ptr, ptr %16, align 8, !tbaa !9
  %425 = load i32, ptr %22, align 4, !tbaa !5
  %426 = sext i32 %425 to i64
  %427 = getelementptr inbounds float, ptr %424, i64 %426
  %428 = load float, ptr %427, align 4, !tbaa !16
  %429 = load ptr, ptr %13, align 8, !tbaa !9
  %430 = load i32, ptr %22, align 4, !tbaa !5
  %431 = sext i32 %430 to i64
  %432 = getelementptr inbounds float, ptr %429, i64 %431
  %433 = load float, ptr %432, align 4, !tbaa !16
  %434 = fcmp oge float %428, %433
  br i1 %434, label %435, label %441

435:                                              ; preds = %418
  %436 = load ptr, ptr %16, 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
  br label %447

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

447:                                              ; preds = %441, %435
  %448 = phi float [ %440, %435 ], [ %446, %441 ]
  %449 = fsub float %423, %448
  %450 = load ptr, ptr %16, align 8, !tbaa !9
  %451 = load i32, ptr %22, align 4, !tbaa !5
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds float, ptr %450, i64 %452
  %454 = load float, ptr %453, align 4, !tbaa !16
  %455 = load ptr, ptr %13, align 8, !tbaa !9
  %456 = load i32, ptr %22, align 4, !tbaa !5
  %457 = sext i32 %456 to i64
  %458 = getelementptr inbounds float, ptr %455, i64 %457
  %459 = load float, ptr %458, align 4, !tbaa !16
  %460 = fcmp oge float %454, %459
  br i1 %460, label %461, label %467

461:                                              ; preds = %447
  %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
  br label %473

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

473:                                              ; preds = %467, %461
  %474 = phi float [ %466, %461 ], [ %472, %467 ]
  %475 = load ptr, ptr %15, 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
  %480 = fsub float %474, %479
  %481 = fadd float %449, %480
  br label %483

482:                                              ; preds = %411
  br label %483

483:                                              ; preds = %482, %473
  %484 = phi float [ %481, %473 ], [ 0.000000e+00, %482 ]
  br label %485

485:                                              ; preds = %483, %399
  %486 = phi float [ %410, %399 ], [ %484, %483 ]
  %487 = fpext float %486 to double
  br label %488

488:                                              ; preds = %485, %378
  %489 = phi double [ %391, %378 ], [ %487, %485 ]
  %490 = getelementptr inbounds [2 x double], ptr %21, i64 0, i64 0
  %491 = load double, ptr %490, align 16, !tbaa !11
  %492 = fadd double %491, %489
  store double %492, ptr %490, align 16, !tbaa !11
  %493 = load i32, ptr %22, align 4, !tbaa !5
  %494 = add nsw i32 %493, 1
  store i32 %494, ptr %22, align 4, !tbaa !5
  br label %232, !llvm.loop !20

495:                                              ; preds = %232
  %496 = load i32, ptr %11, align 4, !tbaa !5
  store i32 %496, ptr %22, align 4, !tbaa !5
  store i32 0, ptr %23, align 4, !tbaa !5
  br label %497

497:                                              ; preds = %1850, %495
  %498 = load ptr, ptr %16, align 8, !tbaa !9
  %499 = load i32, ptr %22, align 4, !tbaa !5
  %500 = sub nsw i32 %499, 1
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds float, ptr %498, i64 %501
  %503 = load float, ptr %502, align 4, !tbaa !16
  %504 = load ptr, ptr %13, align 8, !tbaa !9
  %505 = load i32, ptr %22, align 4, !tbaa !5
  %506 = sub nsw i32 %505, 1
  %507 = sext i32 %506 to i64
  %508 = getelementptr inbounds float, ptr %504, i64 %507
  %509 = load float, ptr %508, align 4, !tbaa !16
  %510 = fcmp oge float %503, %509
  %511 = zext i1 %510 to i64
  %512 = select i1 %510, i32 1, i32 -1
  %513 = load ptr, ptr %16, align 8, !tbaa !9
  %514 = load i32, ptr %22, align 4, !tbaa !5
  %515 = sext i32 %514 to i64
  %516 = getelementptr inbounds float, ptr %513, i64 %515
  %517 = load float, ptr %516, align 4, !tbaa !16
  %518 = load ptr, ptr %13, align 8, !tbaa !9
  %519 = load i32, ptr %22, align 4, !tbaa !5
  %520 = sext i32 %519 to i64
  %521 = getelementptr inbounds float, ptr %518, i64 %520
  %522 = load float, ptr %521, align 4, !tbaa !16
  %523 = fcmp oge float %517, %522
  %524 = zext i1 %523 to i64
  %525 = select i1 %523, i32 1, i32 -1
  %526 = sub nsw i32 0, %525
  %527 = icmp eq i32 %512, %526
  br i1 %527, label %528, label %1264

528:                                              ; preds = %497
  %529 = load ptr, ptr %16, align 8, !tbaa !9
  %530 = load i32, ptr %22, align 4, !tbaa !5
  %531 = sub nsw i32 %530, 1
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds float, ptr %529, i64 %532
  %534 = load float, ptr %533, align 4, !tbaa !16
  %535 = load ptr, ptr %13, align 8, !tbaa !9
  %536 = load i32, ptr %22, align 4, !tbaa !5
  %537 = sub nsw i32 %536, 1
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds float, ptr %535, i64 %538
  %540 = load float, ptr %539, align 4, !tbaa !16
  %541 = fsub float %534, %540
  %542 = fpext float %541 to double
  %543 = call double @llvm.fabs.f64(double %542)
  %544 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %545 = getelementptr inbounds %struct.TA_LibcPriv, ptr %544, i32 0, i32 8
  %546 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %545, i64 0, i64 0
  %547 = getelementptr inbounds %struct.TA_CandleSetting, ptr %546, i32 0, i32 3
  %548 = load double, ptr %547, align 8, !tbaa !21
  %549 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %550 = getelementptr inbounds %struct.TA_LibcPriv, ptr %549, i32 0, i32 8
  %551 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %550, i64 0, i64 0
  %552 = getelementptr inbounds %struct.TA_CandleSetting, ptr %551, i32 0, i32 2
  %553 = load i32, ptr %552, align 8, !tbaa !13
  %554 = sitofp i32 %553 to double
  %555 = fcmp une double %554, 0.000000e+00
  br i1 %555, label %556, label %566

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

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

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

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

596:                                              ; preds = %589
  %597 = load ptr, ptr %14, align 8, !tbaa !9
  %598 = load i32, ptr %22, align 4, !tbaa !5
  %599 = sub nsw i32 %598, 1
  %600 = sext i32 %599 to i64
  %601 = getelementptr inbounds float, ptr %597, i64 %600
  %602 = load float, ptr %601, align 4, !tbaa !16
  %603 = load ptr, ptr %15, align 8, !tbaa !9
  %604 = load i32, ptr %22, align 4, !tbaa !5
  %605 = sub nsw i32 %604, 1
  %606 = sext i32 %605 to i64
  %607 = getelementptr inbounds float, ptr %603, i64 %606
  %608 = load float, ptr %607, align 4, !tbaa !16
  %609 = fsub float %602, %608
  br label %694

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

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

637:                                              ; preds = %617
  %638 = load ptr, ptr %16, align 8, !tbaa !9
  %639 = load i32, ptr %22, align 4, !tbaa !5
  %640 = sub nsw i32 %639, 1
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds float, ptr %638, i64 %641
  %643 = load float, ptr %642, align 4, !tbaa !16
  br label %651

644:                                              ; preds = %617
  %645 = load ptr, ptr %13, align 8, !tbaa !9
  %646 = load i32, ptr %22, align 4, !tbaa !5
  %647 = sub nsw i32 %646, 1
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds float, ptr %645, i64 %648
  %650 = load float, ptr %649, align 4, !tbaa !16
  br label %651

651:                                              ; preds = %644, %637
  %652 = phi float [ %643, %637 ], [ %650, %644 ]
  %653 = fsub float %623, %652
  %654 = load ptr, ptr %16, align 8, !tbaa !9
  %655 = load i32, ptr %22, align 4, !tbaa !5
  %656 = sub nsw i32 %655, 1
  %657 = sext i32 %656 to i64
  %658 = getelementptr inbounds float, ptr %654, i64 %657
  %659 = load float, ptr %658, align 4, !tbaa !16
  %660 = load ptr, ptr %13, align 8, !tbaa !9
  %661 = load i32, ptr %22, align 4, !tbaa !5
  %662 = sub nsw i32 %661, 1
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds float, ptr %660, i64 %663
  %665 = load float, ptr %664, align 4, !tbaa !16
  %666 = fcmp oge float %659, %665
  br i1 %666, label %667, label %674

667:                                              ; preds = %651
  %668 = load ptr, ptr %13, align 8, !tbaa !9
  %669 = load i32, ptr %22, align 4, !tbaa !5
  %670 = sub nsw i32 %669, 1
  %671 = sext i32 %670 to i64
  %672 = getelementptr inbounds float, ptr %668, i64 %671
  %673 = load float, ptr %672, align 4, !tbaa !16
  br label %681

674:                                              ; preds = %651
  %675 = load ptr, ptr %16, align 8, !tbaa !9
  %676 = load i32, ptr %22, align 4, !tbaa !5
  %677 = sub nsw i32 %676, 1
  %678 = sext i32 %677 to i64
  %679 = getelementptr inbounds float, ptr %675, i64 %678
  %680 = load float, ptr %679, align 4, !tbaa !16
  br label %681

681:                                              ; preds = %674, %667
  %682 = phi float [ %673, %667 ], [ %680, %674 ]
  %683 = load ptr, ptr %15, align 8, !tbaa !9
  %684 = load i32, ptr %22, align 4, !tbaa !5
  %685 = sub nsw i32 %684, 1
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds float, ptr %683, i64 %686
  %688 = load float, ptr %687, align 4, !tbaa !16
  %689 = fsub float %682, %688
  %690 = fadd float %653, %689
  br label %692

691:                                              ; preds = %610
  br label %692

692:                                              ; preds = %691, %681
  %693 = phi float [ %690, %681 ], [ 0.000000e+00, %691 ]
  br label %694

694:                                              ; preds = %692, %596
  %695 = phi float [ %609, %596 ], [ %693, %692 ]
  %696 = fpext float %695 to double
  br label %697

697:                                              ; preds = %694, %573
  %698 = phi double [ %588, %573 ], [ %696, %694 ]
  br label %699

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

712:                                              ; preds = %699
  %713 = load ptr, ptr %16, align 8, !tbaa !9
  %714 = load i32, ptr %22, align 4, !tbaa !5
  %715 = sext i32 %714 to i64
  %716 = getelementptr inbounds float, ptr %713, i64 %715
  %717 = load float, ptr %716, align 4, !tbaa !16
  %718 = load ptr, ptr %13, align 8, !tbaa !9
  %719 = load i32, ptr %22, align 4, !tbaa !5
  %720 = sext i32 %719 to i64
  %721 = getelementptr inbounds float, ptr %718, i64 %720
  %722 = load float, ptr %721, align 4, !tbaa !16
  %723 = fsub float %717, %722
  %724 = fpext float %723 to double
  %725 = call double @llvm.fabs.f64(double %724)
  %726 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %727 = getelementptr inbounds %struct.TA_LibcPriv, ptr %726, i32 0, i32 8
  %728 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %727, i64 0, i64 0
  %729 = getelementptr inbounds %struct.TA_CandleSetting, ptr %728, i32 0, i32 3
  %730 = load double, ptr %729, align 8, !tbaa !21
  %731 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %732 = getelementptr inbounds %struct.TA_LibcPriv, ptr %731, i32 0, i32 8
  %733 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %732, i64 0, i64 0
  %734 = getelementptr inbounds %struct.TA_CandleSetting, ptr %733, i32 0, i32 2
  %735 = load i32, ptr %734, align 8, !tbaa !13
  %736 = sitofp i32 %735 to double
  %737 = fcmp une double %736, 0.000000e+00
  br i1 %737, label %738, label %748

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

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

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

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

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

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

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

812:                                              ; preds = %795
  %813 = load ptr, ptr %16, align 8, !tbaa !9
  %814 = load i32, ptr %22, align 4, !tbaa !5
  %815 = sext i32 %814 to i64
  %816 = getelementptr inbounds float, ptr %813, i64 %815
  %817 = load float, ptr %816, align 4, !tbaa !16
  br label %824

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

824:                                              ; preds = %818, %812
  %825 = phi float [ %817, %812 ], [ %823, %818 ]
  %826 = fsub float %800, %825
  %827 = load ptr, ptr %16, align 8, !tbaa !9
  %828 = load i32, ptr %22, align 4, !tbaa !5
  %829 = sext i32 %828 to i64
  %830 = getelementptr inbounds float, ptr %827, i64 %829
  %831 = load float, ptr %830, align 4, !tbaa !16
  %832 = load ptr, ptr %13, align 8, !tbaa !9
  %833 = load i32, ptr %22, align 4, !tbaa !5
  %834 = sext i32 %833 to i64
  %835 = getelementptr inbounds float, ptr %832, i64 %834
  %836 = load float, ptr %835, align 4, !tbaa !16
  %837 = fcmp oge float %831, %836
  br i1 %837, label %838, label %844

838:                                              ; preds = %824
  %839 = load ptr, ptr %13, align 8, !tbaa !9
  %840 = load i32, ptr %22, align 4, !tbaa !5
  %841 = sext i32 %840 to i64
  %842 = getelementptr inbounds float, ptr %839, i64 %841
  %843 = load float, ptr %842, align 4, !tbaa !16
  br label %850

844:                                              ; preds = %824
  %845 = load ptr, ptr %16, align 8, !tbaa !9
  %846 = load i32, ptr %22, align 4, !tbaa !5
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds float, ptr %845, i64 %847
  %849 = load float, ptr %848, align 4, !tbaa !16
  br label %850

850:                                              ; preds = %844, %838
  %851 = phi float [ %843, %838 ], [ %849, %844 ]
  %852 = load ptr, ptr %15, align 8, !tbaa !9
  %853 = load i32, ptr %22, align 4, !tbaa !5
  %854 = sext i32 %853 to i64
  %855 = getelementptr inbounds float, ptr %852, i64 %854
  %856 = load float, ptr %855, align 4, !tbaa !16
  %857 = fsub float %851, %856
  %858 = fadd float %826, %857
  br label %860

859:                                              ; preds = %788
  br label %860

860:                                              ; preds = %859, %850
  %861 = phi float [ %858, %850 ], [ 0.000000e+00, %859 ]
  br label %862

862:                                              ; preds = %860, %776
  %863 = phi float [ %787, %776 ], [ %861, %860 ]
  %864 = fpext float %863 to double
  br label %865

865:                                              ; preds = %862, %755
  %866 = phi double [ %768, %755 ], [ %864, %862 ]
  br label %867

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

880:                                              ; preds = %867
  %881 = load ptr, ptr %16, align 8, !tbaa !9
  %882 = load i32, ptr %22, align 4, !tbaa !5
  %883 = sext i32 %882 to i64
  %884 = getelementptr inbounds float, ptr %881, i64 %883
  %885 = load float, ptr %884, align 4, !tbaa !16
  %886 = fpext float %885 to double
  %887 = load ptr, ptr %16, align 8, !tbaa !9
  %888 = load i32, ptr %22, align 4, !tbaa !5
  %889 = sub nsw i32 %888, 1
  %890 = sext i32 %889 to i64
  %891 = getelementptr inbounds float, ptr %887, i64 %890
  %892 = load float, ptr %891, align 4, !tbaa !16
  %893 = fpext float %892 to double
  %894 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %895 = getelementptr inbounds %struct.TA_LibcPriv, ptr %894, i32 0, i32 8
  %896 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %895, i64 0, i64 10
  %897 = getelementptr inbounds %struct.TA_CandleSetting, ptr %896, i32 0, i32 3
  %898 = load double, ptr %897, align 8, !tbaa !21
  %899 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %900 = getelementptr inbounds %struct.TA_LibcPriv, ptr %899, i32 0, i32 8
  %901 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %900, i64 0, i64 10
  %902 = getelementptr inbounds %struct.TA_CandleSetting, ptr %901, i32 0, i32 2
  %903 = load i32, ptr %902, align 8, !tbaa !13
  %904 = sitofp i32 %903 to double
  %905 = fcmp une double %904, 0.000000e+00
  br i1 %905, label %906, label %915

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

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

922:                                              ; preds = %915
  %923 = load ptr, ptr %16, align 8, !tbaa !9
  %924 = load i32, ptr %22, align 4, !tbaa !5
  %925 = sub nsw i32 %924, 1
  %926 = sext i32 %925 to i64
  %927 = getelementptr inbounds float, ptr %923, i64 %926
  %928 = load float, ptr %927, align 4, !tbaa !16
  %929 = load ptr, ptr %13, align 8, !tbaa !9
  %930 = load i32, ptr %22, align 4, !tbaa !5
  %931 = sub nsw i32 %930, 1
  %932 = sext i32 %931 to i64
  %933 = getelementptr inbounds float, ptr %929, i64 %932
  %934 = load float, ptr %933, align 4, !tbaa !16
  %935 = fsub float %928, %934
  %936 = fpext float %935 to double
  %937 = call double @llvm.fabs.f64(double %936)
  br label %1046

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

945:                                              ; preds = %938
  %946 = load ptr, ptr %14, align 8, !tbaa !9
  %947 = load i32, ptr %22, align 4, !tbaa !5
  %948 = sub nsw i32 %947, 1
  %949 = sext i32 %948 to i64
  %950 = getelementptr inbounds float, ptr %946, i64 %949
  %951 = load float, ptr %950, align 4, !tbaa !16
  %952 = load ptr, ptr %15, align 8, !tbaa !9
  %953 = load i32, ptr %22, align 4, !tbaa !5
  %954 = sub nsw i32 %953, 1
  %955 = sext i32 %954 to i64
  %956 = getelementptr inbounds float, ptr %952, i64 %955
  %957 = load float, ptr %956, align 4, !tbaa !16
  %958 = fsub float %951, %957
  br label %1043

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

966:                                              ; preds = %959
  %967 = load ptr, ptr %14, align 8, !tbaa !9
  %968 = load i32, ptr %22, align 4, !tbaa !5
  %969 = sub nsw i32 %968, 1
  %970 = sext i32 %969 to i64
  %971 = getelementptr inbounds float, ptr %967, i64 %970
  %972 = load float, ptr %971, align 4, !tbaa !16
  %973 = load ptr, ptr %16, align 8, !tbaa !9
  %974 = load i32, ptr %22, align 4, !tbaa !5
  %975 = sub nsw i32 %974, 1
  %976 = sext i32 %975 to i64
  %977 = getelementptr inbounds float, ptr %973, i64 %976
  %978 = load float, ptr %977, align 4, !tbaa !16
  %979 = load ptr, ptr %13, align 8, !tbaa !9
  %980 = load i32, ptr %22, align 4, !tbaa !5
  %981 = sub nsw i32 %980, 1
  %982 = sext i32 %981 to i64
  %983 = getelementptr inbounds float, ptr %979, i64 %982
  %984 = load float, ptr %983, align 4, !tbaa !16
  %985 = fcmp oge float %978, %984
  br i1 %985, label %986, label %993

986:                                              ; preds = %966
  %987 = load ptr, ptr %16, align 8, !tbaa !9
  %988 = load i32, ptr %22, align 4, !tbaa !5
  %989 = sub nsw i32 %988, 1
  %990 = sext i32 %989 to i64
  %991 = getelementptr inbounds float, ptr %987, i64 %990
  %992 = load float, ptr %991, align 4, !tbaa !16
  br label %1000

993:                                              ; preds = %966
  %994 = load ptr, ptr %13, align 8, !tbaa !9
  %995 = load i32, ptr %22, align 4, !tbaa !5
  %996 = sub nsw i32 %995, 1
  %997 = sext i32 %996 to i64
  %998 = getelementptr inbounds float, ptr %994, i64 %997
  %999 = load float, ptr %998, align 4, !tbaa !16
  br label %1000

1000:                                             ; preds = %993, %986
  %1001 = phi float [ %992, %986 ], [ %999, %993 ]
  %1002 = fsub float %972, %1001
  %1003 = load ptr, ptr %16, align 8, !tbaa !9
  %1004 = load i32, ptr %22, align 4, !tbaa !5
  %1005 = sub nsw i32 %1004, 1
  %1006 = sext i32 %1005 to i64
  %1007 = getelementptr inbounds float, ptr %1003, i64 %1006
  %1008 = load float, ptr %1007, align 4, !tbaa !16
  %1009 = load ptr, ptr %13, align 8, !tbaa !9
  %1010 = load i32, ptr %22, align 4, !tbaa !5
  %1011 = sub nsw i32 %1010, 1
  %1012 = sext i32 %1011 to i64
  %1013 = getelementptr inbounds float, ptr %1009, i64 %1012
  %1014 = load float, ptr %1013, align 4, !tbaa !16
  %1015 = fcmp oge float %1008, %1014
  br i1 %1015, label %1016, label %1023

1016:                                             ; preds = %1000
  %1017 = load ptr, ptr %13, align 8, !tbaa !9
  %1018 = load i32, ptr %22, align 4, !tbaa !5
  %1019 = sub nsw i32 %1018, 1
  %1020 = sext i32 %1019 to i64
  %1021 = getelementptr inbounds float, ptr %1017, i64 %1020
  %1022 = load float, ptr %1021, align 4, !tbaa !16
  br label %1030

1023:                                             ; preds = %1000
  %1024 = load ptr, ptr %16, align 8, !tbaa !9
  %1025 = load i32, ptr %22, align 4, !tbaa !5
  %1026 = sub nsw i32 %1025, 1
  %1027 = sext i32 %1026 to i64
  %1028 = getelementptr inbounds float, ptr %1024, i64 %1027
  %1029 = load float, ptr %1028, align 4, !tbaa !16
  br label %1030

1030:                                             ; preds = %1023, %1016
  %1031 = phi float [ %1022, %1016 ], [ %1029, %1023 ]
  %1032 = load ptr, ptr %15, align 8, !tbaa !9
  %1033 = load i32, ptr %22, align 4, !tbaa !5
  %1034 = sub nsw i32 %1033, 1
  %1035 = sext i32 %1034 to i64
  %1036 = getelementptr inbounds float, ptr %1032, i64 %1035
  %1037 = load float, ptr %1036, align 4, !tbaa !16
  %1038 = fsub float %1031, %1037
  %1039 = fadd float %1002, %1038
  br label %1041

1040:                                             ; preds = %959
  br label %1041

1041:                                             ; preds = %1040, %1030
  %1042 = phi float [ %1039, %1030 ], [ 0.000000e+00, %1040 ]
  br label %1043

1043:                                             ; preds = %1041, %945
  %1044 = phi float [ %958, %945 ], [ %1042, %1041 ]
  %1045 = fpext float %1044 to double
  br label %1046

1046:                                             ; preds = %1043, %922
  %1047 = phi double [ %937, %922 ], [ %1045, %1043 ]
  br label %1048

1048:                                             ; preds = %1046, %906
  %1049 = phi double [ %914, %906 ], [ %1047, %1046 ]
  %1050 = fmul double %898, %1049
  %1051 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1052 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1051, i32 0, i32 8
  %1053 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1052, i64 0, i64 10
  %1054 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1053, i32 0, i32 1
  %1055 = load i32, ptr %1054, align 4, !tbaa !15
  %1056 = icmp eq i32 %1055, 2
  %1057 = zext i1 %1056 to i64
  %1058 = select i1 %1056, double 2.000000e+00, double 1.000000e+00
  %1059 = fdiv double %1050, %1058
  %1060 = fadd double %893, %1059
  %1061 = fcmp ole double %886, %1060
  br i1 %1061, label %1062, label %1264

1062:                                             ; preds = %1048
  %1063 = load ptr, ptr %16, align 8, !tbaa !9
  %1064 = load i32, ptr %22, align 4, !tbaa !5
  %1065 = sext i32 %1064 to i64
  %1066 = getelementptr inbounds float, ptr %1063, i64 %1065
  %1067 = load float, ptr %1066, align 4, !tbaa !16
  %1068 = fpext float %1067 to double
  %1069 = load ptr, ptr %16, align 8, !tbaa !9
  %1070 = load i32, ptr %22, align 4, !tbaa !5
  %1071 = sub nsw i32 %1070, 1
  %1072 = sext i32 %1071 to i64
  %1073 = getelementptr inbounds float, ptr %1069, i64 %1072
  %1074 = load float, ptr %1073, align 4, !tbaa !16
  %1075 = fpext float %1074 to double
  %1076 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1077 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1076, i32 0, i32 8
  %1078 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1077, i64 0, i64 10
  %1079 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1078, i32 0, i32 3
  %1080 = load double, ptr %1079, align 8, !tbaa !21
  %1081 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1082 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1081, i32 0, i32 8
  %1083 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1082, i64 0, i64 10
  %1084 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1083, i32 0, i32 2
  %1085 = load i32, ptr %1084, align 8, !tbaa !13
  %1086 = sitofp i32 %1085 to double
  %1087 = fcmp une double %1086, 0.000000e+00
  br i1 %1087, label %1088, label %1097

1088:                                             ; preds = %1062
  %1089 = load double, ptr %20, align 8, !tbaa !11
  %1090 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1091 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1090, i32 0, i32 8
  %1092 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1091, i64 0, i64 10
  %1093 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1092, i32 0, i32 2
  %1094 = load i32, ptr %1093, align 8, !tbaa !13
  %1095 = sitofp i32 %1094 to double
  %1096 = fdiv double %1089, %1095
  br label %1230

1097:                                             ; preds = %1062
  %1098 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1099 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1098, i32 0, i32 8
  %1100 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1099, i64 0, i64 10
  %1101 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1100, i32 0, i32 1
  %1102 = load i32, ptr %1101, align 4, !tbaa !15
  %1103 = icmp eq i32 %1102, 0
  br i1 %1103, label %1104, label %1120

1104:                                             ; preds = %1097
  %1105 = load ptr, ptr %16, align 8, !tbaa !9
  %1106 = load i32, ptr %22, align 4, !tbaa !5
  %1107 = sub nsw i32 %1106, 1
  %1108 = sext i32 %1107 to i64
  %1109 = getelementptr inbounds float, ptr %1105, i64 %1108
  %1110 = load float, ptr %1109, align 4, !tbaa !16
  %1111 = load ptr, ptr %13, align 8, !tbaa !9
  %1112 = load i32, ptr %22, align 4, !tbaa !5
  %1113 = sub nsw i32 %1112, 1
  %1114 = sext i32 %1113 to i64
  %1115 = getelementptr inbounds float, ptr %1111, i64 %1114
  %1116 = load float, ptr %1115, align 4, !tbaa !16
  %1117 = fsub float %1110, %1116
  %1118 = fpext float %1117 to double
  %1119 = call double @llvm.fabs.f64(double %1118)
  br label %1228

1120:                                             ; preds = %1097
  %1121 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1122 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1121, i32 0, i32 8
  %1123 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1122, i64 0, i64 10
  %1124 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1123, i32 0, i32 1
  %1125 = load i32, ptr %1124, align 4, !tbaa !15
  %1126 = icmp eq i32 %1125, 1
  br i1 %1126, label %1127, label %1141

1127:                                             ; preds = %1120
  %1128 = load ptr, ptr %14, align 8, !tbaa !9
  %1129 = load i32, ptr %22, align 4, !tbaa !5
  %1130 = sub nsw i32 %1129, 1
  %1131 = sext i32 %1130 to i64
  %1132 = getelementptr inbounds float, ptr %1128, i64 %1131
  %1133 = load float, ptr %1132, align 4, !tbaa !16
  %1134 = load ptr, ptr %15, align 8, !tbaa !9
  %1135 = load i32, ptr %22, align 4, !tbaa !5
  %1136 = sub nsw i32 %1135, 1
  %1137 = sext i32 %1136 to i64
  %1138 = getelementptr inbounds float, ptr %1134, i64 %1137
  %1139 = load float, ptr %1138, align 4, !tbaa !16
  %1140 = fsub float %1133, %1139
  br label %1225

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

1148:                                             ; preds = %1141
  %1149 = load ptr, ptr %14, align 8, !tbaa !9
  %1150 = load i32, ptr %22, align 4, !tbaa !5
  %1151 = sub nsw i32 %1150, 1
  %1152 = sext i32 %1151 to i64
  %1153 = getelementptr inbounds float, ptr %1149, i64 %1152
  %1154 = load float, ptr %1153, align 4, !tbaa !16
  %1155 = load ptr, ptr %16, align 8, !tbaa !9
  %1156 = load i32, ptr %22, align 4, !tbaa !5
  %1157 = sub nsw i32 %1156, 1
  %1158 = sext i32 %1157 to i64
  %1159 = getelementptr inbounds float, ptr %1155, i64 %1158
  %1160 = load float, ptr %1159, align 4, !tbaa !16
  %1161 = load ptr, ptr %13, align 8, !tbaa !9
  %1162 = load i32, ptr %22, align 4, !tbaa !5
  %1163 = sub nsw i32 %1162, 1
  %1164 = sext i32 %1163 to i64
  %1165 = getelementptr inbounds float, ptr %1161, i64 %1164
  %1166 = load float, ptr %1165, align 4, !tbaa !16
  %1167 = fcmp oge float %1160, %1166
  br i1 %1167, label %1168, label %1175

1168:                                             ; preds = %1148
  %1169 = load ptr, ptr %16, align 8, !tbaa !9
  %1170 = load i32, ptr %22, align 4, !tbaa !5
  %1171 = sub nsw i32 %1170, 1
  %1172 = sext i32 %1171 to i64
  %1173 = getelementptr inbounds float, ptr %1169, i64 %1172
  %1174 = load float, ptr %1173, align 4, !tbaa !16
  br label %1182

1175:                                             ; preds = %1148
  %1176 = load ptr, ptr %13, align 8, !tbaa !9
  %1177 = load i32, ptr %22, align 4, !tbaa !5
  %1178 = sub nsw i32 %1177, 1
  %1179 = sext i32 %1178 to i64
  %1180 = getelementptr inbounds float, ptr %1176, i64 %1179
  %1181 = load float, ptr %1180, align 4, !tbaa !16
  br label %1182

1182:                                             ; preds = %1175, %1168
  %1183 = phi float [ %1174, %1168 ], [ %1181, %1175 ]
  %1184 = fsub float %1154, %1183
  %1185 = load ptr, ptr %16, align 8, !tbaa !9
  %1186 = load i32, ptr %22, align 4, !tbaa !5
  %1187 = sub nsw i32 %1186, 1
  %1188 = sext i32 %1187 to i64
  %1189 = getelementptr inbounds float, ptr %1185, i64 %1188
  %1190 = load float, ptr %1189, align 4, !tbaa !16
  %1191 = load ptr, ptr %13, align 8, !tbaa !9
  %1192 = load i32, ptr %22, align 4, !tbaa !5
  %1193 = sub nsw i32 %1192, 1
  %1194 = sext i32 %1193 to i64
  %1195 = getelementptr inbounds float, ptr %1191, i64 %1194
  %1196 = load float, ptr %1195, align 4, !tbaa !16
  %1197 = fcmp oge float %1190, %1196
  br i1 %1197, label %1198, label %1205

1198:                                             ; preds = %1182
  %1199 = load ptr, ptr %13, align 8, !tbaa !9
  %1200 = load i32, ptr %22, align 4, !tbaa !5
  %1201 = sub nsw i32 %1200, 1
  %1202 = sext i32 %1201 to i64
  %1203 = getelementptr inbounds float, ptr %1199, i64 %1202
  %1204 = load float, ptr %1203, align 4, !tbaa !16
  br label %1212

1205:                                             ; preds = %1182
  %1206 = load ptr, ptr %16, align 8, !tbaa !9
  %1207 = load i32, ptr %22, align 4, !tbaa !5
  %1208 = sub nsw i32 %1207, 1
  %1209 = sext i32 %1208 to i64
  %1210 = getelementptr inbounds float, ptr %1206, i64 %1209
  %1211 = load float, ptr %1210, align 4, !tbaa !16
  br label %1212

1212:                                             ; preds = %1205, %1198
  %1213 = phi float [ %1204, %1198 ], [ %1211, %1205 ]
  %1214 = load ptr, ptr %15, align 8, !tbaa !9
  %1215 = load i32, ptr %22, align 4, !tbaa !5
  %1216 = sub nsw i32 %1215, 1
  %1217 = sext i32 %1216 to i64
  %1218 = getelementptr inbounds float, ptr %1214, i64 %1217
  %1219 = load float, ptr %1218, align 4, !tbaa !16
  %1220 = fsub float %1213, %1219
  %1221 = fadd float %1184, %1220
  br label %1223

1222:                                             ; preds = %1141
  br label %1223

1223:                                             ; preds = %1222, %1212
  %1224 = phi float [ %1221, %1212 ], [ 0.000000e+00, %1222 ]
  br label %1225

1225:                                             ; preds = %1223, %1127
  %1226 = phi float [ %1140, %1127 ], [ %1224, %1223 ]
  %1227 = fpext float %1226 to double
  br label %1228

1228:                                             ; preds = %1225, %1104
  %1229 = phi double [ %1119, %1104 ], [ %1227, %1225 ]
  br label %1230

1230:                                             ; preds = %1228, %1088
  %1231 = phi double [ %1096, %1088 ], [ %1229, %1228 ]
  %1232 = fmul double %1080, %1231
  %1233 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1234 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1233, i32 0, i32 8
  %1235 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1234, i64 0, i64 10
  %1236 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1235, i32 0, i32 1
  %1237 = load i32, ptr %1236, align 4, !tbaa !15
  %1238 = icmp eq i32 %1237, 2
  %1239 = zext i1 %1238 to i64
  %1240 = select i1 %1238, double 2.000000e+00, double 1.000000e+00
  %1241 = fdiv double %1232, %1240
  %1242 = fsub double %1075, %1241
  %1243 = fcmp oge double %1068, %1242
  br i1 %1243, label %1244, label %1264

1244:                                             ; preds = %1230
  %1245 = load ptr, ptr %16, align 8, !tbaa !9
  %1246 = load i32, ptr %22, align 4, !tbaa !5
  %1247 = sext i32 %1246 to i64
  %1248 = getelementptr inbounds float, ptr %1245, i64 %1247
  %1249 = load float, ptr %1248, align 4, !tbaa !16
  %1250 = load ptr, ptr %13, align 8, !tbaa !9
  %1251 = load i32, ptr %22, align 4, !tbaa !5
  %1252 = sext i32 %1251 to i64
  %1253 = getelementptr inbounds float, ptr %1250, i64 %1252
  %1254 = load float, ptr %1253, align 4, !tbaa !16
  %1255 = fcmp oge float %1249, %1254
  %1256 = zext i1 %1255 to i64
  %1257 = select i1 %1255, i32 1, i32 -1
  %1258 = mul nsw i32 %1257, 100
  %1259 = load ptr, ptr %19, align 8, !tbaa !9
  %1260 = load i32, ptr %23, align 4, !tbaa !5
  %1261 = add nsw i32 %1260, 1
  store i32 %1261, ptr %23, align 4, !tbaa !5
  %1262 = sext i32 %1260 to i64
  %1263 = getelementptr inbounds i32, ptr %1259, i64 %1262
  store i32 %1258, ptr %1263, align 4, !tbaa !5
  br label %1270

1264:                                             ; preds = %1230, %1048, %867, %699, %497
  %1265 = load ptr, ptr %19, align 8, !tbaa !9
  %1266 = load i32, ptr %23, align 4, !tbaa !5
  %1267 = add nsw i32 %1266, 1
  store i32 %1267, ptr %23, align 4, !tbaa !5
  %1268 = sext i32 %1266 to i64
  %1269 = getelementptr inbounds i32, ptr %1265, i64 %1268
  store i32 0, ptr %1269, align 4, !tbaa !5
  br label %1270

1270:                                             ; preds = %1264, %1244
  %1271 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1272 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1271, i32 0, i32 8
  %1273 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1272, i64 0, i64 10
  %1274 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1273, i32 0, i32 1
  %1275 = load i32, ptr %1274, align 4, !tbaa !15
  %1276 = icmp eq i32 %1275, 0
  br i1 %1276, label %1277, label %1293

1277:                                             ; preds = %1270
  %1278 = load ptr, ptr %16, align 8, !tbaa !9
  %1279 = load i32, ptr %22, align 4, !tbaa !5
  %1280 = sub nsw i32 %1279, 1
  %1281 = sext i32 %1280 to i64
  %1282 = getelementptr inbounds float, ptr %1278, i64 %1281
  %1283 = load float, ptr %1282, align 4, !tbaa !16
  %1284 = load ptr, ptr %13, align 8, !tbaa !9
  %1285 = load i32, ptr %22, align 4, !tbaa !5
  %1286 = sub nsw i32 %1285, 1
  %1287 = sext i32 %1286 to i64
  %1288 = getelementptr inbounds float, ptr %1284, i64 %1287
  %1289 = load float, ptr %1288, align 4, !tbaa !16
  %1290 = fsub float %1283, %1289
  %1291 = fpext float %1290 to double
  %1292 = call double @llvm.fabs.f64(double %1291)
  br label %1401

1293:                                             ; preds = %1270
  %1294 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1295 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1294, i32 0, i32 8
  %1296 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1295, i64 0, i64 10
  %1297 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1296, i32 0, i32 1
  %1298 = load i32, ptr %1297, align 4, !tbaa !15
  %1299 = icmp eq i32 %1298, 1
  br i1 %1299, label %1300, label %1314

1300:                                             ; preds = %1293
  %1301 = load ptr, ptr %14, align 8, !tbaa !9
  %1302 = load i32, ptr %22, align 4, !tbaa !5
  %1303 = sub nsw i32 %1302, 1
  %1304 = sext i32 %1303 to i64
  %1305 = getelementptr inbounds float, ptr %1301, i64 %1304
  %1306 = load float, ptr %1305, align 4, !tbaa !16
  %1307 = load ptr, ptr %15, align 8, !tbaa !9
  %1308 = load i32, ptr %22, align 4, !tbaa !5
  %1309 = sub nsw i32 %1308, 1
  %1310 = sext i32 %1309 to i64
  %1311 = getelementptr inbounds float, ptr %1307, i64 %1310
  %1312 = load float, ptr %1311, align 4, !tbaa !16
  %1313 = fsub float %1306, %1312
  br label %1398

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

1321:                                             ; preds = %1314
  %1322 = load ptr, ptr %14, align 8, !tbaa !9
  %1323 = load i32, ptr %22, align 4, !tbaa !5
  %1324 = sub nsw i32 %1323, 1
  %1325 = sext i32 %1324 to i64
  %1326 = getelementptr inbounds float, ptr %1322, i64 %1325
  %1327 = load float, ptr %1326, align 4, !tbaa !16
  %1328 = load ptr, ptr %16, align 8, !tbaa !9
  %1329 = load i32, ptr %22, align 4, !tbaa !5
  %1330 = sub nsw i32 %1329, 1
  %1331 = sext i32 %1330 to i64
  %1332 = getelementptr inbounds float, ptr %1328, i64 %1331
  %1333 = load float, ptr %1332, align 4, !tbaa !16
  %1334 = load ptr, ptr %13, align 8, !tbaa !9
  %1335 = load i32, ptr %22, align 4, !tbaa !5
  %1336 = sub nsw i32 %1335, 1
  %1337 = sext i32 %1336 to i64
  %1338 = getelementptr inbounds float, ptr %1334, i64 %1337
  %1339 = load float, ptr %1338, align 4, !tbaa !16
  %1340 = fcmp oge float %1333, %1339
  br i1 %1340, label %1341, label %1348

1341:                                             ; preds = %1321
  %1342 = load ptr, ptr %16, align 8, !tbaa !9
  %1343 = load i32, ptr %22, align 4, !tbaa !5
  %1344 = sub nsw i32 %1343, 1
  %1345 = sext i32 %1344 to i64
  %1346 = getelementptr inbounds float, ptr %1342, i64 %1345
  %1347 = load float, ptr %1346, align 4, !tbaa !16
  br label %1355

1348:                                             ; preds = %1321
  %1349 = load ptr, ptr %13, align 8, !tbaa !9
  %1350 = load i32, ptr %22, align 4, !tbaa !5
  %1351 = sub nsw i32 %1350, 1
  %1352 = sext i32 %1351 to i64
  %1353 = getelementptr inbounds float, ptr %1349, i64 %1352
  %1354 = load float, ptr %1353, align 4, !tbaa !16
  br label %1355

1355:                                             ; preds = %1348, %1341
  %1356 = phi float [ %1347, %1341 ], [ %1354, %1348 ]
  %1357 = fsub float %1327, %1356
  %1358 = load ptr, ptr %16, align 8, !tbaa !9
  %1359 = load i32, ptr %22, align 4, !tbaa !5
  %1360 = sub nsw i32 %1359, 1
  %1361 = sext i32 %1360 to i64
  %1362 = getelementptr inbounds float, ptr %1358, i64 %1361
  %1363 = load float, ptr %1362, align 4, !tbaa !16
  %1364 = load ptr, ptr %13, align 8, !tbaa !9
  %1365 = load i32, ptr %22, align 4, !tbaa !5
  %1366 = sub nsw i32 %1365, 1
  %1367 = sext i32 %1366 to i64
  %1368 = getelementptr inbounds float, ptr %1364, i64 %1367
  %1369 = load float, ptr %1368, align 4, !tbaa !16
  %1370 = fcmp oge float %1363, %1369
  br i1 %1370, label %1371, label %1378

1371:                                             ; preds = %1355
  %1372 = load ptr, ptr %13, align 8, !tbaa !9
  %1373 = load i32, ptr %22, align 4, !tbaa !5
  %1374 = sub nsw i32 %1373, 1
  %1375 = sext i32 %1374 to i64
  %1376 = getelementptr inbounds float, ptr %1372, i64 %1375
  %1377 = load float, ptr %1376, align 4, !tbaa !16
  br label %1385

1378:                                             ; preds = %1355
  %1379 = load ptr, ptr %16, align 8, !tbaa !9
  %1380 = load i32, ptr %22, align 4, !tbaa !5
  %1381 = sub nsw i32 %1380, 1
  %1382 = sext i32 %1381 to i64
  %1383 = getelementptr inbounds float, ptr %1379, i64 %1382
  %1384 = load float, ptr %1383, align 4, !tbaa !16
  br label %1385

1385:                                             ; preds = %1378, %1371
  %1386 = phi float [ %1377, %1371 ], [ %1384, %1378 ]
  %1387 = load ptr, ptr %15, align 8, !tbaa !9
  %1388 = load i32, ptr %22, align 4, !tbaa !5
  %1389 = sub nsw i32 %1388, 1
  %1390 = sext i32 %1389 to i64
  %1391 = getelementptr inbounds float, ptr %1387, i64 %1390
  %1392 = load float, ptr %1391, align 4, !tbaa !16
  %1393 = fsub float %1386, %1392
  %1394 = fadd float %1357, %1393
  br label %1396

1395:                                             ; preds = %1314
  br label %1396

1396:                                             ; preds = %1395, %1385
  %1397 = phi float [ %1394, %1385 ], [ 0.000000e+00, %1395 ]
  br label %1398

1398:                                             ; preds = %1396, %1300
  %1399 = phi float [ %1313, %1300 ], [ %1397, %1396 ]
  %1400 = fpext float %1399 to double
  br label %1401

1401:                                             ; preds = %1398, %1277
  %1402 = phi double [ %1292, %1277 ], [ %1400, %1398 ]
  %1403 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1404 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1403, i32 0, i32 8
  %1405 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1404, i64 0, i64 10
  %1406 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1405, i32 0, i32 1
  %1407 = load i32, ptr %1406, align 4, !tbaa !15
  %1408 = icmp eq i32 %1407, 0
  br i1 %1408, label %1409, label %1425

1409:                                             ; preds = %1401
  %1410 = load ptr, ptr %16, align 8, !tbaa !9
  %1411 = load i32, ptr %25, align 4, !tbaa !5
  %1412 = sub nsw i32 %1411, 1
  %1413 = sext i32 %1412 to i64
  %1414 = getelementptr inbounds float, ptr %1410, i64 %1413
  %1415 = load float, ptr %1414, align 4, !tbaa !16
  %1416 = load ptr, ptr %13, align 8, !tbaa !9
  %1417 = load i32, ptr %25, align 4, !tbaa !5
  %1418 = sub nsw i32 %1417, 1
  %1419 = sext i32 %1418 to i64
  %1420 = getelementptr inbounds float, ptr %1416, i64 %1419
  %1421 = load float, ptr %1420, align 4, !tbaa !16
  %1422 = fsub float %1415, %1421
  %1423 = fpext float %1422 to double
  %1424 = call double @llvm.fabs.f64(double %1423)
  br label %1533

1425:                                             ; preds = %1401
  %1426 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1427 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1426, i32 0, i32 8
  %1428 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1427, i64 0, i64 10
  %1429 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1428, i32 0, i32 1
  %1430 = load i32, ptr %1429, align 4, !tbaa !15
  %1431 = icmp eq i32 %1430, 1
  br i1 %1431, label %1432, label %1446

1432:                                             ; preds = %1425
  %1433 = load ptr, ptr %14, align 8, !tbaa !9
  %1434 = load i32, ptr %25, align 4, !tbaa !5
  %1435 = sub nsw i32 %1434, 1
  %1436 = sext i32 %1435 to i64
  %1437 = getelementptr inbounds float, ptr %1433, i64 %1436
  %1438 = load float, ptr %1437, align 4, !tbaa !16
  %1439 = load ptr, ptr %15, align 8, !tbaa !9
  %1440 = load i32, ptr %25, align 4, !tbaa !5
  %1441 = sub nsw i32 %1440, 1
  %1442 = sext i32 %1441 to i64
  %1443 = getelementptr inbounds float, ptr %1439, i64 %1442
  %1444 = load float, ptr %1443, align 4, !tbaa !16
  %1445 = fsub float %1438, %1444
  br label %1530

1446:                                             ; preds = %1425
  %1447 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1448 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1447, i32 0, i32 8
  %1449 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1448, i64 0, i64 10
  %1450 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1449, i32 0, i32 1
  %1451 = load i32, ptr %1450, align 4, !tbaa !15
  %1452 = icmp eq i32 %1451, 2
  br i1 %1452, label %1453, label %1527

1453:                                             ; preds = %1446
  %1454 = load ptr, ptr %14, align 8, !tbaa !9
  %1455 = load i32, ptr %25, align 4, !tbaa !5
  %1456 = sub nsw i32 %1455, 1
  %1457 = sext i32 %1456 to i64
  %1458 = getelementptr inbounds float, ptr %1454, i64 %1457
  %1459 = load float, ptr %1458, align 4, !tbaa !16
  %1460 = load ptr, ptr %16, align 8, !tbaa !9
  %1461 = load i32, ptr %25, align 4, !tbaa !5
  %1462 = sub nsw i32 %1461, 1
  %1463 = sext i32 %1462 to i64
  %1464 = getelementptr inbounds float, ptr %1460, i64 %1463
  %1465 = load float, ptr %1464, align 4, !tbaa !16
  %1466 = load ptr, ptr %13, align 8, !tbaa !9
  %1467 = load i32, ptr %25, align 4, !tbaa !5
  %1468 = sub nsw i32 %1467, 1
  %1469 = sext i32 %1468 to i64
  %1470 = getelementptr inbounds float, ptr %1466, i64 %1469
  %1471 = load float, ptr %1470, align 4, !tbaa !16
  %1472 = fcmp oge float %1465, %1471
  br i1 %1472, label %1473, label %1480

1473:                                             ; preds = %1453
  %1474 = load ptr, ptr %16, align 8, !tbaa !9
  %1475 = load i32, ptr %25, align 4, !tbaa !5
  %1476 = sub nsw i32 %1475, 1
  %1477 = sext i32 %1476 to i64
  %1478 = getelementptr inbounds float, ptr %1474, i64 %1477
  %1479 = load float, ptr %1478, align 4, !tbaa !16
  br label %1487

1480:                                             ; preds = %1453
  %1481 = load ptr, ptr %13, align 8, !tbaa !9
  %1482 = load i32, ptr %25, align 4, !tbaa !5
  %1483 = sub nsw i32 %1482, 1
  %1484 = sext i32 %1483 to i64
  %1485 = getelementptr inbounds float, ptr %1481, i64 %1484
  %1486 = load float, ptr %1485, align 4, !tbaa !16
  br label %1487

1487:                                             ; preds = %1480, %1473
  %1488 = phi float [ %1479, %1473 ], [ %1486, %1480 ]
  %1489 = fsub float %1459, %1488
  %1490 = load ptr, ptr %16, align 8, !tbaa !9
  %1491 = load i32, ptr %25, align 4, !tbaa !5
  %1492 = sub nsw i32 %1491, 1
  %1493 = sext i32 %1492 to i64
  %1494 = getelementptr inbounds float, ptr %1490, i64 %1493
  %1495 = load float, ptr %1494, align 4, !tbaa !16
  %1496 = load ptr, ptr %13, align 8, !tbaa !9
  %1497 = load i32, ptr %25, align 4, !tbaa !5
  %1498 = sub nsw i32 %1497, 1
  %1499 = sext i32 %1498 to i64
  %1500 = getelementptr inbounds float, ptr %1496, i64 %1499
  %1501 = load float, ptr %1500, align 4, !tbaa !16
  %1502 = fcmp oge float %1495, %1501
  br i1 %1502, label %1503, label %1510

1503:                                             ; preds = %1487
  %1504 = load ptr, ptr %13, align 8, !tbaa !9
  %1505 = load i32, ptr %25, align 4, !tbaa !5
  %1506 = sub nsw i32 %1505, 1
  %1507 = sext i32 %1506 to i64
  %1508 = getelementptr inbounds float, ptr %1504, i64 %1507
  %1509 = load float, ptr %1508, align 4, !tbaa !16
  br label %1517

1510:                                             ; preds = %1487
  %1511 = load ptr, ptr %16, align 8, !tbaa !9
  %1512 = load i32, ptr %25, align 4, !tbaa !5
  %1513 = sub nsw i32 %1512, 1
  %1514 = sext i32 %1513 to i64
  %1515 = getelementptr inbounds float, ptr %1511, i64 %1514
  %1516 = load float, ptr %1515, align 4, !tbaa !16
  br label %1517

1517:                                             ; preds = %1510, %1503
  %1518 = phi float [ %1509, %1503 ], [ %1516, %1510 ]
  %1519 = load ptr, ptr %15, align 8, !tbaa !9
  %1520 = load i32, ptr %25, align 4, !tbaa !5
  %1521 = sub nsw i32 %1520, 1
  %1522 = sext i32 %1521 to i64
  %1523 = getelementptr inbounds float, ptr %1519, i64 %1522
  %1524 = load float, ptr %1523, align 4, !tbaa !16
  %1525 = fsub float %1518, %1524
  %1526 = fadd float %1489, %1525
  br label %1528

1527:                                             ; preds = %1446
  br label %1528

1528:                                             ; preds = %1527, %1517
  %1529 = phi float [ %1526, %1517 ], [ 0.000000e+00, %1527 ]
  br label %1530

1530:                                             ; preds = %1528, %1432
  %1531 = phi float [ %1445, %1432 ], [ %1529, %1528 ]
  %1532 = fpext float %1531 to double
  br label %1533

1533:                                             ; preds = %1530, %1409
  %1534 = phi double [ %1424, %1409 ], [ %1532, %1530 ]
  %1535 = fsub double %1402, %1534
  %1536 = load double, ptr %20, align 8, !tbaa !11
  %1537 = fadd double %1536, %1535
  store double %1537, ptr %20, align 8, !tbaa !11
  store i32 1, ptr %24, align 4, !tbaa !5
  br label %1538

1538:                                             ; preds = %1840, %1533
  %1539 = load i32, ptr %24, align 4, !tbaa !5
  %1540 = icmp sge i32 %1539, 0
  br i1 %1540, label %1541, label %1843

1541:                                             ; preds = %1538
  %1542 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1543 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1542, i32 0, i32 8
  %1544 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1543, i64 0, i64 0
  %1545 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1544, i32 0, i32 1
  %1546 = load i32, ptr %1545, align 4, !tbaa !15
  %1547 = icmp eq i32 %1546, 0
  br i1 %1547, label %1548, label %1566

1548:                                             ; preds = %1541
  %1549 = load ptr, ptr %16, align 8, !tbaa !9
  %1550 = load i32, ptr %22, align 4, !tbaa !5
  %1551 = load i32, ptr %24, align 4, !tbaa !5
  %1552 = sub nsw i32 %1550, %1551
  %1553 = sext i32 %1552 to i64
  %1554 = getelementptr inbounds float, ptr %1549, i64 %1553
  %1555 = load float, ptr %1554, align 4, !tbaa !16
  %1556 = load ptr, ptr %13, align 8, !tbaa !9
  %1557 = load i32, ptr %22, align 4, !tbaa !5
  %1558 = load i32, ptr %24, align 4, !tbaa !5
  %1559 = sub nsw i32 %1557, %1558
  %1560 = sext i32 %1559 to i64
  %1561 = getelementptr inbounds float, ptr %1556, i64 %1560
  %1562 = load float, ptr %1561, align 4, !tbaa !16
  %1563 = fsub float %1555, %1562
  %1564 = fpext float %1563 to double
  %1565 = call double @llvm.fabs.f64(double %1564)
  br label %1686

1566:                                             ; preds = %1541
  %1567 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1568 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1567, i32 0, i32 8
  %1569 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1568, i64 0, i64 0
  %1570 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1569, i32 0, i32 1
  %1571 = load i32, ptr %1570, align 4, !tbaa !15
  %1572 = icmp eq i32 %1571, 1
  br i1 %1572, label %1573, label %1589

1573:                                             ; preds = %1566
  %1574 = load ptr, ptr %14, align 8, !tbaa !9
  %1575 = load i32, ptr %22, align 4, !tbaa !5
  %1576 = load i32, ptr %24, align 4, !tbaa !5
  %1577 = sub nsw i32 %1575, %1576
  %1578 = sext i32 %1577 to i64
  %1579 = getelementptr inbounds float, ptr %1574, i64 %1578
  %1580 = load float, ptr %1579, align 4, !tbaa !16
  %1581 = load ptr, ptr %15, align 8, !tbaa !9
  %1582 = load i32, ptr %22, align 4, !tbaa !5
  %1583 = load i32, ptr %24, align 4, !tbaa !5
  %1584 = sub nsw i32 %1582, %1583
  %1585 = sext i32 %1584 to i64
  %1586 = getelementptr inbounds float, ptr %1581, i64 %1585
  %1587 = load float, ptr %1586, align 4, !tbaa !16
  %1588 = fsub float %1580, %1587
  br label %1683

1589:                                             ; preds = %1566
  %1590 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1591 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1590, i32 0, i32 8
  %1592 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1591, i64 0, i64 0
  %1593 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1592, i32 0, i32 1
  %1594 = load i32, ptr %1593, align 4, !tbaa !15
  %1595 = icmp eq i32 %1594, 2
  br i1 %1595, label %1596, label %1680

1596:                                             ; preds = %1589
  %1597 = load ptr, ptr %14, align 8, !tbaa !9
  %1598 = load i32, ptr %22, align 4, !tbaa !5
  %1599 = load i32, ptr %24, align 4, !tbaa !5
  %1600 = sub nsw i32 %1598, %1599
  %1601 = sext i32 %1600 to i64
  %1602 = getelementptr inbounds float, ptr %1597, i64 %1601
  %1603 = load float, ptr %1602, align 4, !tbaa !16
  %1604 = load ptr, ptr %16, align 8, !tbaa !9
  %1605 = load i32, ptr %22, align 4, !tbaa !5
  %1606 = load i32, ptr %24, align 4, !tbaa !5
  %1607 = sub nsw i32 %1605, %1606
  %1608 = sext i32 %1607 to i64
  %1609 = getelementptr inbounds float, ptr %1604, i64 %1608
  %1610 = load float, ptr %1609, align 4, !tbaa !16
  %1611 = load ptr, ptr %13, align 8, !tbaa !9
  %1612 = load i32, ptr %22, align 4, !tbaa !5
  %1613 = load i32, ptr %24, align 4, !tbaa !5
  %1614 = sub nsw i32 %1612, %1613
  %1615 = sext i32 %1614 to i64
  %1616 = getelementptr inbounds float, ptr %1611, i64 %1615
  %1617 = load float, ptr %1616, align 4, !tbaa !16
  %1618 = fcmp oge float %1610, %1617
  br i1 %1618, label %1619, label %1627

1619:                                             ; preds = %1596
  %1620 = load ptr, ptr %16, align 8, !tbaa !9
  %1621 = load i32, ptr %22, align 4, !tbaa !5
  %1622 = load i32, ptr %24, align 4, !tbaa !5
  %1623 = sub nsw i32 %1621, %1622
  %1624 = sext i32 %1623 to i64
  %1625 = getelementptr inbounds float, ptr %1620, i64 %1624
  %1626 = load float, ptr %1625, align 4, !tbaa !16
  br label %1635

1627:                                             ; preds = %1596
  %1628 = load ptr, ptr %13, align 8, !tbaa !9
  %1629 = load i32, ptr %22, align 4, !tbaa !5
  %1630 = load i32, ptr %24, align 4, !tbaa !5
  %1631 = sub nsw i32 %1629, %1630
  %1632 = sext i32 %1631 to i64
  %1633 = getelementptr inbounds float, ptr %1628, i64 %1632
  %1634 = load float, ptr %1633, align 4, !tbaa !16
  br label %1635

1635:                                             ; preds = %1627, %1619
  %1636 = phi float [ %1626, %1619 ], [ %1634, %1627 ]
  %1637 = fsub float %1603, %1636
  %1638 = load ptr, ptr %16, align 8, !tbaa !9
  %1639 = load i32, ptr %22, align 4, !tbaa !5
  %1640 = load i32, ptr %24, align 4, !tbaa !5
  %1641 = sub nsw i32 %1639, %1640
  %1642 = sext i32 %1641 to i64
  %1643 = getelementptr inbounds float, ptr %1638, i64 %1642
  %1644 = load float, ptr %1643, align 4, !tbaa !16
  %1645 = load ptr, ptr %13, align 8, !tbaa !9
  %1646 = load i32, ptr %22, align 4, !tbaa !5
  %1647 = load i32, ptr %24, align 4, !tbaa !5
  %1648 = sub nsw i32 %1646, %1647
  %1649 = sext i32 %1648 to i64
  %1650 = getelementptr inbounds float, ptr %1645, i64 %1649
  %1651 = load float, ptr %1650, align 4, !tbaa !16
  %1652 = fcmp oge float %1644, %1651
  br i1 %1652, label %1653, label %1661

1653:                                             ; preds = %1635
  %1654 = load ptr, ptr %13, align 8, !tbaa !9
  %1655 = load i32, ptr %22, align 4, !tbaa !5
  %1656 = load i32, ptr %24, align 4, !tbaa !5
  %1657 = sub nsw i32 %1655, %1656
  %1658 = sext i32 %1657 to i64
  %1659 = getelementptr inbounds float, ptr %1654, i64 %1658
  %1660 = load float, ptr %1659, align 4, !tbaa !16
  br label %1669

1661:                                             ; preds = %1635
  %1662 = load ptr, ptr %16, align 8, !tbaa !9
  %1663 = load i32, ptr %22, align 4, !tbaa !5
  %1664 = load i32, ptr %24, align 4, !tbaa !5
  %1665 = sub nsw i32 %1663, %1664
  %1666 = sext i32 %1665 to i64
  %1667 = getelementptr inbounds float, ptr %1662, i64 %1666
  %1668 = load float, ptr %1667, align 4, !tbaa !16
  br label %1669

1669:                                             ; preds = %1661, %1653
  %1670 = phi float [ %1660, %1653 ], [ %1668, %1661 ]
  %1671 = load ptr, ptr %15, align 8, !tbaa !9
  %1672 = load i32, ptr %22, align 4, !tbaa !5
  %1673 = load i32, ptr %24, align 4, !tbaa !5
  %1674 = sub nsw i32 %1672, %1673
  %1675 = sext i32 %1674 to i64
  %1676 = getelementptr inbounds float, ptr %1671, i64 %1675
  %1677 = load float, ptr %1676, align 4, !tbaa !16
  %1678 = fsub float %1670, %1677
  %1679 = fadd float %1637, %1678
  br label %1681

1680:                                             ; preds = %1589
  br label %1681

1681:                                             ; preds = %1680, %1669
  %1682 = phi float [ %1679, %1669 ], [ 0.000000e+00, %1680 ]
  br label %1683

1683:                                             ; preds = %1681, %1573
  %1684 = phi float [ %1588, %1573 ], [ %1682, %1681 ]
  %1685 = fpext float %1684 to double
  br label %1686

1686:                                             ; preds = %1683, %1548
  %1687 = phi double [ %1565, %1548 ], [ %1685, %1683 ]
  %1688 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1689 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1688, i32 0, i32 8
  %1690 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1689, i64 0, i64 0
  %1691 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1690, i32 0, i32 1
  %1692 = load i32, ptr %1691, align 4, !tbaa !15
  %1693 = icmp eq i32 %1692, 0
  br i1 %1693, label %1694, label %1712

1694:                                             ; preds = %1686
  %1695 = load ptr, ptr %16, align 8, !tbaa !9
  %1696 = load i32, ptr %26, align 4, !tbaa !5
  %1697 = load i32, ptr %24, align 4, !tbaa !5
  %1698 = sub nsw i32 %1696, %1697
  %1699 = sext i32 %1698 to i64
  %1700 = getelementptr inbounds float, ptr %1695, i64 %1699
  %1701 = load float, ptr %1700, align 4, !tbaa !16
  %1702 = load ptr, ptr %13, align 8, !tbaa !9
  %1703 = load i32, ptr %26, align 4, !tbaa !5
  %1704 = load i32, ptr %24, align 4, !tbaa !5
  %1705 = sub nsw i32 %1703, %1704
  %1706 = sext i32 %1705 to i64
  %1707 = getelementptr inbounds float, ptr %1702, i64 %1706
  %1708 = load float, ptr %1707, align 4, !tbaa !16
  %1709 = fsub float %1701, %1708
  %1710 = fpext float %1709 to double
  %1711 = call double @llvm.fabs.f64(double %1710)
  br label %1832

1712:                                             ; preds = %1686
  %1713 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1714 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1713, i32 0, i32 8
  %1715 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1714, i64 0, i64 0
  %1716 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1715, i32 0, i32 1
  %1717 = load i32, ptr %1716, align 4, !tbaa !15
  %1718 = icmp eq i32 %1717, 1
  br i1 %1718, label %1719, label %1735

1719:                                             ; preds = %1712
  %1720 = load ptr, ptr %14, align 8, !tbaa !9
  %1721 = load i32, ptr %26, align 4, !tbaa !5
  %1722 = load i32, ptr %24, align 4, !tbaa !5
  %1723 = sub nsw i32 %1721, %1722
  %1724 = sext i32 %1723 to i64
  %1725 = getelementptr inbounds float, ptr %1720, i64 %1724
  %1726 = load float, ptr %1725, align 4, !tbaa !16
  %1727 = load ptr, ptr %15, align 8, !tbaa !9
  %1728 = load i32, ptr %26, align 4, !tbaa !5
  %1729 = load i32, ptr %24, align 4, !tbaa !5
  %1730 = sub nsw i32 %1728, %1729
  %1731 = sext i32 %1730 to i64
  %1732 = getelementptr inbounds float, ptr %1727, i64 %1731
  %1733 = load float, ptr %1732, align 4, !tbaa !16
  %1734 = fsub float %1726, %1733
  br label %1829

1735:                                             ; preds = %1712
  %1736 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1737 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1736, i32 0, i32 8
  %1738 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1737, i64 0, i64 0
  %1739 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1738, i32 0, i32 1
  %1740 = load i32, ptr %1739, align 4, !tbaa !15
  %1741 = icmp eq i32 %1740, 2
  br i1 %1741, label %1742, label %1826

1742:                                             ; preds = %1735
  %1743 = load ptr, ptr %14, align 8, !tbaa !9
  %1744 = load i32, ptr %26, align 4, !tbaa !5
  %1745 = load i32, ptr %24, align 4, !tbaa !5
  %1746 = sub nsw i32 %1744, %1745
  %1747 = sext i32 %1746 to i64
  %1748 = getelementptr inbounds float, ptr %1743, i64 %1747
  %1749 = load float, ptr %1748, align 4, !tbaa !16
  %1750 = load ptr, ptr %16, align 8, !tbaa !9
  %1751 = load i32, ptr %26, align 4, !tbaa !5
  %1752 = load i32, ptr %24, align 4, !tbaa !5
  %1753 = sub nsw i32 %1751, %1752
  %1754 = sext i32 %1753 to i64
  %1755 = getelementptr inbounds float, ptr %1750, i64 %1754
  %1756 = load float, ptr %1755, align 4, !tbaa !16
  %1757 = load ptr, ptr %13, align 8, !tbaa !9
  %1758 = load i32, ptr %26, align 4, !tbaa !5
  %1759 = load i32, ptr %24, align 4, !tbaa !5
  %1760 = sub nsw i32 %1758, %1759
  %1761 = sext i32 %1760 to i64
  %1762 = getelementptr inbounds float, ptr %1757, i64 %1761
  %1763 = load float, ptr %1762, align 4, !tbaa !16
  %1764 = fcmp oge float %1756, %1763
  br i1 %1764, label %1765, label %1773

1765:                                             ; preds = %1742
  %1766 = load ptr, ptr %16, align 8, !tbaa !9
  %1767 = load i32, ptr %26, align 4, !tbaa !5
  %1768 = load i32, ptr %24, align 4, !tbaa !5
  %1769 = sub nsw i32 %1767, %1768
  %1770 = sext i32 %1769 to i64
  %1771 = getelementptr inbounds float, ptr %1766, i64 %1770
  %1772 = load float, ptr %1771, align 4, !tbaa !16
  br label %1781

1773:                                             ; preds = %1742
  %1774 = load ptr, ptr %13, align 8, !tbaa !9
  %1775 = load i32, ptr %26, align 4, !tbaa !5
  %1776 = load i32, ptr %24, align 4, !tbaa !5
  %1777 = sub nsw i32 %1775, %1776
  %1778 = sext i32 %1777 to i64
  %1779 = getelementptr inbounds float, ptr %1774, i64 %1778
  %1780 = load float, ptr %1779, align 4, !tbaa !16
  br label %1781

1781:                                             ; preds = %1773, %1765
  %1782 = phi float [ %1772, %1765 ], [ %1780, %1773 ]
  %1783 = fsub float %1749, %1782
  %1784 = load ptr, ptr %16, align 8, !tbaa !9
  %1785 = load i32, ptr %26, align 4, !tbaa !5
  %1786 = load i32, ptr %24, align 4, !tbaa !5
  %1787 = sub nsw i32 %1785, %1786
  %1788 = sext i32 %1787 to i64
  %1789 = getelementptr inbounds float, ptr %1784, i64 %1788
  %1790 = load float, ptr %1789, align 4, !tbaa !16
  %1791 = load ptr, ptr %13, align 8, !tbaa !9
  %1792 = load i32, ptr %26, align 4, !tbaa !5
  %1793 = load i32, ptr %24, align 4, !tbaa !5
  %1794 = sub nsw i32 %1792, %1793
  %1795 = sext i32 %1794 to i64
  %1796 = getelementptr inbounds float, ptr %1791, i64 %1795
  %1797 = load float, ptr %1796, align 4, !tbaa !16
  %1798 = fcmp oge float %1790, %1797
  br i1 %1798, label %1799, label %1807

1799:                                             ; preds = %1781
  %1800 = load ptr, ptr %13, align 8, !tbaa !9
  %1801 = load i32, ptr %26, align 4, !tbaa !5
  %1802 = load i32, ptr %24, align 4, !tbaa !5
  %1803 = sub nsw i32 %1801, %1802
  %1804 = sext i32 %1803 to i64
  %1805 = getelementptr inbounds float, ptr %1800, i64 %1804
  %1806 = load float, ptr %1805, align 4, !tbaa !16
  br label %1815

1807:                                             ; preds = %1781
  %1808 = load ptr, ptr %16, align 8, !tbaa !9
  %1809 = load i32, ptr %26, align 4, !tbaa !5
  %1810 = load i32, ptr %24, align 4, !tbaa !5
  %1811 = sub nsw i32 %1809, %1810
  %1812 = sext i32 %1811 to i64
  %1813 = getelementptr inbounds float, ptr %1808, i64 %1812
  %1814 = load float, ptr %1813, align 4, !tbaa !16
  br label %1815

1815:                                             ; preds = %1807, %1799
  %1816 = phi float [ %1806, %1799 ], [ %1814, %1807 ]
  %1817 = load ptr, ptr %15, align 8, !tbaa !9
  %1818 = load i32, ptr %26, align 4, !tbaa !5
  %1819 = load i32, ptr %24, align 4, !tbaa !5
  %1820 = sub nsw i32 %1818, %1819
  %1821 = sext i32 %1820 to i64
  %1822 = getelementptr inbounds float, ptr %1817, i64 %1821
  %1823 = load float, ptr %1822, align 4, !tbaa !16
  %1824 = fsub float %1816, %1823
  %1825 = fadd float %1783, %1824
  br label %1827

1826:                                             ; preds = %1735
  br label %1827

1827:                                             ; preds = %1826, %1815
  %1828 = phi float [ %1825, %1815 ], [ 0.000000e+00, %1826 ]
  br label %1829

1829:                                             ; preds = %1827, %1719
  %1830 = phi float [ %1734, %1719 ], [ %1828, %1827 ]
  %1831 = fpext float %1830 to double
  br label %1832

1832:                                             ; preds = %1829, %1694
  %1833 = phi double [ %1711, %1694 ], [ %1831, %1829 ]
  %1834 = fsub double %1687, %1833
  %1835 = load i32, ptr %24, align 4, !tbaa !5
  %1836 = sext i32 %1835 to i64
  %1837 = getelementptr inbounds [2 x double], ptr %21, i64 0, i64 %1836
  %1838 = load double, ptr %1837, align 8, !tbaa !11
  %1839 = fadd double %1838, %1834
  store double %1839, ptr %1837, align 8, !tbaa !11
  br label %1840

1840:                                             ; preds = %1832
  %1841 = load i32, ptr %24, align 4, !tbaa !5
  %1842 = add nsw i32 %1841, -1
  store i32 %1842, ptr %24, align 4, !tbaa !5
  br label %1538, !llvm.loop !22

1843:                                             ; preds = %1538
  %1844 = load i32, ptr %22, align 4, !tbaa !5
  %1845 = add nsw i32 %1844, 1
  store i32 %1845, ptr %22, align 4, !tbaa !5
  %1846 = load i32, ptr %25, align 4, !tbaa !5
  %1847 = add nsw i32 %1846, 1
  store i32 %1847, ptr %25, align 4, !tbaa !5
  %1848 = load i32, ptr %26, align 4, !tbaa !5
  %1849 = add nsw i32 %1848, 1
  store i32 %1849, ptr %26, align 4, !tbaa !5
  br label %1850

1850:                                             ; preds = %1843
  %1851 = load i32, ptr %22, align 4, !tbaa !5
  %1852 = load i32, ptr %12, align 4, !tbaa !5
  %1853 = icmp sle i32 %1851, %1852
  br i1 %1853, label %497, label %1854, !llvm.loop !23

1854:                                             ; preds = %1850
  %1855 = load i32, ptr %23, align 4, !tbaa !5
  %1856 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 %1855, ptr %1856, align 4, !tbaa !5
  %1857 = load i32, ptr %11, align 4, !tbaa !5
  %1858 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 %1857, ptr %1858, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %28, align 4
  br label %1859

1859:                                             ; preds = %1854, %68, %56, %52, %39, %31
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  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 16, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  %1860 = load i32, ptr %10, align 4
  ret i32 %1860
}

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}
!23 = distinct !{!23, !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_CDLCOUNTERATTACK_Lookback() local_unnamed_addr #0

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

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

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

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 = getelementptr inbounds i8, ptr %26, i64 216
  %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 %.preheader540

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

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

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

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

.lr.ph.split.us543:                               ; preds = %.lr.ph.split.us543.preheader, %.lr.ph.split.us543
  %indvars.iv582 = phi i64 [ %38, %.lr.ph.split.us543.preheader ], [ %indvars.iv.next583, %.lr.ph.split.us543 ]
  %.0422541.us545 = phi double [ 0.000000e+00, %.lr.ph.split.us543.preheader ], [ %59, %.lr.ph.split.us543 ]
  %52 = add nsw i64 %indvars.iv582, -1
  %53 = getelementptr inbounds float, ptr %3, i64 %52
  %54 = load float, ptr %53, align 4, !tbaa !15
  %55 = getelementptr inbounds float, ptr %4, i64 %52
  %56 = load float, ptr %55, align 4, !tbaa !15
  %57 = fsub float %54, %56
  %58 = fpext float %57 to double
  %59 = fadd double %.0422541.us545, %58
  %indvars.iv.next583 = add nsw i64 %indvars.iv582, 1
  %60 = icmp slt i64 %indvars.iv.next583, %39
  br i1 %60, label %.lr.ph.split.us543, label %.preheader540, !llvm.loop !17

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

.preheader540:                                    ; preds = %.lr.ph.split.us549, %.lr.ph.split.us543, %.lr.ph.split.us, %.lr.ph, %25
  %.0422.lcssa = phi double [ 0.000000e+00, %25 ], [ 0.000000e+00, %.lr.ph ], [ %50, %.lr.ph.split.us ], [ %59, %.lr.ph.split.us543 ], [ %76, %.lr.ph.split.us549 ]
  %78 = icmp sgt i32 %31, 0
  br i1 %78, label %.lr.ph558, label %.preheader540..preheader_crit_edge

.preheader540..preheader_crit_edge:               ; preds = %.preheader540
  %.pre625 = sext i32 %32 to i64
  br label %.preheader

.lr.ph558:                                        ; preds = %.preheader540
  %79 = getelementptr inbounds i8, ptr %26, i64 212
  %80 = load i32, ptr %79, align 4, !tbaa !14
  %81 = sext i32 %32 to i64
  %82 = zext nneg i32 %spec.select to i64
  br label %92

.preheader:                                       ; preds = %148, %.preheader540..preheader_crit_edge
  %.pre-phi = phi i64 [ %.pre625, %.preheader540..preheader_crit_edge ], [ %81, %148 ]
  %83 = phi <2 x double> [ zeroinitializer, %.preheader540..preheader_crit_edge ], [ %152, %148 ]
  %84 = getelementptr inbounds i8, ptr %26, i64 452
  %85 = getelementptr inbounds i8, ptr %26, i64 212
  %86 = getelementptr inbounds i8, ptr %26, i64 224
  %87 = getelementptr inbounds i8, ptr %26, i64 464
  %88 = sext i32 %22 to i64
  %89 = zext nneg i32 %0 to i64
  %smax = tail call i64 @llvm.smax.i64(i64 %88, i64 %89)
  %90 = sext i32 %1 to i64
  %91 = sext i32 %29 to i64
  br label %154

92:                                               ; preds = %.lr.ph558, %148
  %indvars.iv588 = phi i64 [ %81, %.lr.ph558 ], [ %indvars.iv.next589, %148 ]
  %93 = phi <2 x double> [ zeroinitializer, %.lr.ph558 ], [ %152, %148 ]
  switch i32 %80, label %148 [
    i32 0, label %.thread
    i32 1, label %.thread517
    i32 2, label %.thread519
  ]

.thread:                                          ; preds = %92
  %94 = add nsw i64 %indvars.iv588, -1
  %95 = getelementptr inbounds float, ptr %5, i64 %94
  %96 = load float, ptr %95, align 4, !tbaa !15
  %97 = getelementptr inbounds float, ptr %2, i64 %94
  %98 = load float, ptr %97, align 4, !tbaa !15
  %99 = fsub float %96, %98
  %100 = tail call float @llvm.fabs.f32(float %99)
  %101 = fpext float %100 to double
  %102 = getelementptr inbounds float, ptr %5, i64 %indvars.iv588
  %103 = load float, ptr %102, align 4, !tbaa !15
  %104 = getelementptr inbounds float, ptr %2, i64 %indvars.iv588
  %105 = load float, ptr %104, align 4, !tbaa !15
  %106 = fsub float %103, %105
  %107 = tail call float @llvm.fabs.f32(float %106)
  br label %148

.thread517:                                       ; preds = %92
  %108 = add nsw i64 %indvars.iv588, -1
  %109 = getelementptr inbounds float, ptr %3, i64 %108
  %110 = load float, ptr %109, align 4, !tbaa !15
  %111 = getelementptr inbounds float, ptr %4, i64 %108
  %112 = load float, ptr %111, align 4, !tbaa !15
  %113 = fsub float %110, %112
  %114 = fpext float %113 to double
  %115 = getelementptr inbounds float, ptr %3, i64 %indvars.iv588
  %116 = load float, ptr %115, align 4, !tbaa !15
  %117 = getelementptr inbounds float, ptr %4, i64 %indvars.iv588
  %118 = load float, ptr %117, align 4, !tbaa !15
  %119 = fsub float %116, %118
  br label %148

.thread519:                                       ; preds = %92
  %120 = add nsw i64 %indvars.iv588, -1
  %121 = getelementptr inbounds float, ptr %3, i64 %120
  %122 = load float, ptr %121, align 4, !tbaa !15
  %123 = getelementptr inbounds float, ptr %5, i64 %120
  %124 = load float, ptr %123, align 4, !tbaa !15
  %125 = getelementptr inbounds float, ptr %2, i64 %120
  %126 = load float, ptr %125, align 4, !tbaa !15
  %127 = fcmp ult float %124, %126
  %.505 = select i1 %127, float %126, float %124
  %128 = fsub float %122, %.505
  %129 = select i1 %127, float %124, float %126
  %130 = getelementptr inbounds float, ptr %4, i64 %120
  %131 = load float, ptr %130, align 4, !tbaa !15
  %132 = fsub float %129, %131
  %133 = fadd float %128, %132
  %134 = fpext float %133 to double
  %135 = getelementptr inbounds float, ptr %3, i64 %indvars.iv588
  %136 = load float, ptr %135, align 4, !tbaa !15
  %137 = getelementptr inbounds float, ptr %5, i64 %indvars.iv588
  %138 = load float, ptr %137, align 4, !tbaa !15
  %139 = getelementptr inbounds float, ptr %2, i64 %indvars.iv588
  %140 = load float, ptr %139, align 4, !tbaa !15
  %141 = fcmp ult float %138, %140
  %.506 = select i1 %141, float %140, float %138
  %142 = fsub float %136, %.506
  %143 = select i1 %141, float %138, float %140
  %144 = getelementptr inbounds float, ptr %4, i64 %indvars.iv588
  %145 = load float, ptr %144, align 4, !tbaa !15
  %146 = fsub float %143, %145
  %147 = fadd float %142, %146
  br label %148

148:                                              ; preds = %92, %.thread517, %.thread519, %.thread
  %.pn = phi double [ %101, %.thread ], [ %114, %.thread517 ], [ %134, %.thread519 ], [ 0.000000e+00, %92 ]
  %.in502 = phi float [ %107, %.thread ], [ %119, %.thread517 ], [ %147, %.thread519 ], [ 0.000000e+00, %92 ]
  %149 = fpext float %.in502 to double
  %150 = insertelement <2 x double> poison, double %.pn, i64 0
  %151 = insertelement <2 x double> %150, double %149, i64 1
  %152 = fadd <2 x double> %93, %151
  %indvars.iv.next589 = add nsw i64 %indvars.iv588, 1
  %153 = icmp slt i64 %indvars.iv.next589, %82
  br i1 %153, label %92, label %.preheader, !llvm.loop !19

154:                                              ; preds = %.preheader, %.split563.us
  %indvars.iv609 = phi i64 [ %.pre-phi, %.preheader ], [ %indvars.iv.next610, %.split563.us ]
  %indvars.iv607 = phi i64 [ %91, %.preheader ], [ %indvars.iv.next608, %.split563.us ]
  %indvars.iv605 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next606, %.split563.us ]
  %indvars.iv603 = phi i64 [ %smax, %.preheader ], [ %indvars.iv.next604, %.split563.us ]
  %.1423 = phi double [ %.0422.lcssa, %.preheader ], [ %369, %.split563.us ]
  %155 = phi <2 x double> [ %83, %.preheader ], [ %445, %.split563.us ]
  %156 = add nsw i64 %indvars.iv603, -1
  %157 = getelementptr inbounds float, ptr %5, i64 %156
  %158 = load float, ptr %157, align 4, !tbaa !15
  %159 = getelementptr inbounds float, ptr %2, i64 %156
  %160 = load float, ptr %159, align 4, !tbaa !15
  %161 = fcmp oge float %158, %160
  %162 = getelementptr inbounds float, ptr %5, i64 %indvars.iv603
  %163 = load float, ptr %162, align 4, !tbaa !15
  %164 = getelementptr inbounds float, ptr %2, i64 %indvars.iv603
  %165 = load float, ptr %164, align 4, !tbaa !15
  %166 = fcmp oge float %163, %165
  %167 = xor i1 %161, %166
  br i1 %167, label %168, label %316

168:                                              ; preds = %154
  %169 = fsub float %158, %160
  %170 = tail call float @llvm.fabs.f32(float %169)
  %171 = fpext float %170 to double
  %172 = load double, ptr %86, align 8, !tbaa !20
  %173 = load i32, ptr %30, align 8, !tbaa !11
  %.not493 = icmp eq i32 %173, 0
  br i1 %.not493, label %178, label %174

174:                                              ; preds = %168
  %175 = sitofp i32 %173 to double
  %176 = extractelement <2 x double> %155, i64 0
  %177 = fdiv double %176, %175
  %.pre = load i32, ptr %85, align 4, !tbaa !14
  br label %198

178:                                              ; preds = %168
  %179 = load i32, ptr %85, align 4, !tbaa !14
  switch i32 %179, label %195 [
    i32 0, label %198
    i32 1, label %180
    i32 2, label %186
  ]

180:                                              ; preds = %178
  %181 = getelementptr inbounds float, ptr %3, i64 %156
  %182 = load float, ptr %181, align 4, !tbaa !15
  %183 = getelementptr inbounds float, ptr %4, i64 %156
  %184 = load float, ptr %183, align 4, !tbaa !15
  %185 = fsub float %182, %184
  br label %195

186:                                              ; preds = %178
  %187 = getelementptr inbounds float, ptr %3, i64 %156
  %188 = load float, ptr %187, align 4, !tbaa !15
  %.507 = select i1 %161, float %158, float %160
  %189 = fsub float %188, %.507
  %190 = select i1 %161, float %160, float %158
  %191 = getelementptr inbounds float, ptr %4, i64 %156
  %192 = load float, ptr %191, align 4, !tbaa !15
  %193 = fsub float %190, %192
  %194 = fadd float %189, %193
  br label %195

195:                                              ; preds = %178, %186, %180
  %196 = phi float [ %185, %180 ], [ %194, %186 ], [ 0.000000e+00, %178 ]
  %197 = fpext float %196 to double
  br label %198

198:                                              ; preds = %178, %195, %174
  %199 = phi i32 [ %.pre, %174 ], [ %179, %195 ], [ %179, %178 ]
  %200 = phi double [ %177, %174 ], [ %197, %195 ], [ %171, %178 ]
  %201 = fmul double %172, %200
  %202 = icmp eq i32 %199, 2
  %203 = select i1 %202, double 2.000000e+00, double 1.000000e+00
  %204 = fdiv double %201, %203
  %205 = fcmp olt double %204, %171
  br i1 %205, label %206, label %316

206:                                              ; preds = %198
  %207 = fsub float %163, %165
  %208 = tail call float @llvm.fabs.f32(float %207)
  %209 = fpext float %208 to double
  br i1 %.not493, label %214, label %210

210:                                              ; preds = %206
  %211 = sitofp i32 %173 to double
  %212 = extractelement <2 x double> %155, i64 1
  %213 = fdiv double %212, %211
  br label %235

214:                                              ; preds = %206
  switch i32 %199, label %221 [
    i32 0, label %235
    i32 1, label %215
  ]

215:                                              ; preds = %214
  %216 = getelementptr inbounds float, ptr %3, i64 %indvars.iv603
  %217 = load float, ptr %216, align 4, !tbaa !15
  %218 = getelementptr inbounds float, ptr %4, i64 %indvars.iv603
  %219 = load float, ptr %218, align 4, !tbaa !15
  %220 = fsub float %217, %219
  br label %232

221:                                              ; preds = %214
  br i1 %202, label %222, label %232

222:                                              ; preds = %221
  %223 = getelementptr inbounds float, ptr %3, i64 %indvars.iv603
  %224 = load float, ptr %223, align 4, !tbaa !15
  %225 = fcmp ult float %163, %165
  %.508 = select i1 %225, float %165, float %163
  %226 = fsub float %224, %.508
  %227 = select i1 %225, float %163, float %165
  %228 = getelementptr inbounds float, ptr %4, i64 %indvars.iv603
  %229 = load float, ptr %228, align 4, !tbaa !15
  %230 = fsub float %227, %229
  %231 = fadd float %226, %230
  br label %232

232:                                              ; preds = %222, %221, %215
  %233 = phi float [ %220, %215 ], [ %231, %222 ], [ 0.000000e+00, %221 ]
  %234 = fpext float %233 to double
  br label %235

235:                                              ; preds = %214, %232, %210
  %236 = phi double [ %213, %210 ], [ %234, %232 ], [ %209, %214 ]
  %237 = fmul double %172, %236
  %238 = fdiv double %237, %203
  %239 = fcmp olt double %238, %209
  br i1 %239, label %240, label %316

240:                                              ; preds = %235
  %241 = fpext float %163 to double
  %242 = fpext float %158 to double
  %243 = load double, ptr %87, align 8, !tbaa !20
  %244 = load i32, ptr %27, align 8, !tbaa !11
  %.not495 = icmp eq i32 %244, 0
  br i1 %.not495, label %245, label %.thread626

245:                                              ; preds = %240
  %246 = load i32, ptr %84, align 4, !tbaa !14
  switch i32 %246, label %263 [
    i32 0, label %266
    i32 1, label %247
    i32 2, label %253
  ]

247:                                              ; preds = %245
  %248 = getelementptr inbounds float, ptr %3, i64 %156
  %249 = load float, ptr %248, align 4, !tbaa !15
  %250 = getelementptr inbounds float, ptr %4, i64 %156
  %251 = load float, ptr %250, align 4, !tbaa !15
  %252 = fsub float %249, %251
  br label %263

253:                                              ; preds = %245
  %254 = getelementptr inbounds float, ptr %3, i64 %156
  %255 = load float, ptr %254, align 4, !tbaa !15
  %256 = fcmp ult float %158, %160
  %.509 = select i1 %256, float %160, float %158
  %257 = fsub float %255, %.509
  %258 = select i1 %256, float %158, float %160
  %259 = getelementptr inbounds float, ptr %4, i64 %156
  %260 = load float, ptr %259, align 4, !tbaa !15
  %261 = fsub float %258, %260
  %262 = fadd float %257, %261
  br label %263

263:                                              ; preds = %245, %253, %247
  %264 = phi float [ %252, %247 ], [ %262, %253 ], [ 0.000000e+00, %245 ]
  %265 = fpext float %264 to double
  br label %266

266:                                              ; preds = %245, %263
  %267 = phi double [ %265, %263 ], [ %171, %245 ]
  %268 = fmul double %243, %267
  %269 = icmp eq i32 %246, 2
  %270 = select i1 %269, double 2.000000e+00, double 1.000000e+00
  %271 = fdiv double %268, %270
  %272 = fadd double %271, %242
  %273 = fcmp ult double %272, %241
  br i1 %273, label %316, label %282

.thread626:                                       ; preds = %240
  %274 = sitofp i32 %244 to double
  %275 = fdiv double %.1423, %274
  %.pre624 = load i32, ptr %84, align 4, !tbaa !14
  %276 = fmul double %243, %275
  %277 = icmp eq i32 %.pre624, 2
  %278 = select i1 %277, double 2.000000e+00, double 1.000000e+00
  %279 = fdiv double %276, %278
  %280 = fadd double %279, %242
  %281 = fcmp ult double %280, %241
  br i1 %281, label %316, label %.thread627

282:                                              ; preds = %266
  br i1 %.not495, label %286, label %.thread627

.thread627:                                       ; preds = %.thread626, %282
  %283 = phi double [ %270, %282 ], [ %278, %.thread626 ]
  %284 = sitofp i32 %244 to double
  %285 = fdiv double %.1423, %284
  br label %307

286:                                              ; preds = %282
  switch i32 %246, label %293 [
    i32 0, label %307
    i32 1, label %287
  ]

287:                                              ; preds = %286
  %288 = getelementptr inbounds float, ptr %3, i64 %156
  %289 = load float, ptr %288, align 4, !tbaa !15
  %290 = getelementptr inbounds float, ptr %4, i64 %156
  %291 = load float, ptr %290, align 4, !tbaa !15
  %292 = fsub float %289, %291
  br label %304

293:                                              ; preds = %286
  br i1 %269, label %294, label %304

294:                                              ; preds = %293
  %295 = getelementptr inbounds float, ptr %3, i64 %156
  %296 = load float, ptr %295, align 4, !tbaa !15
  %297 = fcmp ult float %158, %160
  %.510 = select i1 %297, float %160, float %158
  %298 = fsub float %296, %.510
  %299 = select i1 %297, float %158, float %160
  %300 = getelementptr inbounds float, ptr %4, i64 %156
  %301 = load float, ptr %300, align 4, !tbaa !15
  %302 = fsub float %299, %301
  %303 = fadd float %298, %302
  br label %304

304:                                              ; preds = %294, %293, %287
  %305 = phi float [ %292, %287 ], [ %303, %294 ], [ 0.000000e+00, %293 ]
  %306 = fpext float %305 to double
  br label %307

307:                                              ; preds = %286, %304, %.thread627
  %308 = phi double [ %283, %.thread627 ], [ %270, %304 ], [ %270, %286 ]
  %309 = phi double [ %285, %.thread627 ], [ %306, %304 ], [ %171, %286 ]
  %310 = fmul double %243, %309
  %311 = fdiv double %310, %308
  %312 = fsub double %242, %311
  %313 = fcmp ugt double %312, %241
  br i1 %313, label %316, label %314

314:                                              ; preds = %307
  %315 = select i1 %166, i32 100, i32 -100
  br label %316

316:                                              ; preds = %154, %198, %235, %266, %307, %.thread626, %314
  %.sink = phi i32 [ %315, %314 ], [ 0, %.thread626 ], [ 0, %307 ], [ 0, %266 ], [ 0, %235 ], [ 0, %198 ], [ 0, %154 ]
  %317 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv605
  store i32 %.sink, ptr %317, align 4, !tbaa !5
  %indvars.iv.next606 = add nuw nsw i64 %indvars.iv605, 1
  %318 = load i32, ptr %84, align 4, !tbaa !14
  switch i32 %318, label %365 [
    i32 0, label %.thread521
    i32 1, label %.thread523
    i32 2, label %.thread525
  ]

.thread521:                                       ; preds = %316
  %319 = fsub float %158, %160
  %320 = tail call float @llvm.fabs.f32(float %319)
  %321 = fpext float %320 to double
  %322 = add nsw i64 %indvars.iv607, -1
  %323 = getelementptr inbounds float, ptr %5, i64 %322
  %324 = load float, ptr %323, align 4, !tbaa !15
  %325 = getelementptr inbounds float, ptr %2, i64 %322
  %326 = load float, ptr %325, align 4, !tbaa !15
  %327 = fsub float %324, %326
  %328 = tail call float @llvm.fabs.f32(float %327)
  br label %365

.thread523:                                       ; preds = %316
  %329 = getelementptr inbounds float, ptr %3, i64 %156
  %330 = load float, ptr %329, align 4, !tbaa !15
  %331 = getelementptr inbounds float, ptr %4, i64 %156
  %332 = load float, ptr %331, align 4, !tbaa !15
  %333 = fsub float %330, %332
  %334 = fpext float %333 to double
  %335 = add nsw i64 %indvars.iv607, -1
  %336 = getelementptr inbounds float, ptr %3, i64 %335
  %337 = load float, ptr %336, align 4, !tbaa !15
  %338 = getelementptr inbounds float, ptr %4, i64 %335
  %339 = load float, ptr %338, align 4, !tbaa !15
  %340 = fsub float %337, %339
  br label %365

.thread525:                                       ; preds = %316
  %341 = getelementptr inbounds float, ptr %3, i64 %156
  %342 = load float, ptr %341, align 4, !tbaa !15
  %343 = fcmp ult float %158, %160
  %.511 = select i1 %343, float %160, float %158
  %344 = fsub float %342, %.511
  %345 = select i1 %343, float %158, float %160
  %346 = getelementptr inbounds float, ptr %4, i64 %156
  %347 = load float, ptr %346, align 4, !tbaa !15
  %348 = fsub float %345, %347
  %349 = fadd float %344, %348
  %350 = fpext float %349 to double
  %351 = add nsw i64 %indvars.iv607, -1
  %352 = getelementptr inbounds float, ptr %3, i64 %351
  %353 = load float, ptr %352, align 4, !tbaa !15
  %354 = getelementptr inbounds float, ptr %5, i64 %351
  %355 = load float, ptr %354, align 4, !tbaa !15
  %356 = getelementptr inbounds float, ptr %2, i64 %351
  %357 = load float, ptr %356, align 4, !tbaa !15
  %358 = fcmp ult float %355, %357
  %.512 = select i1 %358, float %357, float %355
  %359 = fsub float %353, %.512
  %360 = select i1 %358, float %355, float %357
  %361 = getelementptr inbounds float, ptr %4, i64 %351
  %362 = load float, ptr %361, align 4, !tbaa !15
  %363 = fsub float %360, %362
  %364 = fadd float %359, %363
  br label %365

365:                                              ; preds = %316, %.thread523, %.thread525, %.thread521
  %366 = phi double [ %321, %.thread521 ], [ %334, %.thread523 ], [ %350, %.thread525 ], [ 0.000000e+00, %316 ]
  %.in497 = phi float [ %328, %.thread521 ], [ %340, %.thread523 ], [ %364, %.thread525 ], [ 0.000000e+00, %316 ]
  %367 = fpext float %.in497 to double
  %368 = fsub double %366, %367
  %369 = fadd double %.1423, %368
  %370 = load i32, ptr %85, align 4, !tbaa !14
  switch i32 %370, label %.split563.us [
    i32 0, label %.thread527.us.preheader
    i32 1, label %.thread529.us.preheader
    i32 2, label %.thread531.us.preheader
  ]

.thread531.us.preheader:                          ; preds = %365
  %371 = add nsw i64 %indvars.iv603, -1
  %372 = getelementptr inbounds float, ptr %3, i64 %371
  %373 = getelementptr inbounds float, ptr %5, i64 %371
  %374 = load float, ptr %373, align 4, !tbaa !15
  %375 = getelementptr inbounds float, ptr %2, i64 %371
  %376 = load float, ptr %375, align 4, !tbaa !15
  %377 = getelementptr inbounds float, ptr %4, i64 %371
  %378 = add nsw i64 %indvars.iv609, -1
  %379 = getelementptr inbounds float, ptr %3, i64 %378
  %380 = getelementptr inbounds float, ptr %5, i64 %378
  %381 = getelementptr inbounds float, ptr %2, i64 %378
  %382 = getelementptr inbounds float, ptr %4, i64 %378
  %383 = load <2 x float>, ptr %372, align 4, !tbaa !15
  %384 = insertelement <2 x float> poison, float %374, i64 0
  %385 = insertelement <2 x float> %384, float %163, i64 1
  %386 = insertelement <2 x float> poison, float %376, i64 0
  %387 = insertelement <2 x float> %386, float %165, i64 1
  %388 = fcmp ult <2 x float> %385, %387
  %389 = select <2 x i1> %388, <2 x float> %387, <2 x float> %385
  %390 = fsub <2 x float> %383, %389
  %391 = select <2 x i1> %388, <2 x float> %385, <2 x float> %387
  %392 = load <2 x float>, ptr %377, align 4, !tbaa !15
  %393 = fsub <2 x float> %391, %392
  %394 = fadd <2 x float> %390, %393
  %395 = fpext <2 x float> %394 to <2 x double>
  %396 = load <2 x float>, ptr %379, align 4, !tbaa !15
  %397 = load <2 x float>, ptr %380, align 4, !tbaa !15
  %398 = load <2 x float>, ptr %381, align 4, !tbaa !15
  %399 = fcmp ult <2 x float> %397, %398
  %400 = select <2 x i1> %399, <2 x float> %398, <2 x float> %397
  %401 = fsub <2 x float> %396, %400
  %402 = select <2 x i1> %399, <2 x float> %397, <2 x float> %398
  %403 = load <2 x float>, ptr %382, align 4, !tbaa !15
  %404 = fsub <2 x float> %402, %403
  %405 = fadd <2 x float> %401, %404
  %406 = fpext <2 x float> %405 to <2 x double>
  %407 = fsub <2 x double> %395, %406
  br label %.split563.us

.thread529.us.preheader:                          ; preds = %365
  %408 = add nsw i64 %indvars.iv603, -1
  %409 = getelementptr inbounds float, ptr %3, i64 %408
  %410 = getelementptr inbounds float, ptr %4, i64 %408
  %411 = add nsw i64 %indvars.iv609, -1
  %412 = getelementptr inbounds float, ptr %3, i64 %411
  %413 = getelementptr inbounds float, ptr %4, i64 %411
  %414 = load <2 x float>, ptr %409, align 4, !tbaa !15
  %415 = load <2 x float>, ptr %410, align 4, !tbaa !15
  %416 = fsub <2 x float> %414, %415
  %417 = fpext <2 x float> %416 to <2 x double>
  %418 = load <2 x float>, ptr %412, align 4, !tbaa !15
  %419 = load <2 x float>, ptr %413, align 4, !tbaa !15
  %420 = fsub <2 x float> %418, %419
  %421 = fpext <2 x float> %420 to <2 x double>
  %422 = fsub <2 x double> %417, %421
  br label %.split563.us

.thread527.us.preheader:                          ; preds = %365
  %423 = add nsw i64 %indvars.iv603, -1
  %424 = getelementptr inbounds float, ptr %5, i64 %423
  %425 = load float, ptr %424, align 4, !tbaa !15
  %426 = getelementptr inbounds float, ptr %2, i64 %423
  %427 = load float, ptr %426, align 4, !tbaa !15
  %428 = add nsw i64 %indvars.iv609, -1
  %429 = getelementptr inbounds float, ptr %5, i64 %428
  %430 = getelementptr inbounds float, ptr %2, i64 %428
  %431 = insertelement <2 x float> poison, float %425, i64 0
  %432 = insertelement <2 x float> %431, float %163, i64 1
  %433 = insertelement <2 x float> poison, float %427, i64 0
  %434 = insertelement <2 x float> %433, float %165, i64 1
  %435 = fsub <2 x float> %432, %434
  %436 = tail call <2 x float> @llvm.fabs.v2f32(<2 x float> %435)
  %437 = fpext <2 x float> %436 to <2 x double>
  %438 = load <2 x float>, ptr %429, align 4, !tbaa !15
  %439 = load <2 x float>, ptr %430, align 4, !tbaa !15
  %440 = fsub <2 x float> %438, %439
  %441 = tail call <2 x float> @llvm.fabs.v2f32(<2 x float> %440)
  %442 = fpext <2 x float> %441 to <2 x double>
  %443 = fsub <2 x double> %437, %442
  br label %.split563.us

.split563.us:                                     ; preds = %365, %.thread531.us.preheader, %.thread529.us.preheader, %.thread527.us.preheader
  %444 = phi <2 x double> [ %407, %.thread531.us.preheader ], [ %422, %.thread529.us.preheader ], [ %443, %.thread527.us.preheader ], [ zeroinitializer, %365 ]
  %445 = fadd <2 x double> %155, %444
  %indvars.iv.next604 = add nuw nsw i64 %indvars.iv603, 1
  %indvars.iv.next608 = add nsw i64 %indvars.iv607, 1
  %indvars.iv.next610 = add nsw i64 %indvars.iv609, 1
  %.not498.not = icmp slt i64 %indvars.iv603, %90
  br i1 %.not498.not, label %154, label %446, !llvm.loop !21

446:                                              ; preds = %.split563.us
  %447 = trunc nuw i64 %indvars.iv.next606 to i32
  store i32 %447, ptr %7, align 4, !tbaa !5
  store i32 %spec.select, ptr %6, align 4, !tbaa !5
  br label %448

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x float> @llvm.fabs.v2f32(<2 x float>) #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 = distinct !{!19, !18}
!20 = !{!12, !13, i64 16}
!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,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass