; 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: nounwind uwtable
define dso_local i32 @TA_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 %1831

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

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

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

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

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 = %222, %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 %228

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

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 double, ptr %101, i64 %104
  %106 = load double, ptr %105, align 8, !tbaa !11
  %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 double, ptr %107, i64 %110
  %112 = load double, ptr %111, align 8, !tbaa !11
  %113 = fsub double %106, %112
  %114 = call double @llvm.fabs.f64(double %113)
  br label %222

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

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

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

143:                                              ; preds = %136
  %144 = load ptr, ptr %14, align 8, !tbaa !9
  %145 = load i32, ptr %22, align 4, !tbaa !5
  %146 = sub nsw i32 %145, 1
  %147 = sext i32 %146 to i64
  %148 = getelementptr inbounds double, ptr %144, i64 %147
  %149 = load double, ptr %148, align 8, !tbaa !11
  %150 = load ptr, ptr %16, align 8, !tbaa !9
  %151 = load i32, ptr %22, align 4, !tbaa !5
  %152 = sub nsw i32 %151, 1
  %153 = sext i32 %152 to i64
  %154 = getelementptr inbounds double, ptr %150, i64 %153
  %155 = load double, ptr %154, align 8, !tbaa !11
  %156 = load ptr, ptr %13, align 8, !tbaa !9
  %157 = load i32, ptr %22, align 4, !tbaa !5
  %158 = sub nsw i32 %157, 1
  %159 = sext i32 %158 to i64
  %160 = getelementptr inbounds double, ptr %156, i64 %159
  %161 = load double, ptr %160, align 8, !tbaa !11
  %162 = fcmp oge double %155, %161
  br i1 %162, label %163, label %170

163:                                              ; preds = %143
  %164 = load ptr, ptr %16, align 8, !tbaa !9
  %165 = load i32, ptr %22, align 4, !tbaa !5
  %166 = sub nsw i32 %165, 1
  %167 = sext i32 %166 to i64
  %168 = getelementptr inbounds double, ptr %164, i64 %167
  %169 = load double, ptr %168, align 8, !tbaa !11
  br label %177

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

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

193:                                              ; preds = %177
  %194 = load ptr, ptr %13, align 8, !tbaa !9
  %195 = load i32, ptr %22, align 4, !tbaa !5
  %196 = sub nsw i32 %195, 1
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds double, ptr %194, i64 %197
  %199 = load double, ptr %198, align 8, !tbaa !11
  br label %207

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

207:                                              ; preds = %200, %193
  %208 = phi double [ %199, %193 ], [ %206, %200 ]
  %209 = load ptr, ptr %15, align 8, !tbaa !9
  %210 = load i32, ptr %22, align 4, !tbaa !5
  %211 = sub nsw i32 %210, 1
  %212 = sext i32 %211 to i64
  %213 = getelementptr inbounds double, ptr %209, i64 %212
  %214 = load double, ptr %213, align 8, !tbaa !11
  %215 = fsub double %208, %214
  %216 = fadd double %179, %215
  br label %218

217:                                              ; preds = %136
  br label %218

218:                                              ; preds = %217, %207
  %219 = phi double [ %216, %207 ], [ 0.000000e+00, %217 ]
  br label %220

220:                                              ; preds = %218, %122
  %221 = phi double [ %135, %122 ], [ %219, %218 ]
  br label %222

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

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

230:                                              ; preds = %482, %228
  %231 = load i32, ptr %22, align 4, !tbaa !5
  %232 = load i32, ptr %11, align 4, !tbaa !5
  %233 = icmp slt i32 %231, %232
  br i1 %233, label %234, label %489

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

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

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

263:                                              ; preds = %256
  %264 = load ptr, ptr %14, align 8, !tbaa !9
  %265 = load i32, ptr %22, align 4, !tbaa !5
  %266 = sub nsw i32 %265, 1
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds double, ptr %264, i64 %267
  %269 = load double, ptr %268, align 8, !tbaa !11
  %270 = load ptr, ptr %15, align 8, !tbaa !9
  %271 = load i32, ptr %22, align 4, !tbaa !5
  %272 = sub nsw i32 %271, 1
  %273 = sext i32 %272 to i64
  %274 = getelementptr inbounds double, ptr %270, i64 %273
  %275 = load double, ptr %274, align 8, !tbaa !11
  %276 = fsub double %269, %275
  br label %361

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

284:                                              ; preds = %277
  %285 = load ptr, ptr %14, align 8, !tbaa !9
  %286 = load i32, ptr %22, align 4, !tbaa !5
  %287 = sub nsw i32 %286, 1
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds double, ptr %285, i64 %288
  %290 = load double, ptr %289, align 8, !tbaa !11
  %291 = load ptr, ptr %16, align 8, !tbaa !9
  %292 = load i32, ptr %22, align 4, !tbaa !5
  %293 = sub nsw i32 %292, 1
  %294 = sext i32 %293 to i64
  %295 = getelementptr inbounds double, ptr %291, i64 %294
  %296 = load double, ptr %295, align 8, !tbaa !11
  %297 = load ptr, ptr %13, align 8, !tbaa !9
  %298 = load i32, ptr %22, align 4, !tbaa !5
  %299 = sub nsw i32 %298, 1
  %300 = sext i32 %299 to i64
  %301 = getelementptr inbounds double, ptr %297, i64 %300
  %302 = load double, ptr %301, align 8, !tbaa !11
  %303 = fcmp oge double %296, %302
  br i1 %303, label %304, label %311

304:                                              ; preds = %284
  %305 = load ptr, ptr %16, align 8, !tbaa !9
  %306 = load i32, ptr %22, align 4, !tbaa !5
  %307 = sub nsw i32 %306, 1
  %308 = sext i32 %307 to i64
  %309 = getelementptr inbounds double, ptr %305, i64 %308
  %310 = load double, ptr %309, align 8, !tbaa !11
  br label %318

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

318:                                              ; preds = %311, %304
  %319 = phi double [ %310, %304 ], [ %317, %311 ]
  %320 = fsub double %290, %319
  %321 = load ptr, ptr %16, align 8, !tbaa !9
  %322 = load i32, ptr %22, align 4, !tbaa !5
  %323 = sub nsw i32 %322, 1
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds double, ptr %321, i64 %324
  %326 = load double, ptr %325, align 8, !tbaa !11
  %327 = load ptr, ptr %13, align 8, !tbaa !9
  %328 = load i32, ptr %22, align 4, !tbaa !5
  %329 = sub nsw i32 %328, 1
  %330 = sext i32 %329 to i64
  %331 = getelementptr inbounds double, ptr %327, i64 %330
  %332 = load double, ptr %331, align 8, !tbaa !11
  %333 = fcmp oge double %326, %332
  br i1 %333, label %334, label %341

334:                                              ; preds = %318
  %335 = load ptr, ptr %13, align 8, !tbaa !9
  %336 = load i32, ptr %22, align 4, !tbaa !5
  %337 = sub nsw i32 %336, 1
  %338 = sext i32 %337 to i64
  %339 = getelementptr inbounds double, ptr %335, i64 %338
  %340 = load double, ptr %339, align 8, !tbaa !11
  br label %348

341:                                              ; preds = %318
  %342 = load ptr, ptr %16, align 8, !tbaa !9
  %343 = load i32, ptr %22, align 4, !tbaa !5
  %344 = sub nsw i32 %343, 1
  %345 = sext i32 %344 to i64
  %346 = getelementptr inbounds double, ptr %342, i64 %345
  %347 = load double, ptr %346, align 8, !tbaa !11
  br label %348

348:                                              ; preds = %341, %334
  %349 = phi double [ %340, %334 ], [ %347, %341 ]
  %350 = load ptr, ptr %15, align 8, !tbaa !9
  %351 = load i32, ptr %22, align 4, !tbaa !5
  %352 = sub nsw i32 %351, 1
  %353 = sext i32 %352 to i64
  %354 = getelementptr inbounds double, ptr %350, i64 %353
  %355 = load double, ptr %354, align 8, !tbaa !11
  %356 = fsub double %349, %355
  %357 = fadd double %320, %356
  br label %359

358:                                              ; preds = %277
  br label %359

359:                                              ; preds = %358, %348
  %360 = phi double [ %357, %348 ], [ 0.000000e+00, %358 ]
  br label %361

361:                                              ; preds = %359, %263
  %362 = phi double [ %276, %263 ], [ %360, %359 ]
  br label %363

363:                                              ; preds = %361, %241
  %364 = phi double [ %255, %241 ], [ %362, %361 ]
  %365 = getelementptr inbounds [2 x double], ptr %21, i64 0, i64 1
  %366 = load double, ptr %365, align 8, !tbaa !11
  %367 = fadd double %366, %364
  store double %367, ptr %365, align 8, !tbaa !11
  %368 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %369 = getelementptr inbounds %struct.TA_LibcPriv, ptr %368, i32 0, i32 8
  %370 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %369, i64 0, i64 0
  %371 = getelementptr inbounds %struct.TA_CandleSetting, ptr %370, i32 0, i32 1
  %372 = load i32, ptr %371, align 4, !tbaa !15
  %373 = icmp eq i32 %372, 0
  br i1 %373, label %374, label %387

374:                                              ; preds = %363
  %375 = load ptr, ptr %16, align 8, !tbaa !9
  %376 = load i32, ptr %22, align 4, !tbaa !5
  %377 = sext i32 %376 to i64
  %378 = getelementptr inbounds double, ptr %375, i64 %377
  %379 = load double, ptr %378, align 8, !tbaa !11
  %380 = load ptr, ptr %13, align 8, !tbaa !9
  %381 = load i32, ptr %22, align 4, !tbaa !5
  %382 = sext i32 %381 to i64
  %383 = getelementptr inbounds double, ptr %380, i64 %382
  %384 = load double, ptr %383, align 8, !tbaa !11
  %385 = fsub double %379, %384
  %386 = call double @llvm.fabs.f64(double %385)
  br label %482

387:                                              ; preds = %363
  %388 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %389 = getelementptr inbounds %struct.TA_LibcPriv, ptr %388, i32 0, i32 8
  %390 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %389, i64 0, i64 0
  %391 = getelementptr inbounds %struct.TA_CandleSetting, ptr %390, i32 0, i32 1
  %392 = load i32, ptr %391, align 4, !tbaa !15
  %393 = icmp eq i32 %392, 1
  br i1 %393, label %394, label %406

394:                                              ; preds = %387
  %395 = load ptr, ptr %14, align 8, !tbaa !9
  %396 = load i32, ptr %22, align 4, !tbaa !5
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds double, ptr %395, i64 %397
  %399 = load double, ptr %398, align 8, !tbaa !11
  %400 = load ptr, ptr %15, align 8, !tbaa !9
  %401 = load i32, ptr %22, align 4, !tbaa !5
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds double, ptr %400, i64 %402
  %404 = load double, ptr %403, align 8, !tbaa !11
  %405 = fsub double %399, %404
  br label %480

406:                                              ; preds = %387
  %407 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %408 = getelementptr inbounds %struct.TA_LibcPriv, ptr %407, i32 0, i32 8
  %409 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %408, i64 0, i64 0
  %410 = getelementptr inbounds %struct.TA_CandleSetting, ptr %409, i32 0, i32 1
  %411 = load i32, ptr %410, align 4, !tbaa !15
  %412 = icmp eq i32 %411, 2
  br i1 %412, label %413, label %477

413:                                              ; preds = %406
  %414 = load ptr, ptr %14, align 8, !tbaa !9
  %415 = load i32, ptr %22, align 4, !tbaa !5
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds double, ptr %414, i64 %416
  %418 = load double, ptr %417, align 8, !tbaa !11
  %419 = load ptr, ptr %16, align 8, !tbaa !9
  %420 = load i32, ptr %22, align 4, !tbaa !5
  %421 = sext i32 %420 to i64
  %422 = getelementptr inbounds double, ptr %419, i64 %421
  %423 = load double, ptr %422, align 8, !tbaa !11
  %424 = load ptr, ptr %13, align 8, !tbaa !9
  %425 = load i32, ptr %22, align 4, !tbaa !5
  %426 = sext i32 %425 to i64
  %427 = getelementptr inbounds double, ptr %424, i64 %426
  %428 = load double, ptr %427, align 8, !tbaa !11
  %429 = fcmp oge double %423, %428
  br i1 %429, label %430, label %436

430:                                              ; preds = %413
  %431 = load ptr, ptr %16, align 8, !tbaa !9
  %432 = load i32, ptr %22, align 4, !tbaa !5
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds double, ptr %431, i64 %433
  %435 = load double, ptr %434, align 8, !tbaa !11
  br label %442

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

442:                                              ; preds = %436, %430
  %443 = phi double [ %435, %430 ], [ %441, %436 ]
  %444 = fsub double %418, %443
  %445 = load ptr, ptr %16, align 8, !tbaa !9
  %446 = load i32, ptr %22, align 4, !tbaa !5
  %447 = sext i32 %446 to i64
  %448 = getelementptr inbounds double, ptr %445, i64 %447
  %449 = load double, ptr %448, align 8, !tbaa !11
  %450 = load ptr, ptr %13, align 8, !tbaa !9
  %451 = load i32, ptr %22, align 4, !tbaa !5
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds double, ptr %450, i64 %452
  %454 = load double, ptr %453, align 8, !tbaa !11
  %455 = fcmp oge double %449, %454
  br i1 %455, label %456, label %462

456:                                              ; preds = %442
  %457 = load ptr, ptr %13, align 8, !tbaa !9
  %458 = load i32, ptr %22, align 4, !tbaa !5
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds double, ptr %457, i64 %459
  %461 = load double, ptr %460, align 8, !tbaa !11
  br label %468

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

468:                                              ; preds = %462, %456
  %469 = phi double [ %461, %456 ], [ %467, %462 ]
  %470 = load ptr, ptr %15, align 8, !tbaa !9
  %471 = load i32, ptr %22, align 4, !tbaa !5
  %472 = sext i32 %471 to i64
  %473 = getelementptr inbounds double, ptr %470, i64 %472
  %474 = load double, ptr %473, align 8, !tbaa !11
  %475 = fsub double %469, %474
  %476 = fadd double %444, %475
  br label %478

