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

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

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

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

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

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

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

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

87:                                               ; preds = %207, %70
  %88 = load i32, ptr %22, align 4, !tbaa !5
  %89 = load i32, ptr %11, align 4, !tbaa !5
  %90 = sub nsw i32 %89, 1
  %91 = icmp slt i32 %88, %90
  br i1 %91, label %92, label %213

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

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

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

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

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

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

155:                                              ; preds = %138
  %156 = load ptr, ptr %16, align 8, !tbaa !9
  %157 = load i32, ptr %22, align 4, !tbaa !5
  %158 = sext i32 %157 to i64
  %159 = getelementptr inbounds double, ptr %156, i64 %158
  %160 = load double, ptr %159, align 8, !tbaa !11
  br label %167

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

167:                                              ; preds = %161, %155
  %168 = phi double [ %160, %155 ], [ %166, %161 ]
  %169 = fsub double %143, %168
  %170 = load ptr, ptr %16, align 8, !tbaa !9
  %171 = load i32, ptr %22, align 4, !tbaa !5
  %172 = sext i32 %171 to i64
  %173 = getelementptr inbounds double, ptr %170, i64 %172
  %174 = load double, ptr %173, align 8, !tbaa !11
  %175 = load ptr, ptr %13, align 8, !tbaa !9
  %176 = load i32, ptr %22, align 4, !tbaa !5
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds double, ptr %175, i64 %177
  %179 = load double, ptr %178, align 8, !tbaa !11
  %180 = fcmp oge double %174, %179
  br i1 %180, label %181, label %187

181:                                              ; preds = %167
  %182 = load ptr, ptr %13, align 8, !tbaa !9
  %183 = load i32, ptr %22, align 4, !tbaa !5
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds double, ptr %182, i64 %184
  %186 = load double, ptr %185, align 8, !tbaa !11
  br label %193

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

193:                                              ; preds = %187, %181
  %194 = phi double [ %186, %181 ], [ %192, %187 ]
  %195 = load ptr, ptr %15, align 8, !tbaa !9
  %196 = load i32, ptr %22, align 4, !tbaa !5
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds double, ptr %195, i64 %197
  %199 = load double, ptr %198, align 8, !tbaa !11
  %200 = fsub double %194, %199
  %201 = fadd double %169, %200
  br label %203

202:                                              ; preds = %131
  br label %203

203:                                              ; preds = %202, %193
  %204 = phi double [ %201, %193 ], [ 0.000000e+00, %202 ]
  br label %205

205:                                              ; preds = %203, %119
  %206 = phi double [ %130, %119 ], [ %204, %203 ]
  br label %207

207:                                              ; preds = %205, %99
  %208 = phi double [ %111, %99 ], [ %206, %205 ]
  %209 = load double, ptr %21, align 8, !tbaa !11
  %210 = fadd double %209, %208
  store double %210, ptr %21, align 8, !tbaa !11
  %211 = load i32, ptr %22, align 4, !tbaa !5
  %212 = add nsw i32 %211, 1
  store i32 %212, ptr %22, align 4, !tbaa !5
  br label %87, !llvm.loop !16

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

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

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

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

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

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

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

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

282:                                              ; preds = %265
  %283 = load ptr, ptr %16, align 8, !tbaa !9
  %284 = load i32, ptr %22, align 4, !tbaa !5
  %285 = sext i32 %284 to i64
  %286 = getelementptr inbounds double, ptr %283, i64 %285
  %287 = load double, ptr %286, align 8, !tbaa !11
  br label %294

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

294:                                              ; preds = %288, %282
  %295 = phi double [ %287, %282 ], [ %293, %288 ]
  %296 = fsub double %270, %295
  %297 = load ptr, ptr %16, align 8, !tbaa !9
  %298 = load i32, ptr %22, align 4, !tbaa !5
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds double, ptr %297, i64 %299
  %301 = load double, ptr %300, align 8, !tbaa !11
  %302 = load ptr, ptr %13, align 8, !tbaa !9
  %303 = load i32, ptr %22, align 4, !tbaa !5
  %304 = sext i32 %303 to i64
  %305 = getelementptr inbounds double, ptr %302, i64 %304
  %306 = load double, ptr %305, align 8, !tbaa !11
  %307 = fcmp oge double %301, %306
  br i1 %307, label %308, label %314

308:                                              ; preds = %294
  %309 = load ptr, ptr %13, align 8, !tbaa !9
  %310 = load i32, ptr %22, align 4, !tbaa !5
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds double, ptr %309, i64 %311
  %313 = load double, ptr %312, align 8, !tbaa !11
  br label %320

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

320:                                              ; preds = %314, %308
  %321 = phi double [ %313, %308 ], [ %319, %314 ]
  %322 = load ptr, ptr %15, align 8, !tbaa !9
  %323 = load i32, ptr %22, align 4, !tbaa !5
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds double, ptr %322, i64 %324
  %326 = load double, ptr %325, align 8, !tbaa !11
  %327 = fsub double %321, %326
  %328 = fadd double %296, %327
  br label %330

329:                                              ; preds = %258
  br label %330

330:                                              ; preds = %329, %320
  %331 = phi double [ %328, %320 ], [ 0.000000e+00, %329 ]
  br label %332

332:                                              ; preds = %330, %246
  %333 = phi double [ %257, %246 ], [ %331, %330 ]
  br label %334

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

340:                                              ; preds = %215
  %341 = load i32, ptr %11, align 4, !tbaa !5
  store i32 %341, ptr %22, align 4, !tbaa !5
  store i32 0, ptr %23, align 4, !tbaa !5
  br label %342

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

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

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

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

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

407:                                              ; preds = %400
  %408 = load ptr, ptr %14, align 8, !tbaa !9
  %409 = load i32, ptr %22, align 4, !tbaa !5
  %410 = sub nsw i32 %409, 1
  %411 = sext i32 %410 to i64
  %412 = getelementptr inbounds double, ptr %408, i64 %411
  %413 = load double, ptr %412, align 8, !tbaa !11
  %414 = load ptr, ptr %15, align 8, !tbaa !9
  %415 = load i32, ptr %22, align 4, !tbaa !5
  %416 = sub nsw i32 %415, 1
  %417 = sext i32 %416 to i64
  %418 = getelementptr inbounds double, ptr %414, i64 %417
  %419 = load double, ptr %418, align 8, !tbaa !11
  %420 = fsub double %413, %419
  br label %505

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

428:                                              ; preds = %421
  %429 = load ptr, ptr %14, align 8, !tbaa !9
  %430 = load i32, ptr %22, align 4, !tbaa !5
  %431 = sub nsw i32 %430, 1
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds double, ptr %429, i64 %432
  %434 = load double, ptr %433, align 8, !tbaa !11
  %435 = load ptr, ptr %16, align 8, !tbaa !9
  %436 = load i32, ptr %22, align 4, !tbaa !5
  %437 = sub nsw i32 %436, 1
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds double, ptr %435, i64 %438
  %440 = load double, ptr %439, align 8, !tbaa !11
  %441 = load ptr, ptr %13, align 8, !tbaa !9
  %442 = load i32, ptr %22, align 4, !tbaa !5
  %443 = sub nsw i32 %442, 1
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds double, ptr %441, i64 %444
  %446 = load double, ptr %445, align 8, !tbaa !11
  %447 = fcmp oge double %440, %446
  br i1 %447, label %448, label %455

448:                                              ; preds = %428
  %449 = load ptr, ptr %16, align 8, !tbaa !9
  %450 = load i32, ptr %22, align 4, !tbaa !5
  %451 = sub nsw i32 %450, 1
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds double, ptr %449, i64 %452
  %454 = load double, ptr %453, align 8, !tbaa !11
  br label %462

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

462:                                              ; preds = %455, %448
  %463 = phi double [ %454, %448 ], [ %461, %455 ]
  %464 = fsub double %434, %463
  %465 = load ptr, ptr %16, align 8, !tbaa !9
  %466 = load i32, ptr %22, align 4, !tbaa !5
  %467 = sub nsw i32 %466, 1
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds double, ptr %465, i64 %468
  %470 = load double, ptr %469, align 8, !tbaa !11
  %471 = load ptr, ptr %13, align 8, !tbaa !9
  %472 = load i32, ptr %22, align 4, !tbaa !5
  %473 = sub nsw i32 %472, 1
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds double, ptr %471, i64 %474
  %476 = load double, ptr %475, align 8, !tbaa !11
  %477 = fcmp oge double %470, %476
  br i1 %477, label %478, label %485

478:                                              ; preds = %462
  %479 = load ptr, ptr %13, align 8, !tbaa !9
  %480 = load i32, ptr %22, align 4, !tbaa !5
  %481 = sub nsw i32 %480, 1
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds double, ptr %479, i64 %482
  %484 = load double, ptr %483, align 8, !tbaa !11
  br label %492

485:                                              ; preds = %462
  %486 = load ptr, ptr %16, align 8, !tbaa !9
  %487 = load i32, ptr %22, align 4, !tbaa !5
  %488 = sub nsw i32 %487, 1
  %489 = sext i32 %488 to i64
  %490 = getelementptr inbounds double, ptr %486, i64 %489
  %491 = load double, ptr %490, align 8, !tbaa !11
  br label %492

492:                                              ; preds = %485, %478
  %493 = phi double [ %484, %478 ], [ %491, %485 ]
  %494 = load ptr, ptr %15, align 8, !tbaa !9
  %495 = load i32, ptr %22, align 4, !tbaa !5
  %496 = sub nsw i32 %495, 1
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds double, ptr %494, i64 %497
  %499 = load double, ptr %498, align 8, !tbaa !11
  %500 = fsub double %493, %499
  %501 = fadd double %464, %500
  br label %503

502:                                              ; preds = %421
  br label %503

503:                                              ; preds = %502, %492
  %504 = phi double [ %501, %492 ], [ 0.000000e+00, %502 ]
  br label %505

505:                                              ; preds = %503, %407
  %506 = phi double [ %420, %407 ], [ %504, %503 ]
  br label %507

507:                                              ; preds = %505, %385
  %508 = phi double [ %399, %385 ], [ %506, %505 ]
  br label %509

