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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.TA_LibcPriv = type { i32, [3 x %struct.TA_ModuleControl], i32, i32, ptr, ptr, i32, [24 x i32], [11 x %struct.TA_CandleSetting] }
%struct.TA_ModuleControl = type { i32, ptr, ptr }
%struct.TA_CandleSetting = type { i32, i32, i32, double }

@TA_Globals = external global ptr, align 8

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

200:                                              ; preds = %129
  br label %201

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

327:                                              ; preds = %256
  br label %328

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

483:                                              ; preds = %412
  br label %484

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

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

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

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

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

520:                                              ; preds = %503
  %521 = load ptr, ptr %16, align 8, !tbaa !9
  %522 = load i32, ptr %22, align 4, !tbaa !5
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds double, ptr %521, i64 %523
  %525 = load double, ptr %524, align 8, !tbaa !11
  br label %532

526:                                              ; preds = %503
  %527 = load ptr, ptr %13, align 8, !tbaa !9
  %528 = load i32, ptr %22, align 4, !tbaa !5
  %529 = sext i32 %528 to i64
  %530 = getelementptr inbounds double, ptr %527, i64 %529
  %531 = load double, ptr %530, align 8, !tbaa !11
  br label %532

532:                                              ; preds = %526, %520
  %533 = phi double [ %525, %520 ], [ %531, %526 ]
  %534 = fsub double %508, %533
  %535 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %536 = getelementptr inbounds %struct.TA_LibcPriv, ptr %535, i32 0, i32 8
  %537 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %536, i64 0, i64 5
  %538 = getelementptr inbounds %struct.TA_CandleSetting, ptr %537, i32 0, i32 3
  %539 = load double, ptr %538, align 8, !tbaa !19
  %540 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %541 = getelementptr inbounds %struct.TA_LibcPriv, ptr %540, i32 0, i32 8
  %542 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %541, i64 0, i64 5
  %543 = getelementptr inbounds %struct.TA_CandleSetting, ptr %542, i32 0, i32 2
  %544 = load i32, ptr %543, align 8, !tbaa !13
  %545 = sitofp i32 %544 to double
  %546 = fcmp une double %545, 0.000000e+00
  br i1 %546, label %547, label %556

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

556:                                              ; preds = %532
  %557 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %558 = getelementptr inbounds %struct.TA_LibcPriv, ptr %557, i32 0, i32 8
  %559 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %558, i64 0, i64 5
  %560 = getelementptr inbounds %struct.TA_CandleSetting, ptr %559, i32 0, i32 1
  %561 = load i32, ptr %560, align 4, !tbaa !15
  %562 = icmp eq i32 %561, 0
  br i1 %562, label %563, label %576

563:                                              ; preds = %556
  %564 = load ptr, ptr %16, align 8, !tbaa !9
  %565 = load i32, ptr %22, align 4, !tbaa !5
  %566 = sext i32 %565 to i64
  %567 = getelementptr inbounds double, ptr %564, i64 %566
  %568 = load double, ptr %567, align 8, !tbaa !11
  %569 = load ptr, ptr %13, align 8, !tbaa !9
  %570 = load i32, ptr %22, align 4, !tbaa !5
  %571 = sext i32 %570 to i64
  %572 = getelementptr inbounds double, ptr %569, i64 %571
  %573 = load double, ptr %572, align 8, !tbaa !11
  %574 = fsub double %568, %573
  %575 = call double @llvm.fabs.f64(double %574)
  br label %671

576:                                              ; preds = %556
  %577 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %578 = getelementptr inbounds %struct.TA_LibcPriv, ptr %577, i32 0, i32 8
  %579 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %578, i64 0, i64 5
  %580 = getelementptr inbounds %struct.TA_CandleSetting, ptr %579, i32 0, i32 1
  %581 = load i32, ptr %580, align 4, !tbaa !15
  %582 = icmp eq i32 %581, 1
  br i1 %582, label %583, label %595

583:                                              ; preds = %576
  %584 = load ptr, ptr %14, align 8, !tbaa !9
  %585 = load i32, ptr %22, align 4, !tbaa !5
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds double, ptr %584, i64 %586
  %588 = load double, ptr %587, align 8, !tbaa !11
  %589 = load ptr, ptr %15, align 8, !tbaa !9
  %590 = load i32, ptr %22, align 4, !tbaa !5
  %591 = sext i32 %590 to i64
  %592 = getelementptr inbounds double, ptr %589, i64 %591
  %593 = load double, ptr %592, align 8, !tbaa !11
  %594 = fsub double %588, %593
  br label %669

595:                                              ; preds = %576
  %596 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %597 = getelementptr inbounds %struct.TA_LibcPriv, ptr %596, i32 0, i32 8
  %598 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %597, i64 0, i64 5
  %599 = getelementptr inbounds %struct.TA_CandleSetting, ptr %598, i32 0, i32 1
  %600 = load i32, ptr %599, align 4, !tbaa !15
  %601 = icmp eq i32 %600, 2
  br i1 %601, label %602, label %666

602:                                              ; preds = %595
  %603 = load ptr, ptr %14, align 8, !tbaa !9
  %604 = load i32, ptr %22, align 4, !tbaa !5
  %605 = sext i32 %604 to i64
  %606 = getelementptr inbounds double, ptr %603, i64 %605
  %607 = load double, ptr %606, align 8, !tbaa !11
  %608 = load ptr, ptr %16, align 8, !tbaa !9
  %609 = load i32, ptr %22, align 4, !tbaa !5
  %610 = sext i32 %609 to i64
  %611 = getelementptr inbounds double, ptr %608, i64 %610
  %612 = load double, ptr %611, align 8, !tbaa !11
  %613 = load ptr, ptr %13, align 8, !tbaa !9
  %614 = load i32, ptr %22, align 4, !tbaa !5
  %615 = sext i32 %614 to i64
  %616 = getelementptr inbounds double, ptr %613, i64 %615
  %617 = load double, ptr %616, align 8, !tbaa !11
  %618 = fcmp oge double %612, %617
  br i1 %618, label %619, label %625

619:                                              ; preds = %602
  %620 = load ptr, ptr %16, align 8, !tbaa !9
  %621 = load i32, ptr %22, align 4, !tbaa !5
  %622 = sext i32 %621 to i64
  %623 = getelementptr inbounds double, ptr %620, i64 %622
  %624 = load double, ptr %623, align 8, !tbaa !11
  br label %631

625:                                              ; preds = %602
  %626 = load ptr, ptr %13, align 8, !tbaa !9
  %627 = load i32, ptr %22, align 4, !tbaa !5
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds double, ptr %626, i64 %628
  %630 = load double, ptr %629, align 8, !tbaa !11
  br label %631

631:                                              ; preds = %625, %619
  %632 = phi double [ %624, %619 ], [ %630, %625 ]
  %633 = fsub double %607, %632
  %634 = load ptr, ptr %16, align 8, !tbaa !9
  %635 = load i32, ptr %22, align 4, !tbaa !5
  %636 = sext i32 %635 to i64
  %637 = getelementptr inbounds double, ptr %634, i64 %636
  %638 = load double, ptr %637, align 8, !tbaa !11
  %639 = load ptr, ptr %13, align 8, !tbaa !9
  %640 = load i32, ptr %22, align 4, !tbaa !5
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds double, ptr %639, i64 %641
  %643 = load double, ptr %642, align 8, !tbaa !11
  %644 = fcmp oge double %638, %643
  br i1 %644, label %645, label %651

645:                                              ; preds = %631
  %646 = load ptr, ptr %13, align 8, !tbaa !9
  %647 = load i32, ptr %22, align 4, !tbaa !5
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds double, ptr %646, i64 %648
  %650 = load double, ptr %649, align 8, !tbaa !11
  br label %657