477:                                              ; preds = %406
  br label %478

478:                                              ; preds = %477, %468
  %479 = phi double [ %476, %468 ], [ 0.000000e+00, %477 ]
  br label %480

480:                                              ; preds = %478, %394
  %481 = phi double [ %405, %394 ], [ %479, %478 ]
  br label %482

482:                                              ; preds = %480, %374
  %483 = phi double [ %386, %374 ], [ %481, %480 ]
  %484 = getelementptr inbounds [2 x double], ptr %21, i64 0, i64 0
  %485 = load double, ptr %484, align 16, !tbaa !11
  %486 = fadd double %485, %483
  store double %486, ptr %484, align 16, !tbaa !11
  %487 = load i32, ptr %22, align 4, !tbaa !5
  %488 = add nsw i32 %487, 1
  store i32 %488, ptr %22, align 4, !tbaa !5
  br label %230, !llvm.loop !18

489:                                              ; preds = %230
  %490 = load i32, ptr %11, align 4, !tbaa !5
  store i32 %490, ptr %22, align 4, !tbaa !5
  store i32 0, ptr %23, align 4, !tbaa !5
  br label %491

491:                                              ; preds = %1822, %489
  %492 = load ptr, ptr %16, align 8, !tbaa !9
  %493 = load i32, ptr %22, align 4, !tbaa !5
  %494 = sub nsw i32 %493, 1
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds double, ptr %492, i64 %495
  %497 = load double, ptr %496, align 8, !tbaa !11
  %498 = load ptr, ptr %13, 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 double, ptr %498, i64 %501
  %503 = load double, ptr %502, align 8, !tbaa !11
  %504 = fcmp oge double %497, %503
  %505 = zext i1 %504 to i64
  %506 = select i1 %504, i32 1, i32 -1
  %507 = load ptr, ptr %16, align 8, !tbaa !9
  %508 = load i32, ptr %22, align 4, !tbaa !5
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds double, ptr %507, i64 %509
  %511 = load double, ptr %510, align 8, !tbaa !11
  %512 = load ptr, ptr %13, align 8, !tbaa !9
  %513 = load i32, ptr %22, align 4, !tbaa !5
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds double, ptr %512, i64 %514
  %516 = load double, ptr %515, align 8, !tbaa !11
  %517 = fcmp oge double %511, %516
  %518 = zext i1 %517 to i64
  %519 = select i1 %517, i32 1, i32 -1
  %520 = sub nsw i32 0, %519
  %521 = icmp eq i32 %506, %520
  br i1 %521, label %522, label %1244

522:                                              ; preds = %491
  %523 = load ptr, ptr %16, align 8, !tbaa !9
  %524 = load i32, ptr %22, align 4, !tbaa !5
  %525 = sub nsw i32 %524, 1
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds double, ptr %523, i64 %526
  %528 = load double, ptr %527, align 8, !tbaa !11
  %529 = load ptr, ptr %13, align 8, !tbaa !9
  %530 = load i32, ptr %22, align 4, !tbaa !5
  %531 = sub nsw i32 %530, 1
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds double, ptr %529, i64 %532
  %534 = load double, ptr %533, align 8, !tbaa !11
  %535 = fsub double %528, %534
  %536 = call double @llvm.fabs.f64(double %535)
  %537 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %538 = getelementptr inbounds %struct.TA_LibcPriv, ptr %537, i32 0, i32 8
  %539 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %538, i64 0, i64 0
  %540 = getelementptr inbounds %struct.TA_CandleSetting, ptr %539, i32 0, i32 3
  %541 = load double, ptr %540, align 8, !tbaa !19
  %542 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %543 = getelementptr inbounds %struct.TA_LibcPriv, ptr %542, i32 0, i32 8
  %544 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %543, i64 0, i64 0
  %545 = getelementptr inbounds %struct.TA_CandleSetting, ptr %544, i32 0, i32 2
  %546 = load i32, ptr %545, align 8, !tbaa !13
  %547 = sitofp i32 %546 to double
  %548 = fcmp une double %547, 0.000000e+00
  br i1 %548, label %549, label %559

549:                                              ; preds = %522
  %550 = getelementptr inbounds [2 x double], ptr %21, i64 0, i64 1
  %551 = load double, ptr %550, align 8, !tbaa !11
  %552 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %553 = getelementptr inbounds %struct.TA_LibcPriv, ptr %552, i32 0, i32 8
  %554 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %553, i64 0, i64 0
  %555 = getelementptr inbounds %struct.TA_CandleSetting, ptr %554, i32 0, i32 2
  %556 = load i32, ptr %555, align 8, !tbaa !13
  %557 = sitofp i32 %556 to double
  %558 = fdiv double %551, %557
  br label %690

559:                                              ; preds = %522
  %560 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %561 = getelementptr inbounds %struct.TA_LibcPriv, ptr %560, i32 0, i32 8
  %562 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %561, i64 0, i64 0
  %563 = getelementptr inbounds %struct.TA_CandleSetting, ptr %562, i32 0, i32 1
  %564 = load i32, ptr %563, align 4, !tbaa !15
  %565 = icmp eq i32 %564, 0
  br i1 %565, label %566, label %581

566:                                              ; preds = %559
  %567 = load ptr, ptr %16, align 8, !tbaa !9
  %568 = load i32, ptr %22, align 4, !tbaa !5
  %569 = sub nsw i32 %568, 1
  %570 = sext i32 %569 to i64
  %571 = getelementptr inbounds double, ptr %567, i64 %570
  %572 = load double, ptr %571, align 8, !tbaa !11
  %573 = load ptr, ptr %13, align 8, !tbaa !9
  %574 = load i32, ptr %22, align 4, !tbaa !5
  %575 = sub nsw i32 %574, 1
  %576 = sext i32 %575 to i64
  %577 = getelementptr inbounds double, ptr %573, i64 %576
  %578 = load double, ptr %577, align 8, !tbaa !11
  %579 = fsub double %572, %578
  %580 = call double @llvm.fabs.f64(double %579)
  br label %688

581:                                              ; preds = %559
  %582 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %583 = getelementptr inbounds %struct.TA_LibcPriv, ptr %582, i32 0, i32 8
  %584 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %583, i64 0, i64 0
  %585 = getelementptr inbounds %struct.TA_CandleSetting, ptr %584, i32 0, i32 1
  %586 = load i32, ptr %585, align 4, !tbaa !15
  %587 = icmp eq i32 %586, 1
  br i1 %587, label %588, label %602

588:                                              ; preds = %581
  %589 = load ptr, ptr %14, align 8, !tbaa !9
  %590 = load i32, ptr %22, align 4, !tbaa !5
  %591 = sub nsw i32 %590, 1
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds double, ptr %589, i64 %592
  %594 = load double, ptr %593, align 8, !tbaa !11
  %595 = load ptr, ptr %15, align 8, !tbaa !9
  %596 = load i32, ptr %22, align 4, !tbaa !5
  %597 = sub nsw i32 %596, 1
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds double, ptr %595, i64 %598
  %600 = load double, ptr %599, align 8, !tbaa !11
  %601 = fsub double %594, %600
  br label %686

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

609:                                              ; preds = %602
  %610 = load ptr, ptr %14, align 8, !tbaa !9
  %611 = load i32, ptr %22, align 4, !tbaa !5
  %612 = sub nsw i32 %611, 1
  %613 = sext i32 %612 to i64
  %614 = getelementptr inbounds double, ptr %610, i64 %613
  %615 = load double, ptr %614, align 8, !tbaa !11
  %616 = load ptr, ptr %16, align 8, !tbaa !9
  %617 = load i32, ptr %22, align 4, !tbaa !5
  %618 = sub nsw i32 %617, 1
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds double, ptr %616, i64 %619
  %621 = load double, ptr %620, align 8, !tbaa !11
  %622 = load ptr, ptr %13, align 8, !tbaa !9
  %623 = load i32, ptr %22, align 4, !tbaa !5
  %624 = sub nsw i32 %623, 1
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds double, ptr %622, i64 %625
  %627 = load double, ptr %626, align 8, !tbaa !11
  %628 = fcmp oge double %621, %627
  br i1 %628, label %629, label %636

629:                                              ; preds = %609
  %630 = load ptr, ptr %16, 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 double, ptr %630, i64 %633
  %635 = load double, ptr %634, align 8, !tbaa !11
  br label %643

636:                                              ; preds = %609
  %637 = load ptr, ptr %13, align 8, !tbaa !9
  %638 = load i32, ptr %22, align 4, !tbaa !5
  %639 = sub nsw i32 %638, 1
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds double, ptr %637, i64 %640
  %642 = load double, ptr %641, align 8, !tbaa !11
  br label %643

643:                                              ; preds = %636, %629
  %644 = phi double [ %635, %629 ], [ %642, %636 ]
  %645 = fsub double %615, %644
  %646 = load ptr, ptr %16, align 8, !tbaa !9
  %647 = load i32, ptr %22, align 4, !tbaa !5
  %648 = sub nsw i32 %647, 1
  %649 = sext i32 %648 to i64
  %650 = getelementptr inbounds double, ptr %646, i64 %649
  %651 = load double, ptr %650, align 8, !tbaa !11
  %652 = load ptr, ptr %13, align 8, !tbaa !9
  %653 = load i32, ptr %22, align 4, !tbaa !5
  %654 = sub nsw i32 %653, 1
  %655 = sext i32 %654 to i64
  %656 = getelementptr inbounds double, ptr %652, i64 %655
  %657 = load double, ptr %656, align 8, !tbaa !11
  %658 = fcmp oge double %651, %657
  br i1 %658, label %659, label %666

659:                                              ; preds = %643
  %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 double, ptr %660, i64 %663
  %665 = load double, ptr %664, align 8, !tbaa !11
  br label %673

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

673:                                              ; preds = %666, %659
  %674 = phi double [ %665, %659 ], [ %672, %666 ]
  %675 = load ptr, ptr %15, 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 double, ptr %675, i64 %678
  %680 = load double, ptr %679, align 8, !tbaa !11
  %681 = fsub double %674, %680
  %682 = fadd double %645, %681
  br label %684

683:                                              ; preds = %602
  br label %684

684:                                              ; preds = %683, %673
  %685 = phi double [ %682, %673 ], [ 0.000000e+00, %683 ]
  br label %686

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

688:                                              ; preds = %686, %566
  %689 = phi double [ %580, %566 ], [ %687, %686 ]
  br label %690

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

703:                                              ; preds = %690
  %704 = load ptr, ptr %16, align 8, !tbaa !9
  %705 = load i32, ptr %22, align 4, !tbaa !5
  %706 = sext i32 %705 to i64
  %707 = getelementptr inbounds double, ptr %704, i64 %706
  %708 = load double, ptr %707, align 8, !tbaa !11
  %709 = load ptr, ptr %13, align 8, !tbaa !9
  %710 = load i32, ptr %22, align 4, !tbaa !5
  %711 = sext i32 %710 to i64
  %712 = getelementptr inbounds double, ptr %709, i64 %711
  %713 = load double, ptr %712, align 8, !tbaa !11
  %714 = fsub double %708, %713
  %715 = call double @llvm.fabs.f64(double %714)
  %716 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %717 = getelementptr inbounds %struct.TA_LibcPriv, ptr %716, i32 0, i32 8
  %718 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %717, i64 0, i64 0
  %719 = getelementptr inbounds %struct.TA_CandleSetting, ptr %718, i32 0, i32 3
  %720 = load double, ptr %719, align 8, !tbaa !19
  %721 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %722 = getelementptr inbounds %struct.TA_LibcPriv, ptr %721, i32 0, i32 8
  %723 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %722, i64 0, i64 0
  %724 = getelementptr inbounds %struct.TA_CandleSetting, ptr %723, i32 0, i32 2
  %725 = load i32, ptr %724, align 8, !tbaa !13
  %726 = sitofp i32 %725 to double
  %727 = fcmp une double %726, 0.000000e+00
  br i1 %727, label %728, label %738

728:                                              ; preds = %703
  %729 = getelementptr inbounds [2 x double], ptr %21, i64 0, i64 0
  %730 = load double, ptr %729, align 16, !tbaa !11
  %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 = fdiv double %730, %736
  br label %855

738:                                              ; preds = %703
  %739 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %740 = getelementptr inbounds %struct.TA_LibcPriv, ptr %739, i32 0, i32 8
  %741 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %740, i64 0, i64 0
  %742 = getelementptr inbounds %struct.TA_CandleSetting, ptr %741, i32 0, i32 1
  %743 = load i32, ptr %742, align 4, !tbaa !15
  %744 = icmp eq i32 %743, 0
  br i1 %744, label %745, label %758

745:                                              ; preds = %738
  %746 = load ptr, ptr %16, align 8, !tbaa !9
  %747 = load i32, ptr %22, align 4, !tbaa !5
  %748 = sext i32 %747 to i64
  %749 = getelementptr inbounds double, ptr %746, i64 %748
  %750 = load double, ptr %749, align 8, !tbaa !11
  %751 = load ptr, ptr %13, align 8, !tbaa !9
  %752 = load i32, ptr %22, align 4, !tbaa !5
  %753 = sext i32 %752 to i64
  %754 = getelementptr inbounds double, ptr %751, i64 %753
  %755 = load double, ptr %754, align 8, !tbaa !11
  %756 = fsub double %750, %755
  %757 = call double @llvm.fabs.f64(double %756)
  br label %853

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

765:                                              ; preds = %758
  %766 = load ptr, ptr %14, align 8, !tbaa !9
  %767 = load i32, ptr %22, align 4, !tbaa !5
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds double, ptr %766, i64 %768
  %770 = load double, ptr %769, align 8, !tbaa !11
  %771 = load ptr, ptr %15, align 8, !tbaa !9
  %772 = load i32, ptr %22, align 4, !tbaa !5
  %773 = sext i32 %772 to i64
  %774 = getelementptr inbounds double, ptr %771, i64 %773
  %775 = load double, ptr %774, align 8, !tbaa !11
  %776 = fsub double %770, %775
  br label %851

