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

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

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

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

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

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

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

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

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

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

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

112:                                              ; preds = %90
  %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 10
  %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 %133

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

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

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

160:                                              ; preds = %140
  %161 = load ptr, ptr %16, align 8, !tbaa !9
  %162 = load i32, ptr %22, align 4, !tbaa !5
  %163 = sub nsw i32 %162, 1
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds double, ptr %161, i64 %164
  %166 = load double, ptr %165, align 8, !tbaa !11
  br label %174

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

174:                                              ; preds = %167, %160
  %175 = phi double [ %166, %160 ], [ %173, %167 ]
  %176 = fsub double %146, %175
  %177 = load ptr, ptr %16, align 8, !tbaa !9
  %178 = load i32, ptr %22, align 4, !tbaa !5
  %179 = sub nsw i32 %178, 1
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds double, ptr %177, i64 %180
  %182 = load double, ptr %181, align 8, !tbaa !11
  %183 = load ptr, ptr %13, align 8, !tbaa !9
  %184 = load i32, ptr %22, align 4, !tbaa !5
  %185 = sub nsw i32 %184, 1
  %186 = sext i32 %185 to i64
  %187 = getelementptr inbounds double, ptr %183, i64 %186
  %188 = load double, ptr %187, align 8, !tbaa !11
  %189 = fcmp oge double %182, %188
  br i1 %189, label %190, label %197

190:                                              ; preds = %174
  %191 = load ptr, ptr %13, align 8, !tbaa !9
  %192 = load i32, ptr %22, align 4, !tbaa !5
  %193 = sub nsw i32 %192, 1
  %194 = sext i32 %193 to i64
  %195 = getelementptr inbounds double, ptr %191, i64 %194
  %196 = load double, ptr %195, align 8, !tbaa !11
  br label %204

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

204:                                              ; preds = %197, %190
  %205 = phi double [ %196, %190 ], [ %203, %197 ]
  %206 = load ptr, ptr %15, align 8, !tbaa !9
  %207 = load i32, ptr %22, align 4, !tbaa !5
  %208 = sub nsw i32 %207, 1
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds double, ptr %206, i64 %209
  %211 = load double, ptr %210, align 8, !tbaa !11
  %212 = fsub double %205, %211
  %213 = fadd double %176, %212
  br label %215

214:                                              ; preds = %133
  br label %215

215:                                              ; preds = %214, %204
  %216 = phi double [ %213, %204 ], [ 0.000000e+00, %214 ]
  br label %217

217:                                              ; preds = %215, %119
  %218 = phi double [ %132, %119 ], [ %216, %215 ]
  br label %219

219:                                              ; preds = %217, %97
  %220 = phi double [ %111, %97 ], [ %218, %217 ]
  %221 = load double, ptr %20, align 8, !tbaa !11
  %222 = fadd double %221, %220
  store double %222, ptr %20, align 8, !tbaa !11
  %223 = load i32, ptr %22, align 4, !tbaa !5
  %224 = add nsw i32 %223, 1
  store i32 %224, ptr %22, align 4, !tbaa !5
  br label %86, !llvm.loop !16

225:                                              ; preds = %86
  %226 = load i32, ptr %25, align 4, !tbaa !5
  store i32 %226, ptr %22, align 4, !tbaa !5
  br label %227

227:                                              ; preds = %360, %225
  %228 = load i32, ptr %22, align 4, !tbaa !5
  %229 = load i32, ptr %11, align 4, !tbaa !5
  %230 = icmp slt i32 %228, %229
  br i1 %230, label %231, label %366

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

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

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

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

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

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

301:                                              ; preds = %281
  %302 = load ptr, ptr %16, align 8, !tbaa !9
  %303 = load i32, ptr %22, align 4, !tbaa !5
  %304 = sub nsw i32 %303, 1
  %305 = sext i32 %304 to i64
  %306 = getelementptr inbounds double, ptr %302, i64 %305
  %307 = load double, ptr %306, align 8, !tbaa !11
  br label %315

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

315:                                              ; preds = %308, %301
  %316 = phi double [ %307, %301 ], [ %314, %308 ]
  %317 = fsub double %287, %316
  %318 = load ptr, ptr %16, align 8, !tbaa !9
  %319 = load i32, ptr %22, align 4, !tbaa !5
  %320 = sub nsw i32 %319, 1
  %321 = sext i32 %320 to i64
  %322 = getelementptr inbounds double, ptr %318, i64 %321
  %323 = load double, ptr %322, align 8, !tbaa !11
  %324 = load ptr, ptr %13, align 8, !tbaa !9
  %325 = load i32, ptr %22, align 4, !tbaa !5
  %326 = sub nsw i32 %325, 1
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds double, ptr %324, i64 %327
  %329 = load double, ptr %328, align 8, !tbaa !11
  %330 = fcmp oge double %323, %329
  br i1 %330, label %331, label %338

331:                                              ; preds = %315
  %332 = load ptr, ptr %13, align 8, !tbaa !9
  %333 = load i32, ptr %22, align 4, !tbaa !5
  %334 = sub nsw i32 %333, 1
  %335 = sext i32 %334 to i64
  %336 = getelementptr inbounds double, ptr %332, i64 %335
  %337 = load double, ptr %336, align 8, !tbaa !11
  br label %345

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

345:                                              ; preds = %338, %331
  %346 = phi double [ %337, %331 ], [ %344, %338 ]
  %347 = load ptr, ptr %15, align 8, !tbaa !9
  %348 = load i32, ptr %22, align 4, !tbaa !5
  %349 = sub nsw i32 %348, 1
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds double, ptr %347, i64 %350
  %352 = load double, ptr %351, align 8, !tbaa !11
  %353 = fsub double %346, %352
  %354 = fadd double %317, %353
  br label %356

355:                                              ; preds = %274
  br label %356

356:                                              ; preds = %355, %345
  %357 = phi double [ %354, %345 ], [ 0.000000e+00, %355 ]
  br label %358

358:                                              ; preds = %356, %260
  %359 = phi double [ %273, %260 ], [ %357, %356 ]
  br label %360

360:                                              ; preds = %358, %238
  %361 = phi double [ %252, %238 ], [ %359, %358 ]
  %362 = load double, ptr %21, align 8, !tbaa !11
  %363 = fadd double %362, %361
  store double %363, ptr %21, align 8, !tbaa !11
  %364 = load i32, ptr %22, align 4, !tbaa !5
  %365 = add nsw i32 %364, 1
  store i32 %365, ptr %22, align 4, !tbaa !5
  br label %227, !llvm.loop !18

366:                                              ; preds = %227
  %367 = load i32, ptr %11, align 4, !tbaa !5
  store i32 %367, ptr %22, align 4, !tbaa !5
  store i32 0, ptr %23, align 4, !tbaa !5
  br label %368

368:                                              ; preds = %1329, %366
  %369 = load ptr, ptr %16, align 8, !tbaa !9
  %370 = load i32, ptr %22, align 4, !tbaa !5
  %371 = sub nsw i32 %370, 1
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds double, ptr %369, i64 %372
  %374 = load double, ptr %373, align 8, !tbaa !11
  %375 = load ptr, ptr %13, align 8, !tbaa !9
  %376 = load i32, ptr %22, align 4, !tbaa !5
  %377 = sub nsw i32 %376, 1
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds double, ptr %375, i64 %378
  %380 = load double, ptr %379, align 8, !tbaa !11
  %381 = fcmp oge double %374, %380
  %382 = zext i1 %381 to i64
  %383 = select i1 %381, i32 1, i32 -1
  %384 = icmp eq i32 %383, -1
  br i1 %384, label %385, label %790

385:                                              ; preds = %368
  %386 = load ptr, ptr %16, align 8, !tbaa !9
  %387 = load i32, ptr %22, align 4, !tbaa !5
  %388 = sub nsw i32 %387, 1
  %389 = sext i32 %388 to i64
  %390 = getelementptr inbounds double, ptr %386, i64 %389
  %391 = load double, ptr %390, align 8, !tbaa !11
  %392 = load ptr, ptr %13, align 8, !tbaa !9
  %393 = load i32, ptr %22, align 4, !tbaa !5
  %394 = sub nsw i32 %393, 1
  %395 = sext i32 %394 to i64
  %396 = getelementptr inbounds double, ptr %392, i64 %395
  %397 = load double, ptr %396, align 8, !tbaa !11
  %398 = fsub double %391, %397
  %399 = call double @llvm.fabs.f64(double %398)
  %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 3
  %404 = load double, ptr %403, align 8, !tbaa !19
  %405 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %406 = getelementptr inbounds %struct.TA_LibcPriv, ptr %405, i32 0, i32 8
  %407 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %406, i64 0, i64 0
  %408 = getelementptr inbounds %struct.TA_CandleSetting, ptr %407, i32 0, i32 2
  %409 = load i32, ptr %408, align 8, !tbaa !13
  %410 = sitofp i32 %409 to double
  %411 = fcmp une double %410, 0.000000e+00
  br i1 %411, label %412, label %421

412:                                              ; preds = %385
  %413 = load double, ptr %21, align 8, !tbaa !11
  %414 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %415 = getelementptr inbounds %struct.TA_LibcPriv, ptr %414, i32 0, i32 8
  %416 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %415, i64 0, i64 0
  %417 = getelementptr inbounds %struct.TA_CandleSetting, ptr %416, i32 0, i32 2
  %418 = load i32, ptr %417, align 8, !tbaa !13
  %419 = sitofp i32 %418 to double
  %420 = fdiv double %413, %419
  br label %552

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