651:                                              ; preds = %631
  %652 = load ptr, ptr %16, align 8, !tbaa !9
  %653 = load i32, ptr %22, align 4, !tbaa !5
  %654 = sext i32 %653 to i64
  %655 = getelementptr inbounds double, ptr %652, i64 %654
  %656 = load double, ptr %655, align 8, !tbaa !11
  br label %657

657:                                              ; preds = %651, %645
  %658 = phi double [ %650, %645 ], [ %656, %651 ]
  %659 = load ptr, ptr %15, align 8, !tbaa !9
  %660 = load i32, ptr %22, align 4, !tbaa !5
  %661 = sext i32 %660 to i64
  %662 = getelementptr inbounds double, ptr %659, i64 %661
  %663 = load double, ptr %662, align 8, !tbaa !11
  %664 = fsub double %658, %663
  %665 = fadd double %633, %664
  br label %667

666:                                              ; preds = %595
  br label %667

667:                                              ; preds = %666, %657
  %668 = phi double [ %665, %657 ], [ 0.000000e+00, %666 ]
  br label %669

669:                                              ; preds = %667, %583
  %670 = phi double [ %594, %583 ], [ %668, %667 ]
  br label %671

671:                                              ; preds = %669, %563
  %672 = phi double [ %575, %563 ], [ %670, %669 ]
  br label %673

673:                                              ; preds = %671, %547
  %674 = phi double [ %555, %547 ], [ %672, %671 ]
  %675 = fmul double %539, %674
  %676 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %677 = getelementptr inbounds %struct.TA_LibcPriv, ptr %676, i32 0, i32 8
  %678 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %677, i64 0, i64 5
  %679 = getelementptr inbounds %struct.TA_CandleSetting, ptr %678, i32 0, i32 1
  %680 = load i32, ptr %679, align 4, !tbaa !15
  %681 = icmp eq i32 %680, 2
  %682 = zext i1 %681 to i64
  %683 = select i1 %681, double 2.000000e+00, double 1.000000e+00
  %684 = fdiv double %675, %683
  %685 = fcmp ogt double %534, %684
  br i1 %685, label %686, label %889

686:                                              ; preds = %673
  %687 = load ptr, ptr %16, align 8, !tbaa !9
  %688 = load i32, ptr %22, align 4, !tbaa !5
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds double, ptr %687, i64 %689
  %691 = load double, ptr %690, align 8, !tbaa !11
  %692 = load ptr, ptr %13, align 8, !tbaa !9
  %693 = load i32, ptr %22, align 4, !tbaa !5
  %694 = sext i32 %693 to i64
  %695 = getelementptr inbounds double, ptr %692, i64 %694
  %696 = load double, ptr %695, align 8, !tbaa !11
  %697 = fcmp oge double %691, %696
  br i1 %697, label %698, label %704

698:                                              ; preds = %686
  %699 = load ptr, ptr %13, align 8, !tbaa !9
  %700 = load i32, ptr %22, align 4, !tbaa !5
  %701 = sext i32 %700 to i64
  %702 = getelementptr inbounds double, ptr %699, i64 %701
  %703 = load double, ptr %702, align 8, !tbaa !11
  br label %710

704:                                              ; preds = %686
  %705 = load ptr, ptr %16, align 8, !tbaa !9
  %706 = load i32, ptr %22, align 4, !tbaa !5
  %707 = sext i32 %706 to i64
  %708 = getelementptr inbounds double, ptr %705, i64 %707
  %709 = load double, ptr %708, align 8, !tbaa !11
  br label %710

710:                                              ; preds = %704, %698
  %711 = phi double [ %703, %698 ], [ %709, %704 ]
  %712 = load ptr, ptr %15, align 8, !tbaa !9
  %713 = load i32, ptr %22, align 4, !tbaa !5
  %714 = sext i32 %713 to i64
  %715 = getelementptr inbounds double, ptr %712, i64 %714
  %716 = load double, ptr %715, align 8, !tbaa !11
  %717 = fsub double %711, %716
  %718 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %719 = getelementptr inbounds %struct.TA_LibcPriv, ptr %718, i32 0, i32 8
  %720 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %719, i64 0, i64 5
  %721 = getelementptr inbounds %struct.TA_CandleSetting, ptr %720, i32 0, i32 3
  %722 = load double, ptr %721, align 8, !tbaa !19
  %723 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %724 = getelementptr inbounds %struct.TA_LibcPriv, ptr %723, i32 0, i32 8
  %725 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %724, i64 0, i64 5
  %726 = getelementptr inbounds %struct.TA_CandleSetting, ptr %725, i32 0, i32 2
  %727 = load i32, ptr %726, align 8, !tbaa !13
  %728 = sitofp i32 %727 to double
  %729 = fcmp une double %728, 0.000000e+00
  br i1 %729, label %730, label %739

730:                                              ; preds = %710
  %731 = load double, ptr %21, align 8, !tbaa !11
  %732 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %733 = getelementptr inbounds %struct.TA_LibcPriv, ptr %732, i32 0, i32 8
  %734 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %733, i64 0, i64 5
  %735 = getelementptr inbounds %struct.TA_CandleSetting, ptr %734, i32 0, i32 2
  %736 = load i32, ptr %735, align 8, !tbaa !13
  %737 = sitofp i32 %736 to double
  %738 = fdiv double %731, %737
  br label %856

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

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

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

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

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

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

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

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

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

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

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

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

849:                                              ; preds = %778
  br label %850

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

852:                                              ; preds = %850, %766
  %853 = phi double [ %777, %766 ], [ %851, %850 ]
  br label %854

854:                                              ; preds = %852, %746
  %855 = phi double [ %758, %746 ], [ %853, %852 ]
  br label %856

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

869:                                              ; preds = %856
  %870 = load ptr, ptr %16, align 8, !tbaa !9
  %871 = load i32, ptr %22, align 4, !tbaa !5
  %872 = sext i32 %871 to i64
  %873 = getelementptr inbounds double, ptr %870, i64 %872
  %874 = load double, ptr %873, align 8, !tbaa !11
  %875 = load ptr, ptr %13, align 8, !tbaa !9
  %876 = load i32, ptr %22, align 4, !tbaa !5
  %877 = sext i32 %876 to i64
  %878 = getelementptr inbounds double, ptr %875, i64 %877
  %879 = load double, ptr %878, align 8, !tbaa !11
  %880 = fcmp oge double %874, %879
  %881 = zext i1 %880 to i64
  %882 = select i1 %880, i32 1, i32 -1
  %883 = mul nsw i32 %882, 100
  %884 = load ptr, ptr %19, align 8, !tbaa !9
  %885 = load i32, ptr %23, align 4, !tbaa !5
  %886 = add nsw i32 %885, 1
  store i32 %886, ptr %23, align 4, !tbaa !5
  %887 = sext i32 %885 to i64
  %888 = getelementptr inbounds i32, ptr %884, i64 %887
  store i32 %883, ptr %888, align 4, !tbaa !5
  br label %895

889:                                              ; preds = %856, %673, %490
  %890 = load ptr, ptr %19, align 8, !tbaa !9
  %891 = load i32, ptr %23, align 4, !tbaa !5
  %892 = add nsw i32 %891, 1
  store i32 %892, ptr %23, align 4, !tbaa !5
  %893 = sext i32 %891 to i64
  %894 = getelementptr inbounds i32, ptr %890, i64 %893
  store i32 0, ptr %894, align 4, !tbaa !5
  br label %895

