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

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

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

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

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

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

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

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 3
  %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 3
  %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 3
  %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 3
  %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
  store i32 0, ptr %23, align 4, !tbaa !5
  br label %341

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

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

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

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

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

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

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

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

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

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

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

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

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

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

501:                                              ; preds = %420
  br label %502

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

504:                                              ; preds = %502, %406
  %505 = phi double [ %419, %406 ], [ %503, %502 ]
  br label %506

506:                                              ; preds = %504, %384
  %507 = phi double [ %398, %384 ], [ %505, %504 ]
  br label %508

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

665:                                              ; preds = %594
  br label %666

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

668:                                              ; preds = %666, %582
  %669 = phi double [ %593, %582 ], [ %667, %666 ]
  br label %670

670:                                              ; preds = %668, %562
  %671 = phi double [ %574, %562 ], [ %669, %668 ]
  br label %672

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

685:                                              ; preds = %672
  %686 = load ptr, ptr %16, align 8, !tbaa !9
  %687 = load i32, ptr %22, align 4, !tbaa !5
  %688 = sub nsw i32 %687, 1
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds double, ptr %686, 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 = sub nsw i32 %693, 1
  %695 = sext i32 %694 to i64
  %696 = getelementptr inbounds double, ptr %692, i64 %695
  %697 = load double, ptr %696, align 8, !tbaa !11
  %698 = fcmp oge double %691, %697
  %699 = zext i1 %698 to i64
  %700 = select i1 %698, i32 1, i32 -1
  %701 = icmp eq i32 %700, 1
  br i1 %701, label %702, label %758

702:                                              ; preds = %685
  %703 = load ptr, ptr %13, align 8, !tbaa !9
  %704 = load i32, ptr %22, align 4, !tbaa !5
  %705 = sext i32 %704 to i64
  %706 = getelementptr inbounds double, ptr %703, i64 %705
  %707 = load double, ptr %706, align 8, !tbaa !11
  %708 = load ptr, ptr %16, align 8, !tbaa !9
  %709 = load i32, ptr %22, align 4, !tbaa !5
  %710 = sext i32 %709 to i64
  %711 = getelementptr inbounds double, ptr %708, i64 %710
  %712 = load double, ptr %711, align 8, !tbaa !11
  %713 = fcmp olt double %707, %712
  br i1 %713, label %714, label %720

714:                                              ; preds = %702
  %715 = load ptr, ptr %13, align 8, !tbaa !9
  %716 = load i32, ptr %22, align 4, !tbaa !5
  %717 = sext i32 %716 to i64
  %718 = getelementptr inbounds double, ptr %715, i64 %717
  %719 = load double, ptr %718, align 8, !tbaa !11
  br label %726

720:                                              ; preds = %702
  %721 = load ptr, ptr %16, align 8, !tbaa !9
  %722 = load i32, ptr %22, align 4, !tbaa !5
  %723 = sext i32 %722 to i64
  %724 = getelementptr inbounds double, ptr %721, i64 %723
  %725 = load double, ptr %724, align 8, !tbaa !11
  br label %726

726:                                              ; preds = %720, %714
  %727 = phi double [ %719, %714 ], [ %725, %720 ]
  %728 = load ptr, ptr %13, align 8, !tbaa !9
  %729 = load i32, ptr %22, align 4, !tbaa !5
  %730 = sub nsw i32 %729, 1
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds double, ptr %728, i64 %731
  %733 = load double, ptr %732, align 8, !tbaa !11
  %734 = load ptr, ptr %16, align 8, !tbaa !9
  %735 = load i32, ptr %22, align 4, !tbaa !5
  %736 = sub nsw i32 %735, 1
  %737 = sext i32 %736 to i64
  %738 = getelementptr inbounds double, ptr %734, i64 %737
  %739 = load double, ptr %738, align 8, !tbaa !11
  %740 = fcmp ogt double %733, %739
  br i1 %740, label %741, label %748

741:                                              ; preds = %726
  %742 = load ptr, ptr %13, align 8, !tbaa !9
  %743 = load i32, ptr %22, align 4, !tbaa !5
  %744 = sub nsw i32 %743, 1
  %745 = sext i32 %744 to i64
  %746 = getelementptr inbounds double, ptr %742, i64 %745
  %747 = load double, ptr %746, align 8, !tbaa !11
  br label %755

748:                                              ; preds = %726
  %749 = load ptr, ptr %16, align 8, !tbaa !9
  %750 = load i32, ptr %22, align 4, !tbaa !5
  %751 = sub nsw i32 %750, 1
  %752 = sext i32 %751 to i64
  %753 = getelementptr inbounds double, ptr %749, i64 %752
  %754 = load double, ptr %753, align 8, !tbaa !11
  br label %755

755:                                              ; preds = %748, %741
  %756 = phi double [ %747, %741 ], [ %754, %748 ]
  %757 = fcmp ogt double %727, %756
  br i1 %757, label %831, label %758

758:                                              ; preds = %755, %685
  %759 = load ptr, ptr %16, align 8, !tbaa !9
  %760 = load i32, ptr %22, align 4, !tbaa !5
  %761 = sub nsw i32 %760, 1
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds double, ptr %759, i64 %762
  %764 = load double, ptr %763, align 8, !tbaa !11
  %765 = load ptr, ptr %13, align 8, !tbaa !9
  %766 = load i32, ptr %22, align 4, !tbaa !5
  %767 = sub nsw i32 %766, 1
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds double, ptr %765, i64 %768
  %770 = load double, ptr %769, align 8, !tbaa !11
  %771 = fcmp oge double %764, %770
  %772 = zext i1 %771 to i64
  %773 = select i1 %771, i32 1, i32 -1
  %774 = icmp eq i32 %773, -1
  br i1 %774, label %775, label %854

775:                                              ; preds = %758
  %776 = load ptr, ptr %13, align 8, !tbaa !9
  %777 = load i32, ptr %22, align 4, !tbaa !5
  %778 = sext i32 %777 to i64
  %779 = getelementptr inbounds double, ptr %776, i64 %778
  %780 = load double, ptr %779, align 8, !tbaa !11
  %781 = load ptr, ptr %16, align 8, !tbaa !9
  %782 = load i32, ptr %22, align 4, !tbaa !5
  %783 = sext i32 %782 to i64
  %784 = getelementptr inbounds double, ptr %781, i64 %783
  %785 = load double, ptr %784, align 8, !tbaa !11
  %786 = fcmp ogt double %780, %785
  br i1 %786, label %787, label %793

787:                                              ; preds = %775
  %788 = load ptr, ptr %13, align 8, !tbaa !9
  %789 = load i32, ptr %22, align 4, !tbaa !5
  %790 = sext i32 %789 to i64
  %791 = getelementptr inbounds double, ptr %788, i64 %790
  %792 = load double, ptr %791, align 8, !tbaa !11
  br label %799

793:                                              ; preds = %775
  %794 = load ptr, ptr %16, align 8, !tbaa !9
  %795 = load i32, ptr %22, align 4, !tbaa !5
  %796 = sext i32 %795 to i64
  %797 = getelementptr inbounds double, ptr %794, i64 %796
  %798 = load double, ptr %797, align 8, !tbaa !11
  br label %799