509:                                              ; preds = %507, %369
  %510 = phi double [ %377, %369 ], [ %508, %507 ]
  %511 = fmul double %361, %510
  %512 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %513 = getelementptr inbounds %struct.TA_LibcPriv, ptr %512, i32 0, i32 8
  %514 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %513, i64 0, i64 0
  %515 = getelementptr inbounds %struct.TA_CandleSetting, ptr %514, i32 0, i32 1
  %516 = load i32, ptr %515, align 4, !tbaa !15
  %517 = icmp eq i32 %516, 2
  %518 = zext i1 %517 to i64
  %519 = select i1 %517, double 2.000000e+00, double 1.000000e+00
  %520 = fdiv double %511, %519
  %521 = fcmp ogt double %356, %520
  br i1 %521, label %522, label %964

522:                                              ; preds = %509
  %523 = load ptr, ptr %16, align 8, !tbaa !9
  %524 = load i32, ptr %22, align 4, !tbaa !5
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds double, ptr %523, i64 %525
  %527 = load double, ptr %526, align 8, !tbaa !11
  %528 = load ptr, ptr %13, align 8, !tbaa !9
  %529 = load i32, ptr %22, align 4, !tbaa !5
  %530 = sext i32 %529 to i64
  %531 = getelementptr inbounds double, ptr %528, i64 %530
  %532 = load double, ptr %531, align 8, !tbaa !11
  %533 = fsub double %527, %532
  %534 = call double @llvm.fabs.f64(double %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 2
  %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 2
  %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 = %522
  %548 = load double, ptr %20, 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 2
  %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 = %522
  %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 2
  %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 2
  %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 2
  %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 2
  %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 ole double %534, %684
  br i1 %685, label %686, label %964

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 ogt double %691, %696
  br i1 %697, label %698, label %704

698:                                              ; preds = %686
  %699 = load ptr, ptr %16, 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 %13, 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 %16, align 8, !tbaa !9
  %713 = load i32, ptr %22, align 4, !tbaa !5
  %714 = sub nsw i32 %713, 1
  %715 = sext i32 %714 to i64
  %716 = getelementptr inbounds double, ptr %712, i64 %715
  %717 = load double, ptr %716, align 8, !tbaa !11
  %718 = load ptr, ptr %13, align 8, !tbaa !9
  %719 = load i32, ptr %22, align 4, !tbaa !5
  %720 = sub nsw i32 %719, 1
  %721 = sext i32 %720 to i64
  %722 = getelementptr inbounds double, ptr %718, i64 %721
  %723 = load double, ptr %722, align 8, !tbaa !11
  %724 = fcmp ogt double %717, %723
  br i1 %724, label %725, label %732

725:                                              ; preds = %710
  %726 = load ptr, ptr %16, align 8, !tbaa !9
  %727 = load i32, ptr %22, align 4, !tbaa !5
  %728 = sub nsw i32 %727, 1
  %729 = sext i32 %728 to i64
  %730 = getelementptr inbounds double, ptr %726, i64 %729
  %731 = load double, ptr %730, align 8, !tbaa !11
  br label %739

732:                                              ; preds = %710
  %733 = load ptr, ptr %13, align 8, !tbaa !9
  %734 = load i32, ptr %22, align 4, !tbaa !5
  %735 = sub nsw i32 %734, 1
  %736 = sext i32 %735 to i64
  %737 = getelementptr inbounds double, ptr %733, i64 %736
  %738 = load double, ptr %737, align 8, !tbaa !11
  br label %739

739:                                              ; preds = %732, %725
  %740 = phi double [ %731, %725 ], [ %738, %732 ]
  %741 = fcmp olt double %711, %740
  br i1 %741, label %742, label %821

742:                                              ; preds = %739
  %743 = load ptr, ptr %16, align 8, !tbaa !9
  %744 = load i32, ptr %22, align 4, !tbaa !5
  %745 = sext i32 %744 to i64
  %746 = getelementptr inbounds double, ptr %743, i64 %745
  %747 = load double, ptr %746, align 8, !tbaa !11
  %748 = load ptr, ptr %13, align 8, !tbaa !9
  %749 = load i32, ptr %22, align 4, !tbaa !5
  %750 = sext i32 %749 to i64
  %751 = getelementptr inbounds double, ptr %748, i64 %750
  %752 = load double, ptr %751, align 8, !tbaa !11
  %753 = fcmp olt double %747, %752
  br i1 %753, label %754, label %760

754:                                              ; preds = %742
  %755 = load ptr, ptr %16, align 8, !tbaa !9
  %756 = load i32, ptr %22, align 4, !tbaa !5
  %757 = sext i32 %756 to i64
  %758 = getelementptr inbounds double, ptr %755, i64 %757
  %759 = load double, ptr %758, align 8, !tbaa !11
  br label %766

760:                                              ; preds = %742
  %761 = load ptr, ptr %13, align 8, !tbaa !9
  %762 = load i32, ptr %22, align 4, !tbaa !5
  %763 = sext i32 %762 to i64
  %764 = getelementptr inbounds double, ptr %761, i64 %763
  %765 = load double, ptr %764, align 8, !tbaa !11
  br label %766

766:                                              ; preds = %760, %754
  %767 = phi double [ %759, %754 ], [ %765, %760 ]
  %768 = load ptr, ptr %16, align 8, !tbaa !9
  %769 = load i32, ptr %22, align 4, !tbaa !5
  %770 = sub nsw i32 %769, 1
  %771 = sext i32 %770 to i64
  %772 = getelementptr inbounds double, ptr %768, i64 %771
  %773 = load double, ptr %772, align 8, !tbaa !11
  %774 = load ptr, ptr %13, align 8, !tbaa !9
  %775 = load i32, ptr %22, align 4, !tbaa !5
  %776 = sub nsw i32 %775, 1
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds double, ptr %774, i64 %777
  %779 = load double, ptr %778, align 8, !tbaa !11
  %780 = fcmp olt double %773, %779
  br i1 %780, label %781, label %788

781:                                              ; preds = %766
  %782 = load ptr, ptr %16, align 8, !tbaa !9
  %783 = load i32, ptr %22, align 4, !tbaa !5
  %784 = sub nsw i32 %783, 1
  %785 = sext i32 %784 to i64
  %786 = getelementptr inbounds double, ptr %782, i64 %785
  %787 = load double, ptr %786, align 8, !tbaa !11
  br label %795

788:                                              ; preds = %766
  %789 = load ptr, ptr %13, align 8, !tbaa !9
  %790 = load i32, ptr %22, align 4, !tbaa !5
  %791 = sub nsw i32 %790, 1
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds double, ptr %789, i64 %792
  %794 = load double, ptr %793, align 8, !tbaa !11
  br label %795

795:                                              ; preds = %788, %781
  %796 = phi double [ %787, %781 ], [ %794, %788 ]
  %797 = fcmp ogt double %767, %796
  br i1 %797, label %798, label %821

798:                                              ; preds = %795
  %799 = load ptr, ptr %16, align 8, !tbaa !9
  %800 = load i32, ptr %22, align 4, !tbaa !5
  %801 = sub nsw i32 %800, 1
  %802 = sext i32 %801 to i64
  %803 = getelementptr inbounds double, ptr %799, i64 %802
  %804 = load double, ptr %803, align 8, !tbaa !11
  %805 = load ptr, ptr %13, align 8, !tbaa !9
  %806 = load i32, ptr %22, align 4, !tbaa !5
  %807 = sub nsw i32 %806, 1
  %808 = sext i32 %807 to i64
  %809 = getelementptr inbounds double, ptr %805, i64 %808
  %810 = load double, ptr %809, align 8, !tbaa !11
  %811 = fcmp oge double %804, %810
  %812 = zext i1 %811 to i64
  %813 = select i1 %811, i32 1, i32 -1
  %814 = sub nsw i32 0, %813
  %815 = mul nsw i32 %814, 100
  %816 = load ptr, ptr %19, align 8, !tbaa !9
  %817 = load i32, ptr %23, align 4, !tbaa !5
  %818 = add nsw i32 %817, 1
  store i32 %818, ptr %23, align 4, !tbaa !5
  %819 = sext i32 %817 to i64
  %820 = getelementptr inbounds i32, ptr %816, i64 %819
  store i32 %815, ptr %820, align 4, !tbaa !5
  br label %963

821:                                              ; preds = %795, %739
  %822 = load ptr, ptr %16, 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 = load ptr, ptr %13, align 8, !tbaa !9
  %828 = load i32, ptr %22, align 4, !tbaa !5
  %829 = sext i32 %828 to i64
  %830 = getelementptr inbounds double, ptr %827, i64 %829
  %831 = load double, ptr %830, align 8, !tbaa !11
  %832 = fcmp ogt double %826, %831
  br i1 %832, label %833, label %839

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

839:                                              ; preds = %821
  %840 = load ptr, ptr %13, align 8, !tbaa !9
  %841 = load i32, ptr %22, align 4, !tbaa !5
  %842 = sext i32 %841 to i64
  %843 = getelementptr inbounds double, ptr %840, i64 %842
  %844 = load double, ptr %843, align 8, !tbaa !11
  br label %845

845:                                              ; preds = %839, %833
  %846 = phi double [ %838, %833 ], [ %844, %839 ]
  %847 = load ptr, ptr %16, align 8, !tbaa !9
  %848 = load i32, ptr %22, align 4, !tbaa !5
  %849 = sub nsw i32 %848, 1
  %850 = sext i32 %849 to i64
  %851 = getelementptr inbounds double, ptr %847, i64 %850
  %852 = load double, ptr %851, align 8, !tbaa !11
  %853 = load ptr, ptr %13, align 8, !tbaa !9
  %854 = load i32, ptr %22, align 4, !tbaa !5
  %855 = sub nsw i32 %854, 1
  %856 = sext i32 %855 to i64
  %857 = getelementptr inbounds double, ptr %853, i64 %856
  %858 = load double, ptr %857, align 8, !tbaa !11
  %859 = fcmp ogt double %852, %858
  br i1 %859, label %860, label %867

860:                                              ; preds = %845
  %861 = load ptr, ptr %16, align 8, !tbaa !9
  %862 = load i32, ptr %22, align 4, !tbaa !5
  %863 = sub nsw i32 %862, 1
  %864 = sext i32 %863 to i64
  %865 = getelementptr inbounds double, ptr %861, i64 %864
  %866 = load double, ptr %865, align 8, !tbaa !11
  br label %874

867:                                              ; preds = %845
  %868 = load ptr, ptr %13, align 8, !tbaa !9
  %869 = load i32, ptr %22, align 4, !tbaa !5
  %870 = sub nsw i32 %869, 1
  %871 = sext i32 %870 to i64
  %872 = getelementptr inbounds double, ptr %868, i64 %871
  %873 = load double, ptr %872, align 8, !tbaa !11
  br label %874

874:                                              ; preds = %867, %860
  %875 = phi double [ %866, %860 ], [ %873, %867 ]
  %876 = fcmp ole double %846, %875
  br i1 %876, label %877, label %956

877:                                              ; preds = %874
  %878 = load ptr, ptr %16, align 8, !tbaa !9
  %879 = load i32, ptr %22, align 4, !tbaa !5
  %880 = sext i32 %879 to i64
  %881 = getelementptr inbounds double, ptr %878, i64 %880
  %882 = load double, ptr %881, align 8, !tbaa !11
  %883 = load ptr, ptr %13, align 8, !tbaa !9
  %884 = load i32, ptr %22, align 4, !tbaa !5
  %885 = sext i32 %884 to i64
  %886 = getelementptr inbounds double, ptr %883, i64 %885
  %887 = load double, ptr %886, align 8, !tbaa !11
  %888 = fcmp olt double %882, %887
  br i1 %888, label %889, label %895

889:                                              ; preds = %877
  %890 = load ptr, ptr %16, align 8, !tbaa !9
  %891 = load i32, ptr %22, align 4, !tbaa !5
  %892 = sext i32 %891 to i64
  %893 = getelementptr inbounds double, ptr %890, i64 %892
  %894 = load double, ptr %893, align 8, !tbaa !11
  br label %901

895:                                              ; preds = %877
  %896 = load ptr, ptr %13, align 8, !tbaa !9
  %897 = load i32, ptr %22, align 4, !tbaa !5
  %898 = sext i32 %897 to i64
  %899 = getelementptr inbounds double, ptr %896, i64 %898
  %900 = load double, ptr %899, align 8, !tbaa !11
  br label %901

901:                                              ; preds = %895, %889
  %902 = phi double [ %894, %889 ], [ %900, %895 ]
  %903 = load ptr, ptr %16, align 8, !tbaa !9
  %904 = load i32, ptr %22, align 4, !tbaa !5
  %905 = sub nsw i32 %904, 1
  %906 = sext i32 %905 to i64
  %907 = getelementptr inbounds double, ptr %903, i64 %906
  %908 = load double, ptr %907, align 8, !tbaa !11
  %909 = load ptr, ptr %13, align 8, !tbaa !9
  %910 = load i32, ptr %22, align 4, !tbaa !5
  %911 = sub nsw i32 %910, 1
  %912 = sext i32 %911 to i64
  %913 = getelementptr inbounds double, ptr %909, i64 %912
  %914 = load double, ptr %913, align 8, !tbaa !11
  %915 = fcmp olt double %908, %914
  br i1 %915, label %916, label %923

916:                                              ; preds = %901
  %917 = load ptr, ptr %16, align 8, !tbaa !9
  %918 = load i32, ptr %22, align 4, !tbaa !5
  %919 = sub nsw i32 %918, 1
  %920 = sext i32 %919 to i64
  %921 = getelementptr inbounds double, ptr %917, i64 %920
  %922 = load double, ptr %921, align 8, !tbaa !11
  br label %930

923:                                              ; preds = %901
  %924 = load ptr, ptr %13, align 8, !tbaa !9
  %925 = load i32, ptr %22, align 4, !tbaa !5
  %926 = sub nsw i32 %925, 1
  %927 = sext i32 %926 to i64
  %928 = getelementptr inbounds double, ptr %924, i64 %927
  %929 = load double, ptr %928, align 8, !tbaa !11
  br label %930

930:                                              ; preds = %923, %916
  %931 = phi double [ %922, %916 ], [ %929, %923 ]
  %932 = fcmp oge double %902, %931
  br i1 %932, label %933, label %956

933:                                              ; preds = %930
  %934 = load ptr, ptr %16, align 8, !tbaa !9
  %935 = load i32, ptr %22, align 4, !tbaa !5
  %936 = sub nsw i32 %935, 1
  %937 = sext i32 %936 to i64
  %938 = getelementptr inbounds double, ptr %934, i64 %937
  %939 = load double, ptr %938, align 8, !tbaa !11
  %940 = load ptr, ptr %13, align 8, !tbaa !9
  %941 = load i32, ptr %22, align 4, !tbaa !5
  %942 = sub nsw i32 %941, 1
  %943 = sext i32 %942 to i64
  %944 = getelementptr inbounds double, ptr %940, i64 %943
  %945 = load double, ptr %944, align 8, !tbaa !11
  %946 = fcmp oge double %939, %945
  %947 = zext i1 %946 to i64
  %948 = select i1 %946, i32 1, i32 -1
  %949 = sub nsw i32 0, %948
  %950 = mul nsw i32 %949, 80
  %951 = load ptr, ptr %19, align 8, !tbaa !9
  %952 = load i32, ptr %23, align 4, !tbaa !5
  %953 = add nsw i32 %952, 1
  store i32 %953, ptr %23, align 4, !tbaa !5
  %954 = sext i32 %952 to i64
  %955 = getelementptr inbounds i32, ptr %951, i64 %954
  store i32 %950, ptr %955, align 4, !tbaa !5
  br label %962

956:                                              ; preds = %930, %874
  %957 = load ptr, ptr %19, align 8, !tbaa !9
  %958 = load i32, ptr %23, align 4, !tbaa !5
  %959 = add nsw i32 %958, 1
  store i32 %959, ptr %23, align 4, !tbaa !5
  %960 = sext i32 %958 to i64
  %961 = getelementptr inbounds i32, ptr %957, i64 %960
  store i32 0, ptr %961, align 4, !tbaa !5
  br label %962

962:                                              ; preds = %956, %933
  br label %963

963:                                              ; preds = %962, %798
  br label %970

964:                                              ; preds = %673, %509
  %965 = load ptr, ptr %19, align 8, !tbaa !9
  %966 = load i32, ptr %23, align 4, !tbaa !5
  %967 = add nsw i32 %966, 1
  store i32 %967, ptr %23, align 4, !tbaa !5
  %968 = sext i32 %966 to i64
  %969 = getelementptr inbounds i32, ptr %965, i64 %968
  store i32 0, ptr %969, align 4, !tbaa !5
  br label %970

970:                                              ; preds = %964, %963
  %971 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %972 = getelementptr inbounds %struct.TA_LibcPriv, ptr %971, i32 0, i32 8
  %973 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %972, i64 0, i64 0
  %974 = getelementptr inbounds %struct.TA_CandleSetting, ptr %973, i32 0, i32 1
  %975 = load i32, ptr %974, align 4, !tbaa !15
  %976 = icmp eq i32 %975, 0
  br i1 %976, label %977, label %992

977:                                              ; preds = %970
  %978 = load ptr, ptr %16, align 8, !tbaa !9
  %979 = load i32, ptr %22, align 4, !tbaa !5
  %980 = sub nsw i32 %979, 1
  %981 = sext i32 %980 to i64
  %982 = getelementptr inbounds double, ptr %978, i64 %981
  %983 = load double, ptr %982, align 8, !tbaa !11
  %984 = load ptr, ptr %13, align 8, !tbaa !9
  %985 = load i32, ptr %22, align 4, !tbaa !5
  %986 = sub nsw i32 %985, 1
  %987 = sext i32 %986 to i64
  %988 = getelementptr inbounds double, ptr %984, i64 %987
  %989 = load double, ptr %988, align 8, !tbaa !11
  %990 = fsub double %983, %989
  %991 = call double @llvm.fabs.f64(double %990)
  br label %1099

992:                                              ; preds = %970
  %993 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %994 = getelementptr inbounds %struct.TA_LibcPriv, ptr %993, i32 0, i32 8
  %995 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %994, i64 0, i64 0
  %996 = getelementptr inbounds %struct.TA_CandleSetting, ptr %995, i32 0, i32 1
  %997 = load i32, ptr %996, align 4, !tbaa !15
  %998 = icmp eq i32 %997, 1
  br i1 %998, label %999, label %1013

999:                                              ; preds = %992
  %1000 = load ptr, ptr %14, align 8, !tbaa !9
  %1001 = load i32, ptr %22, align 4, !tbaa !5
  %1002 = sub nsw i32 %1001, 1
  %1003 = sext i32 %1002 to i64
  %1004 = getelementptr inbounds double, ptr %1000, i64 %1003
  %1005 = load double, ptr %1004, align 8, !tbaa !11
  %1006 = load ptr, ptr %15, align 8, !tbaa !9
  %1007 = load i32, ptr %22, align 4, !tbaa !5
  %1008 = sub nsw i32 %1007, 1
  %1009 = sext i32 %1008 to i64
  %1010 = getelementptr inbounds double, ptr %1006, i64 %1009
  %1011 = load double, ptr %1010, align 8, !tbaa !11
  %1012 = fsub double %1005, %1011
  br label %1097

1013:                                             ; preds = %992
  %1014 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1015 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1014, i32 0, i32 8
  %1016 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1015, i64 0, i64 0
  %1017 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1016, i32 0, i32 1
  %1018 = load i32, ptr %1017, align 4, !tbaa !15
  %1019 = icmp eq i32 %1018, 2
  br i1 %1019, label %1020, label %1094

1020:                                             ; preds = %1013
  %1021 = load ptr, ptr %14, align 8, !tbaa !9
  %1022 = load i32, ptr %22, align 4, !tbaa !5
  %1023 = sub nsw i32 %1022, 1
  %1024 = sext i32 %1023 to i64
  %1025 = getelementptr inbounds double, ptr %1021, i64 %1024
  %1026 = load double, ptr %1025, align 8, !tbaa !11
  %1027 = load ptr, ptr %16, align 8, !tbaa !9
  %1028 = load i32, ptr %22, align 4, !tbaa !5
  %1029 = sub nsw i32 %1028, 1
  %1030 = sext i32 %1029 to i64
  %1031 = getelementptr inbounds double, ptr %1027, i64 %1030
  %1032 = load double, ptr %1031, align 8, !tbaa !11
  %1033 = load ptr, ptr %13, align 8, !tbaa !9
  %1034 = load i32, ptr %22, align 4, !tbaa !5
  %1035 = sub nsw i32 %1034, 1
  %1036 = sext i32 %1035 to i64
  %1037 = getelementptr inbounds double, ptr %1033, i64 %1036
  %1038 = load double, ptr %1037, align 8, !tbaa !11
  %1039 = fcmp oge double %1032, %1038
  br i1 %1039, label %1040, label %1047

1040:                                             ; preds = %1020
  %1041 = load ptr, ptr %16, align 8, !tbaa !9
  %1042 = load i32, ptr %22, align 4, !tbaa !5
  %1043 = sub nsw i32 %1042, 1
  %1044 = sext i32 %1043 to i64
  %1045 = getelementptr inbounds double, ptr %1041, i64 %1044
  %1046 = load double, ptr %1045, align 8, !tbaa !11
  br label %1054

1047:                                             ; preds = %1020
  %1048 = load ptr, ptr %13, align 8, !tbaa !9
  %1049 = load i32, ptr %22, align 4, !tbaa !5
  %1050 = sub nsw i32 %1049, 1
  %1051 = sext i32 %1050 to i64
  %1052 = getelementptr inbounds double, ptr %1048, i64 %1051
  %1053 = load double, ptr %1052, align 8, !tbaa !11
  br label %1054

1054:                                             ; preds = %1047, %1040
  %1055 = phi double [ %1046, %1040 ], [ %1053, %1047 ]
  %1056 = fsub double %1026, %1055
  %1057 = load ptr, ptr %16, align 8, !tbaa !9
  %1058 = load i32, ptr %22, align 4, !tbaa !5
  %1059 = sub nsw i32 %1058, 1
  %1060 = sext i32 %1059 to i64
  %1061 = getelementptr inbounds double, ptr %1057, i64 %1060
  %1062 = load double, ptr %1061, align 8, !tbaa !11
  %1063 = load ptr, ptr %13, align 8, !tbaa !9
  %1064 = load i32, ptr %22, align 4, !tbaa !5
  %1065 = sub nsw i32 %1064, 1
  %1066 = sext i32 %1065 to i64
  %1067 = getelementptr inbounds double, ptr %1063, i64 %1066
  %1068 = load double, ptr %1067, align 8, !tbaa !11
  %1069 = fcmp oge double %1062, %1068
  br i1 %1069, label %1070, label %1077

1070:                                             ; preds = %1054
  %1071 = load ptr, ptr %13, align 8, !tbaa !9
  %1072 = load i32, ptr %22, align 4, !tbaa !5
  %1073 = sub nsw i32 %1072, 1
  %1074 = sext i32 %1073 to i64
  %1075 = getelementptr inbounds double, ptr %1071, i64 %1074
  %1076 = load double, ptr %1075, align 8, !tbaa !11
  br label %1084

1077:                                             ; preds = %1054
  %1078 = load ptr, ptr %16, align 8, !tbaa !9
  %1079 = load i32, ptr %22, align 4, !tbaa !5
  %1080 = sub nsw i32 %1079, 1
  %1081 = sext i32 %1080 to i64
  %1082 = getelementptr inbounds double, ptr %1078, i64 %1081
  %1083 = load double, ptr %1082, align 8, !tbaa !11
  br label %1084

1084:                                             ; preds = %1077, %1070
  %1085 = phi double [ %1076, %1070 ], [ %1083, %1077 ]
  %1086 = load ptr, ptr %15, align 8, !tbaa !9
  %1087 = load i32, ptr %22, align 4, !tbaa !5
  %1088 = sub nsw i32 %1087, 1
  %1089 = sext i32 %1088 to i64
  %1090 = getelementptr inbounds double, ptr %1086, i64 %1089
  %1091 = load double, ptr %1090, align 8, !tbaa !11
  %1092 = fsub double %1085, %1091
  %1093 = fadd double %1056, %1092
  br label %1095

1094:                                             ; preds = %1013
  br label %1095

1095:                                             ; preds = %1094, %1084
  %1096 = phi double [ %1093, %1084 ], [ 0.000000e+00, %1094 ]
  br label %1097

1097:                                             ; preds = %1095, %999
  %1098 = phi double [ %1012, %999 ], [ %1096, %1095 ]
  br label %1099

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

1107:                                             ; preds = %1099
  %1108 = load ptr, ptr %16, align 8, !tbaa !9
  %1109 = load i32, ptr %25, align 4, !tbaa !5
  %1110 = sext i32 %1109 to i64
  %1111 = getelementptr inbounds double, ptr %1108, i64 %1110
  %1112 = load double, ptr %1111, align 8, !tbaa !11
  %1113 = load ptr, ptr %13, align 8, !tbaa !9
  %1114 = load i32, ptr %25, align 4, !tbaa !5
  %1115 = sext i32 %1114 to i64
  %1116 = getelementptr inbounds double, ptr %1113, i64 %1115
  %1117 = load double, ptr %1116, align 8, !tbaa !11
  %1118 = fsub double %1112, %1117
  %1119 = call double @llvm.fabs.f64(double %1118)
  br label %1215

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

1127:                                             ; preds = %1120
  %1128 = load ptr, ptr %14, align 8, !tbaa !9
  %1129 = load i32, ptr %25, align 4, !tbaa !5
  %1130 = sext i32 %1129 to i64
  %1131 = getelementptr inbounds double, ptr %1128, i64 %1130
  %1132 = load double, ptr %1131, align 8, !tbaa !11
  %1133 = load ptr, ptr %15, align 8, !tbaa !9
  %1134 = load i32, ptr %25, align 4, !tbaa !5
  %1135 = sext i32 %1134 to i64
  %1136 = getelementptr inbounds double, ptr %1133, i64 %1135
  %1137 = load double, ptr %1136, align 8, !tbaa !11
  %1138 = fsub double %1132, %1137
  br label %1213

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

1146:                                             ; preds = %1139
  %1147 = load ptr, ptr %14, align 8, !tbaa !9
  %1148 = load i32, ptr %25, align 4, !tbaa !5
  %1149 = sext i32 %1148 to i64
  %1150 = getelementptr inbounds double, ptr %1147, i64 %1149
  %1151 = load double, ptr %1150, align 8, !tbaa !11
  %1152 = load ptr, ptr %16, align 8, !tbaa !9
  %1153 = load i32, ptr %25, align 4, !tbaa !5
  %1154 = sext i32 %1153 to i64
  %1155 = getelementptr inbounds double, ptr %1152, i64 %1154
  %1156 = load double, ptr %1155, align 8, !tbaa !11
  %1157 = load ptr, ptr %13, align 8, !tbaa !9
  %1158 = load i32, ptr %25, align 4, !tbaa !5
  %1159 = sext i32 %1158 to i64
  %1160 = getelementptr inbounds double, ptr %1157, i64 %1159
  %1161 = load double, ptr %1160, align 8, !tbaa !11
  %1162 = fcmp oge double %1156, %1161
  br i1 %1162, label %1163, label %1169

1163:                                             ; preds = %1146
  %1164 = load ptr, ptr %16, align 8, !tbaa !9
  %1165 = load i32, ptr %25, align 4, !tbaa !5
  %1166 = sext i32 %1165 to i64
  %1167 = getelementptr inbounds double, ptr %1164, i64 %1166
  %1168 = load double, ptr %1167, align 8, !tbaa !11
  br label %1175

1169:                                             ; preds = %1146
  %1170 = load ptr, ptr %13, align 8, !tbaa !9
  %1171 = load i32, ptr %25, align 4, !tbaa !5
  %1172 = sext i32 %1171 to i64
  %1173 = getelementptr inbounds double, ptr %1170, i64 %1172
  %1174 = load double, ptr %1173, align 8, !tbaa !11
  br label %1175

1175:                                             ; preds = %1169, %1163
  %1176 = phi double [ %1168, %1163 ], [ %1174, %1169 ]
  %1177 = fsub double %1151, %1176
  %1178 = load ptr, ptr %16, align 8, !tbaa !9
  %1179 = load i32, ptr %25, align 4, !tbaa !5
  %1180 = sext i32 %1179 to i64
  %1181 = getelementptr inbounds double, ptr %1178, i64 %1180
  %1182 = load double, ptr %1181, align 8, !tbaa !11
  %1183 = load ptr, ptr %13, align 8, !tbaa !9
  %1184 = load i32, ptr %25, align 4, !tbaa !5
  %1185 = sext i32 %1184 to i64
  %1186 = getelementptr inbounds double, ptr %1183, i64 %1185
  %1187 = load double, ptr %1186, align 8, !tbaa !11
  %1188 = fcmp oge double %1182, %1187
  br i1 %1188, label %1189, label %1195

1189:                                             ; preds = %1175
  %1190 = load ptr, ptr %13, align 8, !tbaa !9
  %1191 = load i32, ptr %25, align 4, !tbaa !5
  %1192 = sext i32 %1191 to i64
  %1193 = getelementptr inbounds double, ptr %1190, i64 %1192
  %1194 = load double, ptr %1193, align 8, !tbaa !11
  br label %1201

1195:                                             ; preds = %1175
  %1196 = load ptr, ptr %16, align 8, !tbaa !9
  %1197 = load i32, ptr %25, align 4, !tbaa !5
  %1198 = sext i32 %1197 to i64
  %1199 = getelementptr inbounds double, ptr %1196, i64 %1198
  %1200 = load double, ptr %1199, align 8, !tbaa !11
  br label %1201

1201:                                             ; preds = %1195, %1189
  %1202 = phi double [ %1194, %1189 ], [ %1200, %1195 ]
  %1203 = load ptr, ptr %15, align 8, !tbaa !9
  %1204 = load i32, ptr %25, align 4, !tbaa !5
  %1205 = sext i32 %1204 to i64
  %1206 = getelementptr inbounds double, ptr %1203, i64 %1205
  %1207 = load double, ptr %1206, align 8, !tbaa !11
  %1208 = fsub double %1202, %1207
  %1209 = fadd double %1177, %1208
  br label %1211

1210:                                             ; preds = %1139
  br label %1211

1211:                                             ; preds = %1210, %1201
  %1212 = phi double [ %1209, %1201 ], [ 0.000000e+00, %1210 ]
  br label %1213

1213:                                             ; preds = %1211, %1127
  %1214 = phi double [ %1138, %1127 ], [ %1212, %1211 ]
  br label %1215

1215:                                             ; preds = %1213, %1107
  %1216 = phi double [ %1119, %1107 ], [ %1214, %1213 ]
  %1217 = fsub double %1100, %1216
  %1218 = load double, ptr %21, align 8, !tbaa !11
  %1219 = fadd double %1218, %1217
  store double %1219, ptr %21, align 8, !tbaa !11
  %1220 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1221 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1220, i32 0, i32 8
  %1222 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1221, i64 0, i64 2
  %1223 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1222, i32 0, i32 1
  %1224 = load i32, ptr %1223, align 4, !tbaa !15
  %1225 = icmp eq i32 %1224, 0
  br i1 %1225, label %1226, label %1239

1226:                                             ; preds = %1215
  %1227 = load ptr, ptr %16, align 8, !tbaa !9
  %1228 = load i32, ptr %22, align 4, !tbaa !5
  %1229 = sext i32 %1228 to i64
  %1230 = getelementptr inbounds double, ptr %1227, i64 %1229
  %1231 = load double, ptr %1230, align 8, !tbaa !11
  %1232 = load ptr, ptr %13, align 8, !tbaa !9
  %1233 = load i32, ptr %22, align 4, !tbaa !5
  %1234 = sext i32 %1233 to i64
  %1235 = getelementptr inbounds double, ptr %1232, i64 %1234
  %1236 = load double, ptr %1235, align 8, !tbaa !11
  %1237 = fsub double %1231, %1236
  %1238 = call double @llvm.fabs.f64(double %1237)
  br label %1334

1239:                                             ; preds = %1215
  %1240 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1241 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1240, i32 0, i32 8
  %1242 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1241, i64 0, i64 2
  %1243 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1242, i32 0, i32 1
  %1244 = load i32, ptr %1243, align 4, !tbaa !15
  %1245 = icmp eq i32 %1244, 1
  br i1 %1245, label %1246, label %1258

1246:                                             ; preds = %1239
  %1247 = load ptr, ptr %14, align 8, !tbaa !9
  %1248 = load i32, ptr %22, align 4, !tbaa !5
  %1249 = sext i32 %1248 to i64
  %1250 = getelementptr inbounds double, ptr %1247, i64 %1249
  %1251 = load double, ptr %1250, align 8, !tbaa !11
  %1252 = load ptr, ptr %15, align 8, !tbaa !9
  %1253 = load i32, ptr %22, align 4, !tbaa !5
  %1254 = sext i32 %1253 to i64
  %1255 = getelementptr inbounds double, ptr %1252, i64 %1254
  %1256 = load double, ptr %1255, align 8, !tbaa !11
  %1257 = fsub double %1251, %1256
  br label %1332

1258:                                             ; preds = %1239
  %1259 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1260 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1259, i32 0, i32 8
  %1261 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1260, i64 0, i64 2
  %1262 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1261, i32 0, i32 1
  %1263 = load i32, ptr %1262, align 4, !tbaa !15
  %1264 = icmp eq i32 %1263, 2
  br i1 %1264, label %1265, label %1329

1265:                                             ; preds = %1258
  %1266 = load ptr, ptr %14, align 8, !tbaa !9
  %1267 = load i32, ptr %22, align 4, !tbaa !5
  %1268 = sext i32 %1267 to i64
  %1269 = getelementptr inbounds double, ptr %1266, i64 %1268
  %1270 = load double, ptr %1269, align 8, !tbaa !11
  %1271 = load ptr, ptr %16, align 8, !tbaa !9
  %1272 = load i32, ptr %22, align 4, !tbaa !5
  %1273 = sext i32 %1272 to i64
  %1274 = getelementptr inbounds double, ptr %1271, i64 %1273
  %1275 = load double, ptr %1274, align 8, !tbaa !11
  %1276 = load ptr, ptr %13, align 8, !tbaa !9
  %1277 = load i32, ptr %22, align 4, !tbaa !5
  %1278 = sext i32 %1277 to i64
  %1279 = getelementptr inbounds double, ptr %1276, i64 %1278
  %1280 = load double, ptr %1279, align 8, !tbaa !11
  %1281 = fcmp oge double %1275, %1280
  br i1 %1281, label %1282, label %1288

1282:                                             ; preds = %1265
  %1283 = load ptr, ptr %16, align 8, !tbaa !9
  %1284 = load i32, ptr %22, align 4, !tbaa !5
  %1285 = sext i32 %1284 to i64
  %1286 = getelementptr inbounds double, ptr %1283, i64 %1285
  %1287 = load double, ptr %1286, align 8, !tbaa !11
  br label %1294

1288:                                             ; preds = %1265
  %1289 = load ptr, ptr %13, align 8, !tbaa !9
  %1290 = load i32, ptr %22, align 4, !tbaa !5
  %1291 = sext i32 %1290 to i64
  %1292 = getelementptr inbounds double, ptr %1289, i64 %1291
  %1293 = load double, ptr %1292, align 8, !tbaa !11
  br label %1294

1294:                                             ; preds = %1288, %1282
  %1295 = phi double [ %1287, %1282 ], [ %1293, %1288 ]
  %1296 = fsub double %1270, %1295
  %1297 = load ptr, ptr %16, align 8, !tbaa !9
  %1298 = load i32, ptr %22, align 4, !tbaa !5
  %1299 = sext i32 %1298 to i64
  %1300 = getelementptr inbounds double, ptr %1297, i64 %1299
  %1301 = load double, ptr %1300, align 8, !tbaa !11
  %1302 = load ptr, ptr %13, align 8, !tbaa !9
  %1303 = load i32, ptr %22, align 4, !tbaa !5
  %1304 = sext i32 %1303 to i64
  %1305 = getelementptr inbounds double, ptr %1302, i64 %1304
  %1306 = load double, ptr %1305, align 8, !tbaa !11
  %1307 = fcmp oge double %1301, %1306
  br i1 %1307, label %1308, label %1314

1308:                                             ; preds = %1294
  %1309 = load ptr, ptr %13, align 8, !tbaa !9
  %1310 = load i32, ptr %22, align 4, !tbaa !5
  %1311 = sext i32 %1310 to i64
  %1312 = getelementptr inbounds double, ptr %1309, i64 %1311
  %1313 = load double, ptr %1312, align 8, !tbaa !11
  br label %1320

1314:                                             ; preds = %1294
  %1315 = load ptr, ptr %16, align 8, !tbaa !9
  %1316 = load i32, ptr %22, align 4, !tbaa !5
  %1317 = sext i32 %1316 to i64
  %1318 = getelementptr inbounds double, ptr %1315, i64 %1317
  %1319 = load double, ptr %1318, align 8, !tbaa !11
  br label %1320

1320:                                             ; preds = %1314, %1308
  %1321 = phi double [ %1313, %1308 ], [ %1319, %1314 ]
  %1322 = load ptr, ptr %15, align 8, !tbaa !9
  %1323 = load i32, ptr %22, align 4, !tbaa !5
  %1324 = sext i32 %1323 to i64
  %1325 = getelementptr inbounds double, ptr %1322, i64 %1324
  %1326 = load double, ptr %1325, align 8, !tbaa !11
  %1327 = fsub double %1321, %1326
  %1328 = fadd double %1296, %1327
  br label %1330

1329:                                             ; preds = %1258
  br label %1330

1330:                                             ; preds = %1329, %1320
  %1331 = phi double [ %1328, %1320 ], [ 0.000000e+00, %1329 ]
  br label %1332

1332:                                             ; preds = %1330, %1246
  %1333 = phi double [ %1257, %1246 ], [ %1331, %1330 ]
  br label %1334

1334:                                             ; preds = %1332, %1226
  %1335 = phi double [ %1238, %1226 ], [ %1333, %1332 ]
  %1336 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1337 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1336, i32 0, i32 8
  %1338 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1337, i64 0, i64 2
  %1339 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1338, i32 0, i32 1
  %1340 = load i32, ptr %1339, align 4, !tbaa !15
  %1341 = icmp eq i32 %1340, 0
  br i1 %1341, label %1342, label %1355

1342:                                             ; preds = %1334
  %1343 = load ptr, ptr %16, align 8, !tbaa !9
  %1344 = load i32, ptr %24, align 4, !tbaa !5
  %1345 = sext i32 %1344 to i64
  %1346 = getelementptr inbounds double, ptr %1343, i64 %1345
  %1347 = load double, ptr %1346, align 8, !tbaa !11
  %1348 = load ptr, ptr %13, align 8, !tbaa !9
  %1349 = load i32, ptr %24, align 4, !tbaa !5
  %1350 = sext i32 %1349 to i64
  %1351 = getelementptr inbounds double, ptr %1348, i64 %1350
  %1352 = load double, ptr %1351, align 8, !tbaa !11
  %1353 = fsub double %1347, %1352
  %1354 = call double @llvm.fabs.f64(double %1353)
  br label %1450

1355:                                             ; preds = %1334
  %1356 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1357 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1356, i32 0, i32 8
  %1358 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1357, i64 0, i64 2
  %1359 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1358, i32 0, i32 1
  %1360 = load i32, ptr %1359, align 4, !tbaa !15
  %1361 = icmp eq i32 %1360, 1
  br i1 %1361, label %1362, label %1374

1362:                                             ; preds = %1355
  %1363 = load ptr, ptr %14, align 8, !tbaa !9
  %1364 = load i32, ptr %24, align 4, !tbaa !5
  %1365 = sext i32 %1364 to i64
  %1366 = getelementptr inbounds double, ptr %1363, i64 %1365
  %1367 = load double, ptr %1366, align 8, !tbaa !11
  %1368 = load ptr, ptr %15, align 8, !tbaa !9
  %1369 = load i32, ptr %24, align 4, !tbaa !5
  %1370 = sext i32 %1369 to i64
  %1371 = getelementptr inbounds double, ptr %1368, i64 %1370
  %1372 = load double, ptr %1371, align 8, !tbaa !11
  %1373 = fsub double %1367, %1372
  br label %1448

1374:                                             ; preds = %1355
  %1375 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1376 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1375, i32 0, i32 8
  %1377 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1376, i64 0, i64 2
  %1378 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1377, i32 0, i32 1
  %1379 = load i32, ptr %1378, align 4, !tbaa !15
  %1380 = icmp eq i32 %1379, 2
  br i1 %1380, label %1381, label %1445

1381:                                             ; preds = %1374
  %1382 = load ptr, ptr %14, align 8, !tbaa !9
  %1383 = load i32, ptr %24, align 4, !tbaa !5
  %1384 = sext i32 %1383 to i64
  %1385 = getelementptr inbounds double, ptr %1382, i64 %1384
  %1386 = load double, ptr %1385, align 8, !tbaa !11
  %1387 = load ptr, ptr %16, align 8, !tbaa !9
  %1388 = load i32, ptr %24, align 4, !tbaa !5
  %1389 = sext i32 %1388 to i64
  %1390 = getelementptr inbounds double, ptr %1387, i64 %1389
  %1391 = load double, ptr %1390, align 8, !tbaa !11
  %1392 = load ptr, ptr %13, align 8, !tbaa !9
  %1393 = load i32, ptr %24, align 4, !tbaa !5
  %1394 = sext i32 %1393 to i64
  %1395 = getelementptr inbounds double, ptr %1392, i64 %1394
  %1396 = load double, ptr %1395, align 8, !tbaa !11
  %1397 = fcmp oge double %1391, %1396
  br i1 %1397, label %1398, label %1404

1398:                                             ; preds = %1381
  %1399 = load ptr, ptr %16, align 8, !tbaa !9
  %1400 = load i32, ptr %24, align 4, !tbaa !5
  %1401 = sext i32 %1400 to i64
  %1402 = getelementptr inbounds double, ptr %1399, i64 %1401
  %1403 = load double, ptr %1402, align 8, !tbaa !11
  br label %1410

1404:                                             ; preds = %1381
  %1405 = load ptr, ptr %13, align 8, !tbaa !9
  %1406 = load i32, ptr %24, align 4, !tbaa !5
  %1407 = sext i32 %1406 to i64
  %1408 = getelementptr inbounds double, ptr %1405, i64 %1407
  %1409 = load double, ptr %1408, align 8, !tbaa !11
  br label %1410

1410:                                             ; preds = %1404, %1398
  %1411 = phi double [ %1403, %1398 ], [ %1409, %1404 ]
  %1412 = fsub double %1386, %1411
  %1413 = load ptr, ptr %16, align 8, !tbaa !9
  %1414 = load i32, ptr %24, align 4, !tbaa !5
  %1415 = sext i32 %1414 to i64
  %1416 = getelementptr inbounds double, ptr %1413, i64 %1415
  %1417 = load double, ptr %1416, align 8, !tbaa !11
  %1418 = load ptr, ptr %13, align 8, !tbaa !9
  %1419 = load i32, ptr %24, align 4, !tbaa !5
  %1420 = sext i32 %1419 to i64
  %1421 = getelementptr inbounds double, ptr %1418, i64 %1420
  %1422 = load double, ptr %1421, align 8, !tbaa !11
  %1423 = fcmp oge double %1417, %1422
  br i1 %1423, label %1424, label %1430

1424:                                             ; preds = %1410
  %1425 = load ptr, ptr %13, align 8, !tbaa !9
  %1426 = load i32, ptr %24, align 4, !tbaa !5
  %1427 = sext i32 %1426 to i64
  %1428 = getelementptr inbounds double, ptr %1425, i64 %1427
  %1429 = load double, ptr %1428, align 8, !tbaa !11
  br label %1436

1430:                                             ; preds = %1410
  %1431 = load ptr, ptr %16, align 8, !tbaa !9
  %1432 = load i32, ptr %24, align 4, !tbaa !5
  %1433 = sext i32 %1432 to i64
  %1434 = getelementptr inbounds double, ptr %1431, i64 %1433
  %1435 = load double, ptr %1434, align 8, !tbaa !11
  br label %1436

1436:                                             ; preds = %1430, %1424
  %1437 = phi double [ %1429, %1424 ], [ %1435, %1430 ]
  %1438 = load ptr, ptr %15, align 8, !tbaa !9
  %1439 = load i32, ptr %24, align 4, !tbaa !5
  %1440 = sext i32 %1439 to i64
  %1441 = getelementptr inbounds double, ptr %1438, i64 %1440
  %1442 = load double, ptr %1441, align 8, !tbaa !11
  %1443 = fsub double %1437, %1442
  %1444 = fadd double %1412, %1443
  br label %1446

1445:                                             ; preds = %1374
  br label %1446

1446:                                             ; preds = %1445, %1436
  %1447 = phi double [ %1444, %1436 ], [ 0.000000e+00, %1445 ]
  br label %1448

1448:                                             ; preds = %1446, %1362
  %1449 = phi double [ %1373, %1362 ], [ %1447, %1446 ]
  br label %1450

1450:                                             ; preds = %1448, %1342
  %1451 = phi double [ %1354, %1342 ], [ %1449, %1448 ]
  %1452 = fsub double %1335, %1451
  %1453 = load double, ptr %20, align 8, !tbaa !11
  %1454 = fadd double %1453, %1452
  store double %1454, ptr %20, align 8, !tbaa !11
  %1455 = load i32, ptr %22, align 4, !tbaa !5
  %1456 = add nsw i32 %1455, 1
  store i32 %1456, ptr %22, align 4, !tbaa !5
  %1457 = load i32, ptr %25, align 4, !tbaa !5
  %1458 = add nsw i32 %1457, 1
  store i32 %1458, ptr %25, align 4, !tbaa !5
  %1459 = load i32, ptr %24, align 4, !tbaa !5
  %1460 = add nsw i32 %1459, 1
  store i32 %1460, ptr %24, align 4, !tbaa !5
  br label %1461

1461:                                             ; preds = %1450
  %1462 = load i32, ptr %22, align 4, !tbaa !5
  %1463 = load i32, ptr %12, align 4, !tbaa !5
  %1464 = icmp sle i32 %1462, %1463
  br i1 %1464, label %342, label %1465, !llvm.loop !20

1465:                                             ; preds = %1461
  %1466 = load i32, ptr %23, align 4, !tbaa !5
  %1467 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 %1466, ptr %1467, align 4, !tbaa !5
  %1468 = load i32, ptr %11, align 4, !tbaa !5
  %1469 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 %1468, ptr %1469, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %27, align 4
  br label %1470

1470:                                             ; preds = %1465, %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
  %1471 = load i32, ptr %10, align 4
  ret i32 %1471
}

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

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

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

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

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