428:                                              ; preds = %421
  %429 = load ptr, ptr %16, align 8, !tbaa !9
  %430 = load i32, ptr %22, align 4, !tbaa !5
  %431 = sub nsw i32 %430, 1
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds double, ptr %429, i64 %432
  %434 = load double, ptr %433, align 8, !tbaa !11
  %435 = load ptr, ptr %13, align 8, !tbaa !9
  %436 = load i32, ptr %22, align 4, !tbaa !5
  %437 = sub nsw i32 %436, 1
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds double, ptr %435, i64 %438
  %440 = load double, ptr %439, align 8, !tbaa !11
  %441 = fsub double %434, %440
  %442 = call double @llvm.fabs.f64(double %441)
  br label %550

443:                                              ; preds = %421
  %444 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %445 = getelementptr inbounds %struct.TA_LibcPriv, ptr %444, i32 0, i32 8
  %446 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %445, i64 0, i64 0
  %447 = getelementptr inbounds %struct.TA_CandleSetting, ptr %446, i32 0, i32 1
  %448 = load i32, ptr %447, align 4, !tbaa !15
  %449 = icmp eq i32 %448, 1
  br i1 %449, label %450, label %464

450:                                              ; preds = %443
  %451 = load ptr, ptr %14, align 8, !tbaa !9
  %452 = load i32, ptr %22, align 4, !tbaa !5
  %453 = sub nsw i32 %452, 1
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds double, ptr %451, i64 %454
  %456 = load double, ptr %455, align 8, !tbaa !11
  %457 = load ptr, ptr %15, align 8, !tbaa !9
  %458 = load i32, ptr %22, align 4, !tbaa !5
  %459 = sub nsw i32 %458, 1
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds double, ptr %457, i64 %460
  %462 = load double, ptr %461, align 8, !tbaa !11
  %463 = fsub double %456, %462
  br label %548

464:                                              ; preds = %443
  %465 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %466 = getelementptr inbounds %struct.TA_LibcPriv, ptr %465, i32 0, i32 8
  %467 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %466, i64 0, i64 0
  %468 = getelementptr inbounds %struct.TA_CandleSetting, ptr %467, i32 0, i32 1
  %469 = load i32, ptr %468, align 4, !tbaa !15
  %470 = icmp eq i32 %469, 2
  br i1 %470, label %471, label %545

471:                                              ; preds = %464
  %472 = load ptr, ptr %14, align 8, !tbaa !9
  %473 = load i32, ptr %22, align 4, !tbaa !5
  %474 = sub nsw i32 %473, 1
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds double, ptr %472, i64 %475
  %477 = load double, ptr %476, align 8, !tbaa !11
  %478 = load ptr, ptr %16, 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
  %484 = load ptr, ptr %13, align 8, !tbaa !9
  %485 = load i32, ptr %22, align 4, !tbaa !5
  %486 = sub nsw i32 %485, 1
  %487 = sext i32 %486 to i64
  %488 = getelementptr inbounds double, ptr %484, i64 %487
  %489 = load double, ptr %488, align 8, !tbaa !11
  %490 = fcmp oge double %483, %489
  br i1 %490, label %491, label %498

491:                                              ; preds = %471
  %492 = load ptr, ptr %16, align 8, !tbaa !9
  %493 = load i32, ptr %22, align 4, !tbaa !5
  %494 = sub nsw i32 %493, 1
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds double, ptr %492, i64 %495
  %497 = load double, ptr %496, align 8, !tbaa !11
  br label %505

498:                                              ; preds = %471
  %499 = load ptr, ptr %13, align 8, !tbaa !9
  %500 = load i32, ptr %22, align 4, !tbaa !5
  %501 = sub nsw i32 %500, 1
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds double, ptr %499, i64 %502
  %504 = load double, ptr %503, align 8, !tbaa !11
  br label %505

505:                                              ; preds = %498, %491
  %506 = phi double [ %497, %491 ], [ %504, %498 ]
  %507 = fsub double %477, %506
  %508 = load ptr, ptr %16, align 8, !tbaa !9
  %509 = load i32, ptr %22, align 4, !tbaa !5
  %510 = sub nsw i32 %509, 1
  %511 = sext i32 %510 to i64
  %512 = getelementptr inbounds double, ptr %508, i64 %511
  %513 = load double, ptr %512, align 8, !tbaa !11
  %514 = load ptr, ptr %13, align 8, !tbaa !9
  %515 = load i32, ptr %22, align 4, !tbaa !5
  %516 = sub nsw i32 %515, 1
  %517 = sext i32 %516 to i64
  %518 = getelementptr inbounds double, ptr %514, i64 %517
  %519 = load double, ptr %518, align 8, !tbaa !11
  %520 = fcmp oge double %513, %519
  br i1 %520, label %521, label %528

521:                                              ; preds = %505
  %522 = load ptr, ptr %13, align 8, !tbaa !9
  %523 = load i32, ptr %22, align 4, !tbaa !5
  %524 = sub nsw i32 %523, 1
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds double, ptr %522, i64 %525
  %527 = load double, ptr %526, align 8, !tbaa !11
  br label %535

528:                                              ; preds = %505
  %529 = load ptr, ptr %16, align 8, !tbaa !9
  %530 = load i32, ptr %22, align 4, !tbaa !5
  %531 = sub nsw i32 %530, 1
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds double, ptr %529, i64 %532
  %534 = load double, ptr %533, align 8, !tbaa !11
  br label %535

535:                                              ; preds = %528, %521
  %536 = phi double [ %527, %521 ], [ %534, %528 ]
  %537 = load ptr, ptr %15, align 8, !tbaa !9
  %538 = load i32, ptr %22, align 4, !tbaa !5
  %539 = sub nsw i32 %538, 1
  %540 = sext i32 %539 to i64
  %541 = getelementptr inbounds double, ptr %537, i64 %540
  %542 = load double, ptr %541, align 8, !tbaa !11
  %543 = fsub double %536, %542
  %544 = fadd double %507, %543
  br label %546

545:                                              ; preds = %464
  br label %546

546:                                              ; preds = %545, %535
  %547 = phi double [ %544, %535 ], [ 0.000000e+00, %545 ]
  br label %548

548:                                              ; preds = %546, %450
  %549 = phi double [ %463, %450 ], [ %547, %546 ]
  br label %550

550:                                              ; preds = %548, %428
  %551 = phi double [ %442, %428 ], [ %549, %548 ]
  br label %552

552:                                              ; preds = %550, %412
  %553 = phi double [ %420, %412 ], [ %551, %550 ]
  %554 = fmul double %404, %553
  %555 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %556 = getelementptr inbounds %struct.TA_LibcPriv, ptr %555, i32 0, i32 8
  %557 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %556, i64 0, i64 0
  %558 = getelementptr inbounds %struct.TA_CandleSetting, ptr %557, i32 0, i32 1
  %559 = load i32, ptr %558, align 4, !tbaa !15
  %560 = icmp eq i32 %559, 2
  %561 = zext i1 %560 to i64
  %562 = select i1 %560, double 2.000000e+00, double 1.000000e+00
  %563 = fdiv double %554, %562
  %564 = fcmp ogt double %399, %563
  br i1 %564, label %565, label %790

565:                                              ; preds = %552
  %566 = load ptr, ptr %16, align 8, !tbaa !9
  %567 = load i32, ptr %22, align 4, !tbaa !5
  %568 = sext i32 %567 to i64
  %569 = getelementptr inbounds double, ptr %566, i64 %568
  %570 = load double, ptr %569, align 8, !tbaa !11
  %571 = load ptr, ptr %13, align 8, !tbaa !9
  %572 = load i32, ptr %22, align 4, !tbaa !5
  %573 = sext i32 %572 to i64
  %574 = getelementptr inbounds double, ptr %571, i64 %573
  %575 = load double, ptr %574, align 8, !tbaa !11
  %576 = fcmp oge double %570, %575
  %577 = zext i1 %576 to i64
  %578 = select i1 %576, i32 1, i32 -1
  %579 = icmp eq i32 %578, 1
  br i1 %579, label %580, label %790

580:                                              ; preds = %565
  %581 = load ptr, ptr %13, align 8, !tbaa !9
  %582 = load i32, ptr %22, align 4, !tbaa !5
  %583 = sext i32 %582 to i64
  %584 = getelementptr inbounds double, ptr %581, i64 %583
  %585 = load double, ptr %584, align 8, !tbaa !11
  %586 = load ptr, ptr %15, align 8, !tbaa !9
  %587 = load i32, ptr %22, align 4, !tbaa !5
  %588 = sub nsw i32 %587, 1
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds double, ptr %586, i64 %589
  %591 = load double, ptr %590, align 8, !tbaa !11
  %592 = fcmp olt double %585, %591
  br i1 %592, label %593, label %790

593:                                              ; preds = %580
  %594 = load ptr, ptr %16, align 8, !tbaa !9
  %595 = load i32, ptr %22, align 4, !tbaa !5
  %596 = sext i32 %595 to i64
  %597 = getelementptr inbounds double, ptr %594, i64 %596
  %598 = load double, ptr %597, align 8, !tbaa !11
  %599 = load ptr, ptr %16, align 8, !tbaa !9
  %600 = load i32, ptr %22, align 4, !tbaa !5
  %601 = sub nsw i32 %600, 1
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds double, ptr %599, i64 %602
  %604 = load double, ptr %603, align 8, !tbaa !11
  %605 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %606 = getelementptr inbounds %struct.TA_LibcPriv, ptr %605, i32 0, i32 8
  %607 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %606, i64 0, i64 10
  %608 = getelementptr inbounds %struct.TA_CandleSetting, ptr %607, i32 0, i32 3
  %609 = load double, ptr %608, align 8, !tbaa !19
  %610 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %611 = getelementptr inbounds %struct.TA_LibcPriv, ptr %610, i32 0, i32 8
  %612 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %611, i64 0, i64 10
  %613 = getelementptr inbounds %struct.TA_CandleSetting, ptr %612, i32 0, i32 2
  %614 = load i32, ptr %613, align 8, !tbaa !13
  %615 = sitofp i32 %614 to double
  %616 = fcmp une double %615, 0.000000e+00
  br i1 %616, label %617, label %626