799:                                              ; preds = %793, %787
  %800 = phi double [ %792, %787 ], [ %798, %793 ]
  %801 = load ptr, ptr %13, align 8, !tbaa !9
  %802 = load i32, ptr %22, align 4, !tbaa !5
  %803 = sub nsw i32 %802, 1
  %804 = sext i32 %803 to i64
  %805 = getelementptr inbounds double, ptr %801, i64 %804
  %806 = load double, ptr %805, align 8, !tbaa !11
  %807 = load ptr, ptr %16, align 8, !tbaa !9
  %808 = load i32, ptr %22, align 4, !tbaa !5
  %809 = sub nsw i32 %808, 1
  %810 = sext i32 %809 to i64
  %811 = getelementptr inbounds double, ptr %807, i64 %810
  %812 = load double, ptr %811, align 8, !tbaa !11
  %813 = fcmp olt double %806, %812
  br i1 %813, label %814, label %821

814:                                              ; preds = %799
  %815 = load ptr, ptr %13, align 8, !tbaa !9
  %816 = load i32, ptr %22, align 4, !tbaa !5
  %817 = sub nsw i32 %816, 1
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds double, ptr %815, i64 %818
  %820 = load double, ptr %819, align 8, !tbaa !11
  br label %828

821:                                              ; preds = %799
  %822 = load ptr, ptr %16, align 8, !tbaa !9
  %823 = load i32, ptr %22, align 4, !tbaa !5
  %824 = sub nsw i32 %823, 1
  %825 = sext i32 %824 to i64
  %826 = getelementptr inbounds double, ptr %822, i64 %825
  %827 = load double, ptr %826, align 8, !tbaa !11
  br label %828

828:                                              ; preds = %821, %814
  %829 = phi double [ %820, %814 ], [ %827, %821 ]
  %830 = fcmp olt double %800, %829
  br i1 %830, label %831, label %854

831:                                              ; preds = %828, %755
  %832 = load ptr, ptr %16, align 8, !tbaa !9
  %833 = load i32, ptr %22, align 4, !tbaa !5
  %834 = sub nsw i32 %833, 1
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds double, ptr %832, i64 %835
  %837 = load double, ptr %836, align 8, !tbaa !11
  %838 = load ptr, ptr %13, align 8, !tbaa !9
  %839 = load i32, ptr %22, align 4, !tbaa !5
  %840 = sub nsw i32 %839, 1
  %841 = sext i32 %840 to i64
  %842 = getelementptr inbounds double, ptr %838, i64 %841
  %843 = load double, ptr %842, align 8, !tbaa !11
  %844 = fcmp oge double %837, %843
  %845 = zext i1 %844 to i64
  %846 = select i1 %844, i32 1, i32 -1
  %847 = sub nsw i32 0, %846
  %848 = mul nsw i32 %847, 100
  %849 = load ptr, ptr %19, align 8, !tbaa !9
  %850 = load i32, ptr %23, align 4, !tbaa !5
  %851 = add nsw i32 %850, 1
  store i32 %851, ptr %23, align 4, !tbaa !5
  %852 = sext i32 %850 to i64
  %853 = getelementptr inbounds i32, ptr %849, i64 %852
  store i32 %848, ptr %853, align 4, !tbaa !5
  br label %860

854:                                              ; preds = %828, %758, %672, %508
  %855 = load ptr, ptr %19, align 8, !tbaa !9
  %856 = load i32, ptr %23, align 4, !tbaa !5
  %857 = add nsw i32 %856, 1
  store i32 %857, ptr %23, align 4, !tbaa !5
  %858 = sext i32 %856 to i64
  %859 = getelementptr inbounds i32, ptr %855, i64 %858
  store i32 0, ptr %859, align 4, !tbaa !5
  br label %860

860:                                              ; preds = %854, %831
  %861 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %862 = getelementptr inbounds %struct.TA_LibcPriv, ptr %861, i32 0, i32 8
  %863 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %862, i64 0, i64 0
  %864 = getelementptr inbounds %struct.TA_CandleSetting, ptr %863, i32 0, i32 1
  %865 = load i32, ptr %864, align 4, !tbaa !15
  %866 = icmp eq i32 %865, 0
  br i1 %866, label %867, label %882

867:                                              ; preds = %860
  %868 = load ptr, ptr %16, 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
  %874 = load ptr, ptr %13, align 8, !tbaa !9
  %875 = load i32, ptr %22, align 4, !tbaa !5
  %876 = sub nsw i32 %875, 1
  %877 = sext i32 %876 to i64
  %878 = getelementptr inbounds double, ptr %874, i64 %877
  %879 = load double, ptr %878, align 8, !tbaa !11
  %880 = fsub double %873, %879
  %881 = call double @llvm.fabs.f64(double %880)
  br label %989

882:                                              ; preds = %860
  %883 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %884 = getelementptr inbounds %struct.TA_LibcPriv, ptr %883, i32 0, i32 8
  %885 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %884, i64 0, i64 0
  %886 = getelementptr inbounds %struct.TA_CandleSetting, ptr %885, i32 0, i32 1
  %887 = load i32, ptr %886, align 4, !tbaa !15
  %888 = icmp eq i32 %887, 1
  br i1 %888, label %889, label %903

889:                                              ; preds = %882
  %890 = load ptr, ptr %14, align 8, !tbaa !9
  %891 = load i32, ptr %22, align 4, !tbaa !5
  %892 = sub nsw i32 %891, 1
  %893 = sext i32 %892 to i64
  %894 = getelementptr inbounds double, ptr %890, i64 %893
  %895 = load double, ptr %894, align 8, !tbaa !11
  %896 = load ptr, ptr %15, align 8, !tbaa !9
  %897 = load i32, ptr %22, align 4, !tbaa !5
  %898 = sub nsw i32 %897, 1
  %899 = sext i32 %898 to i64
  %900 = getelementptr inbounds double, ptr %896, i64 %899
  %901 = load double, ptr %900, align 8, !tbaa !11
  %902 = fsub double %895, %901
  br label %987

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

910:                                              ; preds = %903
  %911 = load ptr, ptr %14, align 8, !tbaa !9
  %912 = load i32, ptr %22, align 4, !tbaa !5
  %913 = sub nsw i32 %912, 1
  %914 = sext i32 %913 to i64
  %915 = getelementptr inbounds double, ptr %911, i64 %914
  %916 = load double, ptr %915, align 8, !tbaa !11
  %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
  %923 = load ptr, ptr %13, align 8, !tbaa !9
  %924 = load i32, ptr %22, align 4, !tbaa !5
  %925 = sub nsw i32 %924, 1
  %926 = sext i32 %925 to i64
  %927 = getelementptr inbounds double, ptr %923, i64 %926
  %928 = load double, ptr %927, align 8, !tbaa !11
  %929 = fcmp oge double %922, %928
  br i1 %929, label %930, label %937

930:                                              ; preds = %910
  %931 = load ptr, ptr %16, align 8, !tbaa !9
  %932 = load i32, ptr %22, align 4, !tbaa !5
  %933 = sub nsw i32 %932, 1
  %934 = sext i32 %933 to i64
  %935 = getelementptr inbounds double, ptr %931, i64 %934
  %936 = load double, ptr %935, align 8, !tbaa !11
  br label %944

937:                                              ; preds = %910
  %938 = load ptr, ptr %13, align 8, !tbaa !9
  %939 = load i32, ptr %22, align 4, !tbaa !5
  %940 = sub nsw i32 %939, 1
  %941 = sext i32 %940 to i64
  %942 = getelementptr inbounds double, ptr %938, i64 %941
  %943 = load double, ptr %942, align 8, !tbaa !11
  br label %944