895:                                              ; preds = %889, %869
  %896 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %897 = getelementptr inbounds %struct.TA_LibcPriv, ptr %896, i32 0, i32 8
  %898 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %897, i64 0, i64 2
  %899 = getelementptr inbounds %struct.TA_CandleSetting, ptr %898, i32 0, i32 1
  %900 = load i32, ptr %899, align 4, !tbaa !15
  %901 = icmp eq i32 %900, 0
  br i1 %901, label %902, label %915

902:                                              ; preds = %895
  %903 = load ptr, ptr %16, align 8, !tbaa !9
  %904 = load i32, ptr %22, align 4, !tbaa !5
  %905 = sext i32 %904 to i64
  %906 = getelementptr inbounds double, ptr %903, i64 %905
  %907 = load double, ptr %906, align 8, !tbaa !11
  %908 = load ptr, ptr %13, align 8, !tbaa !9
  %909 = load i32, ptr %22, align 4, !tbaa !5
  %910 = sext i32 %909 to i64
  %911 = getelementptr inbounds double, ptr %908, i64 %910
  %912 = load double, ptr %911, align 8, !tbaa !11
  %913 = fsub double %907, %912
  %914 = call double @llvm.fabs.f64(double %913)
  br label %1010

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

922:                                              ; preds = %915
  %923 = load ptr, ptr %14, align 8, !tbaa !9
  %924 = load i32, ptr %22, align 4, !tbaa !5
  %925 = sext i32 %924 to i64
  %926 = getelementptr inbounds double, ptr %923, i64 %925
  %927 = load double, ptr %926, align 8, !tbaa !11
  %928 = load ptr, ptr %15, align 8, !tbaa !9
  %929 = load i32, ptr %22, align 4, !tbaa !5
  %930 = sext i32 %929 to i64
  %931 = getelementptr inbounds double, ptr %928, i64 %930
  %932 = load double, ptr %931, align 8, !tbaa !11
  %933 = fsub double %927, %932
  br label %1008

934:                                              ; preds = %915
  %935 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %936 = getelementptr inbounds %struct.TA_LibcPriv, ptr %935, i32 0, i32 8
  %937 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %936, i64 0, i64 2
  %938 = getelementptr inbounds %struct.TA_CandleSetting, ptr %937, i32 0, i32 1
  %939 = load i32, ptr %938, align 4, !tbaa !15
  %940 = icmp eq i32 %939, 2
  br i1 %940, label %941, label %1005

941:                                              ; preds = %934
  %942 = load ptr, ptr %14, align 8, !tbaa !9
  %943 = load i32, ptr %22, align 4, !tbaa !5
  %944 = sext i32 %943 to i64
  %945 = getelementptr inbounds double, ptr %942, i64 %944
  %946 = load double, ptr %945, align 8, !tbaa !11
  %947 = load ptr, ptr %16, align 8, !tbaa !9
  %948 = load i32, ptr %22, align 4, !tbaa !5
  %949 = sext i32 %948 to i64
  %950 = getelementptr inbounds double, ptr %947, i64 %949
  %951 = load double, ptr %950, align 8, !tbaa !11
  %952 = load ptr, ptr %13, align 8, !tbaa !9
  %953 = load i32, ptr %22, align 4, !tbaa !5
  %954 = sext i32 %953 to i64
  %955 = getelementptr inbounds double, ptr %952, i64 %954
  %956 = load double, ptr %955, align 8, !tbaa !11
  %957 = fcmp oge double %951, %956
  br i1 %957, label %958, label %964

958:                                              ; preds = %941
  %959 = load ptr, ptr %16, align 8, !tbaa !9
  %960 = load i32, ptr %22, align 4, !tbaa !5
  %961 = sext i32 %960 to i64
  %962 = getelementptr inbounds double, ptr %959, i64 %961
  %963 = load double, ptr %962, align 8, !tbaa !11
  br label %970

964:                                              ; preds = %941
  %965 = load ptr, ptr %13, align 8, !tbaa !9
  %966 = load i32, ptr %22, align 4, !tbaa !5
  %967 = sext i32 %966 to i64
  %968 = getelementptr inbounds double, ptr %965, i64 %967
  %969 = load double, ptr %968, align 8, !tbaa !11
  br label %970

970:                                              ; preds = %964, %958
  %971 = phi double [ %963, %958 ], [ %969, %964 ]
  %972 = fsub double %946, %971
  %973 = load ptr, ptr %16, align 8, !tbaa !9
  %974 = load i32, ptr %22, align 4, !tbaa !5
  %975 = sext i32 %974 to i64
  %976 = getelementptr inbounds double, ptr %973, i64 %975
  %977 = load double, ptr %976, align 8, !tbaa !11
  %978 = load ptr, ptr %13, align 8, !tbaa !9
  %979 = load i32, ptr %22, align 4, !tbaa !5
  %980 = sext i32 %979 to i64
  %981 = getelementptr inbounds double, ptr %978, i64 %980
  %982 = load double, ptr %981, align 8, !tbaa !11
  %983 = fcmp oge double %977, %982
  br i1 %983, label %984, label %990

984:                                              ; preds = %970
  %985 = load ptr, ptr %13, align 8, !tbaa !9
  %986 = load i32, ptr %22, align 4, !tbaa !5
  %987 = sext i32 %986 to i64
  %988 = getelementptr inbounds double, ptr %985, i64 %987
  %989 = load double, ptr %988, align 8, !tbaa !11
  br label %996

990:                                              ; preds = %970
  %991 = load ptr, ptr %16, align 8, !tbaa !9
  %992 = load i32, ptr %22, align 4, !tbaa !5
  %993 = sext i32 %992 to i64
  %994 = getelementptr inbounds double, ptr %991, i64 %993
  %995 = load double, ptr %994, align 8, !tbaa !11
  br label %996

996:                                              ; preds = %990, %984
  %997 = phi double [ %989, %984 ], [ %995, %990 ]
  %998 = load ptr, ptr %15, align 8, !tbaa !9
  %999 = load i32, ptr %22, align 4, !tbaa !5
  %1000 = sext i32 %999 to i64
  %1001 = getelementptr inbounds double, ptr %998, i64 %1000
  %1002 = load double, ptr %1001, align 8, !tbaa !11
  %1003 = fsub double %997, %1002
  %1004 = fadd double %972, %1003
  br label %1006

1005:                                             ; preds = %934
  br label %1006

1006:                                             ; preds = %1005, %996
  %1007 = phi double [ %1004, %996 ], [ 0.000000e+00, %1005 ]
  br label %1008

1008:                                             ; preds = %1006, %922
  %1009 = phi double [ %933, %922 ], [ %1007, %1006 ]
  br label %1010

1010:                                             ; preds = %1008, %902
  %1011 = phi double [ %914, %902 ], [ %1009, %1008 ]
  %1012 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1013 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1012, i32 0, i32 8
  %1014 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1013, i64 0, i64 2
  %1015 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1014, i32 0, i32 1
  %1016 = load i32, ptr %1015, align 4, !tbaa !15
  %1017 = icmp eq i32 %1016, 0
  br i1 %1017, label %1018, label %1031

1018:                                             ; preds = %1010
  %1019 = load ptr, ptr %16, align 8, !tbaa !9
  %1020 = load i32, ptr %24, align 4, !tbaa !5
  %1021 = sext i32 %1020 to i64
  %1022 = getelementptr inbounds double, ptr %1019, i64 %1021
  %1023 = load double, ptr %1022, align 8, !tbaa !11
  %1024 = load ptr, ptr %13, align 8, !tbaa !9
  %1025 = load i32, ptr %24, align 4, !tbaa !5
  %1026 = sext i32 %1025 to i64
  %1027 = getelementptr inbounds double, ptr %1024, i64 %1026
  %1028 = load double, ptr %1027, align 8, !tbaa !11
  %1029 = fsub double %1023, %1028
  %1030 = call double @llvm.fabs.f64(double %1029)
  br label %1126