617:                                              ; preds = %593
  %618 = load double, ptr %20, align 8, !tbaa !11
  %619 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %620 = getelementptr inbounds %struct.TA_LibcPriv, ptr %619, i32 0, i32 8
  %621 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %620, i64 0, i64 10
  %622 = getelementptr inbounds %struct.TA_CandleSetting, ptr %621, i32 0, i32 2
  %623 = load i32, ptr %622, align 8, !tbaa !13
  %624 = sitofp i32 %623 to double
  %625 = fdiv double %618, %624
  br label %757

626:                                              ; preds = %593
  %627 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %628 = getelementptr inbounds %struct.TA_LibcPriv, ptr %627, i32 0, i32 8
  %629 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %628, i64 0, i64 10
  %630 = getelementptr inbounds %struct.TA_CandleSetting, ptr %629, i32 0, i32 1
  %631 = load i32, ptr %630, align 4, !tbaa !15
  %632 = icmp eq i32 %631, 0
  br i1 %632, label %633, label %648

633:                                              ; preds = %626
  %634 = load ptr, ptr %16, align 8, !tbaa !9
  %635 = load i32, ptr %22, align 4, !tbaa !5
  %636 = sub nsw i32 %635, 1
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds double, ptr %634, i64 %637
  %639 = load double, ptr %638, align 8, !tbaa !11
  %640 = load ptr, ptr %13, align 8, !tbaa !9
  %641 = load i32, ptr %22, align 4, !tbaa !5
  %642 = sub nsw i32 %641, 1
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds double, ptr %640, i64 %643
  %645 = load double, ptr %644, align 8, !tbaa !11
  %646 = fsub double %639, %645
  %647 = call double @llvm.fabs.f64(double %646)
  br label %755

648:                                              ; preds = %626
  %649 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %650 = getelementptr inbounds %struct.TA_LibcPriv, ptr %649, i32 0, i32 8
  %651 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %650, i64 0, i64 10
  %652 = getelementptr inbounds %struct.TA_CandleSetting, ptr %651, i32 0, i32 1
  %653 = load i32, ptr %652, align 4, !tbaa !15
  %654 = icmp eq i32 %653, 1
  br i1 %654, label %655, label %669

655:                                              ; preds = %648
  %656 = load ptr, ptr %14, align 8, !tbaa !9
  %657 = load i32, ptr %22, align 4, !tbaa !5
  %658 = sub nsw i32 %657, 1
  %659 = sext i32 %658 to i64
  %660 = getelementptr inbounds double, ptr %656, i64 %659
  %661 = load double, ptr %660, align 8, !tbaa !11
  %662 = load ptr, ptr %15, align 8, !tbaa !9
  %663 = load i32, ptr %22, align 4, !tbaa !5
  %664 = sub nsw i32 %663, 1
  %665 = sext i32 %664 to i64
  %666 = getelementptr inbounds double, ptr %662, i64 %665
  %667 = load double, ptr %666, align 8, !tbaa !11
  %668 = fsub double %661, %667
  br label %753

669:                                              ; preds = %648
  %670 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %671 = getelementptr inbounds %struct.TA_LibcPriv, ptr %670, i32 0, i32 8
  %672 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %671, i64 0, i64 10
  %673 = getelementptr inbounds %struct.TA_CandleSetting, ptr %672, i32 0, i32 1
  %674 = load i32, ptr %673, align 4, !tbaa !15
  %675 = icmp eq i32 %674, 2
  br i1 %675, label %676, label %750

676:                                              ; preds = %669
  %677 = load ptr, ptr %14, align 8, !tbaa !9
  %678 = load i32, ptr %22, align 4, !tbaa !5
  %679 = sub nsw i32 %678, 1
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds double, ptr %677, i64 %680
  %682 = load double, ptr %681, align 8, !tbaa !11
  %683 = load ptr, ptr %16, align 8, !tbaa !9
  %684 = load i32, ptr %22, align 4, !tbaa !5
  %685 = sub nsw i32 %684, 1
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds double, ptr %683, i64 %686
  %688 = load double, ptr %687, align 8, !tbaa !11
  %689 = load ptr, ptr %13, align 8, !tbaa !9
  %690 = load i32, ptr %22, align 4, !tbaa !5
  %691 = sub nsw i32 %690, 1
  %692 = sext i32 %691 to i64
  %693 = getelementptr inbounds double, ptr %689, i64 %692
  %694 = load double, ptr %693, align 8, !tbaa !11
  %695 = fcmp oge double %688, %694
  br i1 %695, label %696, label %703

696:                                              ; preds = %676
  %697 = load ptr, ptr %16, align 8, !tbaa !9
  %698 = load i32, ptr %22, align 4, !tbaa !5
  %699 = sub nsw i32 %698, 1
  %700 = sext i32 %699 to i64
  %701 = getelementptr inbounds double, ptr %697, i64 %700
  %702 = load double, ptr %701, align 8, !tbaa !11
  br label %710

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

710:                                              ; preds = %703, %696
  %711 = phi double [ %702, %696 ], [ %709, %703 ]
  %712 = fsub double %682, %711
  %713 = load ptr, ptr %16, align 8, !tbaa !9
  %714 = load i32, ptr %22, align 4, !tbaa !5
  %715 = sub nsw i32 %714, 1
  %716 = sext i32 %715 to i64
  %717 = getelementptr inbounds double, ptr %713, i64 %716
  %718 = load double, ptr %717, align 8, !tbaa !11
  %719 = load ptr, ptr %13, align 8, !tbaa !9
  %720 = load i32, ptr %22, align 4, !tbaa !5
  %721 = sub nsw i32 %720, 1
  %722 = sext i32 %721 to i64
  %723 = getelementptr inbounds double, ptr %719, i64 %722
  %724 = load double, ptr %723, align 8, !tbaa !11
  %725 = fcmp oge double %718, %724
  br i1 %725, label %726, label %733

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

733:                                              ; preds = %710
  %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
  br label %740

740:                                              ; preds = %733, %726
  %741 = phi double [ %732, %726 ], [ %739, %733 ]
  %742 = load ptr, ptr %15, 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
  %748 = fsub double %741, %747
  %749 = fadd double %712, %748
  br label %751

750:                                              ; preds = %669
  br label %751

751:                                              ; preds = %750, %740
  %752 = phi double [ %749, %740 ], [ 0.000000e+00, %750 ]
  br label %753

753:                                              ; preds = %751, %655
  %754 = phi double [ %668, %655 ], [ %752, %751 ]
  br label %755

755:                                              ; preds = %753, %633
  %756 = phi double [ %647, %633 ], [ %754, %753 ]
  br label %757

757:                                              ; preds = %755, %617
  %758 = phi double [ %625, %617 ], [ %756, %755 ]
  %759 = fmul double %609, %758
  %760 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %761 = getelementptr inbounds %struct.TA_LibcPriv, ptr %760, i32 0, i32 8
  %762 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %761, i64 0, i64 10
  %763 = getelementptr inbounds %struct.TA_CandleSetting, ptr %762, i32 0, i32 1
  %764 = load i32, ptr %763, align 4, !tbaa !15
  %765 = icmp eq i32 %764, 2
  %766 = zext i1 %765 to i64
  %767 = select i1 %765, double 2.000000e+00, double 1.000000e+00
  %768 = fdiv double %759, %767
  %769 = fadd double %604, %768
  %770 = fcmp ole double %598, %769
  br i1 %770, label %771, label %790

771:                                              ; preds = %757
  %772 = load ptr, ptr %16, align 8, !tbaa !9
  %773 = load i32, ptr %22, align 4, !tbaa !5
  %774 = sext i32 %773 to i64
  %775 = getelementptr inbounds double, ptr %772, i64 %774
  %776 = load double, ptr %775, align 8, !tbaa !11
  %777 = load ptr, ptr %16, align 8, !tbaa !9
  %778 = load i32, ptr %22, align 4, !tbaa !5
  %779 = sub nsw i32 %778, 1
  %780 = sext i32 %779 to i64
  %781 = getelementptr inbounds double, ptr %777, i64 %780
  %782 = load double, ptr %781, align 8, !tbaa !11
  %783 = fcmp oge double %776, %782
  br i1 %783, label %784, label %790

784:                                              ; preds = %771
  %785 = load ptr, ptr %19, align 8, !tbaa !9
  %786 = load i32, ptr %23, align 4, !tbaa !5
  %787 = add nsw i32 %786, 1
  store i32 %787, ptr %23, align 4, !tbaa !5
  %788 = sext i32 %786 to i64
  %789 = getelementptr inbounds i32, ptr %785, i64 %788
  store i32 -100, ptr %789, align 4, !tbaa !5
  br label %796

790:                                              ; preds = %771, %757, %580, %565, %552, %368
  %791 = load ptr, ptr %19, align 8, !tbaa !9
  %792 = load i32, ptr %23, align 4, !tbaa !5
  %793 = add nsw i32 %792, 1
  store i32 %793, ptr %23, align 4, !tbaa !5
  %794 = sext i32 %792 to i64
  %795 = getelementptr inbounds i32, ptr %791, i64 %794
  store i32 0, ptr %795, align 4, !tbaa !5
  br label %796

796:                                              ; preds = %790, %784
  %797 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %798 = getelementptr inbounds %struct.TA_LibcPriv, ptr %797, i32 0, i32 8
  %799 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %798, i64 0, i64 10
  %800 = getelementptr inbounds %struct.TA_CandleSetting, ptr %799, i32 0, i32 1
  %801 = load i32, ptr %800, align 4, !tbaa !15
  %802 = icmp eq i32 %801, 0
  br i1 %802, label %803, label %818