944:                                              ; preds = %937, %930
  %945 = phi double [ %936, %930 ], [ %943, %937 ]
  %946 = fsub double %916, %945
  %947 = load ptr, ptr %16, align 8, !tbaa !9
  %948 = load i32, ptr %22, align 4, !tbaa !5
  %949 = sub nsw i32 %948, 1
  %950 = sext i32 %949 to i64
  %951 = getelementptr inbounds double, ptr %947, i64 %950
  %952 = load double, ptr %951, align 8, !tbaa !11
  %953 = load ptr, ptr %13, align 8, !tbaa !9
  %954 = load i32, ptr %22, align 4, !tbaa !5
  %955 = sub nsw i32 %954, 1
  %956 = sext i32 %955 to i64
  %957 = getelementptr inbounds double, ptr %953, i64 %956
  %958 = load double, ptr %957, align 8, !tbaa !11
  %959 = fcmp oge double %952, %958
  br i1 %959, label %960, label %967

960:                                              ; preds = %944
  %961 = load ptr, ptr %13, align 8, !tbaa !9
  %962 = load i32, ptr %22, align 4, !tbaa !5
  %963 = sub nsw i32 %962, 1
  %964 = sext i32 %963 to i64
  %965 = getelementptr inbounds double, ptr %961, i64 %964
  %966 = load double, ptr %965, align 8, !tbaa !11
  br label %974

967:                                              ; preds = %944
  %968 = load ptr, ptr %16, align 8, !tbaa !9
  %969 = load i32, ptr %22, align 4, !tbaa !5
  %970 = sub nsw i32 %969, 1
  %971 = sext i32 %970 to i64
  %972 = getelementptr inbounds double, ptr %968, i64 %971
  %973 = load double, ptr %972, align 8, !tbaa !11
  br label %974

974:                                              ; preds = %967, %960
  %975 = phi double [ %966, %960 ], [ %973, %967 ]
  %976 = load ptr, ptr %15, align 8, !tbaa !9
  %977 = load i32, ptr %22, align 4, !tbaa !5
  %978 = sub nsw i32 %977, 1
  %979 = sext i32 %978 to i64
  %980 = getelementptr inbounds double, ptr %976, i64 %979
  %981 = load double, ptr %980, align 8, !tbaa !11
  %982 = fsub double %975, %981
  %983 = fadd double %946, %982
  br label %985

984:                                              ; preds = %903
  br label %985

985:                                              ; preds = %984, %974
  %986 = phi double [ %983, %974 ], [ 0.000000e+00, %984 ]
  br label %987

987:                                              ; preds = %985, %889
  %988 = phi double [ %902, %889 ], [ %986, %985 ]
  br label %989

989:                                              ; preds = %987, %867
  %990 = phi double [ %881, %867 ], [ %988, %987 ]
  %991 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %992 = getelementptr inbounds %struct.TA_LibcPriv, ptr %991, i32 0, i32 8
  %993 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %992, i64 0, i64 0
  %994 = getelementptr inbounds %struct.TA_CandleSetting, ptr %993, i32 0, i32 1
  %995 = load i32, ptr %994, align 4, !tbaa !15
  %996 = icmp eq i32 %995, 0
  br i1 %996, label %997, label %1010

997:                                              ; preds = %989
  %998 = load ptr, ptr %16, align 8, !tbaa !9
  %999 = load i32, ptr %25, align 4, !tbaa !5
  %1000 = sext i32 %999 to i64
  %1001 = getelementptr inbounds double, ptr %998, i64 %1000
  %1002 = load double, ptr %1001, align 8, !tbaa !11
  %1003 = load ptr, ptr %13, align 8, !tbaa !9
  %1004 = load i32, ptr %25, align 4, !tbaa !5
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds double, ptr %1003, i64 %1005
  %1007 = load double, ptr %1006, align 8, !tbaa !11
  %1008 = fsub double %1002, %1007
  %1009 = call double @llvm.fabs.f64(double %1008)
  br label %1105

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

1017:                                             ; preds = %1010
  %1018 = load ptr, ptr %14, align 8, !tbaa !9
  %1019 = load i32, ptr %25, align 4, !tbaa !5
  %1020 = sext i32 %1019 to i64
  %1021 = getelementptr inbounds double, ptr %1018, i64 %1020
  %1022 = load double, ptr %1021, align 8, !tbaa !11
  %1023 = load ptr, ptr %15, align 8, !tbaa !9
  %1024 = load i32, ptr %25, align 4, !tbaa !5
  %1025 = sext i32 %1024 to i64
  %1026 = getelementptr inbounds double, ptr %1023, i64 %1025
  %1027 = load double, ptr %1026, align 8, !tbaa !11
  %1028 = fsub double %1022, %1027
  br label %1103

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

1036:                                             ; preds = %1029
  %1037 = load ptr, ptr %14, align 8, !tbaa !9
  %1038 = load i32, ptr %25, align 4, !tbaa !5
  %1039 = sext i32 %1038 to i64
  %1040 = getelementptr inbounds double, ptr %1037, i64 %1039
  %1041 = load double, ptr %1040, align 8, !tbaa !11
  %1042 = load ptr, ptr %16, align 8, !tbaa !9
  %1043 = load i32, ptr %25, align 4, !tbaa !5
  %1044 = sext i32 %1043 to i64
  %1045 = getelementptr inbounds double, ptr %1042, i64 %1044
  %1046 = load double, ptr %1045, align 8, !tbaa !11
  %1047 = load ptr, ptr %13, align 8, !tbaa !9
  %1048 = load i32, ptr %25, align 4, !tbaa !5
  %1049 = sext i32 %1048 to i64
  %1050 = getelementptr inbounds double, ptr %1047, i64 %1049
  %1051 = load double, ptr %1050, align 8, !tbaa !11
  %1052 = fcmp oge double %1046, %1051
  br i1 %1052, label %1053, label %1059

1053:                                             ; preds = %1036
  %1054 = load ptr, ptr %16, align 8, !tbaa !9
  %1055 = load i32, ptr %25, align 4, !tbaa !5
  %1056 = sext i32 %1055 to i64
  %1057 = getelementptr inbounds double, ptr %1054, i64 %1056
  %1058 = load double, ptr %1057, align 8, !tbaa !11
  br label %1065

1059:                                             ; preds = %1036
  %1060 = load ptr, ptr %13, align 8, !tbaa !9
  %1061 = load i32, ptr %25, align 4, !tbaa !5
  %1062 = sext i32 %1061 to i64
  %1063 = getelementptr inbounds double, ptr %1060, i64 %1062
  %1064 = load double, ptr %1063, align 8, !tbaa !11
  br label %1065

1065:                                             ; preds = %1059, %1053
  %1066 = phi double [ %1058, %1053 ], [ %1064, %1059 ]
  %1067 = fsub double %1041, %1066
  %1068 = load ptr, ptr %16, align 8, !tbaa !9
  %1069 = load i32, ptr %25, align 4, !tbaa !5
  %1070 = sext i32 %1069 to i64
  %1071 = getelementptr inbounds double, ptr %1068, i64 %1070
  %1072 = load double, ptr %1071, align 8, !tbaa !11
  %1073 = load ptr, ptr %13, align 8, !tbaa !9
  %1074 = load i32, ptr %25, align 4, !tbaa !5
  %1075 = sext i32 %1074 to i64
  %1076 = getelementptr inbounds double, ptr %1073, i64 %1075
  %1077 = load double, ptr %1076, align 8, !tbaa !11
  %1078 = fcmp oge double %1072, %1077
  br i1 %1078, label %1079, label %1085

1079:                                             ; preds = %1065
  %1080 = load ptr, ptr %13, align 8, !tbaa !9
  %1081 = load i32, ptr %25, align 4, !tbaa !5
  %1082 = sext i32 %1081 to i64
  %1083 = getelementptr inbounds double, ptr %1080, i64 %1082
  %1084 = load double, ptr %1083, align 8, !tbaa !11
  br label %1091