1031:                                             ; preds = %1010
  %1032 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1033 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1032, i32 0, i32 8
  %1034 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1033, i64 0, i64 2
  %1035 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1034, i32 0, i32 1
  %1036 = load i32, ptr %1035, align 4, !tbaa !15
  %1037 = icmp eq i32 %1036, 1
  br i1 %1037, label %1038, label %1050

1038:                                             ; preds = %1031
  %1039 = load ptr, ptr %14, align 8, !tbaa !9
  %1040 = load i32, ptr %24, align 4, !tbaa !5
  %1041 = sext i32 %1040 to i64
  %1042 = getelementptr inbounds double, ptr %1039, i64 %1041
  %1043 = load double, ptr %1042, align 8, !tbaa !11
  %1044 = load ptr, ptr %15, align 8, !tbaa !9
  %1045 = load i32, ptr %24, align 4, !tbaa !5
  %1046 = sext i32 %1045 to i64
  %1047 = getelementptr inbounds double, ptr %1044, i64 %1046
  %1048 = load double, ptr %1047, align 8, !tbaa !11
  %1049 = fsub double %1043, %1048
  br label %1124

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

1057:                                             ; preds = %1050
  %1058 = load ptr, ptr %14, align 8, !tbaa !9
  %1059 = load i32, ptr %24, align 4, !tbaa !5
  %1060 = sext i32 %1059 to i64
  %1061 = getelementptr inbounds double, ptr %1058, i64 %1060
  %1062 = load double, ptr %1061, align 8, !tbaa !11
  %1063 = load ptr, ptr %16, align 8, !tbaa !9
  %1064 = load i32, ptr %24, align 4, !tbaa !5
  %1065 = sext i32 %1064 to i64
  %1066 = getelementptr inbounds double, ptr %1063, i64 %1065
  %1067 = load double, ptr %1066, align 8, !tbaa !11
  %1068 = load ptr, ptr %13, align 8, !tbaa !9
  %1069 = load i32, ptr %24, align 4, !tbaa !5
  %1070 = sext i32 %1069 to i64
  %1071 = getelementptr inbounds double, ptr %1068, i64 %1070
  %1072 = load double, ptr %1071, align 8, !tbaa !11
  %1073 = fcmp oge double %1067, %1072
  br i1 %1073, label %1074, label %1080

1074:                                             ; preds = %1057
  %1075 = load ptr, ptr %16, align 8, !tbaa !9
  %1076 = load i32, ptr %24, align 4, !tbaa !5
  %1077 = sext i32 %1076 to i64
  %1078 = getelementptr inbounds double, ptr %1075, i64 %1077
  %1079 = load double, ptr %1078, align 8, !tbaa !11
  br label %1086

1080:                                             ; preds = %1057
  %1081 = load ptr, ptr %13, align 8, !tbaa !9
  %1082 = load i32, ptr %24, align 4, !tbaa !5
  %1083 = sext i32 %1082 to i64
  %1084 = getelementptr inbounds double, ptr %1081, i64 %1083
  %1085 = load double, ptr %1084, align 8, !tbaa !11
  br label %1086

1086:                                             ; preds = %1080, %1074
  %1087 = phi double [ %1079, %1074 ], [ %1085, %1080 ]
  %1088 = fsub double %1062, %1087
  %1089 = load ptr, ptr %16, align 8, !tbaa !9
  %1090 = load i32, ptr %24, align 4, !tbaa !5
  %1091 = sext i32 %1090 to i64
  %1092 = getelementptr inbounds double, ptr %1089, i64 %1091
  %1093 = load double, ptr %1092, align 8, !tbaa !11
  %1094 = load ptr, ptr %13, align 8, !tbaa !9
  %1095 = load i32, ptr %24, align 4, !tbaa !5
  %1096 = sext i32 %1095 to i64
  %1097 = getelementptr inbounds double, ptr %1094, i64 %1096
  %1098 = load double, ptr %1097, align 8, !tbaa !11
  %1099 = fcmp oge double %1093, %1098
  br i1 %1099, label %1100, label %1106

1100:                                             ; preds = %1086
  %1101 = load ptr, ptr %13, align 8, !tbaa !9
  %1102 = load i32, ptr %24, align 4, !tbaa !5
  %1103 = sext i32 %1102 to i64
  %1104 = getelementptr inbounds double, ptr %1101, i64 %1103
  %1105 = load double, ptr %1104, align 8, !tbaa !11
  br label %1112

1106:                                             ; preds = %1086
  %1107 = load ptr, ptr %16, align 8, !tbaa !9
  %1108 = load i32, ptr %24, align 4, !tbaa !5
  %1109 = sext i32 %1108 to i64
  %1110 = getelementptr inbounds double, ptr %1107, i64 %1109
  %1111 = load double, ptr %1110, align 8, !tbaa !11
  br label %1112

1112:                                             ; preds = %1106, %1100
  %1113 = phi double [ %1105, %1100 ], [ %1111, %1106 ]
  %1114 = load ptr, ptr %15, align 8, !tbaa !9
  %1115 = load i32, ptr %24, align 4, !tbaa !5
  %1116 = sext i32 %1115 to i64
  %1117 = getelementptr inbounds double, ptr %1114, i64 %1116
  %1118 = load double, ptr %1117, align 8, !tbaa !11
  %1119 = fsub double %1113, %1118
  %1120 = fadd double %1088, %1119
  br label %1122

1121:                                             ; preds = %1050
  br label %1122

1122:                                             ; preds = %1121, %1112
  %1123 = phi double [ %1120, %1112 ], [ 0.000000e+00, %1121 ]
  br label %1124

1124:                                             ; preds = %1122, %1038
  %1125 = phi double [ %1049, %1038 ], [ %1123, %1122 ]
  br label %1126

1126:                                             ; preds = %1124, %1018
  %1127 = phi double [ %1030, %1018 ], [ %1125, %1124 ]
  %1128 = fsub double %1011, %1127
  %1129 = load double, ptr %20, align 8, !tbaa !11
  %1130 = fadd double %1129, %1128
  store double %1130, ptr %20, align 8, !tbaa !11
  %1131 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1132 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1131, i32 0, i32 8
  %1133 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1132, i64 0, i64 5
  %1134 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1133, i32 0, i32 1
  %1135 = load i32, ptr %1134, align 4, !tbaa !15
  %1136 = icmp eq i32 %1135, 0
  br i1 %1136, label %1137, label %1150

1137:                                             ; preds = %1126
  %1138 = load ptr, ptr %16, align 8, !tbaa !9
  %1139 = load i32, ptr %22, align 4, !tbaa !5
  %1140 = sext i32 %1139 to i64
  %1141 = getelementptr inbounds double, ptr %1138, i64 %1140
  %1142 = load double, ptr %1141, align 8, !tbaa !11
  %1143 = load ptr, ptr %13, align 8, !tbaa !9
  %1144 = load i32, ptr %22, align 4, !tbaa !5
  %1145 = sext i32 %1144 to i64
  %1146 = getelementptr inbounds double, ptr %1143, i64 %1145
  %1147 = load double, ptr %1146, align 8, !tbaa !11
  %1148 = fsub double %1142, %1147
  %1149 = call double @llvm.fabs.f64(double %1148)
  br label %1245

1150:                                             ; preds = %1126
  %1151 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1152 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1151, i32 0, i32 8
  %1153 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1152, i64 0, i64 5
  %1154 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1153, i32 0, i32 1
  %1155 = load i32, ptr %1154, align 4, !tbaa !15
  %1156 = icmp eq i32 %1155, 1
  br i1 %1156, label %1157, label %1169