777:                                              ; preds = %758
  %778 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %779 = getelementptr inbounds %struct.TA_LibcPriv, ptr %778, i32 0, i32 8
  %780 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %779, i64 0, i64 0
  %781 = getelementptr inbounds %struct.TA_CandleSetting, ptr %780, i32 0, i32 1
  %782 = load i32, ptr %781, align 4, !tbaa !15
  %783 = icmp eq i32 %782, 2
  br i1 %783, label %784, label %848

784:                                              ; preds = %777
  %785 = load ptr, ptr %14, align 8, !tbaa !9
  %786 = load i32, ptr %22, align 4, !tbaa !5
  %787 = sext i32 %786 to i64
  %788 = getelementptr inbounds double, ptr %785, i64 %787
  %789 = load double, ptr %788, align 8, !tbaa !11
  %790 = load ptr, ptr %16, align 8, !tbaa !9
  %791 = load i32, ptr %22, align 4, !tbaa !5
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds double, ptr %790, i64 %792
  %794 = load double, ptr %793, align 8, !tbaa !11
  %795 = load ptr, ptr %13, align 8, !tbaa !9
  %796 = load i32, ptr %22, align 4, !tbaa !5
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds double, ptr %795, i64 %797
  %799 = load double, ptr %798, align 8, !tbaa !11
  %800 = fcmp oge double %794, %799
  br i1 %800, label %801, label %807

801:                                              ; preds = %784
  %802 = load ptr, ptr %16, align 8, !tbaa !9
  %803 = load i32, ptr %22, align 4, !tbaa !5
  %804 = sext i32 %803 to i64
  %805 = getelementptr inbounds double, ptr %802, i64 %804
  %806 = load double, ptr %805, align 8, !tbaa !11
  br label %813

807:                                              ; preds = %784
  %808 = load ptr, ptr %13, align 8, !tbaa !9
  %809 = load i32, ptr %22, align 4, !tbaa !5
  %810 = sext i32 %809 to i64
  %811 = getelementptr inbounds double, ptr %808, i64 %810
  %812 = load double, ptr %811, align 8, !tbaa !11
  br label %813

813:                                              ; preds = %807, %801
  %814 = phi double [ %806, %801 ], [ %812, %807 ]
  %815 = fsub double %789, %814
  %816 = load ptr, ptr %16, align 8, !tbaa !9
  %817 = load i32, ptr %22, align 4, !tbaa !5
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds double, ptr %816, i64 %818
  %820 = load double, ptr %819, align 8, !tbaa !11
  %821 = load ptr, ptr %13, align 8, !tbaa !9
  %822 = load i32, ptr %22, align 4, !tbaa !5
  %823 = sext i32 %822 to i64
  %824 = getelementptr inbounds double, ptr %821, i64 %823
  %825 = load double, ptr %824, align 8, !tbaa !11
  %826 = fcmp oge double %820, %825
  br i1 %826, label %827, label %833

827:                                              ; preds = %813
  %828 = load ptr, ptr %13, align 8, !tbaa !9
  %829 = load i32, ptr %22, align 4, !tbaa !5
  %830 = sext i32 %829 to i64
  %831 = getelementptr inbounds double, ptr %828, i64 %830
  %832 = load double, ptr %831, align 8, !tbaa !11
  br label %839

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

839:                                              ; preds = %833, %827
  %840 = phi double [ %832, %827 ], [ %838, %833 ]
  %841 = load ptr, ptr %15, align 8, !tbaa !9
  %842 = load i32, ptr %22, align 4, !tbaa !5
  %843 = sext i32 %842 to i64
  %844 = getelementptr inbounds double, ptr %841, i64 %843
  %845 = load double, ptr %844, align 8, !tbaa !11
  %846 = fsub double %840, %845
  %847 = fadd double %815, %846
  br label %849

848:                                              ; preds = %777
  br label %849

849:                                              ; preds = %848, %839
  %850 = phi double [ %847, %839 ], [ 0.000000e+00, %848 ]
  br label %851

851:                                              ; preds = %849, %765
  %852 = phi double [ %776, %765 ], [ %850, %849 ]
  br label %853

853:                                              ; preds = %851, %745
  %854 = phi double [ %757, %745 ], [ %852, %851 ]
  br label %855

855:                                              ; preds = %853, %728
  %856 = phi double [ %737, %728 ], [ %854, %853 ]
  %857 = fmul double %720, %856
  %858 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %859 = getelementptr inbounds %struct.TA_LibcPriv, ptr %858, i32 0, i32 8
  %860 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %859, i64 0, i64 0
  %861 = getelementptr inbounds %struct.TA_CandleSetting, ptr %860, i32 0, i32 1
  %862 = load i32, ptr %861, align 4, !tbaa !15
  %863 = icmp eq i32 %862, 2
  %864 = zext i1 %863 to i64
  %865 = select i1 %863, double 2.000000e+00, double 1.000000e+00
  %866 = fdiv double %857, %865
  %867 = fcmp ogt double %715, %866
  br i1 %867, label %868, label %1244

868:                                              ; preds = %855
  %869 = load ptr, ptr %16, align 8, !tbaa !9
  %870 = load i32, ptr %22, align 4, !tbaa !5
  %871 = sext i32 %870 to i64
  %872 = getelementptr inbounds double, ptr %869, i64 %871
  %873 = load double, ptr %872, align 8, !tbaa !11
  %874 = load ptr, ptr %16, align 8, !tbaa !9
  %875 = load i32, ptr %22, align 4, !tbaa !5
  %876 = sub nsw i32 %875, 1
  %877 = sext i32 %876 to i64
  %878 = getelementptr inbounds double, ptr %874, i64 %877
  %879 = load double, ptr %878, align 8, !tbaa !11
  %880 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %881 = getelementptr inbounds %struct.TA_LibcPriv, ptr %880, i32 0, i32 8
  %882 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %881, i64 0, i64 10
  %883 = getelementptr inbounds %struct.TA_CandleSetting, ptr %882, i32 0, i32 3
  %884 = load double, ptr %883, align 8, !tbaa !19
  %885 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %886 = getelementptr inbounds %struct.TA_LibcPriv, ptr %885, i32 0, i32 8
  %887 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %886, i64 0, i64 10
  %888 = getelementptr inbounds %struct.TA_CandleSetting, ptr %887, i32 0, i32 2
  %889 = load i32, ptr %888, align 8, !tbaa !13
  %890 = sitofp i32 %889 to double
  %891 = fcmp une double %890, 0.000000e+00
  br i1 %891, label %892, label %901

892:                                              ; preds = %868
  %893 = load double, ptr %20, align 8, !tbaa !11
  %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 2
  %898 = load i32, ptr %897, align 8, !tbaa !13
  %899 = sitofp i32 %898 to double
  %900 = fdiv double %893, %899
  br label %1032

901:                                              ; preds = %868
  %902 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %903 = getelementptr inbounds %struct.TA_LibcPriv, ptr %902, i32 0, i32 8
  %904 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %903, i64 0, i64 10
  %905 = getelementptr inbounds %struct.TA_CandleSetting, ptr %904, i32 0, i32 1
  %906 = load i32, ptr %905, align 4, !tbaa !15
  %907 = icmp eq i32 %906, 0
  br i1 %907, label %908, label %923

908:                                              ; preds = %901
  %909 = load ptr, ptr %16, align 8, !tbaa !9
  %910 = load i32, ptr %22, align 4, !tbaa !5
  %911 = sub nsw i32 %910, 1
  %912 = sext i32 %911 to i64
  %913 = getelementptr inbounds double, ptr %909, i64 %912
  %914 = load double, ptr %913, align 8, !tbaa !11
  %915 = load ptr, ptr %13, align 8, !tbaa !9
  %916 = load i32, ptr %22, align 4, !tbaa !5
  %917 = sub nsw i32 %916, 1
  %918 = sext i32 %917 to i64
  %919 = getelementptr inbounds double, ptr %915, i64 %918
  %920 = load double, ptr %919, align 8, !tbaa !11
  %921 = fsub double %914, %920
  %922 = call double @llvm.fabs.f64(double %921)
  br label %1030

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

930:                                              ; preds = %923
  %931 = load ptr, ptr %14, align 8, !tbaa !9
  %932 = load i32, ptr %22, align 4, !tbaa !5
  %933 = sub nsw i32 %932, 1
  %934 = sext i32 %933 to i64
  %935 = getelementptr inbounds double, ptr %931, i64 %934
  %936 = load double, ptr %935, align 8, !tbaa !11
  %937 = load ptr, ptr %15, align 8, !tbaa !9
  %938 = load i32, ptr %22, align 4, !tbaa !5
  %939 = sub nsw i32 %938, 1
  %940 = sext i32 %939 to i64
  %941 = getelementptr inbounds double, ptr %937, i64 %940
  %942 = load double, ptr %941, align 8, !tbaa !11
  %943 = fsub double %936, %942
  br label %1028

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

951:                                              ; preds = %944
  %952 = load ptr, ptr %14, 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 double, ptr %952, i64 %955
  %957 = load double, ptr %956, align 8, !tbaa !11
  %958 = load ptr, ptr %16, align 8, !tbaa !9
  %959 = load i32, ptr %22, align 4, !tbaa !5
  %960 = sub nsw i32 %959, 1
  %961 = sext i32 %960 to i64
  %962 = getelementptr inbounds double, ptr %958, i64 %961
  %963 = load double, ptr %962, align 8, !tbaa !11
  %964 = load ptr, ptr %13, align 8, !tbaa !9
  %965 = load i32, ptr %22, align 4, !tbaa !5
  %966 = sub nsw i32 %965, 1
  %967 = sext i32 %966 to i64
  %968 = getelementptr inbounds double, ptr %964, i64 %967
  %969 = load double, ptr %968, align 8, !tbaa !11
  %970 = fcmp oge double %963, %969
  br i1 %970, label %971, label %978

971:                                              ; preds = %951
  %972 = load ptr, ptr %16, align 8, !tbaa !9
  %973 = load i32, ptr %22, align 4, !tbaa !5
  %974 = sub nsw i32 %973, 1
  %975 = sext i32 %974 to i64
  %976 = getelementptr inbounds double, ptr %972, i64 %975
  %977 = load double, ptr %976, align 8, !tbaa !11
  br label %985

978:                                              ; preds = %951
  %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 double, ptr %979, i64 %982
  %984 = load double, ptr %983, align 8, !tbaa !11
  br label %985

985:                                              ; preds = %978, %971
  %986 = phi double [ %977, %971 ], [ %984, %978 ]
  %987 = fsub double %957, %986
  %988 = load ptr, ptr %16, align 8, !tbaa !9
  %989 = load i32, ptr %22, align 4, !tbaa !5
  %990 = sub nsw i32 %989, 1
  %991 = sext i32 %990 to i64
  %992 = getelementptr inbounds double, ptr %988, i64 %991
  %993 = load double, ptr %992, align 8, !tbaa !11
  %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 double, ptr %994, i64 %997
  %999 = load double, ptr %998, align 8, !tbaa !11
  %1000 = fcmp oge double %993, %999
  br i1 %1000, label %1001, label %1008

1001:                                             ; preds = %985
  %1002 = load ptr, ptr %13, align 8, !tbaa !9
  %1003 = load i32, ptr %22, align 4, !tbaa !5
  %1004 = sub nsw i32 %1003, 1
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds double, ptr %1002, i64 %1005
  %1007 = load double, ptr %1006, align 8, !tbaa !11
  br label %1015

1008:                                             ; preds = %985
  %1009 = load ptr, ptr %16, 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 double, ptr %1009, i64 %1012
  %1014 = load double, ptr %1013, align 8, !tbaa !11
  br label %1015

1015:                                             ; preds = %1008, %1001
  %1016 = phi double [ %1007, %1001 ], [ %1014, %1008 ]
  %1017 = load ptr, ptr %15, 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 double, ptr %1017, i64 %1020
  %1022 = load double, ptr %1021, align 8, !tbaa !11
  %1023 = fsub double %1016, %1022
  %1024 = fadd double %987, %1023
  br label %1026

1025:                                             ; preds = %944
  br label %1026

1026:                                             ; preds = %1025, %1015
  %1027 = phi double [ %1024, %1015 ], [ 0.000000e+00, %1025 ]
  br label %1028

1028:                                             ; preds = %1026, %930
  %1029 = phi double [ %943, %930 ], [ %1027, %1026 ]
  br label %1030

1030:                                             ; preds = %1028, %908
  %1031 = phi double [ %922, %908 ], [ %1029, %1028 ]
  br label %1032

1032:                                             ; preds = %1030, %892
  %1033 = phi double [ %900, %892 ], [ %1031, %1030 ]
  %1034 = fmul double %884, %1033
  %1035 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1036 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1035, i32 0, i32 8
  %1037 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1036, i64 0, i64 10
  %1038 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1037, i32 0, i32 1
  %1039 = load i32, ptr %1038, align 4, !tbaa !15
  %1040 = icmp eq i32 %1039, 2
  %1041 = zext i1 %1040 to i64
  %1042 = select i1 %1040, double 2.000000e+00, double 1.000000e+00
  %1043 = fdiv double %1034, %1042
  %1044 = fadd double %879, %1043
  %1045 = fcmp ole double %873, %1044
  br i1 %1045, label %1046, label %1244

1046:                                             ; preds = %1032
  %1047 = load ptr, ptr %16, align 8, !tbaa !9
  %1048 = load i32, ptr %22, align 4, !tbaa !5
  %1049 = sext i32 %1048 to i64
  %1050 = getelementptr inbounds double, ptr %1047, i64 %1049
  %1051 = load double, ptr %1050, align 8, !tbaa !11
  %1052 = load ptr, ptr %16, align 8, !tbaa !9
  %1053 = load i32, ptr %22, align 4, !tbaa !5
  %1054 = sub nsw i32 %1053, 1
  %1055 = sext i32 %1054 to i64
  %1056 = getelementptr inbounds double, ptr %1052, i64 %1055
  %1057 = load double, ptr %1056, align 8, !tbaa !11
  %1058 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1059 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1058, i32 0, i32 8
  %1060 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1059, i64 0, i64 10
  %1061 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1060, i32 0, i32 3
  %1062 = load double, ptr %1061, align 8, !tbaa !19
  %1063 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1064 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1063, i32 0, i32 8
  %1065 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1064, i64 0, i64 10
  %1066 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1065, i32 0, i32 2
  %1067 = load i32, ptr %1066, align 8, !tbaa !13
  %1068 = sitofp i32 %1067 to double
  %1069 = fcmp une double %1068, 0.000000e+00
  br i1 %1069, label %1070, label %1079