1085:                                             ; preds = %1065
  %1086 = load ptr, ptr %16, align 8, !tbaa !9
  %1087 = load i32, ptr %25, align 4, !tbaa !5
  %1088 = sext i32 %1087 to i64
  %1089 = getelementptr inbounds double, ptr %1086, i64 %1088
  %1090 = load double, ptr %1089, align 8, !tbaa !11
  br label %1091

1091:                                             ; preds = %1085, %1079
  %1092 = phi double [ %1084, %1079 ], [ %1090, %1085 ]
  %1093 = load ptr, ptr %15, align 8, !tbaa !9
  %1094 = load i32, ptr %25, align 4, !tbaa !5
  %1095 = sext i32 %1094 to i64
  %1096 = getelementptr inbounds double, ptr %1093, i64 %1095
  %1097 = load double, ptr %1096, align 8, !tbaa !11
  %1098 = fsub double %1092, %1097
  %1099 = fadd double %1067, %1098
  br label %1101

1100:                                             ; preds = %1029
  br label %1101

1101:                                             ; preds = %1100, %1091
  %1102 = phi double [ %1099, %1091 ], [ 0.000000e+00, %1100 ]
  br label %1103

1103:                                             ; preds = %1101, %1017
  %1104 = phi double [ %1028, %1017 ], [ %1102, %1101 ]
  br label %1105

1105:                                             ; preds = %1103, %997
  %1106 = phi double [ %1009, %997 ], [ %1104, %1103 ]
  %1107 = fsub double %990, %1106
  %1108 = load double, ptr %21, align 8, !tbaa !11
  %1109 = fadd double %1108, %1107
  store double %1109, ptr %21, align 8, !tbaa !11
  %1110 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1111 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1110, i32 0, i32 8
  %1112 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1111, i64 0, i64 3
  %1113 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1112, i32 0, i32 1
  %1114 = load i32, ptr %1113, align 4, !tbaa !15
  %1115 = icmp eq i32 %1114, 0
  br i1 %1115, label %1116, label %1129

1116:                                             ; preds = %1105
  %1117 = load ptr, ptr %16, align 8, !tbaa !9
  %1118 = load i32, ptr %22, align 4, !tbaa !5
  %1119 = sext i32 %1118 to i64
  %1120 = getelementptr inbounds double, ptr %1117, i64 %1119
  %1121 = load double, ptr %1120, align 8, !tbaa !11
  %1122 = load ptr, ptr %13, align 8, !tbaa !9
  %1123 = load i32, ptr %22, align 4, !tbaa !5
  %1124 = sext i32 %1123 to i64
  %1125 = getelementptr inbounds double, ptr %1122, i64 %1124
  %1126 = load double, ptr %1125, align 8, !tbaa !11
  %1127 = fsub double %1121, %1126
  %1128 = call double @llvm.fabs.f64(double %1127)
  br label %1224

1129:                                             ; preds = %1105
  %1130 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1131 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1130, i32 0, i32 8
  %1132 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1131, i64 0, i64 3
  %1133 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1132, i32 0, i32 1
  %1134 = load i32, ptr %1133, align 4, !tbaa !15
  %1135 = icmp eq i32 %1134, 1
  br i1 %1135, label %1136, label %1148

1136:                                             ; preds = %1129
  %1137 = load ptr, ptr %14, align 8, !tbaa !9
  %1138 = load i32, ptr %22, align 4, !tbaa !5
  %1139 = sext i32 %1138 to i64
  %1140 = getelementptr inbounds double, ptr %1137, i64 %1139
  %1141 = load double, ptr %1140, align 8, !tbaa !11
  %1142 = load ptr, ptr %15, align 8, !tbaa !9
  %1143 = load i32, ptr %22, align 4, !tbaa !5
  %1144 = sext i32 %1143 to i64
  %1145 = getelementptr inbounds double, ptr %1142, i64 %1144
  %1146 = load double, ptr %1145, align 8, !tbaa !11
  %1147 = fsub double %1141, %1146
  br label %1222

1148:                                             ; preds = %1129
  %1149 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1150 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1149, i32 0, i32 8
  %1151 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1150, i64 0, i64 3
  %1152 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1151, i32 0, i32 1
  %1153 = load i32, ptr %1152, align 4, !tbaa !15
  %1154 = icmp eq i32 %1153, 2
  br i1 %1154, label %1155, label %1219

1155:                                             ; preds = %1148
  %1156 = load ptr, ptr %14, align 8, !tbaa !9
  %1157 = load i32, ptr %22, align 4, !tbaa !5
  %1158 = sext i32 %1157 to i64
  %1159 = getelementptr inbounds double, ptr %1156, i64 %1158
  %1160 = load double, ptr %1159, align 8, !tbaa !11
  %1161 = load ptr, ptr %16, align 8, !tbaa !9
  %1162 = load i32, ptr %22, align 4, !tbaa !5
  %1163 = sext i32 %1162 to i64
  %1164 = getelementptr inbounds double, ptr %1161, i64 %1163
  %1165 = load double, ptr %1164, align 8, !tbaa !11
  %1166 = load ptr, ptr %13, align 8, !tbaa !9
  %1167 = load i32, ptr %22, align 4, !tbaa !5
  %1168 = sext i32 %1167 to i64
  %1169 = getelementptr inbounds double, ptr %1166, i64 %1168
  %1170 = load double, ptr %1169, align 8, !tbaa !11
  %1171 = fcmp oge double %1165, %1170
  br i1 %1171, label %1172, label %1178

1172:                                             ; preds = %1155
  %1173 = load ptr, ptr %16, align 8, !tbaa !9
  %1174 = load i32, ptr %22, align 4, !tbaa !5
  %1175 = sext i32 %1174 to i64
  %1176 = getelementptr inbounds double, ptr %1173, i64 %1175
  %1177 = load double, ptr %1176, align 8, !tbaa !11
  br label %1184

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

1184:                                             ; preds = %1178, %1172
  %1185 = phi double [ %1177, %1172 ], [ %1183, %1178 ]
  %1186 = fsub double %1160, %1185
  %1187 = load ptr, ptr %16, align 8, !tbaa !9
  %1188 = load i32, ptr %22, align 4, !tbaa !5
  %1189 = sext i32 %1188 to i64
  %1190 = getelementptr inbounds double, ptr %1187, i64 %1189
  %1191 = load double, ptr %1190, align 8, !tbaa !11
  %1192 = load ptr, ptr %13, align 8, !tbaa !9
  %1193 = load i32, ptr %22, align 4, !tbaa !5
  %1194 = sext i32 %1193 to i64
  %1195 = getelementptr inbounds double, ptr %1192, i64 %1194
  %1196 = load double, ptr %1195, align 8, !tbaa !11
  %1197 = fcmp oge double %1191, %1196
  br i1 %1197, label %1198, label %1204

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

1204:                                             ; preds = %1184
  %1205 = load ptr, ptr %16, align 8, !tbaa !9
  %1206 = load i32, ptr %22, align 4, !tbaa !5
  %1207 = sext i32 %1206 to i64
  %1208 = getelementptr inbounds double, ptr %1205, i64 %1207
  %1209 = load double, ptr %1208, align 8, !tbaa !11
  br label %1210

1210:                                             ; preds = %1204, %1198
  %1211 = phi double [ %1203, %1198 ], [ %1209, %1204 ]
  %1212 = load ptr, ptr %15, align 8, !tbaa !9
  %1213 = load i32, ptr %22, align 4, !tbaa !5
  %1214 = sext i32 %1213 to i64
  %1215 = getelementptr inbounds double, ptr %1212, i64 %1214
  %1216 = load double, ptr %1215, align 8, !tbaa !11
  %1217 = fsub double %1211, %1216
  %1218 = fadd double %1186, %1217
  br label %1220