1157:                                             ; preds = %1150
  %1158 = load ptr, ptr %14, align 8, !tbaa !9
  %1159 = load i32, ptr %22, align 4, !tbaa !5
  %1160 = sext i32 %1159 to i64
  %1161 = getelementptr inbounds double, ptr %1158, i64 %1160
  %1162 = load double, ptr %1161, align 8, !tbaa !11
  %1163 = load ptr, ptr %15, align 8, !tbaa !9
  %1164 = load i32, ptr %22, align 4, !tbaa !5
  %1165 = sext i32 %1164 to i64
  %1166 = getelementptr inbounds double, ptr %1163, i64 %1165
  %1167 = load double, ptr %1166, align 8, !tbaa !11
  %1168 = fsub double %1162, %1167
  br label %1243

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

1176:                                             ; preds = %1169
  %1177 = load ptr, ptr %14, align 8, !tbaa !9
  %1178 = load i32, ptr %22, align 4, !tbaa !5
  %1179 = sext i32 %1178 to i64
  %1180 = getelementptr inbounds double, ptr %1177, i64 %1179
  %1181 = load double, ptr %1180, align 8, !tbaa !11
  %1182 = load ptr, ptr %16, align 8, !tbaa !9
  %1183 = load i32, ptr %22, align 4, !tbaa !5
  %1184 = sext i32 %1183 to i64
  %1185 = getelementptr inbounds double, ptr %1182, i64 %1184
  %1186 = load double, ptr %1185, align 8, !tbaa !11
  %1187 = load ptr, ptr %13, align 8, !tbaa !9
  %1188 = load i32, ptr %22, align 4, !tbaa !5
  %1189 = sext i32 %1188 to i64
  %1190 = getelementptr inbounds double, ptr %1187, i64 %1189
  %1191 = load double, ptr %1190, align 8, !tbaa !11
  %1192 = fcmp oge double %1186, %1191
  br i1 %1192, label %1193, label %1199

1193:                                             ; preds = %1176
  %1194 = load ptr, ptr %16, align 8, !tbaa !9
  %1195 = load i32, ptr %22, align 4, !tbaa !5
  %1196 = sext i32 %1195 to i64
  %1197 = getelementptr inbounds double, ptr %1194, i64 %1196
  %1198 = load double, ptr %1197, align 8, !tbaa !11
  br label %1205

1199:                                             ; preds = %1176
  %1200 = load ptr, ptr %13, align 8, !tbaa !9
  %1201 = load i32, ptr %22, align 4, !tbaa !5
  %1202 = sext i32 %1201 to i64
  %1203 = getelementptr inbounds double, ptr %1200, i64 %1202
  %1204 = load double, ptr %1203, align 8, !tbaa !11
  br label %1205

1205:                                             ; preds = %1199, %1193
  %1206 = phi double [ %1198, %1193 ], [ %1204, %1199 ]
  %1207 = fsub double %1181, %1206
  %1208 = load ptr, ptr %16, align 8, !tbaa !9
  %1209 = load i32, ptr %22, align 4, !tbaa !5
  %1210 = sext i32 %1209 to i64
  %1211 = getelementptr inbounds double, ptr %1208, i64 %1210
  %1212 = load double, ptr %1211, align 8, !tbaa !11
  %1213 = load ptr, ptr %13, align 8, !tbaa !9
  %1214 = load i32, ptr %22, align 4, !tbaa !5
  %1215 = sext i32 %1214 to i64
  %1216 = getelementptr inbounds double, ptr %1213, i64 %1215
  %1217 = load double, ptr %1216, align 8, !tbaa !11
  %1218 = fcmp oge double %1212, %1217
  br i1 %1218, label %1219, label %1225

1219:                                             ; preds = %1205
  %1220 = load ptr, ptr %13, align 8, !tbaa !9
  %1221 = load i32, ptr %22, align 4, !tbaa !5
  %1222 = sext i32 %1221 to i64
  %1223 = getelementptr inbounds double, ptr %1220, i64 %1222
  %1224 = load double, ptr %1223, align 8, !tbaa !11
  br label %1231

1225:                                             ; preds = %1205
  %1226 = load ptr, ptr %16, align 8, !tbaa !9
  %1227 = load i32, ptr %22, align 4, !tbaa !5
  %1228 = sext i32 %1227 to i64
  %1229 = getelementptr inbounds double, ptr %1226, i64 %1228
  %1230 = load double, ptr %1229, align 8, !tbaa !11
  br label %1231

1231:                                             ; preds = %1225, %1219
  %1232 = phi double [ %1224, %1219 ], [ %1230, %1225 ]
  %1233 = load ptr, ptr %15, align 8, !tbaa !9
  %1234 = load i32, ptr %22, align 4, !tbaa !5
  %1235 = sext i32 %1234 to i64
  %1236 = getelementptr inbounds double, ptr %1233, i64 %1235
  %1237 = load double, ptr %1236, align 8, !tbaa !11
  %1238 = fsub double %1232, %1237
  %1239 = fadd double %1207, %1238
  br label %1241

1240:                                             ; preds = %1169
  br label %1241

1241:                                             ; preds = %1240, %1231
  %1242 = phi double [ %1239, %1231 ], [ 0.000000e+00, %1240 ]
  br label %1243

1243:                                             ; preds = %1241, %1157
  %1244 = phi double [ %1168, %1157 ], [ %1242, %1241 ]
  br label %1245

1245:                                             ; preds = %1243, %1137
  %1246 = phi double [ %1149, %1137 ], [ %1244, %1243 ]
  %1247 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1248 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1247, i32 0, i32 8
  %1249 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1248, i64 0, i64 5
  %1250 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1249, i32 0, i32 1
  %1251 = load i32, ptr %1250, align 4, !tbaa !15
  %1252 = icmp eq i32 %1251, 0
  br i1 %1252, label %1253, label %1266

1253:                                             ; preds = %1245
  %1254 = load ptr, ptr %16, align 8, !tbaa !9
  %1255 = load i32, ptr %25, align 4, !tbaa !5
  %1256 = sext i32 %1255 to i64
  %1257 = getelementptr inbounds double, ptr %1254, i64 %1256
  %1258 = load double, ptr %1257, align 8, !tbaa !11
  %1259 = load ptr, ptr %13, align 8, !tbaa !9
  %1260 = load i32, ptr %25, align 4, !tbaa !5
  %1261 = sext i32 %1260 to i64
  %1262 = getelementptr inbounds double, ptr %1259, i64 %1261
  %1263 = load double, ptr %1262, align 8, !tbaa !11
  %1264 = fsub double %1258, %1263
  %1265 = call double @llvm.fabs.f64(double %1264)
  br label %1361

1266:                                             ; preds = %1245
  %1267 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1268 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1267, i32 0, i32 8
  %1269 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1268, i64 0, i64 5
  %1270 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1269, i32 0, i32 1
  %1271 = load i32, ptr %1270, align 4, !tbaa !15
  %1272 = icmp eq i32 %1271, 1
  br i1 %1272, label %1273, label %1285

1273:                                             ; preds = %1266
  %1274 = load ptr, ptr %14, align 8, !tbaa !9
  %1275 = load i32, ptr %25, align 4, !tbaa !5
  %1276 = sext i32 %1275 to i64
  %1277 = getelementptr inbounds double, ptr %1274, i64 %1276
  %1278 = load double, ptr %1277, align 8, !tbaa !11
  %1279 = load ptr, ptr %15, align 8, !tbaa !9
  %1280 = load i32, ptr %25, align 4, !tbaa !5
  %1281 = sext i32 %1280 to i64
  %1282 = getelementptr inbounds double, ptr %1279, i64 %1281
  %1283 = load double, ptr %1282, align 8, !tbaa !11
  %1284 = fsub double %1278, %1283
  br label %1359

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