1070:                                             ; preds = %1046
  %1071 = load double, ptr %20, align 8, !tbaa !11
  %1072 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1073 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1072, i32 0, i32 8
  %1074 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1073, i64 0, i64 10
  %1075 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1074, i32 0, i32 2
  %1076 = load i32, ptr %1075, align 8, !tbaa !13
  %1077 = sitofp i32 %1076 to double
  %1078 = fdiv double %1071, %1077
  br label %1210

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

1086:                                             ; preds = %1079
  %1087 = load ptr, ptr %16, align 8, !tbaa !9
  %1088 = load i32, ptr %22, align 4, !tbaa !5
  %1089 = sub nsw i32 %1088, 1
  %1090 = sext i32 %1089 to i64
  %1091 = getelementptr inbounds double, ptr %1087, i64 %1090
  %1092 = load double, ptr %1091, align 8, !tbaa !11
  %1093 = load ptr, ptr %13, align 8, !tbaa !9
  %1094 = load i32, ptr %22, align 4, !tbaa !5
  %1095 = sub nsw i32 %1094, 1
  %1096 = sext i32 %1095 to i64
  %1097 = getelementptr inbounds double, ptr %1093, i64 %1096
  %1098 = load double, ptr %1097, align 8, !tbaa !11
  %1099 = fsub double %1092, %1098
  %1100 = call double @llvm.fabs.f64(double %1099)
  br label %1208

1101:                                             ; preds = %1079
  %1102 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1103 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1102, i32 0, i32 8
  %1104 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1103, i64 0, i64 10
  %1105 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1104, i32 0, i32 1
  %1106 = load i32, ptr %1105, align 4, !tbaa !15
  %1107 = icmp eq i32 %1106, 1
  br i1 %1107, label %1108, label %1122

1108:                                             ; preds = %1101
  %1109 = load ptr, ptr %14, align 8, !tbaa !9
  %1110 = load i32, ptr %22, align 4, !tbaa !5
  %1111 = sub nsw i32 %1110, 1
  %1112 = sext i32 %1111 to i64
  %1113 = getelementptr inbounds double, ptr %1109, i64 %1112
  %1114 = load double, ptr %1113, align 8, !tbaa !11
  %1115 = load ptr, ptr %15, align 8, !tbaa !9
  %1116 = load i32, ptr %22, align 4, !tbaa !5
  %1117 = sub nsw i32 %1116, 1
  %1118 = sext i32 %1117 to i64
  %1119 = getelementptr inbounds double, ptr %1115, i64 %1118
  %1120 = load double, ptr %1119, align 8, !tbaa !11
  %1121 = fsub double %1114, %1120
  br label %1206

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

1129:                                             ; preds = %1122
  %1130 = load ptr, ptr %14, align 8, !tbaa !9
  %1131 = load i32, ptr %22, align 4, !tbaa !5
  %1132 = sub nsw i32 %1131, 1
  %1133 = sext i32 %1132 to i64
  %1134 = getelementptr inbounds double, ptr %1130, i64 %1133
  %1135 = load double, ptr %1134, align 8, !tbaa !11
  %1136 = load ptr, ptr %16, align 8, !tbaa !9
  %1137 = load i32, ptr %22, align 4, !tbaa !5
  %1138 = sub nsw i32 %1137, 1
  %1139 = sext i32 %1138 to i64
  %1140 = getelementptr inbounds double, ptr %1136, i64 %1139
  %1141 = load double, ptr %1140, align 8, !tbaa !11
  %1142 = load ptr, ptr %13, align 8, !tbaa !9
  %1143 = load i32, ptr %22, align 4, !tbaa !5
  %1144 = sub nsw i32 %1143, 1
  %1145 = sext i32 %1144 to i64
  %1146 = getelementptr inbounds double, ptr %1142, i64 %1145
  %1147 = load double, ptr %1146, align 8, !tbaa !11
  %1148 = fcmp oge double %1141, %1147
  br i1 %1148, label %1149, label %1156

1149:                                             ; preds = %1129
  %1150 = load ptr, ptr %16, align 8, !tbaa !9
  %1151 = load i32, ptr %22, align 4, !tbaa !5
  %1152 = sub nsw i32 %1151, 1
  %1153 = sext i32 %1152 to i64
  %1154 = getelementptr inbounds double, ptr %1150, i64 %1153
  %1155 = load double, ptr %1154, align 8, !tbaa !11
  br label %1163

1156:                                             ; preds = %1129
  %1157 = load ptr, ptr %13, align 8, !tbaa !9
  %1158 = load i32, ptr %22, align 4, !tbaa !5
  %1159 = sub nsw i32 %1158, 1
  %1160 = sext i32 %1159 to i64
  %1161 = getelementptr inbounds double, ptr %1157, i64 %1160
  %1162 = load double, ptr %1161, align 8, !tbaa !11
  br label %1163

1163:                                             ; preds = %1156, %1149
  %1164 = phi double [ %1155, %1149 ], [ %1162, %1156 ]
  %1165 = fsub double %1135, %1164
  %1166 = load ptr, ptr %16, align 8, !tbaa !9
  %1167 = load i32, ptr %22, align 4, !tbaa !5
  %1168 = sub nsw i32 %1167, 1
  %1169 = sext i32 %1168 to i64
  %1170 = getelementptr inbounds double, ptr %1166, i64 %1169
  %1171 = load double, ptr %1170, align 8, !tbaa !11
  %1172 = load ptr, ptr %13, align 8, !tbaa !9
  %1173 = load i32, ptr %22, align 4, !tbaa !5
  %1174 = sub nsw i32 %1173, 1
  %1175 = sext i32 %1174 to i64
  %1176 = getelementptr inbounds double, ptr %1172, i64 %1175
  %1177 = load double, ptr %1176, align 8, !tbaa !11
  %1178 = fcmp oge double %1171, %1177
  br i1 %1178, label %1179, label %1186

1179:                                             ; preds = %1163
  %1180 = load ptr, ptr %13, align 8, !tbaa !9
  %1181 = load i32, ptr %22, align 4, !tbaa !5
  %1182 = sub nsw i32 %1181, 1
  %1183 = sext i32 %1182 to i64
  %1184 = getelementptr inbounds double, ptr %1180, i64 %1183
  %1185 = load double, ptr %1184, align 8, !tbaa !11
  br label %1193

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

1193:                                             ; preds = %1186, %1179
  %1194 = phi double [ %1185, %1179 ], [ %1192, %1186 ]
  %1195 = load ptr, ptr %15, align 8, !tbaa !9
  %1196 = load i32, ptr %22, align 4, !tbaa !5
  %1197 = sub nsw i32 %1196, 1
  %1198 = sext i32 %1197 to i64
  %1199 = getelementptr inbounds double, ptr %1195, i64 %1198
  %1200 = load double, ptr %1199, align 8, !tbaa !11
  %1201 = fsub double %1194, %1200
  %1202 = fadd double %1165, %1201
  br label %1204

1203:                                             ; preds = %1122
  br label %1204

1204:                                             ; preds = %1203, %1193
  %1205 = phi double [ %1202, %1193 ], [ 0.000000e+00, %1203 ]
  br label %1206

1206:                                             ; preds = %1204, %1108
  %1207 = phi double [ %1121, %1108 ], [ %1205, %1204 ]
  br label %1208

1208:                                             ; preds = %1206, %1086
  %1209 = phi double [ %1100, %1086 ], [ %1207, %1206 ]
  br label %1210

1210:                                             ; preds = %1208, %1070
  %1211 = phi double [ %1078, %1070 ], [ %1209, %1208 ]
  %1212 = fmul double %1062, %1211
  %1213 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1214 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1213, i32 0, i32 8
  %1215 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1214, i64 0, i64 10
  %1216 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1215, i32 0, i32 1
  %1217 = load i32, ptr %1216, align 4, !tbaa !15
  %1218 = icmp eq i32 %1217, 2
  %1219 = zext i1 %1218 to i64
  %1220 = select i1 %1218, double 2.000000e+00, double 1.000000e+00
  %1221 = fdiv double %1212, %1220
  %1222 = fsub double %1057, %1221
  %1223 = fcmp oge double %1051, %1222
  br i1 %1223, label %1224, label %1244

1224:                                             ; preds = %1210
  %1225 = load ptr, ptr %16, align 8, !tbaa !9
  %1226 = load i32, ptr %22, align 4, !tbaa !5
  %1227 = sext i32 %1226 to i64
  %1228 = getelementptr inbounds double, ptr %1225, i64 %1227
  %1229 = load double, ptr %1228, align 8, !tbaa !11
  %1230 = load ptr, ptr %13, align 8, !tbaa !9
  %1231 = load i32, ptr %22, align 4, !tbaa !5
  %1232 = sext i32 %1231 to i64
  %1233 = getelementptr inbounds double, ptr %1230, i64 %1232
  %1234 = load double, ptr %1233, align 8, !tbaa !11
  %1235 = fcmp oge double %1229, %1234
  %1236 = zext i1 %1235 to i64
  %1237 = select i1 %1235, i32 1, i32 -1
  %1238 = mul nsw i32 %1237, 100
  %1239 = load ptr, ptr %19, align 8, !tbaa !9
  %1240 = load i32, ptr %23, align 4, !tbaa !5
  %1241 = add nsw i32 %1240, 1
  store i32 %1241, ptr %23, align 4, !tbaa !5
  %1242 = sext i32 %1240 to i64
  %1243 = getelementptr inbounds i32, ptr %1239, i64 %1242
  store i32 %1238, ptr %1243, align 4, !tbaa !5
  br label %1250

1244:                                             ; preds = %1210, %1032, %855, %690, %491
  %1245 = load ptr, ptr %19, align 8, !tbaa !9
  %1246 = load i32, ptr %23, align 4, !tbaa !5
  %1247 = add nsw i32 %1246, 1
  store i32 %1247, ptr %23, align 4, !tbaa !5
  %1248 = sext i32 %1246 to i64
  %1249 = getelementptr inbounds i32, ptr %1245, i64 %1248
  store i32 0, ptr %1249, align 4, !tbaa !5
  br label %1250

1250:                                             ; preds = %1244, %1224
  %1251 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1252 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1251, i32 0, i32 8
  %1253 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1252, i64 0, i64 10
  %1254 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1253, i32 0, i32 1
  %1255 = load i32, ptr %1254, align 4, !tbaa !15
  %1256 = icmp eq i32 %1255, 0
  br i1 %1256, label %1257, label %1272

1257:                                             ; preds = %1250
  %1258 = load ptr, ptr %16, align 8, !tbaa !9
  %1259 = load i32, ptr %22, align 4, !tbaa !5
  %1260 = sub nsw i32 %1259, 1
  %1261 = sext i32 %1260 to i64
  %1262 = getelementptr inbounds double, ptr %1258, i64 %1261
  %1263 = load double, ptr %1262, align 8, !tbaa !11
  %1264 = load ptr, ptr %13, align 8, !tbaa !9
  %1265 = load i32, ptr %22, align 4, !tbaa !5
  %1266 = sub nsw i32 %1265, 1
  %1267 = sext i32 %1266 to i64
  %1268 = getelementptr inbounds double, ptr %1264, i64 %1267
  %1269 = load double, ptr %1268, align 8, !tbaa !11
  %1270 = fsub double %1263, %1269
  %1271 = call double @llvm.fabs.f64(double %1270)
  br label %1379

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

1279:                                             ; preds = %1272
  %1280 = load ptr, ptr %14, align 8, !tbaa !9
  %1281 = load i32, ptr %22, align 4, !tbaa !5
  %1282 = sub nsw i32 %1281, 1
  %1283 = sext i32 %1282 to i64
  %1284 = getelementptr inbounds double, ptr %1280, i64 %1283
  %1285 = load double, ptr %1284, align 8, !tbaa !11
  %1286 = load ptr, ptr %15, align 8, !tbaa !9
  %1287 = load i32, ptr %22, align 4, !tbaa !5
  %1288 = sub nsw i32 %1287, 1
  %1289 = sext i32 %1288 to i64
  %1290 = getelementptr inbounds double, ptr %1286, i64 %1289
  %1291 = load double, ptr %1290, align 8, !tbaa !11
  %1292 = fsub double %1285, %1291
  br label %1377

1293:                                             ; preds = %1272
  %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, 2
  br i1 %1299, label %1300, label %1374

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 double, ptr %1301, i64 %1304
  %1306 = load double, ptr %1305, align 8, !tbaa !11
  %1307 = load ptr, ptr %16, 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 double, ptr %1307, i64 %1310
  %1312 = load double, ptr %1311, align 8, !tbaa !11
  %1313 = load ptr, ptr %13, align 8, !tbaa !9
  %1314 = load i32, ptr %22, align 4, !tbaa !5
  %1315 = sub nsw i32 %1314, 1
  %1316 = sext i32 %1315 to i64
  %1317 = getelementptr inbounds double, ptr %1313, i64 %1316
  %1318 = load double, ptr %1317, align 8, !tbaa !11
  %1319 = fcmp oge double %1312, %1318
  br i1 %1319, label %1320, label %1327

1320:                                             ; preds = %1300
  %1321 = load ptr, ptr %16, align 8, !tbaa !9
  %1322 = load i32, ptr %22, align 4, !tbaa !5
  %1323 = sub nsw i32 %1322, 1
  %1324 = sext i32 %1323 to i64
  %1325 = getelementptr inbounds double, ptr %1321, i64 %1324
  %1326 = load double, ptr %1325, align 8, !tbaa !11
  br label %1334