803:                                              ; preds = %796
  %804 = load ptr, ptr %16, align 8, !tbaa !9
  %805 = load i32, ptr %22, align 4, !tbaa !5
  %806 = sub nsw i32 %805, 1
  %807 = sext i32 %806 to i64
  %808 = getelementptr inbounds double, ptr %804, i64 %807
  %809 = load double, ptr %808, align 8, !tbaa !11
  %810 = load ptr, ptr %13, align 8, !tbaa !9
  %811 = load i32, ptr %22, align 4, !tbaa !5
  %812 = sub nsw i32 %811, 1
  %813 = sext i32 %812 to i64
  %814 = getelementptr inbounds double, ptr %810, i64 %813
  %815 = load double, ptr %814, align 8, !tbaa !11
  %816 = fsub double %809, %815
  %817 = call double @llvm.fabs.f64(double %816)
  br label %925

818:                                              ; preds = %796
  %819 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %820 = getelementptr inbounds %struct.TA_LibcPriv, ptr %819, i32 0, i32 8
  %821 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %820, i64 0, i64 10
  %822 = getelementptr inbounds %struct.TA_CandleSetting, ptr %821, i32 0, i32 1
  %823 = load i32, ptr %822, align 4, !tbaa !15
  %824 = icmp eq i32 %823, 1
  br i1 %824, label %825, label %839

825:                                              ; preds = %818
  %826 = load ptr, ptr %14, align 8, !tbaa !9
  %827 = load i32, ptr %22, align 4, !tbaa !5
  %828 = sub nsw i32 %827, 1
  %829 = sext i32 %828 to i64
  %830 = getelementptr inbounds double, ptr %826, i64 %829
  %831 = load double, ptr %830, align 8, !tbaa !11
  %832 = load ptr, ptr %15, 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 = fsub double %831, %837
  br label %923

839:                                              ; preds = %818
  %840 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %841 = getelementptr inbounds %struct.TA_LibcPriv, ptr %840, i32 0, i32 8
  %842 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %841, i64 0, i64 10
  %843 = getelementptr inbounds %struct.TA_CandleSetting, ptr %842, i32 0, i32 1
  %844 = load i32, ptr %843, align 4, !tbaa !15
  %845 = icmp eq i32 %844, 2
  br i1 %845, label %846, label %920

846:                                              ; preds = %839
  %847 = load ptr, ptr %14, align 8, !tbaa !9
  %848 = load i32, ptr %22, align 4, !tbaa !5
  %849 = sub nsw i32 %848, 1
  %850 = sext i32 %849 to i64
  %851 = getelementptr inbounds double, ptr %847, i64 %850
  %852 = load double, ptr %851, align 8, !tbaa !11
  %853 = load ptr, ptr %16, align 8, !tbaa !9
  %854 = load i32, ptr %22, align 4, !tbaa !5
  %855 = sub nsw i32 %854, 1
  %856 = sext i32 %855 to i64
  %857 = getelementptr inbounds double, ptr %853, i64 %856
  %858 = load double, ptr %857, align 8, !tbaa !11
  %859 = load ptr, ptr %13, align 8, !tbaa !9
  %860 = load i32, ptr %22, align 4, !tbaa !5
  %861 = sub nsw i32 %860, 1
  %862 = sext i32 %861 to i64
  %863 = getelementptr inbounds double, ptr %859, i64 %862
  %864 = load double, ptr %863, align 8, !tbaa !11
  %865 = fcmp oge double %858, %864
  br i1 %865, label %866, label %873

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

873:                                              ; preds = %846
  %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
  br label %880

880:                                              ; preds = %873, %866
  %881 = phi double [ %872, %866 ], [ %879, %873 ]
  %882 = fsub double %852, %881
  %883 = load ptr, ptr %16, align 8, !tbaa !9
  %884 = load i32, ptr %22, align 4, !tbaa !5
  %885 = sub nsw i32 %884, 1
  %886 = sext i32 %885 to i64
  %887 = getelementptr inbounds double, ptr %883, i64 %886
  %888 = load double, ptr %887, align 8, !tbaa !11
  %889 = load ptr, ptr %13, align 8, !tbaa !9
  %890 = load i32, ptr %22, align 4, !tbaa !5
  %891 = sub nsw i32 %890, 1
  %892 = sext i32 %891 to i64
  %893 = getelementptr inbounds double, ptr %889, i64 %892
  %894 = load double, ptr %893, align 8, !tbaa !11
  %895 = fcmp oge double %888, %894
  br i1 %895, label %896, label %903

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

903:                                              ; preds = %880
  %904 = load ptr, ptr %16, align 8, !tbaa !9
  %905 = load i32, ptr %22, align 4, !tbaa !5
  %906 = sub nsw i32 %905, 1
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds double, ptr %904, i64 %907
  %909 = load double, ptr %908, align 8, !tbaa !11
  br label %910

910:                                              ; preds = %903, %896
  %911 = phi double [ %902, %896 ], [ %909, %903 ]
  %912 = load ptr, ptr %15, align 8, !tbaa !9
  %913 = load i32, ptr %22, align 4, !tbaa !5
  %914 = sub nsw i32 %913, 1
  %915 = sext i32 %914 to i64
  %916 = getelementptr inbounds double, ptr %912, i64 %915
  %917 = load double, ptr %916, align 8, !tbaa !11
  %918 = fsub double %911, %917
  %919 = fadd double %882, %918
  br label %921

920:                                              ; preds = %839
  br label %921

921:                                              ; preds = %920, %910
  %922 = phi double [ %919, %910 ], [ 0.000000e+00, %920 ]
  br label %923

923:                                              ; preds = %921, %825
  %924 = phi double [ %838, %825 ], [ %922, %921 ]
  br label %925

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

933:                                              ; preds = %925
  %934 = load ptr, ptr %16, align 8, !tbaa !9
  %935 = load i32, ptr %24, align 4, !tbaa !5
  %936 = sub nsw i32 %935, 1
  %937 = sext i32 %936 to i64
  %938 = getelementptr inbounds double, ptr %934, i64 %937
  %939 = load double, ptr %938, align 8, !tbaa !11
  %940 = load ptr, ptr %13, align 8, !tbaa !9
  %941 = load i32, ptr %24, align 4, !tbaa !5
  %942 = sub nsw i32 %941, 1
  %943 = sext i32 %942 to i64
  %944 = getelementptr inbounds double, ptr %940, i64 %943
  %945 = load double, ptr %944, align 8, !tbaa !11
  %946 = fsub double %939, %945
  %947 = call double @llvm.fabs.f64(double %946)
  br label %1055

948:                                              ; preds = %925
  %949 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %950 = getelementptr inbounds %struct.TA_LibcPriv, ptr %949, i32 0, i32 8
  %951 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %950, i64 0, i64 10
  %952 = getelementptr inbounds %struct.TA_CandleSetting, ptr %951, i32 0, i32 1
  %953 = load i32, ptr %952, align 4, !tbaa !15
  %954 = icmp eq i32 %953, 1
  br i1 %954, label %955, label %969

955:                                              ; preds = %948
  %956 = load ptr, ptr %14, align 8, !tbaa !9
  %957 = load i32, ptr %24, align 4, !tbaa !5
  %958 = sub nsw i32 %957, 1
  %959 = sext i32 %958 to i64
  %960 = getelementptr inbounds double, ptr %956, i64 %959
  %961 = load double, ptr %960, align 8, !tbaa !11
  %962 = load ptr, ptr %15, align 8, !tbaa !9
  %963 = load i32, ptr %24, align 4, !tbaa !5
  %964 = sub nsw i32 %963, 1
  %965 = sext i32 %964 to i64
  %966 = getelementptr inbounds double, ptr %962, i64 %965
  %967 = load double, ptr %966, align 8, !tbaa !11
  %968 = fsub double %961, %967
  br label %1053

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

976:                                              ; preds = %969
  %977 = load ptr, ptr %14, align 8, !tbaa !9
  %978 = load i32, ptr %24, align 4, !tbaa !5
  %979 = sub nsw i32 %978, 1
  %980 = sext i32 %979 to i64
  %981 = getelementptr inbounds double, ptr %977, i64 %980
  %982 = load double, ptr %981, align 8, !tbaa !11
  %983 = load ptr, ptr %16, align 8, !tbaa !9
  %984 = load i32, ptr %24, align 4, !tbaa !5
  %985 = sub nsw i32 %984, 1
  %986 = sext i32 %985 to i64
  %987 = getelementptr inbounds double, ptr %983, i64 %986
  %988 = load double, ptr %987, align 8, !tbaa !11
  %989 = load ptr, ptr %13, align 8, !tbaa !9
  %990 = load i32, ptr %24, align 4, !tbaa !5
  %991 = sub nsw i32 %990, 1
  %992 = sext i32 %991 to i64
  %993 = getelementptr inbounds double, ptr %989, i64 %992
  %994 = load double, ptr %993, align 8, !tbaa !11
  %995 = fcmp oge double %988, %994
  br i1 %995, label %996, label %1003

996:                                              ; preds = %976
  %997 = load ptr, ptr %16, align 8, !tbaa !9
  %998 = load i32, ptr %24, align 4, !tbaa !5
  %999 = sub nsw i32 %998, 1
  %1000 = sext i32 %999 to i64
  %1001 = getelementptr inbounds double, ptr %997, i64 %1000
  %1002 = load double, ptr %1001, align 8, !tbaa !11
  br label %1010

1003:                                             ; preds = %976
  %1004 = load ptr, ptr %13, align 8, !tbaa !9
  %1005 = load i32, ptr %24, align 4, !tbaa !5
  %1006 = sub nsw i32 %1005, 1
  %1007 = sext i32 %1006 to i64
  %1008 = getelementptr inbounds double, ptr %1004, i64 %1007
  %1009 = load double, ptr %1008, align 8, !tbaa !11
  br label %1010