1292:                                             ; preds = %1285
  %1293 = load ptr, ptr %14, align 8, !tbaa !9
  %1294 = load i32, ptr %25, align 4, !tbaa !5
  %1295 = sext i32 %1294 to i64
  %1296 = getelementptr inbounds double, ptr %1293, i64 %1295
  %1297 = load double, ptr %1296, align 8, !tbaa !11
  %1298 = load ptr, ptr %16, align 8, !tbaa !9
  %1299 = load i32, ptr %25, align 4, !tbaa !5
  %1300 = sext i32 %1299 to i64
  %1301 = getelementptr inbounds double, ptr %1298, i64 %1300
  %1302 = load double, ptr %1301, align 8, !tbaa !11
  %1303 = load ptr, ptr %13, align 8, !tbaa !9
  %1304 = load i32, ptr %25, align 4, !tbaa !5
  %1305 = sext i32 %1304 to i64
  %1306 = getelementptr inbounds double, ptr %1303, i64 %1305
  %1307 = load double, ptr %1306, align 8, !tbaa !11
  %1308 = fcmp oge double %1302, %1307
  br i1 %1308, label %1309, label %1315

1309:                                             ; preds = %1292
  %1310 = load ptr, ptr %16, align 8, !tbaa !9
  %1311 = load i32, ptr %25, align 4, !tbaa !5
  %1312 = sext i32 %1311 to i64
  %1313 = getelementptr inbounds double, ptr %1310, i64 %1312
  %1314 = load double, ptr %1313, align 8, !tbaa !11
  br label %1321

1315:                                             ; preds = %1292
  %1316 = load ptr, ptr %13, align 8, !tbaa !9
  %1317 = load i32, ptr %25, align 4, !tbaa !5
  %1318 = sext i32 %1317 to i64
  %1319 = getelementptr inbounds double, ptr %1316, i64 %1318
  %1320 = load double, ptr %1319, align 8, !tbaa !11
  br label %1321

1321:                                             ; preds = %1315, %1309
  %1322 = phi double [ %1314, %1309 ], [ %1320, %1315 ]
  %1323 = fsub double %1297, %1322
  %1324 = load ptr, ptr %16, align 8, !tbaa !9
  %1325 = load i32, ptr %25, align 4, !tbaa !5
  %1326 = sext i32 %1325 to i64
  %1327 = getelementptr inbounds double, ptr %1324, i64 %1326
  %1328 = load double, ptr %1327, align 8, !tbaa !11
  %1329 = load ptr, ptr %13, align 8, !tbaa !9
  %1330 = load i32, ptr %25, align 4, !tbaa !5
  %1331 = sext i32 %1330 to i64
  %1332 = getelementptr inbounds double, ptr %1329, i64 %1331
  %1333 = load double, ptr %1332, align 8, !tbaa !11
  %1334 = fcmp oge double %1328, %1333
  br i1 %1334, label %1335, label %1341

1335:                                             ; preds = %1321
  %1336 = load ptr, ptr %13, align 8, !tbaa !9
  %1337 = load i32, ptr %25, align 4, !tbaa !5
  %1338 = sext i32 %1337 to i64
  %1339 = getelementptr inbounds double, ptr %1336, i64 %1338
  %1340 = load double, ptr %1339, align 8, !tbaa !11
  br label %1347

1341:                                             ; preds = %1321
  %1342 = load ptr, ptr %16, align 8, !tbaa !9
  %1343 = load i32, ptr %25, align 4, !tbaa !5
  %1344 = sext i32 %1343 to i64
  %1345 = getelementptr inbounds double, ptr %1342, i64 %1344
  %1346 = load double, ptr %1345, align 8, !tbaa !11
  br label %1347

1347:                                             ; preds = %1341, %1335
  %1348 = phi double [ %1340, %1335 ], [ %1346, %1341 ]
  %1349 = load ptr, ptr %15, align 8, !tbaa !9
  %1350 = load i32, ptr %25, align 4, !tbaa !5
  %1351 = sext i32 %1350 to i64
  %1352 = getelementptr inbounds double, ptr %1349, i64 %1351
  %1353 = load double, ptr %1352, align 8, !tbaa !11
  %1354 = fsub double %1348, %1353
  %1355 = fadd double %1323, %1354
  br label %1357

1356:                                             ; preds = %1285
  br label %1357

1357:                                             ; preds = %1356, %1347
  %1358 = phi double [ %1355, %1347 ], [ 0.000000e+00, %1356 ]
  br label %1359

1359:                                             ; preds = %1357, %1273
  %1360 = phi double [ %1284, %1273 ], [ %1358, %1357 ]
  br label %1361

1361:                                             ; preds = %1359, %1253
  %1362 = phi double [ %1265, %1253 ], [ %1360, %1359 ]
  %1363 = fsub double %1246, %1362
  %1364 = load double, ptr %21, align 8, !tbaa !11
  %1365 = fadd double %1364, %1363
  store double %1365, ptr %21, align 8, !tbaa !11
  %1366 = load i32, ptr %22, align 4, !tbaa !5
  %1367 = add nsw i32 %1366, 1
  store i32 %1367, ptr %22, align 4, !tbaa !5
  %1368 = load i32, ptr %24, align 4, !tbaa !5
  %1369 = add nsw i32 %1368, 1
  store i32 %1369, ptr %24, align 4, !tbaa !5
  %1370 = load i32, ptr %25, align 4, !tbaa !5
  %1371 = add nsw i32 %1370, 1
  store i32 %1371, ptr %25, align 4, !tbaa !5
  br label %1372

1372:                                             ; preds = %1361
  %1373 = load i32, ptr %22, align 4, !tbaa !5
  %1374 = load i32, ptr %12, align 4, !tbaa !5
  %1375 = icmp sle i32 %1373, %1374
  br i1 %1375, label %339, label %1376, !llvm.loop !20

1376:                                             ; preds = %1372
  %1377 = load i32, ptr %23, align 4, !tbaa !5
  %1378 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 %1377, ptr %1378, align 4, !tbaa !5
  %1379 = load i32, ptr %11, align 4, !tbaa !5
  %1380 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 %1379, ptr %1380, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %27, align 4
  br label %1381

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

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

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

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

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

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

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


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

@TA_Globals = external local_unnamed_addr global ptr, align 8

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

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

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

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

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

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

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

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

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

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

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

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

.preheader430:                                    ; preds = %.lr.ph.split.us438, %.lr.ph.split.us433, %.lr.ph.split.us, %.lr.ph, %25
  %.0338.lcssa = phi double [ 0.000000e+00, %25 ], [ 0.000000e+00, %.lr.ph ], [ %48, %.lr.ph.split.us ], [ %55, %.lr.ph.split.us433 ], [ %70, %.lr.ph.split.us438 ]
  %72 = icmp sgt i32 %31, 0
  br i1 %72, label %.lr.ph445, label %.preheader

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

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

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

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

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

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

.lr.ph445.split.us450:                            ; preds = %.lr.ph445.split.us450.preheader, %.lr.ph445.split.us450
  %indvars.iv489 = phi i64 [ %77, %.lr.ph445.split.us450.preheader ], [ %indvars.iv.next490, %.lr.ph445.split.us450 ]
  %.0336443.us452 = phi double [ 0.000000e+00, %.lr.ph445.split.us450.preheader ], [ %96, %.lr.ph445.split.us450 ]
  %91 = getelementptr inbounds double, ptr %3, i64 %indvars.iv489
  %92 = load double, ptr %91, align 8, !tbaa !15
  %93 = getelementptr inbounds double, ptr %4, i64 %indvars.iv489
  %94 = load double, ptr %93, align 8, !tbaa !15
  %95 = fsub double %92, %94
  %96 = fadd double %.0336443.us452, %95
  %indvars.iv.next490 = add nsw i64 %indvars.iv489, 1
  %97 = icmp slt i64 %indvars.iv.next490, %78
  br i1 %97, label %.lr.ph445.split.us450, label %.preheader.loopexit465, !llvm.loop !18

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