.lr.ph:                                           ; preds = %25
  %35 = getelementptr inbounds i8, ptr %27, i64 212
  %36 = load i32, ptr %35, align 4, !tbaa !14
  switch i32 %36, label %.preheader465 [
    i32 0, label %.lr.ph.split.us.preheader
    i32 1, label %.lr.ph.split.us468.preheader
    i32 2, label %.lr.ph.split.us473.preheader
  ]

.lr.ph.split.us473.preheader:                     ; preds = %.lr.ph
  %37 = sext i32 %30 to i64
  %38 = sext i32 %26 to i64
  br label %.lr.ph.split.us473

.lr.ph.split.us468.preheader:                     ; preds = %.lr.ph
  %39 = sext i32 %30 to i64
  %40 = sext i32 %26 to i64
  br label %.lr.ph.split.us468

.lr.ph.split.us.preheader:                        ; preds = %.lr.ph
  %41 = sext i32 %30 to i64
  %42 = sext i32 %26 to i64
  br label %.lr.ph.split.us

.lr.ph.split.us:                                  ; preds = %.lr.ph.split.us.preheader, %.lr.ph.split.us
  %indvars.iv508 = phi i64 [ %41, %.lr.ph.split.us.preheader ], [ %indvars.iv.next509, %.lr.ph.split.us ]
  %.0364466.us = phi double [ 0.000000e+00, %.lr.ph.split.us.preheader ], [ %49, %.lr.ph.split.us ]
  %43 = getelementptr inbounds double, ptr %5, i64 %indvars.iv508
  %44 = load double, ptr %43, align 8, !tbaa !15
  %45 = getelementptr inbounds double, ptr %2, i64 %indvars.iv508
  %46 = load double, ptr %45, align 8, !tbaa !15
  %47 = fsub double %44, %46
  %48 = tail call double @llvm.fabs.f64(double %47)
  %49 = fadd double %.0364466.us, %48
  %indvars.iv.next509 = add nsw i64 %indvars.iv508, 1
  %50 = icmp slt i64 %indvars.iv.next509, %42
  br i1 %50, label %.lr.ph.split.us, label %.preheader465, !llvm.loop !16