1327:                                             ; preds = %1300
  %1328 = load ptr, ptr %13, 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 double, ptr %1328, i64 %1331
  %1333 = load double, ptr %1332, align 8, !tbaa !11
  br label %1334

1334:                                             ; preds = %1327, %1320
  %1335 = phi double [ %1326, %1320 ], [ %1333, %1327 ]
  %1336 = fsub double %1306, %1335
  %1337 = load ptr, ptr %16, align 8, !tbaa !9
  %1338 = load i32, ptr %22, align 4, !tbaa !5
  %1339 = sub nsw i32 %1338, 1
  %1340 = sext i32 %1339 to i64
  %1341 = getelementptr inbounds double, ptr %1337, i64 %1340
  %1342 = load double, ptr %1341, align 8, !tbaa !11
  %1343 = load ptr, ptr %13, align 8, !tbaa !9
  %1344 = load i32, ptr %22, align 4, !tbaa !5
  %1345 = sub nsw i32 %1344, 1
  %1346 = sext i32 %1345 to i64
  %1347 = getelementptr inbounds double, ptr %1343, i64 %1346
  %1348 = load double, ptr %1347, align 8, !tbaa !11
  %1349 = fcmp oge double %1342, %1348
  br i1 %1349, label %1350, label %1357

1350:                                             ; preds = %1334
  %1351 = load ptr, ptr %13, align 8, !tbaa !9
  %1352 = load i32, ptr %22, align 4, !tbaa !5
  %1353 = sub nsw i32 %1352, 1
  %1354 = sext i32 %1353 to i64
  %1355 = getelementptr inbounds double, ptr %1351, i64 %1354
  %1356 = load double, ptr %1355, align 8, !tbaa !11
  br label %1364

1357:                                             ; preds = %1334
  %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 double, ptr %1358, i64 %1361
  %1363 = load double, ptr %1362, align 8, !tbaa !11
  br label %1364

1364:                                             ; preds = %1357, %1350
  %1365 = phi double [ %1356, %1350 ], [ %1363, %1357 ]
  %1366 = load ptr, ptr %15, align 8, !tbaa !9
  %1367 = load i32, ptr %22, align 4, !tbaa !5
  %1368 = sub nsw i32 %1367, 1
  %1369 = sext i32 %1368 to i64
  %1370 = getelementptr inbounds double, ptr %1366, i64 %1369
  %1371 = load double, ptr %1370, align 8, !tbaa !11
  %1372 = fsub double %1365, %1371
  %1373 = fadd double %1336, %1372
  br label %1375

1374:                                             ; preds = %1293
  br label %1375

1375:                                             ; preds = %1374, %1364
  %1376 = phi double [ %1373, %1364 ], [ 0.000000e+00, %1374 ]
  br label %1377

1377:                                             ; preds = %1375, %1279
  %1378 = phi double [ %1292, %1279 ], [ %1376, %1375 ]
  br label %1379

1379:                                             ; preds = %1377, %1257
  %1380 = phi double [ %1271, %1257 ], [ %1378, %1377 ]
  %1381 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1382 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1381, i32 0, i32 8
  %1383 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1382, i64 0, i64 10
  %1384 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1383, i32 0, i32 1
  %1385 = load i32, ptr %1384, align 4, !tbaa !15
  %1386 = icmp eq i32 %1385, 0
  br i1 %1386, label %1387, label %1402

1387:                                             ; preds = %1379
  %1388 = load ptr, ptr %16, align 8, !tbaa !9
  %1389 = load i32, ptr %25, align 4, !tbaa !5
  %1390 = sub nsw i32 %1389, 1
  %1391 = sext i32 %1390 to i64
  %1392 = getelementptr inbounds double, ptr %1388, i64 %1391
  %1393 = load double, ptr %1392, align 8, !tbaa !11
  %1394 = load ptr, ptr %13, align 8, !tbaa !9
  %1395 = load i32, ptr %25, align 4, !tbaa !5
  %1396 = sub nsw i32 %1395, 1
  %1397 = sext i32 %1396 to i64
  %1398 = getelementptr inbounds double, ptr %1394, i64 %1397
  %1399 = load double, ptr %1398, align 8, !tbaa !11
  %1400 = fsub double %1393, %1399
  %1401 = call double @llvm.fabs.f64(double %1400)
  br label %1509

1402:                                             ; preds = %1379
  %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, 1
  br i1 %1408, label %1409, label %1423

1409:                                             ; preds = %1402
  %1410 = load ptr, ptr %14, 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 double, ptr %1410, i64 %1413
  %1415 = load double, ptr %1414, align 8, !tbaa !11
  %1416 = load ptr, ptr %15, 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 double, ptr %1416, i64 %1419
  %1421 = load double, ptr %1420, align 8, !tbaa !11
  %1422 = fsub double %1415, %1421
  br label %1507

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

1430:                                             ; preds = %1423
  %1431 = load ptr, ptr %14, align 8, !tbaa !9
  %1432 = load i32, ptr %25, align 4, !tbaa !5
  %1433 = sub nsw i32 %1432, 1
  %1434 = sext i32 %1433 to i64
  %1435 = getelementptr inbounds double, ptr %1431, i64 %1434
  %1436 = load double, ptr %1435, align 8, !tbaa !11
  %1437 = load ptr, ptr %16, align 8, !tbaa !9
  %1438 = load i32, ptr %25, align 4, !tbaa !5
  %1439 = sub nsw i32 %1438, 1
  %1440 = sext i32 %1439 to i64
  %1441 = getelementptr inbounds double, ptr %1437, i64 %1440
  %1442 = load double, ptr %1441, align 8, !tbaa !11
  %1443 = load ptr, ptr %13, align 8, !tbaa !9
  %1444 = load i32, ptr %25, align 4, !tbaa !5
  %1445 = sub nsw i32 %1444, 1
  %1446 = sext i32 %1445 to i64
  %1447 = getelementptr inbounds double, ptr %1443, i64 %1446
  %1448 = load double, ptr %1447, align 8, !tbaa !11
  %1449 = fcmp oge double %1442, %1448
  br i1 %1449, label %1450, label %1457

1450:                                             ; preds = %1430
  %1451 = load ptr, ptr %16, align 8, !tbaa !9
  %1452 = load i32, ptr %25, align 4, !tbaa !5
  %1453 = sub nsw i32 %1452, 1
  %1454 = sext i32 %1453 to i64
  %1455 = getelementptr inbounds double, ptr %1451, i64 %1454
  %1456 = load double, ptr %1455, align 8, !tbaa !11
  br label %1464

1457:                                             ; preds = %1430
  %1458 = load ptr, ptr %13, align 8, !tbaa !9
  %1459 = load i32, ptr %25, align 4, !tbaa !5
  %1460 = sub nsw i32 %1459, 1
  %1461 = sext i32 %1460 to i64
  %1462 = getelementptr inbounds double, ptr %1458, i64 %1461
  %1463 = load double, ptr %1462, align 8, !tbaa !11
  br label %1464

1464:                                             ; preds = %1457, %1450
  %1465 = phi double [ %1456, %1450 ], [ %1463, %1457 ]
  %1466 = fsub double %1436, %1465
  %1467 = load ptr, ptr %16, align 8, !tbaa !9
  %1468 = load i32, ptr %25, align 4, !tbaa !5
  %1469 = sub nsw i32 %1468, 1
  %1470 = sext i32 %1469 to i64
  %1471 = getelementptr inbounds double, ptr %1467, i64 %1470
  %1472 = load double, ptr %1471, align 8, !tbaa !11
  %1473 = load ptr, ptr %13, align 8, !tbaa !9
  %1474 = load i32, ptr %25, align 4, !tbaa !5
  %1475 = sub nsw i32 %1474, 1
  %1476 = sext i32 %1475 to i64
  %1477 = getelementptr inbounds double, ptr %1473, i64 %1476
  %1478 = load double, ptr %1477, align 8, !tbaa !11
  %1479 = fcmp oge double %1472, %1478
  br i1 %1479, label %1480, label %1487

1480:                                             ; preds = %1464
  %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 double, ptr %1481, i64 %1484
  %1486 = load double, ptr %1485, align 8, !tbaa !11
  br label %1494

1487:                                             ; preds = %1464
  %1488 = load ptr, ptr %16, align 8, !tbaa !9
  %1489 = load i32, ptr %25, align 4, !tbaa !5
  %1490 = sub nsw i32 %1489, 1
  %1491 = sext i32 %1490 to i64
  %1492 = getelementptr inbounds double, ptr %1488, i64 %1491
  %1493 = load double, ptr %1492, align 8, !tbaa !11
  br label %1494

1494:                                             ; preds = %1487, %1480
  %1495 = phi double [ %1486, %1480 ], [ %1493, %1487 ]
  %1496 = load ptr, ptr %15, 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 double, ptr %1496, i64 %1499
  %1501 = load double, ptr %1500, align 8, !tbaa !11
  %1502 = fsub double %1495, %1501
  %1503 = fadd double %1466, %1502
  br label %1505

1504:                                             ; preds = %1423
  br label %1505

1505:                                             ; preds = %1504, %1494
  %1506 = phi double [ %1503, %1494 ], [ 0.000000e+00, %1504 ]
  br label %1507

1507:                                             ; preds = %1505, %1409
  %1508 = phi double [ %1422, %1409 ], [ %1506, %1505 ]
  br label %1509

1509:                                             ; preds = %1507, %1387
  %1510 = phi double [ %1401, %1387 ], [ %1508, %1507 ]
  %1511 = fsub double %1380, %1510
  %1512 = load double, ptr %20, align 8, !tbaa !11
  %1513 = fadd double %1512, %1511
  store double %1513, ptr %20, align 8, !tbaa !11
  store i32 1, ptr %24, align 4, !tbaa !5
  br label %1514

1514:                                             ; preds = %1812, %1509
  %1515 = load i32, ptr %24, align 4, !tbaa !5
  %1516 = icmp sge i32 %1515, 0
  br i1 %1516, label %1517, label %1815

1517:                                             ; preds = %1514
  %1518 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1519 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1518, i32 0, i32 8
  %1520 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1519, i64 0, i64 0
  %1521 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1520, i32 0, i32 1
  %1522 = load i32, ptr %1521, align 4, !tbaa !15
  %1523 = icmp eq i32 %1522, 0
  br i1 %1523, label %1524, label %1541

1524:                                             ; preds = %1517
  %1525 = load ptr, ptr %16, align 8, !tbaa !9
  %1526 = load i32, ptr %22, align 4, !tbaa !5
  %1527 = load i32, ptr %24, align 4, !tbaa !5
  %1528 = sub nsw i32 %1526, %1527
  %1529 = sext i32 %1528 to i64
  %1530 = getelementptr inbounds double, ptr %1525, i64 %1529
  %1531 = load double, ptr %1530, align 8, !tbaa !11
  %1532 = load ptr, ptr %13, align 8, !tbaa !9
  %1533 = load i32, ptr %22, align 4, !tbaa !5
  %1534 = load i32, ptr %24, align 4, !tbaa !5
  %1535 = sub nsw i32 %1533, %1534
  %1536 = sext i32 %1535 to i64
  %1537 = getelementptr inbounds double, ptr %1532, i64 %1536
  %1538 = load double, ptr %1537, align 8, !tbaa !11
  %1539 = fsub double %1531, %1538
  %1540 = call double @llvm.fabs.f64(double %1539)
  br label %1660

1541:                                             ; preds = %1517
  %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, 1
  br i1 %1547, label %1548, label %1564

1548:                                             ; preds = %1541
  %1549 = load ptr, ptr %14, 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 double, ptr %1549, i64 %1553
  %1555 = load double, ptr %1554, align 8, !tbaa !11
  %1556 = load ptr, ptr %15, 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 double, ptr %1556, i64 %1560
  %1562 = load double, ptr %1561, align 8, !tbaa !11
  %1563 = fsub double %1555, %1562
  br label %1658

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

1571:                                             ; preds = %1564
  %1572 = load ptr, ptr %14, align 8, !tbaa !9
  %1573 = load i32, ptr %22, align 4, !tbaa !5
  %1574 = load i32, ptr %24, align 4, !tbaa !5
  %1575 = sub nsw i32 %1573, %1574
  %1576 = sext i32 %1575 to i64
  %1577 = getelementptr inbounds double, ptr %1572, i64 %1576
  %1578 = load double, ptr %1577, align 8, !tbaa !11
  %1579 = load ptr, ptr %16, align 8, !tbaa !9
  %1580 = load i32, ptr %22, align 4, !tbaa !5
  %1581 = load i32, ptr %24, align 4, !tbaa !5
  %1582 = sub nsw i32 %1580, %1581
  %1583 = sext i32 %1582 to i64
  %1584 = getelementptr inbounds double, ptr %1579, i64 %1583
  %1585 = load double, ptr %1584, align 8, !tbaa !11
  %1586 = load ptr, ptr %13, align 8, !tbaa !9
  %1587 = load i32, ptr %22, align 4, !tbaa !5
  %1588 = load i32, ptr %24, align 4, !tbaa !5
  %1589 = sub nsw i32 %1587, %1588
  %1590 = sext i32 %1589 to i64
  %1591 = getelementptr inbounds double, ptr %1586, i64 %1590
  %1592 = load double, ptr %1591, align 8, !tbaa !11
  %1593 = fcmp oge double %1585, %1592
  br i1 %1593, label %1594, label %1602

1594:                                             ; preds = %1571
  %1595 = load ptr, ptr %16, align 8, !tbaa !9
  %1596 = load i32, ptr %22, align 4, !tbaa !5
  %1597 = load i32, ptr %24, align 4, !tbaa !5
  %1598 = sub nsw i32 %1596, %1597
  %1599 = sext i32 %1598 to i64
  %1600 = getelementptr inbounds double, ptr %1595, i64 %1599
  %1601 = load double, ptr %1600, align 8, !tbaa !11
  br label %1610

1602:                                             ; preds = %1571
  %1603 = load ptr, ptr %13, align 8, !tbaa !9
  %1604 = load i32, ptr %22, align 4, !tbaa !5
  %1605 = load i32, ptr %24, align 4, !tbaa !5
  %1606 = sub nsw i32 %1604, %1605
  %1607 = sext i32 %1606 to i64
  %1608 = getelementptr inbounds double, ptr %1603, i64 %1607
  %1609 = load double, ptr %1608, align 8, !tbaa !11
  br label %1610