.preheader.loopexit464:                           ; preds = %.lr.ph445.split.us
  %113 = trunc nsw i64 %indvars.iv.next493 to i32
  br label %.preheader

.preheader.loopexit465:                           ; preds = %.lr.ph445.split.us450
  %114 = trunc nsw i64 %indvars.iv.next490 to i32
  br label %.preheader

.preheader.loopexit466:                           ; preds = %.lr.ph445.split.us457
  %115 = trunc nsw i64 %indvars.iv.next487 to i32
  br label %.preheader

.preheader:                                       ; preds = %.preheader.loopexit466, %.preheader.loopexit465, %.preheader.loopexit464, %.lr.ph445.split.preheader, %.preheader430
  %.0336.lcssa = phi double [ 0.000000e+00, %.preheader430 ], [ 0.000000e+00, %.lr.ph445.split.preheader ], [ %89, %.preheader.loopexit464 ], [ %96, %.preheader.loopexit465 ], [ %111, %.preheader.loopexit466 ]
  %.1335.lcssa = phi i32 [ %32, %.preheader430 ], [ %smax495, %.lr.ph445.split.preheader ], [ %113, %.preheader.loopexit464 ], [ %114, %.preheader.loopexit465 ], [ %115, %.preheader.loopexit466 ]
  %116 = getelementptr inbounds i8, ptr %26, i64 272
  %117 = load double, ptr %116, align 8, !tbaa !19
  %118 = getelementptr inbounds i8, ptr %26, i64 260
  %119 = getelementptr inbounds i8, ptr %26, i64 332
  %120 = getelementptr inbounds i8, ptr %26, i64 344
  %121 = zext i32 %.1335.lcssa to i64
  %122 = sext i32 %29 to i64
  %123 = sext i32 %32 to i64
  %smax511 = tail call i32 @llvm.smax.i32(i32 %.1335.lcssa, i32 %1)
  %124 = add i32 %smax511, 1
  %125 = sub i32 %124, %.1335.lcssa
  %wide.trip.count = zext i32 %125 to i64
  br label %126

126:                                              ; preds = %.preheader, %295
  %indvars.iv502 = phi i64 [ %123, %.preheader ], [ %indvars.iv.next503, %295 ]
  %indvars.iv500 = phi i64 [ %122, %.preheader ], [ %indvars.iv.next501, %295 ]
  %indvars.iv498 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next499, %295 ]
  %indvars.iv496 = phi i64 [ %121, %.preheader ], [ %indvars.iv.next497, %295 ]
  %.1339 = phi double [ %.0338.lcssa, %.preheader ], [ %255, %295 ]
  %.1337 = phi double [ %.0336.lcssa, %.preheader ], [ %299, %295 ]
  %127 = getelementptr inbounds double, ptr %5, i64 %indvars.iv496
  %128 = load double, ptr %127, align 8, !tbaa !15
  %129 = getelementptr inbounds double, ptr %2, i64 %indvars.iv496
  %130 = load double, ptr %129, align 8, !tbaa !15
  %131 = fsub double %128, %130
  %132 = tail call double @llvm.fabs.f64(double %131)
  %133 = load i32, ptr %27, align 8, !tbaa !11
  %.not402 = icmp eq i32 %133, 0
  br i1 %.not402, label %134, label %151

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

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

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

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

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

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

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

160:                                              ; preds = %.thread514
  %161 = getelementptr inbounds double, ptr %3, i64 %indvars.iv496
  %162 = load double, ptr %161, align 8, !tbaa !15
  %163 = fcmp ult double %128, %130
  %.409 = select i1 %163, double %130, double %128
  %164 = fsub double %162, %.409
  %165 = load double, ptr %120, align 8, !tbaa !19
  %166 = load i32, ptr %30, align 8, !tbaa !11
  %.not403 = icmp eq i32 %166, 0
  br i1 %.not403, label %167, label %179

167:                                              ; preds = %160
  %168 = load i32, ptr %119, align 4, !tbaa !14
  switch i32 %168, label %.thread521 [
    i32 0, label %169
    i32 1, label %170
    i32 2, label %.thread523
  ]

169:                                              ; preds = %167
  br label %.thread521

170:                                              ; preds = %167
  %171 = getelementptr inbounds double, ptr %4, i64 %indvars.iv496
  %172 = load double, ptr %171, align 8, !tbaa !15
  %173 = fsub double %162, %172
  br label %.thread521

.thread523:                                       ; preds = %167
  %174 = select i1 %163, double %128, double %130
  %175 = getelementptr inbounds double, ptr %4, i64 %indvars.iv496
  %176 = load double, ptr %175, align 8, !tbaa !15
  %177 = fsub double %174, %176
  %178 = fadd double %164, %177
  br label %.thread521

179:                                              ; preds = %160
  %180 = sitofp i32 %166 to double
  %181 = fdiv double %.1337, %180
  %.pre512 = load i32, ptr %119, align 4, !tbaa !14
  %.pre512.fr = freeze i32 %.pre512
  %182 = icmp eq i32 %.pre512.fr, 2
  br i1 %182, label %183, label %.thread521

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

.thread521:                                       ; preds = %167, %170, %169, %.thread523, %179, %183
  %.pn533 = phi double [ %181, %179 ], [ %178, %.thread523 ], [ %181, %183 ], [ 0.000000e+00, %167 ], [ %173, %170 ], [ %132, %169 ]
  %184 = phi i32 [ %.pre512.fr, %179 ], [ 2, %.thread523 ], [ %.pre512.fr, %183 ], [ %168, %167 ], [ %168, %170 ], [ %168, %169 ]
  %185 = phi double [ 1.000000e+00, %179 ], [ 2.000000e+00, %.thread523 ], [ 2.000000e+00, %183 ], [ 1.000000e+00, %167 ], [ 1.000000e+00, %170 ], [ 1.000000e+00, %169 ]
  %186 = fmul double %165, %.pn533
  %187 = fdiv double %186, %185
  %188 = fcmp ogt double %164, %187
  br i1 %188, label %189, label %210

189:                                              ; preds = %.thread521
  %.411 = select i1 %163, double %128, double %130
  %190 = getelementptr inbounds double, ptr %4, i64 %indvars.iv496
  %191 = load double, ptr %190, align 8, !tbaa !15
  %192 = fsub double %.411, %191
  br i1 %.not403, label %196, label %193

193:                                              ; preds = %189
  %194 = sitofp i32 %166 to double
  %195 = fdiv double %.1337, %194
  br label %202

196:                                              ; preds = %189
  switch i32 %184, label %202 [
    i32 0, label %197
    i32 1, label %198
    i32 2, label %200
  ]

197:                                              ; preds = %196
  br label %202

198:                                              ; preds = %196
  %199 = fsub double %162, %191
  br label %202

200:                                              ; preds = %196
  %201 = fadd double %164, %192
  br label %202

202:                                              ; preds = %196, %197, %200, %198, %193
  %203 = phi double [ %195, %193 ], [ %132, %197 ], [ %199, %198 ], [ %201, %200 ], [ 0.000000e+00, %196 ]
  %204 = fmul double %165, %203
  %205 = fdiv double %204, %185
  %206 = fcmp ogt double %192, %205
  br i1 %206, label %207, label %210