.lr.ph.split.us468:                               ; preds = %.lr.ph.split.us468.preheader, %.lr.ph.split.us468
  %indvars.iv505 = phi i64 [ %39, %.lr.ph.split.us468.preheader ], [ %indvars.iv.next506, %.lr.ph.split.us468 ]
  %.0364466.us470 = phi double [ 0.000000e+00, %.lr.ph.split.us468.preheader ], [ %56, %.lr.ph.split.us468 ]
  %51 = getelementptr inbounds double, ptr %3, i64 %indvars.iv505
  %52 = load double, ptr %51, align 8, !tbaa !15
  %53 = getelementptr inbounds double, ptr %4, i64 %indvars.iv505
  %54 = load double, ptr %53, align 8, !tbaa !15
  %55 = fsub double %52, %54
  %56 = fadd double %.0364466.us470, %55
  %indvars.iv.next506 = add nsw i64 %indvars.iv505, 1
  %57 = icmp slt i64 %indvars.iv.next506, %40
  br i1 %57, label %.lr.ph.split.us468, label %.preheader465, !llvm.loop !16

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

.preheader465:                                    ; preds = %.lr.ph.split.us473, %.lr.ph.split.us468, %.lr.ph.split.us, %.lr.ph, %25
  %.0364.lcssa = phi double [ 0.000000e+00, %25 ], [ 0.000000e+00, %.lr.ph ], [ %49, %.lr.ph.split.us ], [ %56, %.lr.ph.split.us468 ], [ %71, %.lr.ph.split.us473 ]
  %73 = icmp sgt i32 %32, 0
  br i1 %73, label %.lr.ph480, label %.preheader