1010:                                             ; preds = %1003, %996
  %1011 = phi double [ %1002, %996 ], [ %1009, %1003 ]
  %1012 = fsub double %982, %1011
  %1013 = load ptr, ptr %16, align 8, !tbaa !9
  %1014 = load i32, ptr %24, align 4, !tbaa !5
  %1015 = sub nsw i32 %1014, 1
  %1016 = sext i32 %1015 to i64
  %1017 = getelementptr inbounds double, ptr %1013, i64 %1016
  %1018 = load double, ptr %1017, align 8, !tbaa !11
  %1019 = load ptr, ptr %13, align 8, !tbaa !9
  %1020 = load i32, ptr %24, align 4, !tbaa !5
  %1021 = sub nsw i32 %1020, 1
  %1022 = sext i32 %1021 to i64
  %1023 = getelementptr inbounds double, ptr %1019, i64 %1022
  %1024 = load double, ptr %1023, align 8, !tbaa !11
  %1025 = fcmp oge double %1018, %1024
  br i1 %1025, label %1026, label %1033

1026:                                             ; preds = %1010
  %1027 = load ptr, ptr %13, align 8, !tbaa !9
  %1028 = load i32, ptr %24, align 4, !tbaa !5
  %1029 = sub nsw i32 %1028, 1
  %1030 = sext i32 %1029 to i64
  %1031 = getelementptr inbounds double, ptr %1027, i64 %1030
  %1032 = load double, ptr %1031, align 8, !tbaa !11
  br label %1040

1033:                                             ; preds = %1010
  %1034 = load ptr, ptr %16, align 8, !tbaa !9
  %1035 = load i32, ptr %24, align 4, !tbaa !5
  %1036 = sub nsw i32 %1035, 1
  %1037 = sext i32 %1036 to i64
  %1038 = getelementptr inbounds double, ptr %1034, i64 %1037
  %1039 = load double, ptr %1038, align 8, !tbaa !11
  br label %1040

1040:                                             ; preds = %1033, %1026
  %1041 = phi double [ %1032, %1026 ], [ %1039, %1033 ]
  %1042 = load ptr, ptr %15, align 8, !tbaa !9
  %1043 = load i32, ptr %24, align 4, !tbaa !5
  %1044 = sub nsw i32 %1043, 1
  %1045 = sext i32 %1044 to i64
  %1046 = getelementptr inbounds double, ptr %1042, i64 %1045
  %1047 = load double, ptr %1046, align 8, !tbaa !11
  %1048 = fsub double %1041, %1047
  %1049 = fadd double %1012, %1048
  br label %1051

1050:                                             ; preds = %969
  br label %1051

1051:                                             ; preds = %1050, %1040
  %1052 = phi double [ %1049, %1040 ], [ 0.000000e+00, %1050 ]
  br label %1053

1053:                                             ; preds = %1051, %955
  %1054 = phi double [ %968, %955 ], [ %1052, %1051 ]
  br label %1055

1055:                                             ; preds = %1053, %933
  %1056 = phi double [ %947, %933 ], [ %1054, %1053 ]
  %1057 = fsub double %926, %1056
  %1058 = load double, ptr %20, align 8, !tbaa !11
  %1059 = fadd double %1058, %1057
  store double %1059, ptr %20, align 8, !tbaa !11
  %1060 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1061 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1060, i32 0, i32 8
  %1062 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1061, i64 0, i64 0
  %1063 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1062, i32 0, i32 1
  %1064 = load i32, ptr %1063, align 4, !tbaa !15
  %1065 = icmp eq i32 %1064, 0
  br i1 %1065, label %1066, label %1081

1066:                                             ; preds = %1055
  %1067 = load ptr, ptr %16, align 8, !tbaa !9
  %1068 = load i32, ptr %22, align 4, !tbaa !5
  %1069 = sub nsw i32 %1068, 1
  %1070 = sext i32 %1069 to i64
  %1071 = getelementptr inbounds double, ptr %1067, i64 %1070
  %1072 = load double, ptr %1071, align 8, !tbaa !11
  %1073 = load ptr, ptr %13, align 8, !tbaa !9
  %1074 = load i32, ptr %22, align 4, !tbaa !5
  %1075 = sub nsw i32 %1074, 1
  %1076 = sext i32 %1075 to i64
  %1077 = getelementptr inbounds double, ptr %1073, i64 %1076
  %1078 = load double, ptr %1077, align 8, !tbaa !11
  %1079 = fsub double %1072, %1078
  %1080 = call double @llvm.fabs.f64(double %1079)
  br label %1188

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

1088:                                             ; preds = %1081
  %1089 = load ptr, ptr %14, align 8, !tbaa !9
  %1090 = load i32, ptr %22, align 4, !tbaa !5
  %1091 = sub nsw i32 %1090, 1
  %1092 = sext i32 %1091 to i64
  %1093 = getelementptr inbounds double, ptr %1089, i64 %1092
  %1094 = load double, ptr %1093, align 8, !tbaa !11
  %1095 = load ptr, ptr %15, align 8, !tbaa !9
  %1096 = load i32, ptr %22, align 4, !tbaa !5
  %1097 = sub nsw i32 %1096, 1
  %1098 = sext i32 %1097 to i64
  %1099 = getelementptr inbounds double, ptr %1095, i64 %1098
  %1100 = load double, ptr %1099, align 8, !tbaa !11
  %1101 = fsub double %1094, %1100
  br label %1186

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

1109:                                             ; preds = %1102
  %1110 = load ptr, ptr %14, align 8, !tbaa !9
  %1111 = load i32, ptr %22, align 4, !tbaa !5
  %1112 = sub nsw i32 %1111, 1
  %1113 = sext i32 %1112 to i64
  %1114 = getelementptr inbounds double, ptr %1110, i64 %1113
  %1115 = load double, ptr %1114, align 8, !tbaa !11
  %1116 = load ptr, ptr %16, align 8, !tbaa !9
  %1117 = load i32, ptr %22, align 4, !tbaa !5
  %1118 = sub nsw i32 %1117, 1
  %1119 = sext i32 %1118 to i64
  %1120 = getelementptr inbounds double, ptr %1116, 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 = sub nsw i32 %1123, 1
  %1125 = sext i32 %1124 to i64
  %1126 = getelementptr inbounds double, ptr %1122, i64 %1125
  %1127 = load double, ptr %1126, align 8, !tbaa !11
  %1128 = fcmp oge double %1121, %1127
  br i1 %1128, label %1129, label %1136

1129:                                             ; preds = %1109
  %1130 = load ptr, ptr %16, align 8, !tbaa !9
  %1131 = load i32, ptr %22, align 4, !tbaa !5
  %1132 = sub nsw i32 %1131, 1
  %1133 = sext i32 %1132 to i64
  %1134 = getelementptr inbounds double, ptr %1130, i64 %1133
  %1135 = load double, ptr %1134, align 8, !tbaa !11
  br label %1143

1136:                                             ; preds = %1109
  %1137 = load ptr, ptr %13, align 8, !tbaa !9
  %1138 = load i32, ptr %22, align 4, !tbaa !5
  %1139 = sub nsw i32 %1138, 1
  %1140 = sext i32 %1139 to i64
  %1141 = getelementptr inbounds double, ptr %1137, i64 %1140
  %1142 = load double, ptr %1141, align 8, !tbaa !11
  br label %1143

1143:                                             ; preds = %1136, %1129
  %1144 = phi double [ %1135, %1129 ], [ %1142, %1136 ]
  %1145 = fsub double %1115, %1144
  %1146 = load ptr, ptr %16, align 8, !tbaa !9
  %1147 = load i32, ptr %22, align 4, !tbaa !5
  %1148 = sub nsw i32 %1147, 1
  %1149 = sext i32 %1148 to i64
  %1150 = getelementptr inbounds double, ptr %1146, i64 %1149
  %1151 = load double, ptr %1150, align 8, !tbaa !11
  %1152 = load ptr, ptr %13, align 8, !tbaa !9
  %1153 = load i32, ptr %22, align 4, !tbaa !5
  %1154 = sub nsw i32 %1153, 1
  %1155 = sext i32 %1154 to i64
  %1156 = getelementptr inbounds double, ptr %1152, i64 %1155
  %1157 = load double, ptr %1156, align 8, !tbaa !11
  %1158 = fcmp oge double %1151, %1157
  br i1 %1158, label %1159, label %1166

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

1166:                                             ; preds = %1143
  %1167 = load ptr, ptr %16, align 8, !tbaa !9
  %1168 = load i32, ptr %22, align 4, !tbaa !5
  %1169 = sub nsw i32 %1168, 1
  %1170 = sext i32 %1169 to i64
  %1171 = getelementptr inbounds double, ptr %1167, i64 %1170
  %1172 = load double, ptr %1171, align 8, !tbaa !11
  br label %1173

1173:                                             ; preds = %1166, %1159
  %1174 = phi double [ %1165, %1159 ], [ %1172, %1166 ]
  %1175 = load ptr, ptr %15, align 8, !tbaa !9
  %1176 = load i32, ptr %22, align 4, !tbaa !5
  %1177 = sub nsw i32 %1176, 1
  %1178 = sext i32 %1177 to i64
  %1179 = getelementptr inbounds double, ptr %1175, i64 %1178
  %1180 = load double, ptr %1179, align 8, !tbaa !11
  %1181 = fsub double %1174, %1180
  %1182 = fadd double %1145, %1181
  br label %1184

1183:                                             ; preds = %1102
  br label %1184

1184:                                             ; preds = %1183, %1173
  %1185 = phi double [ %1182, %1173 ], [ 0.000000e+00, %1183 ]
  br label %1186

1186:                                             ; preds = %1184, %1088
  %1187 = phi double [ %1101, %1088 ], [ %1185, %1184 ]
  br label %1188