1219:                                             ; preds = %1148
  br label %1220

1220:                                             ; preds = %1219, %1210
  %1221 = phi double [ %1218, %1210 ], [ 0.000000e+00, %1219 ]
  br label %1222

1222:                                             ; preds = %1220, %1136
  %1223 = phi double [ %1147, %1136 ], [ %1221, %1220 ]
  br label %1224

1224:                                             ; preds = %1222, %1116
  %1225 = phi double [ %1128, %1116 ], [ %1223, %1222 ]
  %1226 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1227 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1226, i32 0, i32 8
  %1228 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1227, i64 0, i64 3
  %1229 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1228, i32 0, i32 1
  %1230 = load i32, ptr %1229, align 4, !tbaa !15
  %1231 = icmp eq i32 %1230, 0
  br i1 %1231, label %1232, label %1245

1232:                                             ; preds = %1224
  %1233 = load ptr, ptr %16, align 8, !tbaa !9
  %1234 = load i32, ptr %24, align 4, !tbaa !5
  %1235 = sext i32 %1234 to i64
  %1236 = getelementptr inbounds double, ptr %1233, i64 %1235
  %1237 = load double, ptr %1236, align 8, !tbaa !11
  %1238 = load ptr, ptr %13, align 8, !tbaa !9
  %1239 = load i32, ptr %24, align 4, !tbaa !5
  %1240 = sext i32 %1239 to i64
  %1241 = getelementptr inbounds double, ptr %1238, i64 %1240
  %1242 = load double, ptr %1241, align 8, !tbaa !11
  %1243 = fsub double %1237, %1242
  %1244 = call double @llvm.fabs.f64(double %1243)
  br label %1340

1245:                                             ; preds = %1224
  %1246 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1247 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1246, i32 0, i32 8
  %1248 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1247, i64 0, i64 3
  %1249 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1248, i32 0, i32 1
  %1250 = load i32, ptr %1249, align 4, !tbaa !15
  %1251 = icmp eq i32 %1250, 1
  br i1 %1251, label %1252, label %1264

1252:                                             ; preds = %1245
  %1253 = load ptr, ptr %14, align 8, !tbaa !9
  %1254 = load i32, ptr %24, align 4, !tbaa !5
  %1255 = sext i32 %1254 to i64
  %1256 = getelementptr inbounds double, ptr %1253, i64 %1255
  %1257 = load double, ptr %1256, align 8, !tbaa !11
  %1258 = load ptr, ptr %15, align 8, !tbaa !9
  %1259 = load i32, ptr %24, align 4, !tbaa !5
  %1260 = sext i32 %1259 to i64
  %1261 = getelementptr inbounds double, ptr %1258, i64 %1260
  %1262 = load double, ptr %1261, align 8, !tbaa !11
  %1263 = fsub double %1257, %1262
  br label %1338

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

1271:                                             ; preds = %1264
  %1272 = load ptr, ptr %14, align 8, !tbaa !9
  %1273 = load i32, ptr %24, align 4, !tbaa !5
  %1274 = sext i32 %1273 to i64
  %1275 = getelementptr inbounds double, ptr %1272, i64 %1274
  %1276 = load double, ptr %1275, align 8, !tbaa !11
  %1277 = load ptr, ptr %16, align 8, !tbaa !9
  %1278 = load i32, ptr %24, align 4, !tbaa !5
  %1279 = sext i32 %1278 to i64
  %1280 = getelementptr inbounds double, ptr %1277, i64 %1279
  %1281 = load double, ptr %1280, align 8, !tbaa !11
  %1282 = load ptr, ptr %13, align 8, !tbaa !9
  %1283 = load i32, ptr %24, align 4, !tbaa !5
  %1284 = sext i32 %1283 to i64
  %1285 = getelementptr inbounds double, ptr %1282, i64 %1284
  %1286 = load double, ptr %1285, align 8, !tbaa !11
  %1287 = fcmp oge double %1281, %1286
  br i1 %1287, label %1288, label %1294

1288:                                             ; preds = %1271
  %1289 = load ptr, ptr %16, align 8, !tbaa !9
  %1290 = load i32, ptr %24, 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 %1300

1294:                                             ; preds = %1271
  %1295 = load ptr, ptr %13, align 8, !tbaa !9
  %1296 = load i32, ptr %24, align 4, !tbaa !5
  %1297 = sext i32 %1296 to i64
  %1298 = getelementptr inbounds double, ptr %1295, i64 %1297
  %1299 = load double, ptr %1298, align 8, !tbaa !11
  br label %1300

1300:                                             ; preds = %1294, %1288
  %1301 = phi double [ %1293, %1288 ], [ %1299, %1294 ]
  %1302 = fsub double %1276, %1301
  %1303 = load ptr, ptr %16, align 8, !tbaa !9
  %1304 = load i32, ptr %24, align 4, !tbaa !5
  %1305 = sext i32 %1304 to i64
  %1306 = getelementptr inbounds double, ptr %1303, i64 %1305
  %1307 = load double, ptr %1306, align 8, !tbaa !11
  %1308 = load ptr, ptr %13, align 8, !tbaa !9
  %1309 = load i32, ptr %24, align 4, !tbaa !5
  %1310 = sext i32 %1309 to i64
  %1311 = getelementptr inbounds double, ptr %1308, i64 %1310
  %1312 = load double, ptr %1311, align 8, !tbaa !11
  %1313 = fcmp oge double %1307, %1312
  br i1 %1313, label %1314, label %1320

1314:                                             ; preds = %1300
  %1315 = load ptr, ptr %13, align 8, !tbaa !9
  %1316 = load i32, ptr %24, 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 %1326

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

1326:                                             ; preds = %1320, %1314
  %1327 = phi double [ %1319, %1314 ], [ %1325, %1320 ]
  %1328 = load ptr, ptr %15, align 8, !tbaa !9
  %1329 = load i32, ptr %24, align 4, !tbaa !5
  %1330 = sext i32 %1329 to i64
  %1331 = getelementptr inbounds double, ptr %1328, i64 %1330
  %1332 = load double, ptr %1331, align 8, !tbaa !11
  %1333 = fsub double %1327, %1332
  %1334 = fadd double %1302, %1333
  br label %1336

1335:                                             ; preds = %1264
  br label %1336

1336:                                             ; preds = %1335, %1326
  %1337 = phi double [ %1334, %1326 ], [ 0.000000e+00, %1335 ]
  br label %1338

1338:                                             ; preds = %1336, %1252
  %1339 = phi double [ %1263, %1252 ], [ %1337, %1336 ]
  br label %1340

1340:                                             ; preds = %1338, %1232
  %1341 = phi double [ %1244, %1232 ], [ %1339, %1338 ]
  %1342 = fsub double %1225, %1341
  %1343 = load double, ptr %20, align 8, !tbaa !11
  %1344 = fadd double %1343, %1342
  store double %1344, ptr %20, align 8, !tbaa !11
  %1345 = load i32, ptr %22, align 4, !tbaa !5
  %1346 = add nsw i32 %1345, 1
  store i32 %1346, ptr %22, align 4, !tbaa !5
  %1347 = load i32, ptr %25, align 4, !tbaa !5
  %1348 = add nsw i32 %1347, 1
  store i32 %1348, ptr %25, align 4, !tbaa !5
  %1349 = load i32, ptr %24, align 4, !tbaa !5
  %1350 = add nsw i32 %1349, 1
  store i32 %1350, ptr %24, align 4, !tbaa !5
  br label %1351