1610:                                             ; preds = %1602, %1594
  %1611 = phi double [ %1601, %1594 ], [ %1609, %1602 ]
  %1612 = fsub double %1578, %1611
  %1613 = load ptr, ptr %16, align 8, !tbaa !9
  %1614 = load i32, ptr %22, align 4, !tbaa !5
  %1615 = load i32, ptr %24, align 4, !tbaa !5
  %1616 = sub nsw i32 %1614, %1615
  %1617 = sext i32 %1616 to i64
  %1618 = getelementptr inbounds double, ptr %1613, i64 %1617
  %1619 = load double, ptr %1618, align 8, !tbaa !11
  %1620 = load ptr, ptr %13, 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 double, ptr %1620, i64 %1624
  %1626 = load double, ptr %1625, align 8, !tbaa !11
  %1627 = fcmp oge double %1619, %1626
  br i1 %1627, label %1628, label %1636

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

1636:                                             ; preds = %1610
  %1637 = load ptr, ptr %16, align 8, !tbaa !9
  %1638 = load i32, ptr %22, align 4, !tbaa !5
  %1639 = load i32, ptr %24, align 4, !tbaa !5
  %1640 = sub nsw i32 %1638, %1639
  %1641 = sext i32 %1640 to i64
  %1642 = getelementptr inbounds double, ptr %1637, i64 %1641
  %1643 = load double, ptr %1642, align 8, !tbaa !11
  br label %1644

1644:                                             ; preds = %1636, %1628
  %1645 = phi double [ %1635, %1628 ], [ %1643, %1636 ]
  %1646 = load ptr, ptr %15, align 8, !tbaa !9
  %1647 = load i32, ptr %22, align 4, !tbaa !5
  %1648 = load i32, ptr %24, align 4, !tbaa !5
  %1649 = sub nsw i32 %1647, %1648
  %1650 = sext i32 %1649 to i64
  %1651 = getelementptr inbounds double, ptr %1646, i64 %1650
  %1652 = load double, ptr %1651, align 8, !tbaa !11
  %1653 = fsub double %1645, %1652
  %1654 = fadd double %1612, %1653
  br label %1656

1655:                                             ; preds = %1564
  br label %1656

1656:                                             ; preds = %1655, %1644
  %1657 = phi double [ %1654, %1644 ], [ 0.000000e+00, %1655 ]
  br label %1658

1658:                                             ; preds = %1656, %1548
  %1659 = phi double [ %1563, %1548 ], [ %1657, %1656 ]
  br label %1660

1660:                                             ; preds = %1658, %1524
  %1661 = phi double [ %1540, %1524 ], [ %1659, %1658 ]
  %1662 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1663 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1662, i32 0, i32 8
  %1664 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1663, i64 0, i64 0
  %1665 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1664, i32 0, i32 1
  %1666 = load i32, ptr %1665, align 4, !tbaa !15
  %1667 = icmp eq i32 %1666, 0
  br i1 %1667, label %1668, label %1685

1668:                                             ; preds = %1660
  %1669 = load ptr, ptr %16, align 8, !tbaa !9
  %1670 = load i32, ptr %26, align 4, !tbaa !5
  %1671 = load i32, ptr %24, align 4, !tbaa !5
  %1672 = sub nsw i32 %1670, %1671
  %1673 = sext i32 %1672 to i64
  %1674 = getelementptr inbounds double, ptr %1669, i64 %1673
  %1675 = load double, ptr %1674, align 8, !tbaa !11
  %1676 = load ptr, ptr %13, align 8, !tbaa !9
  %1677 = load i32, ptr %26, align 4, !tbaa !5
  %1678 = load i32, ptr %24, align 4, !tbaa !5
  %1679 = sub nsw i32 %1677, %1678
  %1680 = sext i32 %1679 to i64
  %1681 = getelementptr inbounds double, ptr %1676, i64 %1680
  %1682 = load double, ptr %1681, align 8, !tbaa !11
  %1683 = fsub double %1675, %1682
  %1684 = call double @llvm.fabs.f64(double %1683)
  br label %1804

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

1692:                                             ; preds = %1685
  %1693 = load ptr, ptr %14, align 8, !tbaa !9
  %1694 = load i32, ptr %26, align 4, !tbaa !5
  %1695 = load i32, ptr %24, align 4, !tbaa !5
  %1696 = sub nsw i32 %1694, %1695
  %1697 = sext i32 %1696 to i64
  %1698 = getelementptr inbounds double, ptr %1693, i64 %1697
  %1699 = load double, ptr %1698, align 8, !tbaa !11
  %1700 = load ptr, ptr %15, align 8, !tbaa !9
  %1701 = load i32, ptr %26, align 4, !tbaa !5
  %1702 = load i32, ptr %24, align 4, !tbaa !5
  %1703 = sub nsw i32 %1701, %1702
  %1704 = sext i32 %1703 to i64
  %1705 = getelementptr inbounds double, ptr %1700, i64 %1704
  %1706 = load double, ptr %1705, align 8, !tbaa !11
  %1707 = fsub double %1699, %1706
  br label %1802

1708:                                             ; preds = %1685
  %1709 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1710 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1709, i32 0, i32 8
  %1711 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1710, i64 0, i64 0
  %1712 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1711, i32 0, i32 1
  %1713 = load i32, ptr %1712, align 4, !tbaa !15
  %1714 = icmp eq i32 %1713, 2
  br i1 %1714, label %1715, label %1799

1715:                                             ; preds = %1708
  %1716 = load ptr, ptr %14, align 8, !tbaa !9
  %1717 = load i32, ptr %26, align 4, !tbaa !5
  %1718 = load i32, ptr %24, align 4, !tbaa !5
  %1719 = sub nsw i32 %1717, %1718
  %1720 = sext i32 %1719 to i64
  %1721 = getelementptr inbounds double, ptr %1716, i64 %1720
  %1722 = load double, ptr %1721, align 8, !tbaa !11
  %1723 = load ptr, ptr %16, align 8, !tbaa !9
  %1724 = load i32, ptr %26, align 4, !tbaa !5
  %1725 = load i32, ptr %24, align 4, !tbaa !5
  %1726 = sub nsw i32 %1724, %1725
  %1727 = sext i32 %1726 to i64
  %1728 = getelementptr inbounds double, ptr %1723, i64 %1727
  %1729 = load double, ptr %1728, align 8, !tbaa !11
  %1730 = load ptr, ptr %13, align 8, !tbaa !9
  %1731 = load i32, ptr %26, align 4, !tbaa !5
  %1732 = load i32, ptr %24, align 4, !tbaa !5
  %1733 = sub nsw i32 %1731, %1732
  %1734 = sext i32 %1733 to i64
  %1735 = getelementptr inbounds double, ptr %1730, i64 %1734
  %1736 = load double, ptr %1735, align 8, !tbaa !11
  %1737 = fcmp oge double %1729, %1736
  br i1 %1737, label %1738, label %1746

1738:                                             ; preds = %1715
  %1739 = load ptr, ptr %16, align 8, !tbaa !9
  %1740 = load i32, ptr %26, align 4, !tbaa !5
  %1741 = load i32, ptr %24, align 4, !tbaa !5
  %1742 = sub nsw i32 %1740, %1741
  %1743 = sext i32 %1742 to i64
  %1744 = getelementptr inbounds double, ptr %1739, i64 %1743
  %1745 = load double, ptr %1744, align 8, !tbaa !11
  br label %1754

1746:                                             ; preds = %1715
  %1747 = load ptr, ptr %13, align 8, !tbaa !9
  %1748 = load i32, ptr %26, align 4, !tbaa !5
  %1749 = load i32, ptr %24, align 4, !tbaa !5
  %1750 = sub nsw i32 %1748, %1749
  %1751 = sext i32 %1750 to i64
  %1752 = getelementptr inbounds double, ptr %1747, i64 %1751
  %1753 = load double, ptr %1752, align 8, !tbaa !11
  br label %1754

1754:                                             ; preds = %1746, %1738
  %1755 = phi double [ %1745, %1738 ], [ %1753, %1746 ]
  %1756 = fsub double %1722, %1755
  %1757 = load ptr, ptr %16, 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 double, ptr %1757, i64 %1761
  %1763 = load double, ptr %1762, align 8, !tbaa !11
  %1764 = load ptr, ptr %13, align 8, !tbaa !9
  %1765 = load i32, ptr %26, align 4, !tbaa !5
  %1766 = load i32, ptr %24, align 4, !tbaa !5
  %1767 = sub nsw i32 %1765, %1766
  %1768 = sext i32 %1767 to i64
  %1769 = getelementptr inbounds double, ptr %1764, i64 %1768
  %1770 = load double, ptr %1769, align 8, !tbaa !11
  %1771 = fcmp oge double %1763, %1770
  br i1 %1771, label %1772, label %1780

1772:                                             ; preds = %1754
  %1773 = load ptr, ptr %13, align 8, !tbaa !9
  %1774 = load i32, ptr %26, align 4, !tbaa !5
  %1775 = load i32, ptr %24, align 4, !tbaa !5
  %1776 = sub nsw i32 %1774, %1775
  %1777 = sext i32 %1776 to i64
  %1778 = getelementptr inbounds double, ptr %1773, i64 %1777
  %1779 = load double, ptr %1778, align 8, !tbaa !11
  br label %1788

1780:                                             ; preds = %1754
  %1781 = load ptr, ptr %16, align 8, !tbaa !9
  %1782 = load i32, ptr %26, align 4, !tbaa !5
  %1783 = load i32, ptr %24, align 4, !tbaa !5
  %1784 = sub nsw i32 %1782, %1783
  %1785 = sext i32 %1784 to i64
  %1786 = getelementptr inbounds double, ptr %1781, i64 %1785
  %1787 = load double, ptr %1786, align 8, !tbaa !11
  br label %1788

1788:                                             ; preds = %1780, %1772
  %1789 = phi double [ %1779, %1772 ], [ %1787, %1780 ]
  %1790 = load ptr, ptr %15, align 8, !tbaa !9
  %1791 = load i32, ptr %26, align 4, !tbaa !5
  %1792 = load i32, ptr %24, align 4, !tbaa !5
  %1793 = sub nsw i32 %1791, %1792
  %1794 = sext i32 %1793 to i64
  %1795 = getelementptr inbounds double, ptr %1790, i64 %1794
  %1796 = load double, ptr %1795, align 8, !tbaa !11
  %1797 = fsub double %1789, %1796
  %1798 = fadd double %1756, %1797
  br label %1800

1799:                                             ; preds = %1708
  br label %1800

1800:                                             ; preds = %1799, %1788
  %1801 = phi double [ %1798, %1788 ], [ 0.000000e+00, %1799 ]
  br label %1802

1802:                                             ; preds = %1800, %1692
  %1803 = phi double [ %1707, %1692 ], [ %1801, %1800 ]
  br label %1804

1804:                                             ; preds = %1802, %1668
  %1805 = phi double [ %1684, %1668 ], [ %1803, %1802 ]
  %1806 = fsub double %1661, %1805
  %1807 = load i32, ptr %24, align 4, !tbaa !5
  %1808 = sext i32 %1807 to i64
  %1809 = getelementptr inbounds [2 x double], ptr %21, i64 0, i64 %1808
  %1810 = load double, ptr %1809, align 8, !tbaa !11
  %1811 = fadd double %1810, %1806
  store double %1811, ptr %1809, align 8, !tbaa !11
  br label %1812

1812:                                             ; preds = %1804
  %1813 = load i32, ptr %24, align 4, !tbaa !5
  %1814 = add nsw i32 %1813, -1
  store i32 %1814, ptr %24, align 4, !tbaa !5
  br label %1514, !llvm.loop !20

1815:                                             ; preds = %1514
  %1816 = load i32, ptr %22, align 4, !tbaa !5
  %1817 = add nsw i32 %1816, 1
  store i32 %1817, ptr %22, align 4, !tbaa !5
  %1818 = load i32, ptr %25, align 4, !tbaa !5
  %1819 = add nsw i32 %1818, 1
  store i32 %1819, ptr %25, align 4, !tbaa !5
  %1820 = load i32, ptr %26, align 4, !tbaa !5
  %1821 = add nsw i32 %1820, 1
  store i32 %1821, ptr %26, align 4, !tbaa !5
  br label %1822

1822:                                             ; preds = %1815
  %1823 = load i32, ptr %22, align 4, !tbaa !5
  %1824 = load i32, ptr %12, align 4, !tbaa !5
  %1825 = icmp sle i32 %1823, %1824
  br i1 %1825, label %491, label %1826, !llvm.loop !21

1826:                                             ; preds = %1822
  %1827 = load i32, ptr %23, align 4, !tbaa !5
  %1828 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 %1827, ptr %1828, align 4, !tbaa !5
  %1829 = load i32, ptr %11, align 4, !tbaa !5
  %1830 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 %1829, ptr %1830, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %28, align 4
  br label %1831

1831:                                             ; preds = %1826, %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
  %1832 = load i32, ptr %10, align 4
  ret i32 %1832
}

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

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

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

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

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

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


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

@TA_Globals = external local_unnamed_addr global ptr, align 8

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

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

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

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 %.preheader525

.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 %.preheader525 [
    i32 0, label %.lr.ph.split.us.preheader
    i32 1, label %.lr.ph.split.us528.preheader
    i32 2, label %.lr.ph.split.us533.preheader
  ]

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

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

.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.iv589 = phi i64 [ %40, %.lr.ph.split.us.preheader ], [ %indvars.iv.next590, %.lr.ph.split.us ]
  %.0422526.us = phi double [ 0.000000e+00, %.lr.ph.split.us.preheader ], [ %49, %.lr.ph.split.us ]
  %42 = add nsw i64 %indvars.iv589, -1
  %43 = getelementptr inbounds double, ptr %5, i64 %42
  %44 = load double, ptr %43, align 8, !tbaa !15
  %45 = getelementptr inbounds double, ptr %2, i64 %42
  %46 = load double, ptr %45, align 8, !tbaa !15
  %47 = fsub double %44, %46
  %48 = tail call double @llvm.fabs.f64(double %47)
  %49 = fadd double %.0422526.us, %48
  %indvars.iv.next590 = add nsw i64 %indvars.iv589, 1
  %50 = icmp slt i64 %indvars.iv.next590, %41
  br i1 %50, label %.lr.ph.split.us, label %.preheader525, !llvm.loop !16