1188:                                             ; preds = %1186, %1066
  %1189 = phi double [ %1080, %1066 ], [ %1187, %1186 ]
  %1190 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1191 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1190, i32 0, i32 8
  %1192 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1191, i64 0, i64 0
  %1193 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1192, i32 0, i32 1
  %1194 = load i32, ptr %1193, align 4, !tbaa !15
  %1195 = icmp eq i32 %1194, 0
  br i1 %1195, label %1196, label %1211

1196:                                             ; preds = %1188
  %1197 = load ptr, ptr %16, align 8, !tbaa !9
  %1198 = load i32, ptr %25, align 4, !tbaa !5
  %1199 = sub nsw i32 %1198, 1
  %1200 = sext i32 %1199 to i64
  %1201 = getelementptr inbounds double, ptr %1197, i64 %1200
  %1202 = load double, ptr %1201, align 8, !tbaa !11
  %1203 = load ptr, ptr %13, align 8, !tbaa !9
  %1204 = load i32, ptr %25, align 4, !tbaa !5
  %1205 = sub nsw i32 %1204, 1
  %1206 = sext i32 %1205 to i64
  %1207 = getelementptr inbounds double, ptr %1203, i64 %1206
  %1208 = load double, ptr %1207, align 8, !tbaa !11
  %1209 = fsub double %1202, %1208
  %1210 = call double @llvm.fabs.f64(double %1209)
  br label %1318

1211:                                             ; preds = %1188
  %1212 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1213 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1212, i32 0, i32 8
  %1214 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1213, i64 0, i64 0
  %1215 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1214, i32 0, i32 1
  %1216 = load i32, ptr %1215, align 4, !tbaa !15
  %1217 = icmp eq i32 %1216, 1
  br i1 %1217, label %1218, label %1232

1218:                                             ; preds = %1211
  %1219 = load ptr, ptr %14, align 8, !tbaa !9
  %1220 = load i32, ptr %25, align 4, !tbaa !5
  %1221 = sub nsw i32 %1220, 1
  %1222 = sext i32 %1221 to i64
  %1223 = getelementptr inbounds double, ptr %1219, i64 %1222
  %1224 = load double, ptr %1223, align 8, !tbaa !11
  %1225 = load ptr, ptr %15, align 8, !tbaa !9
  %1226 = load i32, ptr %25, align 4, !tbaa !5
  %1227 = sub nsw i32 %1226, 1
  %1228 = sext i32 %1227 to i64
  %1229 = getelementptr inbounds double, ptr %1225, i64 %1228
  %1230 = load double, ptr %1229, align 8, !tbaa !11
  %1231 = fsub double %1224, %1230
  br label %1316

1232:                                             ; preds = %1211
  %1233 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1234 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1233, i32 0, i32 8
  %1235 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1234, i64 0, i64 0
  %1236 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1235, i32 0, i32 1
  %1237 = load i32, ptr %1236, align 4, !tbaa !15
  %1238 = icmp eq i32 %1237, 2
  br i1 %1238, label %1239, label %1313

1239:                                             ; preds = %1232
  %1240 = load ptr, ptr %14, align 8, !tbaa !9
  %1241 = load i32, ptr %25, align 4, !tbaa !5
  %1242 = sub nsw i32 %1241, 1
  %1243 = sext i32 %1242 to i64
  %1244 = getelementptr inbounds double, ptr %1240, i64 %1243
  %1245 = load double, ptr %1244, align 8, !tbaa !11
  %1246 = load ptr, ptr %16, align 8, !tbaa !9
  %1247 = load i32, ptr %25, align 4, !tbaa !5
  %1248 = sub nsw i32 %1247, 1
  %1249 = sext i32 %1248 to i64
  %1250 = getelementptr inbounds double, ptr %1246, i64 %1249
  %1251 = load double, ptr %1250, align 8, !tbaa !11
  %1252 = load ptr, ptr %13, align 8, !tbaa !9
  %1253 = load i32, ptr %25, align 4, !tbaa !5
  %1254 = sub nsw i32 %1253, 1
  %1255 = sext i32 %1254 to i64
  %1256 = getelementptr inbounds double, ptr %1252, i64 %1255
  %1257 = load double, ptr %1256, align 8, !tbaa !11
  %1258 = fcmp oge double %1251, %1257
  br i1 %1258, label %1259, label %1266

1259:                                             ; preds = %1239
  %1260 = load ptr, ptr %16, align 8, !tbaa !9
  %1261 = load i32, ptr %25, align 4, !tbaa !5
  %1262 = sub nsw i32 %1261, 1
  %1263 = sext i32 %1262 to i64
  %1264 = getelementptr inbounds double, ptr %1260, i64 %1263
  %1265 = load double, ptr %1264, align 8, !tbaa !11
  br label %1273

1266:                                             ; preds = %1239
  %1267 = load ptr, ptr %13, align 8, !tbaa !9
  %1268 = load i32, ptr %25, align 4, !tbaa !5
  %1269 = sub nsw i32 %1268, 1
  %1270 = sext i32 %1269 to i64
  %1271 = getelementptr inbounds double, ptr %1267, i64 %1270
  %1272 = load double, ptr %1271, align 8, !tbaa !11
  br label %1273

1273:                                             ; preds = %1266, %1259
  %1274 = phi double [ %1265, %1259 ], [ %1272, %1266 ]
  %1275 = fsub double %1245, %1274
  %1276 = load ptr, ptr %16, align 8, !tbaa !9
  %1277 = load i32, ptr %25, align 4, !tbaa !5
  %1278 = sub nsw i32 %1277, 1
  %1279 = sext i32 %1278 to i64
  %1280 = getelementptr inbounds double, ptr %1276, i64 %1279
  %1281 = load double, ptr %1280, align 8, !tbaa !11
  %1282 = load ptr, ptr %13, align 8, !tbaa !9
  %1283 = load i32, ptr %25, align 4, !tbaa !5
  %1284 = sub nsw i32 %1283, 1
  %1285 = sext i32 %1284 to i64
  %1286 = getelementptr inbounds double, ptr %1282, i64 %1285
  %1287 = load double, ptr %1286, align 8, !tbaa !11
  %1288 = fcmp oge double %1281, %1287
  br i1 %1288, label %1289, label %1296

1289:                                             ; preds = %1273
  %1290 = load ptr, ptr %13, align 8, !tbaa !9
  %1291 = load i32, ptr %25, align 4, !tbaa !5
  %1292 = sub nsw i32 %1291, 1
  %1293 = sext i32 %1292 to i64
  %1294 = getelementptr inbounds double, ptr %1290, i64 %1293
  %1295 = load double, ptr %1294, align 8, !tbaa !11
  br label %1303

1296:                                             ; preds = %1273
  %1297 = load ptr, ptr %16, align 8, !tbaa !9
  %1298 = load i32, ptr %25, align 4, !tbaa !5
  %1299 = sub nsw i32 %1298, 1
  %1300 = sext i32 %1299 to i64
  %1301 = getelementptr inbounds double, ptr %1297, i64 %1300
  %1302 = load double, ptr %1301, align 8, !tbaa !11
  br label %1303

1303:                                             ; preds = %1296, %1289
  %1304 = phi double [ %1295, %1289 ], [ %1302, %1296 ]
  %1305 = load ptr, ptr %15, align 8, !tbaa !9
  %1306 = load i32, ptr %25, align 4, !tbaa !5
  %1307 = sub nsw i32 %1306, 1
  %1308 = sext i32 %1307 to i64
  %1309 = getelementptr inbounds double, ptr %1305, i64 %1308
  %1310 = load double, ptr %1309, align 8, !tbaa !11
  %1311 = fsub double %1304, %1310
  %1312 = fadd double %1275, %1311
  br label %1314

1313:                                             ; preds = %1232
  br label %1314

1314:                                             ; preds = %1313, %1303
  %1315 = phi double [ %1312, %1303 ], [ 0.000000e+00, %1313 ]
  br label %1316

1316:                                             ; preds = %1314, %1218
  %1317 = phi double [ %1231, %1218 ], [ %1315, %1314 ]
  br label %1318

1318:                                             ; preds = %1316, %1196
  %1319 = phi double [ %1210, %1196 ], [ %1317, %1316 ]
  %1320 = fsub double %1189, %1319
  %1321 = load double, ptr %21, align 8, !tbaa !11
  %1322 = fadd double %1321, %1320
  store double %1322, ptr %21, align 8, !tbaa !11
  %1323 = load i32, ptr %22, align 4, !tbaa !5
  %1324 = add nsw i32 %1323, 1
  store i32 %1324, ptr %22, align 4, !tbaa !5
  %1325 = load i32, ptr %24, align 4, !tbaa !5
  %1326 = add nsw i32 %1325, 1
  store i32 %1326, ptr %24, align 4, !tbaa !5
  %1327 = load i32, ptr %25, align 4, !tbaa !5
  %1328 = add nsw i32 %1327, 1
  store i32 %1328, ptr %25, align 4, !tbaa !5
  br label %1329

1329:                                             ; preds = %1318
  %1330 = load i32, ptr %22, align 4, !tbaa !5
  %1331 = load i32, ptr %12, align 4, !tbaa !5
  %1332 = icmp sle i32 %1330, %1331
  br i1 %1332, label %368, label %1333, !llvm.loop !20

1333:                                             ; preds = %1329
  %1334 = load i32, ptr %23, align 4, !tbaa !5
  %1335 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 %1334, ptr %1335, align 4, !tbaa !5
  %1336 = load i32, ptr %11, align 4, !tbaa !5
  %1337 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 %1336, ptr %1337, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %27, align 4
  br label %1338

1338:                                             ; preds = %1333, %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
  %1339 = load i32, ptr %10, align 4
  ret i32 %1339
}

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

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

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

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

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

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

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

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