1351:                                             ; preds = %1340
  %1352 = load i32, ptr %22, align 4, !tbaa !5
  %1353 = load i32, ptr %12, align 4, !tbaa !5
  %1354 = icmp sle i32 %1352, %1353
  br i1 %1354, label %341, label %1355, !llvm.loop !20

1355:                                             ; preds = %1351
  %1356 = load i32, ptr %23, align 4, !tbaa !5
  %1357 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 %1356, ptr %1357, align 4, !tbaa !5
  %1358 = load i32, ptr %11, align 4, !tbaa !5
  %1359 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 %1358, ptr %1359, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %27, align 4
  br label %1360

1360:                                             ; preds = %1355, %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
  %1361 = load i32, ptr %10, align 4
  ret i32 %1361
}

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

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

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

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

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 288
  %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 %.preheader423

.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 %.preheader423 [
    i32 0, label %.lr.ph.split.us.preheader
    i32 1, label %.lr.ph.split.us426.preheader
    i32 2, label %.lr.ph.split.us431.preheader
  ]

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

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

.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.iv476 = phi i64 [ %41, %.lr.ph.split.us.preheader ], [ %indvars.iv.next477, %.lr.ph.split.us ]
  %.0331424.us = phi double [ 0.000000e+00, %.lr.ph.split.us.preheader ], [ %49, %.lr.ph.split.us ]
  %43 = getelementptr inbounds double, ptr %5, i64 %indvars.iv476
  %44 = load double, ptr %43, align 8, !tbaa !15
  %45 = getelementptr inbounds double, ptr %2, i64 %indvars.iv476
  %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 %.0331424.us, %48
  %indvars.iv.next477 = add nsw i64 %indvars.iv476, 1
  %50 = icmp slt i64 %indvars.iv.next477, %42
  br i1 %50, label %.lr.ph.split.us, label %.preheader423, !llvm.loop !16

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

.lr.ph.split.us431:                               ; preds = %.lr.ph.split.us431.preheader, %.lr.ph.split.us431
  %indvars.iv = phi i64 [ %37, %.lr.ph.split.us431.preheader ], [ %indvars.iv.next, %.lr.ph.split.us431 ]
  %.0331424.us433 = phi double [ 0.000000e+00, %.lr.ph.split.us431.preheader ], [ %71, %.lr.ph.split.us431 ]
  %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 %.0331424.us433, %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.us431, label %.preheader423, !llvm.loop !16

.preheader423:                                    ; preds = %.lr.ph.split.us431, %.lr.ph.split.us426, %.lr.ph.split.us, %.lr.ph, %25
  %.0331.lcssa = phi double [ 0.000000e+00, %25 ], [ 0.000000e+00, %.lr.ph ], [ %49, %.lr.ph.split.us ], [ %56, %.lr.ph.split.us426 ], [ %71, %.lr.ph.split.us431 ]
  %73 = icmp sgt i32 %32, 0
  br i1 %73, label %.lr.ph438, label %.preheader

.lr.ph438:                                        ; preds = %.preheader423
  %74 = getelementptr inbounds i8, ptr %27, i64 284
  %75 = load i32, ptr %74, align 4, !tbaa !14
  switch i32 %75, label %.lr.ph438.split.preheader [
    i32 0, label %.lr.ph438.split.us.preheader
    i32 1, label %.lr.ph438.split.us443.preheader
    i32 2, label %.lr.ph438.split.us450.preheader
  ]

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

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

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

.lr.ph438.split.preheader:                        ; preds = %.lr.ph438
  %82 = add nuw i32 %spec.select, 1
  %83 = sub i32 %82, %32
  %smax488 = tail call i32 @llvm.smax.i32(i32 %spec.select, i32 %83)
  br label %.preheader

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

.lr.ph438.split.us443:                            ; preds = %.lr.ph438.split.us443.preheader, %.lr.ph438.split.us443
  %indvars.iv482 = phi i64 [ %78, %.lr.ph438.split.us443.preheader ], [ %indvars.iv.next483, %.lr.ph438.split.us443 ]
  %.0333436.us445 = phi double [ 0.000000e+00, %.lr.ph438.split.us443.preheader ], [ %97, %.lr.ph438.split.us443 ]
  %92 = getelementptr inbounds double, ptr %3, i64 %indvars.iv482
  %93 = load double, ptr %92, align 8, !tbaa !15
  %94 = getelementptr inbounds double, ptr %4, i64 %indvars.iv482
  %95 = load double, ptr %94, align 8, !tbaa !15
  %96 = fsub double %93, %95
  %97 = fadd double %.0333436.us445, %96
  %indvars.iv.next483 = add nsw i64 %indvars.iv482, 1
  %98 = icmp slt i64 %indvars.iv.next483, %79
  br i1 %98, label %.lr.ph438.split.us443, label %.preheader.loopexit458, !llvm.loop !18

.lr.ph438.split.us450:                            ; preds = %.lr.ph438.split.us450.preheader, %.lr.ph438.split.us450
  %indvars.iv479 = phi i64 [ %76, %.lr.ph438.split.us450.preheader ], [ %indvars.iv.next480, %.lr.ph438.split.us450 ]
  %.0333436.us452 = phi double [ 0.000000e+00, %.lr.ph438.split.us450.preheader ], [ %112, %.lr.ph438.split.us450 ]
  %99 = getelementptr inbounds double, ptr %3, i64 %indvars.iv479
  %100 = load double, ptr %99, align 8, !tbaa !15
  %101 = getelementptr inbounds double, ptr %5, i64 %indvars.iv479
  %102 = load double, ptr %101, align 8, !tbaa !15
  %103 = getelementptr inbounds double, ptr %2, i64 %indvars.iv479
  %104 = load double, ptr %103, align 8, !tbaa !15
  %105 = fcmp ult double %102, %104
  %.399.us = select i1 %105, double %104, double %102
  %106 = fsub double %100, %.399.us
  %107 = select i1 %105, double %102, double %104
  %108 = getelementptr inbounds double, ptr %4, i64 %indvars.iv479
  %109 = load double, ptr %108, align 8, !tbaa !15
  %110 = fsub double %107, %109
  %111 = fadd double %106, %110
  %112 = fadd double %.0333436.us452, %111
  %indvars.iv.next480 = add nsw i64 %indvars.iv479, 1
  %113 = icmp slt i64 %indvars.iv.next480, %77
  br i1 %113, label %.lr.ph438.split.us450, label %.preheader.loopexit459, !llvm.loop !18

.preheader.loopexit457:                           ; preds = %.lr.ph438.split.us
  %114 = trunc nsw i64 %indvars.iv.next486 to i32
  br label %.preheader

.preheader.loopexit458:                           ; preds = %.lr.ph438.split.us443
  %115 = trunc nsw i64 %indvars.iv.next483 to i32
  br label %.preheader

.preheader.loopexit459:                           ; preds = %.lr.ph438.split.us450
  %116 = trunc nsw i64 %indvars.iv.next480 to i32
  br label %.preheader

.preheader:                                       ; preds = %.preheader.loopexit459, %.preheader.loopexit458, %.preheader.loopexit457, %.lr.ph438.split.preheader, %.preheader423
  %.0333.lcssa = phi double [ 0.000000e+00, %.preheader423 ], [ 0.000000e+00, %.lr.ph438.split.preheader ], [ %90, %.preheader.loopexit457 ], [ %97, %.preheader.loopexit458 ], [ %112, %.preheader.loopexit459 ]
  %.1330.lcssa = phi i32 [ %33, %.preheader423 ], [ %smax488, %.lr.ph438.split.preheader ], [ %114, %.preheader.loopexit457 ], [ %115, %.preheader.loopexit458 ], [ %116, %.preheader.loopexit459 ]
  %117 = getelementptr inbounds i8, ptr %27, i64 224
  %118 = load double, ptr %117, align 8, !tbaa !19
  %119 = getelementptr inbounds i8, ptr %27, i64 212
  %120 = getelementptr inbounds i8, ptr %27, i64 284
  %121 = getelementptr inbounds i8, ptr %27, i64 296
  %122 = sext i32 %.1330.lcssa to i64
  %123 = sext i32 %33 to i64
  %124 = sext i32 %30 to i64
  %smax504 = tail call i32 @llvm.smax.i32(i32 %.1330.lcssa, i32 %1)
  %125 = add i32 %smax504, 1
  %126 = sub i32 %125, %.1330.lcssa
  %wide.trip.count = zext i32 %126 to i64
  br label %127