.lr.ph480:                                        ; preds = %.preheader465
  %74 = getelementptr inbounds i8, ptr %27, i64 260
  %75 = load i32, ptr %74, align 4, !tbaa !14
  switch i32 %75, label %.preheader [
    i32 0, label %.lr.ph480.split.us.preheader
    i32 1, label %.lr.ph480.split.us483.preheader
    i32 2, label %.lr.ph480.split.us488.preheader
  ]

.lr.ph480.split.us488.preheader:                  ; preds = %.lr.ph480
  %76 = sext i32 %33 to i64
  %77 = zext nneg i32 %spec.select to i64
  br label %.lr.ph480.split.us488

.lr.ph480.split.us483.preheader:                  ; preds = %.lr.ph480
  %78 = sext i32 %33 to i64
  %79 = zext nneg i32 %spec.select to i64
  br label %.lr.ph480.split.us483

.lr.ph480.split.us.preheader:                     ; preds = %.lr.ph480
  %80 = sext i32 %33 to i64
  %81 = zext nneg i32 %spec.select to i64
  br label %.lr.ph480.split.us

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

.lr.ph480.split.us483:                            ; preds = %.lr.ph480.split.us483.preheader, %.lr.ph480.split.us483
  %indvars.iv514 = phi i64 [ %78, %.lr.ph480.split.us483.preheader ], [ %indvars.iv.next515, %.lr.ph480.split.us483 ]
  %.0366478.us485 = phi double [ 0.000000e+00, %.lr.ph480.split.us483.preheader ], [ %95, %.lr.ph480.split.us483 ]
  %90 = getelementptr inbounds double, ptr %3, i64 %indvars.iv514
  %91 = load double, ptr %90, align 8, !tbaa !15
  %92 = getelementptr inbounds double, ptr %4, i64 %indvars.iv514
  %93 = load double, ptr %92, align 8, !tbaa !15
  %94 = fsub double %91, %93
  %95 = fadd double %.0366478.us485, %94
  %indvars.iv.next515 = add nsw i64 %indvars.iv514, 1
  %96 = icmp slt i64 %indvars.iv.next515, %79
  br i1 %96, label %.lr.ph480.split.us483, label %.preheader, !llvm.loop !18