.lr.ph.split.us.preheader:                        ; preds = %.lr.ph
  %40 = sext i32 %29 to i64
  %41 = zext nneg i32 %spec.select to i64
  br label %.lr.ph.split.us

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

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

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

.preheader388:                                    ; preds = %.lr.ph.split.us396, %.lr.ph.split.us391, %.lr.ph.split.us, %.lr.ph, %25
  %.0306.lcssa = phi double [ 0.000000e+00, %25 ], [ 0.000000e+00, %.lr.ph ], [ %49, %.lr.ph.split.us ], [ %57, %.lr.ph.split.us391 ], [ %73, %.lr.ph.split.us396 ]
  %75 = icmp sgt i32 %31, 0
  br i1 %75, label %.lr.ph403, label %.preheader

.lr.ph403:                                        ; preds = %.preheader388
  %76 = getelementptr inbounds i8, ptr %26, i64 212
  %77 = load i32, ptr %76, align 4, !tbaa !14
  switch i32 %77, label %.preheader [
    i32 0, label %.lr.ph403.split.us.preheader
    i32 1, label %.lr.ph403.split.us406.preheader
    i32 2, label %.lr.ph403.split.us411.preheader
  ]

.lr.ph403.split.us411.preheader:                  ; preds = %.lr.ph403
  %78 = sext i32 %32 to i64
  %79 = zext nneg i32 %spec.select to i64
  br label %.lr.ph403.split.us411

.lr.ph403.split.us406.preheader:                  ; preds = %.lr.ph403
  %80 = sext i32 %32 to i64
  %81 = zext nneg i32 %spec.select to i64
  br label %.lr.ph403.split.us406

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

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

.lr.ph403.split.us406:                            ; preds = %.lr.ph403.split.us406.preheader, %.lr.ph403.split.us406
  %indvars.iv437 = phi i64 [ %80, %.lr.ph403.split.us406.preheader ], [ %indvars.iv.next438, %.lr.ph403.split.us406 ]
  %.0304401.us408 = phi double [ 0.000000e+00, %.lr.ph403.split.us406.preheader ], [ %99, %.lr.ph403.split.us406 ]
  %93 = add nsw i64 %indvars.iv437, -1
  %94 = getelementptr inbounds double, ptr %3, i64 %93
  %95 = load double, ptr %94, align 8, !tbaa !15
  %96 = getelementptr inbounds double, ptr %4, i64 %93
  %97 = load double, ptr %96, align 8, !tbaa !15
  %98 = fsub double %95, %97
  %99 = fadd double %.0304401.us408, %98
  %indvars.iv.next438 = add nsw i64 %indvars.iv437, 1
  %100 = icmp slt i64 %indvars.iv.next438, %81
  br i1 %100, label %.lr.ph403.split.us406, label %.preheader, !llvm.loop !18

.lr.ph403.split.us411:                            ; preds = %.lr.ph403.split.us411.preheader, %.lr.ph403.split.us411
  %indvars.iv434 = phi i64 [ %78, %.lr.ph403.split.us411.preheader ], [ %indvars.iv.next435, %.lr.ph403.split.us411 ]
  %.0304401.us413 = phi double [ 0.000000e+00, %.lr.ph403.split.us411.preheader ], [ %115, %.lr.ph403.split.us411 ]
  %101 = add nsw i64 %indvars.iv434, -1
  %102 = getelementptr inbounds double, ptr %3, i64 %101
  %103 = load double, ptr %102, align 8, !tbaa !15
  %104 = getelementptr inbounds double, ptr %5, i64 %101
  %105 = load double, ptr %104, align 8, !tbaa !15
  %106 = getelementptr inbounds double, ptr %2, i64 %101
  %107 = load double, ptr %106, align 8, !tbaa !15
  %108 = fcmp ult double %105, %107
  %.367.us = select i1 %108, double %107, double %105
  %109 = fsub double %103, %.367.us
  %110 = select i1 %108, double %105, double %107
  %111 = getelementptr inbounds double, ptr %4, i64 %101
  %112 = load double, ptr %111, align 8, !tbaa !15
  %113 = fsub double %110, %112
  %114 = fadd double %109, %113
  %115 = fadd double %.0304401.us413, %114
  %indvars.iv.next435 = add nsw i64 %indvars.iv434, 1
  %116 = icmp slt i64 %indvars.iv.next435, %79
  br i1 %116, label %.lr.ph403.split.us411, label %.preheader, !llvm.loop !18

.preheader:                                       ; preds = %.lr.ph403.split.us411, %.lr.ph403.split.us406, %.lr.ph403.split.us, %.lr.ph403, %.preheader388
  %.0304.lcssa = phi double [ 0.000000e+00, %.preheader388 ], [ 0.000000e+00, %.lr.ph403 ], [ %91, %.lr.ph403.split.us ], [ %99, %.lr.ph403.split.us406 ], [ %115, %.lr.ph403.split.us411 ]
  %117 = getelementptr inbounds i8, ptr %26, i64 452
  %118 = getelementptr inbounds i8, ptr %26, i64 212
  %119 = getelementptr inbounds i8, ptr %26, i64 224
  %120 = getelementptr inbounds i8, ptr %26, i64 464
  %121 = sext i32 %22 to i64
  %122 = zext nneg i32 %0 to i64
  %smax = tail call i64 @llvm.smax.i64(i64 %121, i64 %122)
  %123 = sext i32 %1 to i64
  %124 = sext i32 %29 to i64
  %125 = sext i32 %32 to i64
  br label %126

126:                                              ; preds = %.preheader, %316
  %indvars.iv449 = phi i64 [ %125, %.preheader ], [ %indvars.iv.next450, %316 ]
  %indvars.iv447 = phi i64 [ %124, %.preheader ], [ %indvars.iv.next448, %316 ]
  %indvars.iv445 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next446, %316 ]
  %indvars.iv443 = phi i64 [ %smax, %.preheader ], [ %indvars.iv.next444, %316 ]
  %.1307 = phi double [ %.0306.lcssa, %.preheader ], [ %260, %316 ]
  %.1305 = phi double [ %.0304.lcssa, %.preheader ], [ %320, %316 ]
  %127 = add nsw i64 %indvars.iv443, -1
  %128 = getelementptr inbounds double, ptr %5, i64 %127
  %129 = load double, ptr %128, align 8, !tbaa !15
  %130 = getelementptr inbounds double, ptr %2, i64 %127
  %131 = load double, ptr %130, align 8, !tbaa !15
  %132 = fcmp ult double %129, %131
  br i1 %132, label %133, label %198

133:                                              ; preds = %126
  %134 = fsub double %129, %131
  %135 = tail call double @llvm.fabs.f64(double %134)
  %136 = load double, ptr %119, align 8, !tbaa !19
  %137 = load i32, ptr %30, align 8, !tbaa !11
  %.not363 = icmp eq i32 %137, 0
  br i1 %.not363, label %138, label %153

138:                                              ; preds = %133
  %139 = load i32, ptr %118, align 4, !tbaa !14
  switch i32 %139, label %.fold.split [
    i32 0, label %.thread458
    i32 1, label %140
    i32 2, label %.thread460
  ]

140:                                              ; preds = %138
  %141 = getelementptr inbounds double, ptr %3, i64 %127
  %142 = load double, ptr %141, align 8, !tbaa !15
  %143 = getelementptr inbounds double, ptr %4, i64 %127
  %144 = load double, ptr %143, align 8, !tbaa !15
  %145 = fsub double %142, %144
  br label %.thread458

.thread460:                                       ; preds = %138
  %146 = getelementptr inbounds double, ptr %3, i64 %127
  %147 = load double, ptr %146, align 8, !tbaa !15
  %148 = fsub double %147, %131
  %149 = getelementptr inbounds double, ptr %4, i64 %127
  %150 = load double, ptr %149, align 8, !tbaa !15
  %151 = fsub double %129, %150
  %152 = fadd double %148, %151
  br label %.thread458

.fold.split:                                      ; preds = %138
  br label %.thread458

153:                                              ; preds = %133
  %154 = sitofp i32 %137 to double
  %155 = fdiv double %.1305, %154
  %.pre = load i32, ptr %118, align 4, !tbaa !14
  %.pre.fr = freeze i32 %.pre
  %156 = icmp eq i32 %.pre.fr, 2
  br i1 %156, label %157, label %.thread458

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

.thread458:                                       ; preds = %.fold.split, %138, %140, %.thread460, %153, %157
  %.pn = phi double [ %155, %153 ], [ %152, %.thread460 ], [ %155, %157 ], [ 0.000000e+00, %.fold.split ], [ %135, %138 ], [ %145, %140 ]
  %158 = phi double [ 1.000000e+00, %153 ], [ 2.000000e+00, %.thread460 ], [ 2.000000e+00, %157 ], [ 1.000000e+00, %.fold.split ], [ 1.000000e+00, %138 ], [ 1.000000e+00, %140 ]
  %159 = fmul double %136, %.pn
  %160 = fdiv double %159, %158
  %161 = fcmp ogt double %135, %160
  br i1 %161, label %162, label %198

162:                                              ; preds = %.thread458
  %163 = getelementptr inbounds double, ptr %5, i64 %indvars.iv443
  %164 = load double, ptr %163, align 8, !tbaa !15
  %165 = getelementptr inbounds double, ptr %2, i64 %indvars.iv443
  %166 = load double, ptr %165, align 8, !tbaa !15
  %167 = fcmp ult double %164, %166
  br i1 %167, label %198, label %168

168:                                              ; preds = %162
  %169 = getelementptr inbounds double, ptr %4, i64 %127
  %170 = load double, ptr %169, align 8, !tbaa !15
  %171 = fcmp olt double %166, %170
  br i1 %171, label %172, label %198

172:                                              ; preds = %168
  %173 = load double, ptr %120, align 8, !tbaa !19
  %174 = load i32, ptr %27, align 8, !tbaa !11
  %.not364 = icmp eq i32 %174, 0
  br i1 %.not364, label %175, label %187