207:                                              ; preds = %202
  %208 = fcmp oge double %128, %130
  %209 = select i1 %208, i32 100, i32 -100
  br label %210

210:                                              ; preds = %.thread514, %.thread521, %202, %207
  %.sink = phi i32 [ %209, %207 ], [ 0, %202 ], [ 0, %.thread521 ], [ 0, %.thread514 ]
  %211 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv498
  store i32 %.sink, ptr %211, align 4, !tbaa !5
  %indvars.iv.next499 = add nuw nsw i64 %indvars.iv498, 1
  %212 = load i32, ptr %118, align 4, !tbaa !14
  switch i32 %212, label %251 [
    i32 0, label %.thread
    i32 1, label %.thread418
    i32 2, label %.thread419
  ]

.thread418:                                       ; preds = %210
  %213 = getelementptr inbounds double, ptr %3, i64 %indvars.iv496
  %214 = load double, ptr %213, align 8, !tbaa !15
  %215 = getelementptr inbounds double, ptr %4, i64 %indvars.iv496
  %216 = load double, ptr %215, align 8, !tbaa !15
  %217 = fsub double %214, %216
  %218 = getelementptr inbounds double, ptr %3, i64 %indvars.iv500
  %219 = load double, ptr %218, align 8, !tbaa !15
  %220 = getelementptr inbounds double, ptr %4, i64 %indvars.iv500
  %221 = load double, ptr %220, align 8, !tbaa !15
  %222 = fsub double %219, %221
  br label %251

.thread419:                                       ; preds = %210
  %223 = getelementptr inbounds double, ptr %3, i64 %indvars.iv496
  %224 = load double, ptr %223, align 8, !tbaa !15
  %225 = fcmp ult double %128, %130
  %.413 = select i1 %225, double %130, double %128
  %226 = fsub double %224, %.413
  %227 = select i1 %225, double %128, double %130
  %228 = getelementptr inbounds double, ptr %4, i64 %indvars.iv496
  %229 = load double, ptr %228, align 8, !tbaa !15
  %230 = fsub double %227, %229
  %231 = fadd double %226, %230
  %232 = getelementptr inbounds double, ptr %3, i64 %indvars.iv500
  %233 = load double, ptr %232, align 8, !tbaa !15
  %234 = getelementptr inbounds double, ptr %5, i64 %indvars.iv500
  %235 = load double, ptr %234, align 8, !tbaa !15
  %236 = getelementptr inbounds double, ptr %2, i64 %indvars.iv500
  %237 = load double, ptr %236, align 8, !tbaa !15
  %238 = fcmp ult double %235, %237
  %.414 = select i1 %238, double %237, double %235
  %239 = fsub double %233, %.414
  %240 = select i1 %238, double %235, double %237
  %241 = getelementptr inbounds double, ptr %4, i64 %indvars.iv500
  %242 = load double, ptr %241, align 8, !tbaa !15
  %243 = fsub double %240, %242
  %244 = fadd double %239, %243
  br label %251

.thread:                                          ; preds = %210
  %245 = getelementptr inbounds double, ptr %5, i64 %indvars.iv500
  %246 = load double, ptr %245, align 8, !tbaa !15
  %247 = getelementptr inbounds double, ptr %2, i64 %indvars.iv500
  %248 = load double, ptr %247, align 8, !tbaa !15
  %249 = fsub double %246, %248
  %250 = tail call double @llvm.fabs.f64(double %249)
  br label %251

251:                                              ; preds = %210, %.thread418, %.thread419, %.thread
  %252 = phi double [ %132, %.thread ], [ %217, %.thread418 ], [ %231, %.thread419 ], [ 0.000000e+00, %210 ]
  %253 = phi double [ %250, %.thread ], [ %222, %.thread418 ], [ %244, %.thread419 ], [ 0.000000e+00, %210 ]
  %254 = fsub double %252, %253
  %255 = fadd double %.1339, %254
  %256 = load i32, ptr %119, align 4, !tbaa !14
  switch i32 %256, label %295 [
    i32 0, label %.thread420
    i32 1, label %.thread421
    i32 2, label %.thread422
  ]

.thread421:                                       ; preds = %251
  %257 = getelementptr inbounds double, ptr %3, i64 %indvars.iv496
  %258 = load double, ptr %257, align 8, !tbaa !15
  %259 = getelementptr inbounds double, ptr %4, i64 %indvars.iv496
  %260 = load double, ptr %259, align 8, !tbaa !15
  %261 = fsub double %258, %260
  %262 = getelementptr inbounds double, ptr %3, i64 %indvars.iv502
  %263 = load double, ptr %262, align 8, !tbaa !15
  %264 = getelementptr inbounds double, ptr %4, i64 %indvars.iv502
  %265 = load double, ptr %264, align 8, !tbaa !15
  %266 = fsub double %263, %265
  br label %295

.thread422:                                       ; preds = %251
  %267 = getelementptr inbounds double, ptr %3, i64 %indvars.iv496
  %268 = load double, ptr %267, align 8, !tbaa !15
  %269 = fcmp ult double %128, %130
  %.415 = select i1 %269, double %130, double %128
  %270 = fsub double %268, %.415
  %271 = select i1 %269, double %128, double %130
  %272 = getelementptr inbounds double, ptr %4, i64 %indvars.iv496
  %273 = load double, ptr %272, align 8, !tbaa !15
  %274 = fsub double %271, %273
  %275 = fadd double %270, %274
  %276 = getelementptr inbounds double, ptr %3, i64 %indvars.iv502
  %277 = load double, ptr %276, align 8, !tbaa !15
  %278 = getelementptr inbounds double, ptr %5, i64 %indvars.iv502
  %279 = load double, ptr %278, align 8, !tbaa !15
  %280 = getelementptr inbounds double, ptr %2, i64 %indvars.iv502
  %281 = load double, ptr %280, align 8, !tbaa !15
  %282 = fcmp ult double %279, %281
  %.416 = select i1 %282, double %281, double %279
  %283 = fsub double %277, %.416
  %284 = select i1 %282, double %279, double %281
  %285 = getelementptr inbounds double, ptr %4, i64 %indvars.iv502
  %286 = load double, ptr %285, align 8, !tbaa !15
  %287 = fsub double %284, %286
  %288 = fadd double %283, %287
  br label %295

.thread420:                                       ; preds = %251
  %289 = getelementptr inbounds double, ptr %5, i64 %indvars.iv502
  %290 = load double, ptr %289, align 8, !tbaa !15
  %291 = getelementptr inbounds double, ptr %2, i64 %indvars.iv502
  %292 = load double, ptr %291, align 8, !tbaa !15
  %293 = fsub double %290, %292
  %294 = tail call double @llvm.fabs.f64(double %293)
  br label %295

295:                                              ; preds = %251, %.thread421, %.thread422, %.thread420
  %296 = phi double [ %132, %.thread420 ], [ %261, %.thread421 ], [ %275, %.thread422 ], [ 0.000000e+00, %251 ]
  %297 = phi double [ %294, %.thread420 ], [ %266, %.thread421 ], [ %288, %.thread422 ], [ 0.000000e+00, %251 ]
  %298 = fsub double %296, %297
  %299 = fadd double %.1337, %298
  %indvars.iv.next497 = add nuw nsw i64 %indvars.iv496, 1
  %indvars.iv.next501 = add nsw i64 %indvars.iv500, 1
  %indvars.iv.next503 = add nsw i64 %indvars.iv502, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next499, %wide.trip.count
  br i1 %exitcond.not, label %300, label %126, !llvm.loop !20

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

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

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

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

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

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

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


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