.lr.ph480.split.us488:                            ; preds = %.lr.ph480.split.us488.preheader, %.lr.ph480.split.us488
  %indvars.iv511 = phi i64 [ %76, %.lr.ph480.split.us488.preheader ], [ %indvars.iv.next512, %.lr.ph480.split.us488 ]
  %.0366478.us490 = phi double [ 0.000000e+00, %.lr.ph480.split.us488.preheader ], [ %110, %.lr.ph480.split.us488 ]
  %97 = getelementptr inbounds double, ptr %3, i64 %indvars.iv511
  %98 = load double, ptr %97, align 8, !tbaa !15
  %99 = getelementptr inbounds double, ptr %5, i64 %indvars.iv511
  %100 = load double, ptr %99, align 8, !tbaa !15
  %101 = getelementptr inbounds double, ptr %2, i64 %indvars.iv511
  %102 = load double, ptr %101, align 8, !tbaa !15
  %103 = fcmp ult double %100, %102
  %.440.us = select i1 %103, double %102, double %100
  %104 = fsub double %98, %.440.us
  %105 = select i1 %103, double %100, double %102
  %106 = getelementptr inbounds double, ptr %4, i64 %indvars.iv511
  %107 = load double, ptr %106, align 8, !tbaa !15
  %108 = fsub double %105, %107
  %109 = fadd double %104, %108
  %110 = fadd double %.0366478.us490, %109
  %indvars.iv.next512 = add nsw i64 %indvars.iv511, 1
  %111 = icmp slt i64 %indvars.iv.next512, %77
  br i1 %111, label %.lr.ph480.split.us488, label %.preheader, !llvm.loop !18