.lr.ph.split.us528:                               ; preds = %.lr.ph.split.us528.preheader, %.lr.ph.split.us528
  %indvars.iv586 = phi i64 [ %38, %.lr.ph.split.us528.preheader ], [ %indvars.iv.next587, %.lr.ph.split.us528 ]
  %.0422526.us530 = phi double [ 0.000000e+00, %.lr.ph.split.us528.preheader ], [ %57, %.lr.ph.split.us528 ]
  %51 = add nsw i64 %indvars.iv586, -1
  %52 = getelementptr inbounds double, ptr %3, i64 %51
  %53 = load double, ptr %52, align 8, !tbaa !15
  %54 = getelementptr inbounds double, ptr %4, i64 %51
  %55 = load double, ptr %54, align 8, !tbaa !15
  %56 = fsub double %53, %55
  %57 = fadd double %.0422526.us530, %56
  %indvars.iv.next587 = add nsw i64 %indvars.iv586, 1
  %58 = icmp slt i64 %indvars.iv.next587, %39
  br i1 %58, label %.lr.ph.split.us528, label %.preheader525, !llvm.loop !16

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

.preheader525:                                    ; preds = %.lr.ph.split.us533, %.lr.ph.split.us528, %.lr.ph.split.us, %.lr.ph, %25
  %.0422.lcssa = phi double [ 0.000000e+00, %25 ], [ 0.000000e+00, %.lr.ph ], [ %49, %.lr.ph.split.us ], [ %57, %.lr.ph.split.us528 ], [ %73, %.lr.ph.split.us533 ]
  %75 = icmp sgt i32 %31, 0
  br i1 %75, label %.lr.ph541, label %.preheader

.lr.ph541:                                        ; preds = %.preheader525
  %76 = getelementptr inbounds i8, ptr %26, i64 212
  %77 = load i32, ptr %76, align 4, !tbaa !14
  switch i32 %77, label %.preheader [
    i32 0, label %.thread.us.preheader
    i32 1, label %.thread510.us.preheader
    i32 2, label %.thread511.us.preheader
  ]

.thread511.us.preheader:                          ; preds = %.lr.ph541
  %78 = sext i32 %32 to i64
  %79 = zext nneg i32 %spec.select to i64
  br label %.thread511.us

.thread510.us.preheader:                          ; preds = %.lr.ph541
  %80 = sext i32 %32 to i64
  %81 = zext nneg i32 %spec.select to i64
  br label %.thread510.us

.thread.us.preheader:                             ; preds = %.lr.ph541
  %82 = sext i32 %32 to i64
  %83 = zext nneg i32 %spec.select to i64
  br label %.thread.us

.thread.us:                                       ; preds = %.thread.us.preheader, %.thread.us
  %indvars.iv598 = phi i64 [ %82, %.thread.us.preheader ], [ %indvars.iv.next599, %.thread.us ]
  %84 = phi <2 x double> [ zeroinitializer, %.thread.us.preheader ], [ %92, %.thread.us ]
  %85 = add nsw i64 %indvars.iv598, -1
  %86 = getelementptr inbounds double, ptr %5, i64 %85
  %87 = getelementptr inbounds double, ptr %2, i64 %85
  %88 = load <2 x double>, ptr %86, align 8, !tbaa !15
  %89 = load <2 x double>, ptr %87, align 8, !tbaa !15
  %90 = fsub <2 x double> %88, %89
  %91 = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %90)
  %92 = fadd <2 x double> %84, %91
  %indvars.iv.next599 = add nsw i64 %indvars.iv598, 1
  %93 = icmp slt i64 %indvars.iv.next599, %83
  br i1 %93, label %.thread.us, label %.preheader, !llvm.loop !18

.thread510.us:                                    ; preds = %.thread510.us.preheader, %.thread510.us
  %indvars.iv595 = phi i64 [ %80, %.thread510.us.preheader ], [ %indvars.iv.next596, %.thread510.us ]
  %94 = phi <2 x double> [ zeroinitializer, %.thread510.us.preheader ], [ %101, %.thread510.us ]
  %95 = add nsw i64 %indvars.iv595, -1
  %96 = getelementptr inbounds double, ptr %3, i64 %95
  %97 = getelementptr inbounds double, ptr %4, i64 %95
  %98 = load <2 x double>, ptr %96, align 8, !tbaa !15
  %99 = load <2 x double>, ptr %97, align 8, !tbaa !15
  %100 = fsub <2 x double> %98, %99
  %101 = fadd <2 x double> %94, %100
  %indvars.iv.next596 = add nsw i64 %indvars.iv595, 1
  %102 = icmp slt i64 %indvars.iv.next596, %81
  br i1 %102, label %.thread510.us, label %.preheader, !llvm.loop !18

.thread511.us:                                    ; preds = %.thread511.us.preheader, %.thread511.us
  %indvars.iv592 = phi i64 [ %78, %.thread511.us.preheader ], [ %indvars.iv.next593, %.thread511.us ]
  %103 = phi <2 x double> [ zeroinitializer, %.thread511.us.preheader ], [ %119, %.thread511.us ]
  %104 = add nsw i64 %indvars.iv592, -1
  %105 = getelementptr inbounds double, ptr %3, i64 %104
  %106 = getelementptr inbounds double, ptr %5, i64 %104
  %107 = getelementptr inbounds double, ptr %2, i64 %104
  %108 = getelementptr inbounds double, ptr %4, i64 %104
  %109 = load <2 x double>, ptr %105, align 8, !tbaa !15
  %110 = load <2 x double>, ptr %106, align 8, !tbaa !15
  %111 = load <2 x double>, ptr %107, align 8, !tbaa !15
  %112 = fcmp ult <2 x double> %110, %111
  %113 = select <2 x i1> %112, <2 x double> %111, <2 x double> %110
  %114 = fsub <2 x double> %109, %113
  %115 = select <2 x i1> %112, <2 x double> %110, <2 x double> %111
  %116 = load <2 x double>, ptr %108, align 8, !tbaa !15
  %117 = fsub <2 x double> %115, %116
  %118 = fadd <2 x double> %114, %117
  %119 = fadd <2 x double> %103, %118
  %indvars.iv.next593 = add nsw i64 %indvars.iv592, 1
  %120 = icmp slt i64 %indvars.iv.next593, %79
  br i1 %120, label %.thread511.us, label %.preheader, !llvm.loop !18

.preheader:                                       ; preds = %.thread511.us, %.thread510.us, %.thread.us, %.lr.ph541, %.preheader525
  %121 = phi <2 x double> [ zeroinitializer, %.preheader525 ], [ zeroinitializer, %.lr.ph541 ], [ %92, %.thread.us ], [ %101, %.thread510.us ], [ %119, %.thread511.us ]
  %122 = getelementptr inbounds i8, ptr %26, i64 452
  %123 = getelementptr inbounds i8, ptr %26, i64 212
  %124 = getelementptr inbounds i8, ptr %26, i64 224
  %125 = getelementptr inbounds i8, ptr %26, i64 464
  %126 = sext i32 %22 to i64
  %127 = zext nneg i32 %0 to i64
  %smax = tail call i64 @llvm.smax.i64(i64 %126, i64 %127)
  %128 = sext i32 %1 to i64
  %129 = sext i32 %29 to i64
  %130 = sext i32 %32 to i64
  br label %131

131:                                              ; preds = %.preheader, %.split560.us
  %indvars.iv619 = phi i64 [ %130, %.preheader ], [ %indvars.iv.next620, %.split560.us ]
  %indvars.iv617 = phi i64 [ %129, %.preheader ], [ %indvars.iv.next618, %.split560.us ]
  %indvars.iv615 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next616, %.split560.us ]
  %indvars.iv613 = phi i64 [ %smax, %.preheader ], [ %indvars.iv.next614, %.split560.us ]
  %.1423 = phi double [ %.0422.lcssa, %.preheader ], [ %335, %.split560.us ]
  %132 = phi <2 x double> [ %121, %.preheader ], [ %401, %.split560.us ]
  %133 = add nsw i64 %indvars.iv613, -1
  %134 = getelementptr inbounds double, ptr %5, i64 %133
  %135 = getelementptr inbounds double, ptr %2, i64 %133
  %136 = load <2 x double>, ptr %134, align 8, !tbaa !15
  %137 = load <2 x double>, ptr %135, align 8, !tbaa !15
  %138 = fcmp oge <2 x double> %136, %137
  %139 = extractelement <2 x i1> %138, i64 0
  %140 = extractelement <2 x i1> %138, i64 1
  %141 = xor i1 %139, %140
  br i1 %141, label %142, label %280

142:                                              ; preds = %131
  %143 = extractelement <2 x double> %136, i64 0
  %144 = extractelement <2 x double> %137, i64 0
  %145 = fsub <2 x double> %136, %137
  %146 = extractelement <2 x double> %145, i64 0
  %147 = tail call double @llvm.fabs.f64(double %146)
  %148 = load double, ptr %124, align 8, !tbaa !19
  %149 = load i32, ptr %30, align 8, !tbaa !11
  %.not493 = icmp eq i32 %149, 0
  br i1 %.not493, label %154, label %150

150:                                              ; preds = %142
  %151 = sitofp i32 %149 to double
  %152 = extractelement <2 x double> %132, i64 0
  %153 = fdiv double %152, %151
  %.pre = load i32, ptr %123, align 4, !tbaa !14
  br label %171

154:                                              ; preds = %142
  %155 = load i32, ptr %123, align 4, !tbaa !14
  switch i32 %155, label %.fold.split [
    i32 0, label %171
    i32 1, label %156
    i32 2, label %162
  ]

156:                                              ; preds = %154
  %157 = getelementptr inbounds double, ptr %3, i64 %133
  %158 = load double, ptr %157, align 8, !tbaa !15
  %159 = getelementptr inbounds double, ptr %4, i64 %133
  %160 = load double, ptr %159, align 8, !tbaa !15
  %161 = fsub double %158, %160
  br label %171

162:                                              ; preds = %154
  %163 = getelementptr inbounds double, ptr %3, i64 %133
  %164 = load double, ptr %163, align 8, !tbaa !15
  %.501 = select i1 %139, double %143, double %144
  %165 = fsub double %164, %.501
  %166 = select i1 %139, double %144, double %143
  %167 = getelementptr inbounds double, ptr %4, i64 %133
  %168 = load double, ptr %167, align 8, !tbaa !15
  %169 = fsub double %166, %168
  %170 = fadd double %165, %169
  br label %171

.fold.split:                                      ; preds = %154
  br label %171

171:                                              ; preds = %154, %.fold.split, %162, %156, %150
  %172 = phi i32 [ %.pre, %150 ], [ 1, %156 ], [ 2, %162 ], [ %155, %154 ], [ %155, %.fold.split ]
  %173 = phi double [ %153, %150 ], [ %161, %156 ], [ %170, %162 ], [ %147, %154 ], [ 0.000000e+00, %.fold.split ]
  %174 = fmul double %148, %173
  %175 = icmp eq i32 %172, 2
  %176 = select i1 %175, double 2.000000e+00, double 1.000000e+00
  %177 = fdiv double %174, %176
  %178 = fcmp ogt double %147, %177
  br i1 %178, label %179, label %280

179:                                              ; preds = %171
  %180 = extractelement <2 x double> %136, i64 1
  %181 = extractelement <2 x double> %137, i64 1
  %182 = fsub double %180, %181
  %183 = tail call double @llvm.fabs.f64(double %182)
  br i1 %.not493, label %188, label %184

184:                                              ; preds = %179
  %185 = sitofp i32 %149 to double
  %186 = extractelement <2 x double> %132, i64 1
  %187 = fdiv double %186, %185
  br label %206

188:                                              ; preds = %179
  switch i32 %172, label %195 [
    i32 0, label %206
    i32 1, label %189
  ]

189:                                              ; preds = %188
  %190 = getelementptr inbounds double, ptr %3, i64 %indvars.iv613
  %191 = load double, ptr %190, align 8, !tbaa !15
  %192 = getelementptr inbounds double, ptr %4, i64 %indvars.iv613
  %193 = load double, ptr %192, align 8, !tbaa !15
  %194 = fsub double %191, %193
  br label %206

195:                                              ; preds = %188
  br i1 %175, label %196, label %206

196:                                              ; preds = %195
  %197 = getelementptr inbounds double, ptr %3, i64 %indvars.iv613
  %198 = load double, ptr %197, align 8, !tbaa !15
  %199 = fcmp ult double %180, %181
  %.502 = select i1 %199, double %181, double %180
  %200 = fsub double %198, %.502
  %201 = select i1 %199, double %180, double %181
  %202 = getelementptr inbounds double, ptr %4, i64 %indvars.iv613
  %203 = load double, ptr %202, align 8, !tbaa !15
  %204 = fsub double %201, %203
  %205 = fadd double %200, %204
  br label %206

206:                                              ; preds = %188, %196, %195, %189, %184
  %207 = phi double [ %187, %184 ], [ %194, %189 ], [ %205, %196 ], [ 0.000000e+00, %195 ], [ %183, %188 ]
  %208 = fmul double %148, %207
  %209 = fdiv double %208, %176
  %210 = fcmp ogt double %183, %209
  br i1 %210, label %211, label %280

211:                                              ; preds = %206
  %212 = load double, ptr %125, align 8, !tbaa !19
  %213 = load i32, ptr %27, align 8, !tbaa !11
  %.not495 = icmp eq i32 %213, 0
  br i1 %.not495, label %214, label %.thread

214:                                              ; preds = %211
  %215 = load i32, ptr %122, align 4, !tbaa !14
  switch i32 %215, label %233 [
    i32 0, label %216
    i32 1, label %217
    i32 2, label %223
  ]