127:                                              ; preds = %.preheader, %316
  %indvars.iv495 = phi i64 [ %124, %.preheader ], [ %indvars.iv.next496, %316 ]
  %indvars.iv493 = phi i64 [ %123, %.preheader ], [ %indvars.iv.next494, %316 ]
  %indvars.iv491 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next492, %316 ]
  %indvars.iv489 = phi i64 [ %122, %.preheader ], [ %indvars.iv.next490, %316 ]
  %.1334 = phi double [ %.0333.lcssa, %.preheader ], [ %320, %316 ]
  %.1332 = phi double [ %.0331.lcssa, %.preheader ], [ %257, %316 ]
  %128 = add nsw i64 %indvars.iv489, -1
  %129 = getelementptr inbounds double, ptr %5, i64 %128
  %130 = load double, ptr %129, align 8, !tbaa !15
  %131 = getelementptr inbounds double, ptr %2, i64 %128
  %132 = load double, ptr %131, align 8, !tbaa !15
  %133 = fsub double %130, %132
  %134 = tail call double @llvm.fabs.f64(double %133)
  %135 = load i32, ptr %28, align 8, !tbaa !11
  %.not395 = icmp eq i32 %135, 0
  br i1 %.not395, label %136, label %153

136:                                              ; preds = %127
  %137 = load i32, ptr %119, align 4, !tbaa !14
  switch i32 %137, label %.fold.split [
    i32 0, label %.thread
    i32 1, label %138
    i32 2, label %.thread508
  ]

138:                                              ; preds = %136
  %139 = getelementptr inbounds double, ptr %3, i64 %128
  %140 = load double, ptr %139, align 8, !tbaa !15
  %141 = getelementptr inbounds double, ptr %4, i64 %128
  %142 = load double, ptr %141, align 8, !tbaa !15
  %143 = fsub double %140, %142
  br label %.thread

.thread508:                                       ; preds = %136
  %144 = getelementptr inbounds double, ptr %3, i64 %128
  %145 = load double, ptr %144, align 8, !tbaa !15
  %146 = fcmp ult double %130, %132
  %.400 = select i1 %146, double %132, double %130
  %147 = fsub double %145, %.400
  %148 = select i1 %146, double %130, double %132
  %149 = getelementptr inbounds double, ptr %4, i64 %128
  %150 = load double, ptr %149, align 8, !tbaa !15
  %151 = fsub double %148, %150
  %152 = fadd double %147, %151
  br label %.thread

.fold.split:                                      ; preds = %136
  br label %.thread

153:                                              ; preds = %127
  %154 = sitofp i32 %135 to double
  %155 = fdiv double %.1332, %154
  %.pre = load i32, ptr %119, align 4, !tbaa !14
  %.pre.fr = freeze i32 %.pre
  %156 = icmp eq i32 %.pre.fr, 2
  br i1 %156, label %157, label %.thread

157:                                              ; preds = %153
  br label %.thread

.thread:                                          ; preds = %.fold.split, %136, %138, %.thread508, %153, %157
  %.pn = phi double [ %155, %153 ], [ %152, %.thread508 ], [ %155, %157 ], [ 0.000000e+00, %.fold.split ], [ %134, %136 ], [ %143, %138 ]
  %158 = phi double [ 1.000000e+00, %153 ], [ 2.000000e+00, %.thread508 ], [ 2.000000e+00, %157 ], [ 1.000000e+00, %.fold.split ], [ 1.000000e+00, %136 ], [ 1.000000e+00, %138 ]
  %159 = fmul double %118, %.pn
  %160 = fdiv double %159, %158
  %161 = fcmp ogt double %134, %160
  br i1 %161, label %162, label %212

162:                                              ; preds = %.thread
  %163 = getelementptr inbounds double, ptr %5, i64 %indvars.iv489
  %164 = load double, ptr %163, align 8, !tbaa !15
  %165 = getelementptr inbounds double, ptr %2, i64 %indvars.iv489
  %166 = load double, ptr %165, align 8, !tbaa !15
  %167 = fsub double %164, %166
  %168 = tail call double @llvm.fabs.f64(double %167)
  %169 = load double, ptr %121, align 8, !tbaa !19
  %170 = load i32, ptr %31, align 8, !tbaa !11
  %.not396 = icmp eq i32 %170, 0
  br i1 %.not396, label %171, label %188

171:                                              ; preds = %162
  %172 = load i32, ptr %120, align 4, !tbaa !14
  switch i32 %172, label %.fold.split401 [
    i32 0, label %.thread513
    i32 1, label %173
    i32 2, label %.thread515
  ]

173:                                              ; preds = %171
  %174 = getelementptr inbounds double, ptr %3, i64 %indvars.iv489
  %175 = load double, ptr %174, align 8, !tbaa !15
  %176 = getelementptr inbounds double, ptr %4, i64 %indvars.iv489
  %177 = load double, ptr %176, align 8, !tbaa !15
  %178 = fsub double %175, %177
  br label %.thread513

.thread515:                                       ; preds = %171
  %179 = getelementptr inbounds double, ptr %3, i64 %indvars.iv489
  %180 = load double, ptr %179, align 8, !tbaa !15
  %181 = fcmp ult double %164, %166
  %.402 = select i1 %181, double %166, double %164
  %182 = fsub double %180, %.402
  %183 = select i1 %181, double %164, double %166
  %184 = getelementptr inbounds double, ptr %4, i64 %indvars.iv489
  %185 = load double, ptr %184, align 8, !tbaa !15
  %186 = fsub double %183, %185
  %187 = fadd double %182, %186
  br label %.thread513

.fold.split401:                                   ; preds = %171
  br label %.thread513

188:                                              ; preds = %162
  %189 = sitofp i32 %170 to double
  %190 = fdiv double %.1334, %189
  %.pre505 = load i32, ptr %120, align 4, !tbaa !14
  %.pre505.fr = freeze i32 %.pre505
  %191 = icmp eq i32 %.pre505.fr, 2
  br i1 %191, label %192, label %.thread513

192:                                              ; preds = %188
  br label %.thread513

.thread513:                                       ; preds = %.fold.split401, %171, %173, %.thread515, %188, %192
  %.pn525 = phi double [ %190, %188 ], [ %187, %.thread515 ], [ %190, %192 ], [ 0.000000e+00, %.fold.split401 ], [ %168, %171 ], [ %178, %173 ]
  %193 = phi double [ 1.000000e+00, %188 ], [ 2.000000e+00, %.thread515 ], [ 2.000000e+00, %192 ], [ 1.000000e+00, %.fold.split401 ], [ 1.000000e+00, %171 ], [ 1.000000e+00, %173 ]
  %194 = fmul double %169, %.pn525
  %195 = fdiv double %194, %193
  %196 = fcmp ugt double %168, %195
  br i1 %196, label %212, label %197

197:                                              ; preds = %.thread513
  %198 = fcmp ult double %130, %132
  br i1 %198, label %204, label %199