.preheader:                                       ; preds = %.lr.ph480.split.us488, %.lr.ph480.split.us483, %.lr.ph480.split.us, %.lr.ph480, %.preheader465
  %.0366.lcssa = phi double [ 0.000000e+00, %.preheader465 ], [ 0.000000e+00, %.lr.ph480 ], [ %88, %.lr.ph480.split.us ], [ %95, %.lr.ph480.split.us483 ], [ %110, %.lr.ph480.split.us488 ]
  %112 = getelementptr inbounds i8, ptr %27, i64 224
  %113 = load double, ptr %112, align 8, !tbaa !19
  %114 = getelementptr inbounds i8, ptr %27, i64 212
  %115 = getelementptr inbounds i8, ptr %27, i64 260
  %116 = getelementptr inbounds i8, ptr %27, i64 272
  %117 = sext i32 %22 to i64
  %118 = zext nneg i32 %0 to i64
  %smax = tail call i64 @llvm.smax.i64(i64 %117, i64 %118)
  %119 = sext i32 %1 to i64
  %120 = sext i32 %33 to i64
  %121 = sext i32 %30 to i64
  br label %122

122:                                              ; preds = %.preheader, %319
  %indvars.iv526 = phi i64 [ %121, %.preheader ], [ %indvars.iv.next527, %319 ]
  %indvars.iv524 = phi i64 [ %120, %.preheader ], [ %indvars.iv.next525, %319 ]
  %indvars.iv522 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next523, %319 ]
  %indvars.iv520 = phi i64 [ %smax, %.preheader ], [ %indvars.iv.next521, %319 ]
  %.1367 = phi double [ %.0366.lcssa, %.preheader ], [ %323, %319 ]
  %.1365 = phi double [ %.0364.lcssa, %.preheader ], [ %260, %319 ]
  %123 = add nsw i64 %indvars.iv520, -1
  %124 = getelementptr inbounds double, ptr %5, i64 %123
  %125 = load double, ptr %124, align 8, !tbaa !15
  %126 = getelementptr inbounds double, ptr %2, i64 %123
  %127 = load double, ptr %126, align 8, !tbaa !15
  %128 = fsub double %125, %127
  %129 = tail call double @llvm.fabs.f64(double %128)
  %130 = load i32, ptr %28, align 8, !tbaa !11
  %.not436 = icmp eq i32 %130, 0
  br i1 %.not436, label %131, label %148

131:                                              ; preds = %122
  %132 = load i32, ptr %114, align 4, !tbaa !14
  switch i32 %132, label %.fold.split [
    i32 0, label %.thread535
    i32 1, label %133
    i32 2, label %.thread537
  ]

133:                                              ; preds = %131
  %134 = getelementptr inbounds double, ptr %3, i64 %123
  %135 = load double, ptr %134, align 8, !tbaa !15
  %136 = getelementptr inbounds double, ptr %4, i64 %123
  %137 = load double, ptr %136, align 8, !tbaa !15
  %138 = fsub double %135, %137
  br label %.thread535

.thread537:                                       ; preds = %131
  %139 = getelementptr inbounds double, ptr %3, i64 %123
  %140 = load double, ptr %139, align 8, !tbaa !15
  %141 = fcmp ult double %125, %127
  %.441 = select i1 %141, double %127, double %125
  %142 = fsub double %140, %.441
  %143 = select i1 %141, double %125, double %127
  %144 = getelementptr inbounds double, ptr %4, i64 %123
  %145 = load double, ptr %144, align 8, !tbaa !15
  %146 = fsub double %143, %145
  %147 = fadd double %142, %146
  br label %.thread535

.fold.split:                                      ; preds = %131
  br label %.thread535

148:                                              ; preds = %122
  %149 = sitofp i32 %130 to double
  %150 = fdiv double %.1365, %149
  %.pre = load i32, ptr %114, align 4, !tbaa !14
  %.pre.fr = freeze i32 %.pre
  %151 = icmp eq i32 %.pre.fr, 2
  br i1 %151, label %152, label %.thread535

152:                                              ; preds = %148
  br label %.thread535

.thread535:                                       ; preds = %.fold.split, %131, %133, %.thread537, %148, %152
  %.pn = phi double [ %150, %148 ], [ %147, %.thread537 ], [ %150, %152 ], [ 0.000000e+00, %.fold.split ], [ %129, %131 ], [ %138, %133 ]
  %153 = phi double [ 1.000000e+00, %148 ], [ 2.000000e+00, %.thread537 ], [ 2.000000e+00, %152 ], [ 1.000000e+00, %.fold.split ], [ 1.000000e+00, %131 ], [ 1.000000e+00, %133 ]
  %154 = fmul double %113, %.pn
  %155 = fdiv double %154, %153
  %156 = fcmp ogt double %129, %155
  br i1 %156, label %157, label %215

157:                                              ; preds = %.thread535
  %158 = getelementptr inbounds double, ptr %5, i64 %indvars.iv520
  %159 = load double, ptr %158, align 8, !tbaa !15
  %160 = getelementptr inbounds double, ptr %2, i64 %indvars.iv520
  %161 = load double, ptr %160, align 8, !tbaa !15
  %162 = fsub double %159, %161
  %163 = tail call double @llvm.fabs.f64(double %162)
  %164 = load double, ptr %116, align 8, !tbaa !19
  %165 = load i32, ptr %31, align 8, !tbaa !11
  %.not437 = icmp eq i32 %165, 0
  br i1 %.not437, label %166, label %183

166:                                              ; preds = %157
  %167 = load i32, ptr %115, align 4, !tbaa !14
  switch i32 %167, label %.fold.split442 [
    i32 0, label %.thread542
    i32 1, label %168
    i32 2, label %.thread544
  ]

168:                                              ; preds = %166
  %169 = getelementptr inbounds double, ptr %3, i64 %indvars.iv520
  %170 = load double, ptr %169, align 8, !tbaa !15
  %171 = getelementptr inbounds double, ptr %4, i64 %indvars.iv520
  %172 = load double, ptr %171, align 8, !tbaa !15
  %173 = fsub double %170, %172
  br label %.thread542

.thread544:                                       ; preds = %166
  %174 = getelementptr inbounds double, ptr %3, i64 %indvars.iv520
  %175 = load double, ptr %174, align 8, !tbaa !15
  %176 = fcmp ult double %159, %161
  %.443 = select i1 %176, double %161, double %159
  %177 = fsub double %175, %.443
  %178 = select i1 %176, double %159, double %161
  %179 = getelementptr inbounds double, ptr %4, i64 %indvars.iv520
  %180 = load double, ptr %179, align 8, !tbaa !15
  %181 = fsub double %178, %180
  %182 = fadd double %177, %181
  br label %.thread542

.fold.split442:                                   ; preds = %166
  br label %.thread542

183:                                              ; preds = %157
  %184 = sitofp i32 %165 to double
  %185 = fdiv double %.1367, %184
  %.pre533 = load i32, ptr %115, align 4, !tbaa !14
  %.pre533.fr = freeze i32 %.pre533
  %186 = icmp eq i32 %.pre533.fr, 2
  br i1 %186, label %187, label %.thread542

187:                                              ; preds = %183
  br label %.thread542

.thread542:                                       ; preds = %.fold.split442, %166, %168, %.thread544, %183, %187
  %.pn556 = phi double [ %185, %183 ], [ %182, %.thread544 ], [ %185, %187 ], [ 0.000000e+00, %.fold.split442 ], [ %163, %166 ], [ %173, %168 ]
  %188 = phi double [ 1.000000e+00, %183 ], [ 2.000000e+00, %.thread544 ], [ 2.000000e+00, %187 ], [ 1.000000e+00, %.fold.split442 ], [ 1.000000e+00, %166 ], [ 1.000000e+00, %168 ]
  %189 = fmul double %164, %.pn556
  %190 = fdiv double %189, %188
  %191 = fcmp ugt double %163, %190
  br i1 %191, label %215, label %192