175:                                              ; preds = %172
  %176 = load i32, ptr %117, align 4, !tbaa !14
  switch i32 %176, label %.thread465 [
    i32 0, label %177
    i32 1, label %178
    i32 2, label %.thread467
  ]

177:                                              ; preds = %175
  br label %.thread465

178:                                              ; preds = %175
  %179 = getelementptr inbounds double, ptr %3, i64 %127
  %180 = load double, ptr %179, align 8, !tbaa !15
  %181 = fsub double %180, %170
  br label %.thread465

.thread467:                                       ; preds = %175
  %182 = getelementptr inbounds double, ptr %3, i64 %127
  %183 = load double, ptr %182, align 8, !tbaa !15
  %184 = fsub double %183, %131
  %185 = fsub double %129, %170
  %186 = fadd double %185, %184
  br label %.thread465

187:                                              ; preds = %172
  %188 = sitofp i32 %174 to double
  %189 = fdiv double %.1307, %188
  %.pre456 = load i32, ptr %117, align 4, !tbaa !14
  %.pre456.fr = freeze i32 %.pre456
  %190 = icmp eq i32 %.pre456.fr, 2
  br i1 %190, label %191, label %.thread465

191:                                              ; preds = %187
  br label %.thread465

.thread465:                                       ; preds = %175, %178, %177, %.thread467, %187, %191
  %.pn479 = phi double [ %189, %187 ], [ %186, %.thread467 ], [ %189, %191 ], [ 0.000000e+00, %175 ], [ %181, %178 ], [ %135, %177 ]
  %192 = phi double [ 1.000000e+00, %187 ], [ 2.000000e+00, %.thread467 ], [ 2.000000e+00, %191 ], [ 1.000000e+00, %175 ], [ 1.000000e+00, %178 ], [ 1.000000e+00, %177 ]
  %193 = fmul double %173, %.pn479
  %194 = fdiv double %193, %192
  %195 = fadd double %129, %194
  %196 = fcmp ugt double %164, %195
  %197 = fcmp ult double %164, %129
  %or.cond380 = or i1 %197, %196
  br i1 %or.cond380, label %198, label %199

198:                                              ; preds = %.thread465, %168, %162, %.thread458, %126
  br label %199

199:                                              ; preds = %.thread465, %198
  %.sink = phi i32 [ 0, %198 ], [ -100, %.thread465 ]
  %200 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv445
  store i32 %.sink, ptr %200, align 4, !tbaa !5
  %indvars.iv.next446 = add nuw nsw i64 %indvars.iv445, 1
  %201 = load i32, ptr %117, align 4, !tbaa !14
  switch i32 %201, label %256 [
    i32 0, label %.thread
    i32 1, label %.thread375
    i32 2, label %.thread376
  ]

.thread:                                          ; preds = %199
  %202 = add nsw i64 %indvars.iv447, -1
  %203 = getelementptr inbounds double, ptr %5, i64 %202
  %204 = load double, ptr %203, align 8, !tbaa !15
  %205 = getelementptr inbounds double, ptr %2, i64 %202
  %206 = load double, ptr %205, align 8, !tbaa !15
  %207 = insertelement <2 x double> poison, double %129, i64 0
  %208 = insertelement <2 x double> %207, double %204, i64 1
  %209 = insertelement <2 x double> poison, double %131, i64 0
  %210 = insertelement <2 x double> %209, double %206, i64 1
  %211 = fsub <2 x double> %208, %210
  %212 = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %211)
  br label %256

.thread375:                                       ; preds = %199
  %213 = getelementptr inbounds double, ptr %3, i64 %127
  %214 = load double, ptr %213, align 8, !tbaa !15
  %215 = getelementptr inbounds double, ptr %4, i64 %127
  %216 = load double, ptr %215, align 8, !tbaa !15
  %217 = add nsw i64 %indvars.iv447, -1
  %218 = getelementptr inbounds double, ptr %3, i64 %217
  %219 = load double, ptr %218, align 8, !tbaa !15
  %220 = getelementptr inbounds double, ptr %4, i64 %217
  %221 = load double, ptr %220, align 8, !tbaa !15
  %222 = insertelement <2 x double> poison, double %214, i64 0
  %223 = insertelement <2 x double> %222, double %219, i64 1
  %224 = insertelement <2 x double> poison, double %216, i64 0
  %225 = insertelement <2 x double> %224, double %221, i64 1
  %226 = fsub <2 x double> %223, %225
  br label %256

.thread376:                                       ; preds = %199
  %227 = getelementptr inbounds double, ptr %3, i64 %127
  %228 = load double, ptr %227, align 8, !tbaa !15
  %229 = getelementptr inbounds double, ptr %4, i64 %127
  %230 = load double, ptr %229, align 8, !tbaa !15
  %231 = add nsw i64 %indvars.iv447, -1
  %232 = getelementptr inbounds double, ptr %3, i64 %231
  %233 = load double, ptr %232, align 8, !tbaa !15
  %234 = getelementptr inbounds double, ptr %5, i64 %231
  %235 = load double, ptr %234, align 8, !tbaa !15
  %236 = getelementptr inbounds double, ptr %2, i64 %231
  %237 = load double, ptr %236, align 8, !tbaa !15
  %238 = fcmp ult double %235, %237
  %239 = getelementptr inbounds double, ptr %4, i64 %231
  %240 = load double, ptr %239, align 8, !tbaa !15
  %241 = insertelement <2 x i1> poison, i1 %132, i64 0
  %242 = insertelement <2 x i1> %241, i1 %238, i64 1
  %243 = insertelement <2 x double> poison, double %131, i64 0
  %244 = insertelement <2 x double> %243, double %237, i64 1
  %245 = insertelement <2 x double> poison, double %129, i64 0
  %246 = insertelement <2 x double> %245, double %235, i64 1
  %247 = select <2 x i1> %242, <2 x double> %244, <2 x double> %246
  %248 = insertelement <2 x double> poison, double %228, i64 0
  %249 = insertelement <2 x double> %248, double %233, i64 1
  %250 = fsub <2 x double> %249, %247
  %251 = select <2 x i1> %242, <2 x double> %246, <2 x double> %244
  %252 = insertelement <2 x double> poison, double %230, i64 0
  %253 = insertelement <2 x double> %252, double %240, i64 1
  %254 = fsub <2 x double> %251, %253
  %255 = fadd <2 x double> %250, %254
  br label %256

256:                                              ; preds = %199, %.thread375, %.thread376, %.thread
  %257 = phi <2 x double> [ %212, %.thread ], [ %226, %.thread375 ], [ %255, %.thread376 ], [ zeroinitializer, %199 ]
  %shift = shufflevector <2 x double> %257, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %258 = fsub <2 x double> %257, %shift
  %259 = extractelement <2 x double> %258, i64 0
  %260 = fadd double %.1307, %259
  %261 = load i32, ptr %118, align 4, !tbaa !14
  switch i32 %261, label %316 [
    i32 0, label %.thread377
    i32 1, label %.thread378
    i32 2, label %.thread379
  ]

.thread377:                                       ; preds = %256
  %262 = add nsw i64 %indvars.iv449, -1
  %263 = getelementptr inbounds double, ptr %5, i64 %262
  %264 = load double, ptr %263, align 8, !tbaa !15
  %265 = getelementptr inbounds double, ptr %2, i64 %262
  %266 = load double, ptr %265, align 8, !tbaa !15
  %267 = insertelement <2 x double> poison, double %129, i64 0
  %268 = insertelement <2 x double> %267, double %264, i64 1
  %269 = insertelement <2 x double> poison, double %131, 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

.thread378:                                       ; preds = %256
  %273 = getelementptr inbounds double, ptr %3, i64 %127
  %274 = load double, ptr %273, align 8, !tbaa !15
  %275 = getelementptr inbounds double, ptr %4, i64 %127
  %276 = load double, ptr %275, align 8, !tbaa !15
  %277 = add nsw i64 %indvars.iv449, -1
  %278 = getelementptr inbounds double, ptr %3, i64 %277
  %279 = load double, ptr %278, align 8, !tbaa !15
  %280 = getelementptr inbounds double, ptr %4, i64 %277
  %281 = load double, ptr %280, align 8, !tbaa !15
  %282 = insertelement <2 x double> poison, double %274, i64 0
  %283 = insertelement <2 x double> %282, double %279, i64 1
  %284 = insertelement <2 x double> poison, double %276, i64 0
  %285 = insertelement <2 x double> %284, double %281, i64 1
  %286 = fsub <2 x double> %283, %285
  br label %316

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

316:                                              ; preds = %256, %.thread378, %.thread379, %.thread377
  %317 = phi <2 x double> [ %272, %.thread377 ], [ %286, %.thread378 ], [ %315, %.thread379 ], [ zeroinitializer, %256 ]
  %shift489 = shufflevector <2 x double> %317, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %318 = fsub <2 x double> %317, %shift489
  %319 = extractelement <2 x double> %318, i64 0
  %320 = fadd double %.1305, %319
  %indvars.iv.next444 = add nuw nsw i64 %indvars.iv443, 1
  %indvars.iv.next448 = add nsw i64 %indvars.iv447, 1
  %indvars.iv.next450 = add nsw i64 %indvars.iv449, 1
  %.not365.not = icmp slt i64 %indvars.iv443, %123
  br i1 %.not365.not, label %126, label %321, !llvm.loop !20

321:                                              ; preds = %316
  %322 = trunc nuw i64 %indvars.iv.next446 to i32
  store i32 %322, ptr %7, align 4, !tbaa !5
  store i32 %spec.select, ptr %6, align 4, !tbaa !5
  br label %323

323:                                              ; 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 i64 @llvm.smax.i64(i64, i64) #2

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

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

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

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


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