199:                                              ; preds = %197
  %200 = fcmp olt double %166, %164
  %.403 = select i1 %200, double %166, double %164
  %201 = fcmp ogt double %132, %130
  %202 = select i1 %201, double %132, double %130
  %203 = fcmp ogt double %.403, %202
  br i1 %203, label %209, label %212

204:                                              ; preds = %197
  %205 = fcmp ogt double %166, %164
  %.404 = select i1 %205, double %166, double %164
  %206 = fcmp olt double %132, %130
  %207 = select i1 %206, double %132, double %130
  %208 = fcmp olt double %.404, %207
  br i1 %208, label %209, label %212

209:                                              ; preds = %204, %199
  %210 = fcmp oge double %130, %132
  %211 = select i1 %210, i32 -100, i32 100
  br label %212

212:                                              ; preds = %.thread, %.thread513, %204, %199, %209
  %.sink = phi i32 [ %211, %209 ], [ 0, %199 ], [ 0, %204 ], [ 0, %.thread513 ], [ 0, %.thread ]
  %213 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv491
  store i32 %.sink, ptr %213, align 4, !tbaa !5
  %indvars.iv.next492 = add nuw nsw i64 %indvars.iv491, 1
  %214 = load i32, ptr %119, align 4, !tbaa !14
  switch i32 %214, label %253 [
    i32 0, label %.thread410
    i32 1, label %.thread411
    i32 2, label %.thread412
  ]

.thread411:                                       ; preds = %212
  %215 = getelementptr inbounds double, ptr %3, i64 %128
  %216 = load double, ptr %215, align 8, !tbaa !15
  %217 = getelementptr inbounds double, ptr %4, i64 %128
  %218 = load double, ptr %217, align 8, !tbaa !15
  %219 = fsub double %216, %218
  %220 = getelementptr inbounds double, ptr %3, i64 %indvars.iv495
  %221 = load double, ptr %220, align 8, !tbaa !15
  %222 = getelementptr inbounds double, ptr %4, i64 %indvars.iv495
  %223 = load double, ptr %222, align 8, !tbaa !15
  %224 = fsub double %221, %223
  br label %253

.thread412:                                       ; preds = %212
  %225 = getelementptr inbounds double, ptr %3, i64 %128
  %226 = load double, ptr %225, align 8, !tbaa !15
  %227 = fcmp ult double %130, %132
  %.405 = select i1 %227, double %132, double %130
  %228 = fsub double %226, %.405
  %229 = select i1 %227, double %130, double %132
  %230 = getelementptr inbounds double, ptr %4, i64 %128
  %231 = load double, ptr %230, align 8, !tbaa !15
  %232 = fsub double %229, %231
  %233 = fadd double %228, %232
  %234 = getelementptr inbounds double, ptr %3, i64 %indvars.iv495
  %235 = load double, ptr %234, align 8, !tbaa !15
  %236 = getelementptr inbounds double, ptr %5, i64 %indvars.iv495
  %237 = load double, ptr %236, align 8, !tbaa !15
  %238 = getelementptr inbounds double, ptr %2, i64 %indvars.iv495
  %239 = load double, ptr %238, align 8, !tbaa !15
  %240 = fcmp ult double %237, %239
  %.406 = select i1 %240, double %239, double %237
  %241 = fsub double %235, %.406
  %242 = select i1 %240, double %237, double %239
  %243 = getelementptr inbounds double, ptr %4, i64 %indvars.iv495
  %244 = load double, ptr %243, align 8, !tbaa !15
  %245 = fsub double %242, %244
  %246 = fadd double %241, %245
  br label %253

.thread410:                                       ; preds = %212
  %247 = getelementptr inbounds double, ptr %5, i64 %indvars.iv495
  %248 = load double, ptr %247, align 8, !tbaa !15
  %249 = getelementptr inbounds double, ptr %2, i64 %indvars.iv495
  %250 = load double, ptr %249, align 8, !tbaa !15
  %251 = fsub double %248, %250
  %252 = tail call double @llvm.fabs.f64(double %251)
  br label %253

253:                                              ; preds = %212, %.thread411, %.thread412, %.thread410
  %254 = phi double [ %134, %.thread410 ], [ %219, %.thread411 ], [ %233, %.thread412 ], [ 0.000000e+00, %212 ]
  %255 = phi double [ %252, %.thread410 ], [ %224, %.thread411 ], [ %246, %.thread412 ], [ 0.000000e+00, %212 ]
  %256 = fsub double %254, %255
  %257 = fadd double %.1332, %256
  %258 = load i32, ptr %120, align 4, !tbaa !14
  switch i32 %258, label %316 [
    i32 0, label %.thread413
    i32 1, label %.thread414
    i32 2, label %.thread415
  ]

.thread413:                                       ; preds = %253
  %259 = getelementptr inbounds double, ptr %5, i64 %indvars.iv489
  %260 = load double, ptr %259, align 8, !tbaa !15
  %261 = getelementptr inbounds double, ptr %2, i64 %indvars.iv489
  %262 = load double, ptr %261, align 8, !tbaa !15
  %263 = getelementptr inbounds double, ptr %5, i64 %indvars.iv493
  %264 = load double, ptr %263, align 8, !tbaa !15
  %265 = getelementptr inbounds double, ptr %2, i64 %indvars.iv493
  %266 = load double, ptr %265, align 8, !tbaa !15
  %267 = insertelement <2 x double> poison, double %260, i64 0
  %268 = insertelement <2 x double> %267, double %264, i64 1
  %269 = insertelement <2 x double> poison, double %262, i64 0
  %270 = insertelement <2 x double> %269, double %266, i64 1
  %271 = fsub <2 x double> %268, %270
  %272 = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %271)
  br label %316

.thread414:                                       ; preds = %253
  %273 = getelementptr inbounds double, ptr %3, i64 %indvars.iv489
  %274 = load double, ptr %273, align 8, !tbaa !15
  %275 = getelementptr inbounds double, ptr %4, i64 %indvars.iv489
  %276 = load double, ptr %275, align 8, !tbaa !15
  %277 = getelementptr inbounds double, ptr %3, i64 %indvars.iv493
  %278 = load double, ptr %277, align 8, !tbaa !15
  %279 = getelementptr inbounds double, ptr %4, i64 %indvars.iv493
  %280 = load double, ptr %279, align 8, !tbaa !15
  %281 = insertelement <2 x double> poison, double %274, i64 0
  %282 = insertelement <2 x double> %281, double %278, i64 1
  %283 = insertelement <2 x double> poison, double %276, i64 0
  %284 = insertelement <2 x double> %283, double %280, i64 1
  %285 = fsub <2 x double> %282, %284
  br label %316

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

316:                                              ; preds = %253, %.thread414, %.thread415, %.thread413
  %317 = phi <2 x double> [ %272, %.thread413 ], [ %285, %.thread414 ], [ %315, %.thread415 ], [ zeroinitializer, %253 ]
  %shift = shufflevector <2 x double> %317, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %318 = fsub <2 x double> %317, %shift
  %319 = extractelement <2 x double> %318, i64 0
  %320 = fadd double %.1334, %319
  %indvars.iv.next490 = add nuw nsw i64 %indvars.iv489, 1
  %indvars.iv.next496 = add nsw i64 %indvars.iv495, 1
  %indvars.iv.next494 = add nsw i64 %indvars.iv493, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next492, %wide.trip.count
  br i1 %exitcond.not, label %321, label %127, !llvm.loop !20

321:                                              ; preds = %316
  store i32 %126, ptr %7, align 4, !tbaa !5
  store i32 %spec.select, ptr %6, align 4, !tbaa !5
  br label %322

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