192:                                              ; preds = %.thread542
  %193 = fcmp ogt double %159, %161
  %.444 = select i1 %193, double %159, double %161
  %194 = fcmp ogt double %125, %127
  %195 = select i1 %194, double %125, double %127
  %196 = fcmp olt double %.444, %195
  br i1 %196, label %197, label %205

197:                                              ; preds = %192
  %198 = fcmp olt double %159, %161
  %.445 = select i1 %198, double %159, double %161
  %199 = fcmp olt double %125, %127
  %200 = select i1 %199, double %125, double %127
  %201 = fcmp ogt double %.445, %200
  br i1 %201, label %202, label %205

202:                                              ; preds = %197
  %203 = fcmp oge double %125, %127
  %204 = select i1 %203, i32 -100, i32 100
  br label %215

205:                                              ; preds = %197, %192
  %206 = fcmp ugt double %.444, %195
  br i1 %206, label %215, label %207

207:                                              ; preds = %205
  %208 = fcmp olt double %159, %161
  %.447 = select i1 %208, double %159, double %161
  %209 = fcmp olt double %125, %127
  %210 = select i1 %209, double %125, double %127
  %211 = fcmp ult double %.447, %210
  br i1 %211, label %215, label %212

212:                                              ; preds = %207
  %213 = fcmp oge double %125, %127
  %214 = select i1 %213, i32 -80, i32 80
  br label %215

215:                                              ; preds = %.thread535, %.thread542, %205, %207, %202, %212
  %.sink = phi i32 [ %204, %202 ], [ %214, %212 ], [ 0, %207 ], [ 0, %205 ], [ 0, %.thread542 ], [ 0, %.thread535 ]
  %216 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv522
  store i32 %.sink, ptr %216, align 4, !tbaa !5
  %indvars.iv.next523 = add nuw nsw i64 %indvars.iv522, 1
  %217 = load i32, ptr %114, align 4, !tbaa !14
  switch i32 %217, label %256 [
    i32 0, label %.thread
    i32 1, label %.thread453
    i32 2, label %.thread454
  ]

.thread453:                                       ; preds = %215
  %218 = getelementptr inbounds double, ptr %3, i64 %123
  %219 = load double, ptr %218, align 8, !tbaa !15
  %220 = getelementptr inbounds double, ptr %4, i64 %123
  %221 = load double, ptr %220, align 8, !tbaa !15
  %222 = fsub double %219, %221
  %223 = getelementptr inbounds double, ptr %3, i64 %indvars.iv526
  %224 = load double, ptr %223, align 8, !tbaa !15
  %225 = getelementptr inbounds double, ptr %4, i64 %indvars.iv526
  %226 = load double, ptr %225, align 8, !tbaa !15
  %227 = fsub double %224, %226
  br label %256

.thread454:                                       ; preds = %215
  %228 = getelementptr inbounds double, ptr %3, i64 %123
  %229 = load double, ptr %228, align 8, !tbaa !15
  %230 = fcmp ult double %125, %127
  %.448 = select i1 %230, double %127, double %125
  %231 = fsub double %229, %.448
  %232 = select i1 %230, double %125, double %127
  %233 = getelementptr inbounds double, ptr %4, i64 %123
  %234 = load double, ptr %233, align 8, !tbaa !15
  %235 = fsub double %232, %234
  %236 = fadd double %231, %235
  %237 = getelementptr inbounds double, ptr %3, i64 %indvars.iv526
  %238 = load double, ptr %237, align 8, !tbaa !15
  %239 = getelementptr inbounds double, ptr %5, i64 %indvars.iv526
  %240 = load double, ptr %239, align 8, !tbaa !15
  %241 = getelementptr inbounds double, ptr %2, i64 %indvars.iv526
  %242 = load double, ptr %241, align 8, !tbaa !15
  %243 = fcmp ult double %240, %242
  %.449 = select i1 %243, double %242, double %240
  %244 = fsub double %238, %.449
  %245 = select i1 %243, double %240, double %242
  %246 = getelementptr inbounds double, ptr %4, i64 %indvars.iv526
  %247 = load double, ptr %246, align 8, !tbaa !15
  %248 = fsub double %245, %247
  %249 = fadd double %244, %248
  br label %256

.thread:                                          ; preds = %215
  %250 = getelementptr inbounds double, ptr %5, i64 %indvars.iv526
  %251 = load double, ptr %250, align 8, !tbaa !15
  %252 = getelementptr inbounds double, ptr %2, i64 %indvars.iv526
  %253 = load double, ptr %252, align 8, !tbaa !15
  %254 = fsub double %251, %253
  %255 = tail call double @llvm.fabs.f64(double %254)
  br label %256

256:                                              ; preds = %215, %.thread453, %.thread454, %.thread
  %257 = phi double [ %129, %.thread ], [ %222, %.thread453 ], [ %236, %.thread454 ], [ 0.000000e+00, %215 ]
  %258 = phi double [ %255, %.thread ], [ %227, %.thread453 ], [ %249, %.thread454 ], [ 0.000000e+00, %215 ]
  %259 = fsub double %257, %258
  %260 = fadd double %.1365, %259
  %261 = load i32, ptr %115, align 4, !tbaa !14
  switch i32 %261, label %319 [
    i32 0, label %.thread455
    i32 1, label %.thread456
    i32 2, label %.thread457
  ]

.thread455:                                       ; preds = %256
  %262 = getelementptr inbounds double, ptr %5, i64 %indvars.iv520
  %263 = load double, ptr %262, align 8, !tbaa !15
  %264 = getelementptr inbounds double, ptr %2, i64 %indvars.iv520
  %265 = load double, ptr %264, align 8, !tbaa !15
  %266 = getelementptr inbounds double, ptr %5, i64 %indvars.iv524
  %267 = load double, ptr %266, align 8, !tbaa !15
  %268 = getelementptr inbounds double, ptr %2, i64 %indvars.iv524
  %269 = load double, ptr %268, align 8, !tbaa !15
  %270 = insertelement <2 x double> poison, double %263, i64 0
  %271 = insertelement <2 x double> %270, double %267, i64 1
  %272 = insertelement <2 x double> poison, double %265, i64 0
  %273 = insertelement <2 x double> %272, double %269, i64 1
  %274 = fsub <2 x double> %271, %273
  %275 = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %274)
  br label %319

.thread456:                                       ; preds = %256
  %276 = getelementptr inbounds double, ptr %3, i64 %indvars.iv520
  %277 = load double, ptr %276, align 8, !tbaa !15
  %278 = getelementptr inbounds double, ptr %4, i64 %indvars.iv520
  %279 = load double, ptr %278, align 8, !tbaa !15
  %280 = getelementptr inbounds double, ptr %3, i64 %indvars.iv524
  %281 = load double, ptr %280, align 8, !tbaa !15
  %282 = getelementptr inbounds double, ptr %4, i64 %indvars.iv524
  %283 = load double, ptr %282, align 8, !tbaa !15
  %284 = insertelement <2 x double> poison, double %277, i64 0
  %285 = insertelement <2 x double> %284, double %281, i64 1
  %286 = insertelement <2 x double> poison, double %279, i64 0
  %287 = insertelement <2 x double> %286, double %283, i64 1
  %288 = fsub <2 x double> %285, %287
  br label %319

.thread457:                                       ; preds = %256
  %289 = getelementptr inbounds double, ptr %3, i64 %indvars.iv520
  %290 = load double, ptr %289, align 8, !tbaa !15
  %291 = getelementptr inbounds double, ptr %5, i64 %indvars.iv520
  %292 = load double, ptr %291, align 8, !tbaa !15
  %293 = getelementptr inbounds double, ptr %2, i64 %indvars.iv520
  %294 = load double, ptr %293, align 8, !tbaa !15
  %295 = getelementptr inbounds double, ptr %4, i64 %indvars.iv520
  %296 = load double, ptr %295, align 8, !tbaa !15
  %297 = getelementptr inbounds double, ptr %3, i64 %indvars.iv524
  %298 = load double, ptr %297, align 8, !tbaa !15
  %299 = getelementptr inbounds double, ptr %5, i64 %indvars.iv524
  %300 = load double, ptr %299, align 8, !tbaa !15
  %301 = getelementptr inbounds double, ptr %2, i64 %indvars.iv524
  %302 = load double, ptr %301, align 8, !tbaa !15
  %303 = getelementptr inbounds double, ptr %4, i64 %indvars.iv524
  %304 = load double, ptr %303, align 8, !tbaa !15
  %305 = insertelement <2 x double> poison, double %292, i64 0
  %306 = insertelement <2 x double> %305, double %300, i64 1
  %307 = insertelement <2 x double> poison, double %294, i64 0
  %308 = insertelement <2 x double> %307, double %302, i64 1
  %309 = fcmp ult <2 x double> %306, %308
  %310 = select <2 x i1> %309, <2 x double> %308, <2 x double> %306
  %311 = insertelement <2 x double> poison, double %290, i64 0
  %312 = insertelement <2 x double> %311, double %298, i64 1
  %313 = fsub <2 x double> %312, %310
  %314 = select <2 x i1> %309, <2 x double> %306, <2 x double> %308
  %315 = insertelement <2 x double> poison, double %296, i64 0
  %316 = insertelement <2 x double> %315, double %304, i64 1
  %317 = fsub <2 x double> %314, %316
  %318 = fadd <2 x double> %313, %317
  br label %319

319:                                              ; preds = %256, %.thread456, %.thread457, %.thread455
  %320 = phi <2 x double> [ %275, %.thread455 ], [ %288, %.thread456 ], [ %318, %.thread457 ], [ zeroinitializer, %256 ]
  %shift = shufflevector <2 x double> %320, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %321 = fsub <2 x double> %320, %shift
  %322 = extractelement <2 x double> %321, i64 0
  %323 = fadd double %.1367, %322
  %indvars.iv.next521 = add nuw nsw i64 %indvars.iv520, 1
  %indvars.iv.next527 = add nsw i64 %indvars.iv526, 1
  %indvars.iv.next525 = add nsw i64 %indvars.iv524, 1
  %.not438.not = icmp slt i64 %indvars.iv520, %119
  br i1 %.not438.not, label %122, label %324, !llvm.loop !20

324:                                              ; preds = %319
  %325 = trunc nuw i64 %indvars.iv.next523 to i32
  store i32 %325, ptr %7, align 4, !tbaa !5
  store i32 %spec.select, ptr %6, align 4, !tbaa !5
  br label %326

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

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

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

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

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

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

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

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


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