216:                                              ; preds = %214
  br label %233

217:                                              ; preds = %214
  %218 = getelementptr inbounds double, ptr %3, i64 %133
  %219 = load double, ptr %218, align 8, !tbaa !15
  %220 = getelementptr inbounds double, ptr %4, i64 %133
  %221 = load double, ptr %220, align 8, !tbaa !15
  %222 = fsub double %219, %221
  br label %233

223:                                              ; preds = %214
  %224 = getelementptr inbounds double, ptr %3, i64 %133
  %225 = load double, ptr %224, align 8, !tbaa !15
  %226 = fcmp ult double %143, %144
  %.503 = select i1 %226, double %144, double %143
  %227 = fsub double %225, %.503
  %228 = select i1 %226, double %143, double %144
  %229 = getelementptr inbounds double, ptr %4, i64 %133
  %230 = load double, ptr %229, align 8, !tbaa !15
  %231 = fsub double %228, %230
  %232 = fadd double %227, %231
  br label %233

233:                                              ; preds = %214, %216, %223, %217
  %234 = phi double [ %147, %216 ], [ %222, %217 ], [ %232, %223 ], [ 0.000000e+00, %214 ]
  %235 = fmul double %212, %234
  %236 = icmp eq i32 %215, 2
  %237 = select i1 %236, double 2.000000e+00, double 1.000000e+00
  %238 = fdiv double %235, %237
  %239 = fadd double %143, %238
  %240 = fcmp ugt double %180, %239
  br i1 %240, label %280, label %249

.thread:                                          ; preds = %211
  %241 = sitofp i32 %213 to double
  %242 = fdiv double %.1423, %241
  %.pre634 = load i32, ptr %122, align 4, !tbaa !14
  %243 = fmul double %212, %242
  %244 = icmp eq i32 %.pre634, 2
  %245 = select i1 %244, double 2.000000e+00, double 1.000000e+00
  %246 = fdiv double %243, %245
  %247 = fadd double %143, %246
  %248 = fcmp ugt double %180, %247
  br i1 %248, label %280, label %.thread635

249:                                              ; preds = %233
  br i1 %.not495, label %253, label %.thread635

.thread635:                                       ; preds = %.thread, %249
  %250 = phi double [ %237, %249 ], [ %245, %.thread ]
  %251 = sitofp i32 %213 to double
  %252 = fdiv double %.1423, %251
  br label %271

253:                                              ; preds = %249
  switch i32 %215, label %260 [
    i32 0, label %271
    i32 1, label %254
  ]

254:                                              ; preds = %253
  %255 = getelementptr inbounds double, ptr %3, i64 %133
  %256 = load double, ptr %255, align 8, !tbaa !15
  %257 = getelementptr inbounds double, ptr %4, i64 %133
  %258 = load double, ptr %257, align 8, !tbaa !15
  %259 = fsub double %256, %258
  br label %271

260:                                              ; preds = %253
  br i1 %236, label %261, label %271

261:                                              ; preds = %260
  %262 = getelementptr inbounds double, ptr %3, i64 %133
  %263 = load double, ptr %262, align 8, !tbaa !15
  %264 = fcmp ult double %143, %144
  %.504 = select i1 %264, double %144, double %143
  %265 = fsub double %263, %.504
  %266 = select i1 %264, double %143, double %144
  %267 = getelementptr inbounds double, ptr %4, i64 %133
  %268 = load double, ptr %267, align 8, !tbaa !15
  %269 = fsub double %266, %268
  %270 = fadd double %265, %269
  br label %271

271:                                              ; preds = %253, %261, %260, %254, %.thread635
  %272 = phi double [ %250, %.thread635 ], [ %237, %254 ], [ 2.000000e+00, %261 ], [ 1.000000e+00, %260 ], [ %237, %253 ]
  %273 = phi double [ %252, %.thread635 ], [ %259, %254 ], [ %270, %261 ], [ 0.000000e+00, %260 ], [ %147, %253 ]
  %274 = fmul double %212, %273
  %275 = fdiv double %274, %272
  %276 = fsub double %143, %275
  %277 = fcmp ult double %180, %276
  br i1 %277, label %280, label %278

278:                                              ; preds = %271
  %279 = select i1 %140, i32 100, i32 -100
  br label %280

280:                                              ; preds = %131, %171, %206, %233, %271, %.thread, %278
  %.sink = phi i32 [ %279, %278 ], [ 0, %.thread ], [ 0, %271 ], [ 0, %233 ], [ 0, %206 ], [ 0, %171 ], [ 0, %131 ]
  %281 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv615
  store i32 %.sink, ptr %281, align 4, !tbaa !5
  %indvars.iv.next616 = add nuw nsw i64 %indvars.iv615, 1
  %282 = load i32, ptr %122, align 4, !tbaa !14
  switch i32 %282, label %331 [
    i32 0, label %.thread512
    i32 1, label %.thread513
    i32 2, label %.thread514
  ]

.thread512:                                       ; preds = %280
  %283 = add nsw i64 %indvars.iv617, -1
  %284 = getelementptr inbounds double, ptr %5, i64 %283
  %285 = load double, ptr %284, align 8, !tbaa !15
  %286 = getelementptr inbounds double, ptr %2, i64 %283
  %287 = load double, ptr %286, align 8, !tbaa !15
  %288 = insertelement <2 x double> %136, double %285, i64 1
  %289 = insertelement <2 x double> %137, double %287, i64 1
  %290 = fsub <2 x double> %288, %289
  %291 = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %290)
  br label %331

.thread513:                                       ; preds = %280
  %292 = getelementptr inbounds double, ptr %3, i64 %133
  %293 = load double, ptr %292, align 8, !tbaa !15
  %294 = getelementptr inbounds double, ptr %4, i64 %133
  %295 = load double, ptr %294, align 8, !tbaa !15
  %296 = add nsw i64 %indvars.iv617, -1
  %297 = getelementptr inbounds double, ptr %3, i64 %296
  %298 = load double, ptr %297, align 8, !tbaa !15
  %299 = getelementptr inbounds double, ptr %4, i64 %296
  %300 = load double, ptr %299, align 8, !tbaa !15
  %301 = insertelement <2 x double> poison, double %293, i64 0
  %302 = insertelement <2 x double> %301, double %298, i64 1
  %303 = insertelement <2 x double> poison, double %295, i64 0
  %304 = insertelement <2 x double> %303, double %300, i64 1
  %305 = fsub <2 x double> %302, %304
  br label %331

.thread514:                                       ; preds = %280
  %306 = getelementptr inbounds double, ptr %3, i64 %133
  %307 = load double, ptr %306, align 8, !tbaa !15
  %308 = getelementptr inbounds double, ptr %4, i64 %133
  %309 = load double, ptr %308, align 8, !tbaa !15
  %310 = add nsw i64 %indvars.iv617, -1
  %311 = getelementptr inbounds double, ptr %3, i64 %310
  %312 = load double, ptr %311, align 8, !tbaa !15
  %313 = getelementptr inbounds double, ptr %5, i64 %310
  %314 = load double, ptr %313, align 8, !tbaa !15
  %315 = getelementptr inbounds double, ptr %2, i64 %310
  %316 = load double, ptr %315, align 8, !tbaa !15
  %317 = getelementptr inbounds double, ptr %4, i64 %310
  %318 = load double, ptr %317, align 8, !tbaa !15
  %319 = insertelement <2 x double> %136, double %314, i64 1
  %320 = insertelement <2 x double> %137, double %316, i64 1
  %321 = fcmp ult <2 x double> %319, %320
  %322 = select <2 x i1> %321, <2 x double> %320, <2 x double> %319
  %323 = insertelement <2 x double> poison, double %307, i64 0
  %324 = insertelement <2 x double> %323, double %312, i64 1
  %325 = fsub <2 x double> %324, %322
  %326 = select <2 x i1> %321, <2 x double> %319, <2 x double> %320
  %327 = insertelement <2 x double> poison, double %309, i64 0
  %328 = insertelement <2 x double> %327, double %318, i64 1
  %329 = fsub <2 x double> %326, %328
  %330 = fadd <2 x double> %325, %329
  br label %331

331:                                              ; preds = %280, %.thread513, %.thread514, %.thread512
  %332 = phi <2 x double> [ %291, %.thread512 ], [ %305, %.thread513 ], [ %330, %.thread514 ], [ zeroinitializer, %280 ]
  %shift = shufflevector <2 x double> %332, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %333 = fsub <2 x double> %332, %shift
  %334 = extractelement <2 x double> %333, i64 0
  %335 = fadd double %.1423, %334
  %336 = load i32, ptr %123, align 4, !tbaa !14
  switch i32 %336, label %.split560.us [
    i32 0, label %.thread515.us.preheader
    i32 1, label %.thread516.us.preheader
    i32 2, label %.thread517.us.preheader
  ]

.thread517.us.preheader:                          ; preds = %331
  %337 = add nsw i64 %indvars.iv613, -1
  %338 = getelementptr inbounds double, ptr %3, i64 %337
  %339 = getelementptr inbounds double, ptr %5, i64 %337
  %340 = load double, ptr %339, align 8, !tbaa !15
  %341 = getelementptr inbounds double, ptr %2, i64 %337
  %342 = load double, ptr %341, align 8, !tbaa !15
  %343 = getelementptr inbounds double, ptr %4, i64 %337
  %344 = add nsw i64 %indvars.iv619, -1
  %345 = getelementptr inbounds double, ptr %3, i64 %344
  %346 = getelementptr inbounds double, ptr %5, i64 %344
  %347 = getelementptr inbounds double, ptr %2, i64 %344
  %348 = getelementptr inbounds double, ptr %4, i64 %344
  %349 = load <2 x double>, ptr %338, align 8, !tbaa !15
  %350 = insertelement <2 x double> %136, double %340, i64 0
  %351 = insertelement <2 x double> %137, double %342, i64 0
  %352 = fcmp ult <2 x double> %350, %351
  %353 = select <2 x i1> %352, <2 x double> %351, <2 x double> %350
  %354 = fsub <2 x double> %349, %353
  %355 = select <2 x i1> %352, <2 x double> %350, <2 x double> %351
  %356 = load <2 x double>, ptr %343, align 8, !tbaa !15
  %357 = fsub <2 x double> %355, %356
  %358 = fadd <2 x double> %354, %357
  %359 = load <2 x double>, ptr %345, align 8, !tbaa !15
  %360 = load <2 x double>, ptr %346, align 8, !tbaa !15
  %361 = load <2 x double>, ptr %347, align 8, !tbaa !15
  %362 = fcmp ult <2 x double> %360, %361
  %363 = select <2 x i1> %362, <2 x double> %361, <2 x double> %360
  %364 = fsub <2 x double> %359, %363
  %365 = select <2 x i1> %362, <2 x double> %360, <2 x double> %361
  %366 = load <2 x double>, ptr %348, align 8, !tbaa !15
  %367 = fsub <2 x double> %365, %366
  %368 = fadd <2 x double> %364, %367
  %369 = fsub <2 x double> %358, %368
  br label %.split560.us

.thread516.us.preheader:                          ; preds = %331
  %370 = add nsw i64 %indvars.iv613, -1
  %371 = getelementptr inbounds double, ptr %3, i64 %370
  %372 = getelementptr inbounds double, ptr %4, i64 %370
  %373 = add nsw i64 %indvars.iv619, -1
  %374 = getelementptr inbounds double, ptr %3, i64 %373
  %375 = getelementptr inbounds double, ptr %4, i64 %373
  %376 = load <2 x double>, ptr %371, align 8, !tbaa !15
  %377 = load <2 x double>, ptr %372, align 8, !tbaa !15
  %378 = fsub <2 x double> %376, %377
  %379 = load <2 x double>, ptr %374, align 8, !tbaa !15
  %380 = load <2 x double>, ptr %375, align 8, !tbaa !15
  %381 = fsub <2 x double> %379, %380
  %382 = fsub <2 x double> %378, %381
  br label %.split560.us

.thread515.us.preheader:                          ; preds = %331
  %383 = add nsw i64 %indvars.iv613, -1
  %384 = getelementptr inbounds double, ptr %5, i64 %383
  %385 = load double, ptr %384, align 8, !tbaa !15
  %386 = getelementptr inbounds double, ptr %2, i64 %383
  %387 = load double, ptr %386, align 8, !tbaa !15
  %388 = add nsw i64 %indvars.iv619, -1
  %389 = getelementptr inbounds double, ptr %5, i64 %388
  %390 = getelementptr inbounds double, ptr %2, i64 %388
  %391 = insertelement <2 x double> %136, double %385, i64 0
  %392 = insertelement <2 x double> %137, double %387, i64 0
  %393 = fsub <2 x double> %391, %392
  %394 = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %393)
  %395 = load <2 x double>, ptr %389, align 8, !tbaa !15
  %396 = load <2 x double>, ptr %390, align 8, !tbaa !15
  %397 = fsub <2 x double> %395, %396
  %398 = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %397)
  %399 = fsub <2 x double> %394, %398
  br label %.split560.us

.split560.us:                                     ; preds = %331, %.thread517.us.preheader, %.thread516.us.preheader, %.thread515.us.preheader
  %400 = phi <2 x double> [ %369, %.thread517.us.preheader ], [ %382, %.thread516.us.preheader ], [ %399, %.thread515.us.preheader ], [ zeroinitializer, %331 ]
  %401 = fadd <2 x double> %132, %400
  %indvars.iv.next614 = add nuw nsw i64 %indvars.iv613, 1
  %indvars.iv.next618 = add nsw i64 %indvars.iv617, 1
  %indvars.iv.next620 = add nsw i64 %indvars.iv619, 1
  %.not497.not = icmp slt i64 %indvars.iv613, %128
  br i1 %.not497.not, label %131, label %402, !llvm.loop !20

402:                                              ; preds = %.split560.us
  %403 = trunc nuw i64 %indvars.iv.next616 to i32
  store i32 %403, ptr %7, align 4, !tbaa !5
  store i32 %spec.select, ptr %6, align 4, !tbaa !5
  br label %404

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #2

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

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

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

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


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