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

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

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

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

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

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

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

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

88:                                               ; preds = %208, %70
  %89 = load i32, ptr %22, align 4, !tbaa !5
  %90 = load i32, ptr %11, align 4, !tbaa !5
  %91 = sub nsw i32 %90, 2
  %92 = icmp slt i32 %89, %91
  br i1 %92, label %93, label %214

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

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

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

120:                                              ; preds = %113
  %121 = load ptr, ptr %14, align 8, !tbaa !9
  %122 = load i32, ptr %22, align 4, !tbaa !5
  %123 = sext i32 %122 to i64
  %124 = getelementptr inbounds double, ptr %121, 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 = sext i32 %127 to i64
  %129 = getelementptr inbounds double, ptr %126, i64 %128
  %130 = load double, ptr %129, align 8, !tbaa !11
  %131 = fsub double %125, %130
  br label %206

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

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

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

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

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

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

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

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

203:                                              ; preds = %132
  br label %204

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

206:                                              ; preds = %204, %120
  %207 = phi double [ %131, %120 ], [ %205, %204 ]
  br label %208

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

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

216:                                              ; preds = %336, %214
  %217 = load i32, ptr %22, align 4, !tbaa !5
  %218 = load i32, ptr %11, align 4, !tbaa !5
  %219 = sub nsw i32 %218, 1
  %220 = icmp slt i32 %217, %219
  br i1 %220, label %221, label %342

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

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

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

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

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

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

284:                                              ; preds = %267
  %285 = load ptr, ptr %16, align 8, !tbaa !9
  %286 = load i32, ptr %22, align 4, !tbaa !5
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds double, ptr %285, i64 %287
  %289 = load double, ptr %288, align 8, !tbaa !11
  br label %296

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

296:                                              ; preds = %290, %284
  %297 = phi double [ %289, %284 ], [ %295, %290 ]
  %298 = fsub double %272, %297
  %299 = load ptr, ptr %16, align 8, !tbaa !9
  %300 = load i32, ptr %22, align 4, !tbaa !5
  %301 = sext i32 %300 to i64
  %302 = getelementptr inbounds double, ptr %299, i64 %301
  %303 = load double, ptr %302, align 8, !tbaa !11
  %304 = load ptr, ptr %13, align 8, !tbaa !9
  %305 = load i32, ptr %22, align 4, !tbaa !5
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds double, ptr %304, i64 %306
  %308 = load double, ptr %307, align 8, !tbaa !11
  %309 = fcmp oge double %303, %308
  br i1 %309, label %310, label %316

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

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

322:                                              ; preds = %316, %310
  %323 = phi double [ %315, %310 ], [ %321, %316 ]
  %324 = load ptr, ptr %15, align 8, !tbaa !9
  %325 = load i32, ptr %22, align 4, !tbaa !5
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds double, ptr %324, i64 %326
  %328 = load double, ptr %327, align 8, !tbaa !11
  %329 = fsub double %323, %328
  %330 = fadd double %298, %329
  br label %332

331:                                              ; preds = %260
  br label %332

332:                                              ; preds = %331, %322
  %333 = phi double [ %330, %322 ], [ 0.000000e+00, %331 ]
  br label %334

334:                                              ; preds = %332, %248
  %335 = phi double [ %259, %248 ], [ %333, %332 ]
  br label %336

336:                                              ; preds = %334, %228
  %337 = phi double [ %240, %228 ], [ %335, %334 ]
  %338 = load double, ptr %20, align 8, !tbaa !11
  %339 = fadd double %338, %337
  store double %339, ptr %20, align 8, !tbaa !11
  %340 = load i32, ptr %22, align 4, !tbaa !5
  %341 = add nsw i32 %340, 1
  store i32 %341, ptr %22, align 4, !tbaa !5
  br label %216, !llvm.loop !18

342:                                              ; preds = %216
  %343 = load i32, ptr %11, align 4, !tbaa !5
  store i32 %343, ptr %22, align 4, !tbaa !5
  store i32 0, ptr %23, align 4, !tbaa !5
  br label %344

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

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

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

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

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

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

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

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

450:                                              ; preds = %430
  %451 = load ptr, ptr %16, align 8, !tbaa !9
  %452 = load i32, ptr %22, align 4, !tbaa !5
  %453 = sub nsw i32 %452, 2
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds double, ptr %451, i64 %454
  %456 = load double, ptr %455, align 8, !tbaa !11
  br label %464

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

464:                                              ; preds = %457, %450
  %465 = phi double [ %456, %450 ], [ %463, %457 ]
  %466 = fsub double %436, %465
  %467 = load ptr, ptr %16, align 8, !tbaa !9
  %468 = load i32, ptr %22, align 4, !tbaa !5
  %469 = sub nsw i32 %468, 2
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds double, ptr %467, i64 %470
  %472 = load double, ptr %471, align 8, !tbaa !11
  %473 = load ptr, ptr %13, align 8, !tbaa !9
  %474 = load i32, ptr %22, align 4, !tbaa !5
  %475 = sub nsw i32 %474, 2
  %476 = sext i32 %475 to i64
  %477 = getelementptr inbounds double, ptr %473, i64 %476
  %478 = load double, ptr %477, align 8, !tbaa !11
  %479 = fcmp oge double %472, %478
  br i1 %479, label %480, label %487

480:                                              ; preds = %464
  %481 = load ptr, ptr %13, align 8, !tbaa !9
  %482 = load i32, ptr %22, align 4, !tbaa !5
  %483 = sub nsw i32 %482, 2
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds double, ptr %481, i64 %484
  %486 = load double, ptr %485, align 8, !tbaa !11
  br label %494

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

494:                                              ; preds = %487, %480
  %495 = phi double [ %486, %480 ], [ %493, %487 ]
  %496 = load ptr, ptr %15, align 8, !tbaa !9
  %497 = load i32, ptr %22, align 4, !tbaa !5
  %498 = sub nsw i32 %497, 2
  %499 = sext i32 %498 to i64
  %500 = getelementptr inbounds double, ptr %496, i64 %499
  %501 = load double, ptr %500, align 8, !tbaa !11
  %502 = fsub double %495, %501
  %503 = fadd double %466, %502
  br label %505

504:                                              ; preds = %423
  br label %505

505:                                              ; preds = %504, %494
  %506 = phi double [ %503, %494 ], [ 0.000000e+00, %504 ]
  br label %507

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

509:                                              ; preds = %507, %387
  %510 = phi double [ %401, %387 ], [ %508, %507 ]
  br label %511

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

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

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

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

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

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

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

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

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

630:                                              ; preds = %610
  %631 = load ptr, ptr %16, align 8, !tbaa !9
  %632 = load i32, ptr %22, align 4, !tbaa !5
  %633 = sub nsw i32 %632, 1
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds double, ptr %631, i64 %634
  %636 = load double, ptr %635, align 8, !tbaa !11
  br label %644

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

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

660:                                              ; preds = %644
  %661 = load ptr, ptr %13, align 8, !tbaa !9
  %662 = load i32, ptr %22, align 4, !tbaa !5
  %663 = sub nsw i32 %662, 1
  %664 = sext i32 %663 to i64
  %665 = getelementptr inbounds double, ptr %661, i64 %664
  %666 = load double, ptr %665, align 8, !tbaa !11
  br label %674

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

674:                                              ; preds = %667, %660
  %675 = phi double [ %666, %660 ], [ %673, %667 ]
  %676 = load ptr, ptr %15, align 8, !tbaa !9
  %677 = load i32, ptr %22, align 4, !tbaa !5
  %678 = sub nsw i32 %677, 1
  %679 = sext i32 %678 to i64
  %680 = getelementptr inbounds double, ptr %676, i64 %679
  %681 = load double, ptr %680, align 8, !tbaa !11
  %682 = fsub double %675, %681
  %683 = fadd double %646, %682
  br label %685

684:                                              ; preds = %603
  br label %685

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

687:                                              ; preds = %685, %589
  %688 = phi double [ %602, %589 ], [ %686, %685 ]
  br label %689

689:                                              ; preds = %687, %567
  %690 = phi double [ %581, %567 ], [ %688, %687 ]
  br label %691

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

704:                                              ; preds = %691
  %705 = load ptr, ptr %16, align 8, !tbaa !9
  %706 = load i32, ptr %22, align 4, !tbaa !5
  %707 = sub nsw i32 %706, 1
  %708 = sext i32 %707 to i64
  %709 = getelementptr inbounds double, ptr %705, i64 %708
  %710 = load double, ptr %709, align 8, !tbaa !11
  %711 = load ptr, ptr %13, align 8, !tbaa !9
  %712 = load i32, ptr %22, align 4, !tbaa !5
  %713 = sub nsw i32 %712, 1
  %714 = sext i32 %713 to i64
  %715 = getelementptr inbounds double, ptr %711, i64 %714
  %716 = load double, ptr %715, align 8, !tbaa !11
  %717 = fcmp ogt double %710, %716
  br i1 %717, label %718, label %725

718:                                              ; preds = %704
  %719 = load ptr, ptr %16, 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
  br label %732

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

732:                                              ; preds = %725, %718
  %733 = phi double [ %724, %718 ], [ %731, %725 ]
  %734 = load ptr, ptr %16, align 8, !tbaa !9
  %735 = load i32, ptr %22, align 4, !tbaa !5
  %736 = sub nsw i32 %735, 2
  %737 = sext i32 %736 to i64
  %738 = getelementptr inbounds double, ptr %734, i64 %737
  %739 = load double, ptr %738, align 8, !tbaa !11
  %740 = load ptr, ptr %13, align 8, !tbaa !9
  %741 = load i32, ptr %22, align 4, !tbaa !5
  %742 = sub nsw i32 %741, 2
  %743 = sext i32 %742 to i64
  %744 = getelementptr inbounds double, ptr %740, i64 %743
  %745 = load double, ptr %744, align 8, !tbaa !11
  %746 = fcmp ogt double %739, %745
  br i1 %746, label %747, label %754

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

754:                                              ; preds = %732
  %755 = load ptr, ptr %13, align 8, !tbaa !9
  %756 = load i32, ptr %22, align 4, !tbaa !5
  %757 = sub nsw i32 %756, 2
  %758 = sext i32 %757 to i64
  %759 = getelementptr inbounds double, ptr %755, i64 %758
  %760 = load double, ptr %759, align 8, !tbaa !11
  br label %761

761:                                              ; preds = %754, %747
  %762 = phi double [ %753, %747 ], [ %760, %754 ]
  %763 = fcmp olt double %733, %762
  br i1 %763, label %764, label %937

764:                                              ; preds = %761
  %765 = load ptr, ptr %16, align 8, !tbaa !9
  %766 = load i32, ptr %22, align 4, !tbaa !5
  %767 = sub nsw i32 %766, 1
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds double, ptr %765, i64 %768
  %770 = load double, ptr %769, align 8, !tbaa !11
  %771 = load ptr, ptr %13, align 8, !tbaa !9
  %772 = load i32, ptr %22, align 4, !tbaa !5
  %773 = sub nsw i32 %772, 1
  %774 = sext i32 %773 to i64
  %775 = getelementptr inbounds double, ptr %771, i64 %774
  %776 = load double, ptr %775, align 8, !tbaa !11
  %777 = fcmp olt double %770, %776
  br i1 %777, label %778, label %785

778:                                              ; preds = %764
  %779 = load ptr, ptr %16, align 8, !tbaa !9
  %780 = load i32, ptr %22, align 4, !tbaa !5
  %781 = sub nsw i32 %780, 1
  %782 = sext i32 %781 to i64
  %783 = getelementptr inbounds double, ptr %779, i64 %782
  %784 = load double, ptr %783, align 8, !tbaa !11
  br label %792

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

792:                                              ; preds = %785, %778
  %793 = phi double [ %784, %778 ], [ %791, %785 ]
  %794 = load ptr, ptr %16, align 8, !tbaa !9
  %795 = load i32, ptr %22, align 4, !tbaa !5
  %796 = sub nsw i32 %795, 2
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds double, ptr %794, i64 %797
  %799 = load double, ptr %798, align 8, !tbaa !11
  %800 = load ptr, ptr %13, align 8, !tbaa !9
  %801 = load i32, ptr %22, align 4, !tbaa !5
  %802 = sub nsw i32 %801, 2
  %803 = sext i32 %802 to i64
  %804 = getelementptr inbounds double, ptr %800, i64 %803
  %805 = load double, ptr %804, align 8, !tbaa !11
  %806 = fcmp olt double %799, %805
  br i1 %806, label %807, label %814

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

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

821:                                              ; preds = %814, %807
  %822 = phi double [ %813, %807 ], [ %820, %814 ]
  %823 = fcmp ogt double %793, %822
  br i1 %823, label %824, label %937

824:                                              ; preds = %821
  %825 = load ptr, ptr %16, align 8, !tbaa !9
  %826 = load i32, ptr %22, align 4, !tbaa !5
  %827 = sub nsw i32 %826, 2
  %828 = sext i32 %827 to i64
  %829 = getelementptr inbounds double, ptr %825, i64 %828
  %830 = load double, ptr %829, align 8, !tbaa !11
  %831 = load ptr, ptr %13, align 8, !tbaa !9
  %832 = load i32, ptr %22, align 4, !tbaa !5
  %833 = sub nsw i32 %832, 2
  %834 = sext i32 %833 to i64
  %835 = getelementptr inbounds double, ptr %831, i64 %834
  %836 = load double, ptr %835, align 8, !tbaa !11
  %837 = fcmp oge double %830, %836
  %838 = zext i1 %837 to i64
  %839 = select i1 %837, i32 1, i32 -1
  %840 = icmp eq i32 %839, 1
  br i1 %840, label %841, label %869

841:                                              ; preds = %824
  %842 = load ptr, ptr %16, align 8, !tbaa !9
  %843 = load i32, ptr %22, align 4, !tbaa !5
  %844 = sext i32 %843 to i64
  %845 = getelementptr inbounds double, ptr %842, i64 %844
  %846 = load double, ptr %845, align 8, !tbaa !11
  %847 = load ptr, ptr %13, align 8, !tbaa !9
  %848 = load i32, ptr %22, align 4, !tbaa !5
  %849 = sext i32 %848 to i64
  %850 = getelementptr inbounds double, ptr %847, i64 %849
  %851 = load double, ptr %850, align 8, !tbaa !11
  %852 = fcmp oge double %846, %851
  %853 = zext i1 %852 to i64
  %854 = select i1 %852, i32 1, i32 -1
  %855 = icmp eq i32 %854, -1
  br i1 %855, label %856, label %869

856:                                              ; preds = %841
  %857 = load ptr, ptr %16, align 8, !tbaa !9
  %858 = load i32, ptr %22, align 4, !tbaa !5
  %859 = sext i32 %858 to i64
  %860 = getelementptr inbounds double, ptr %857, i64 %859
  %861 = load double, ptr %860, align 8, !tbaa !11
  %862 = load ptr, ptr %13, align 8, !tbaa !9
  %863 = load i32, ptr %22, align 4, !tbaa !5
  %864 = sub nsw i32 %863, 2
  %865 = sext i32 %864 to i64
  %866 = getelementptr inbounds double, ptr %862, i64 %865
  %867 = load double, ptr %866, align 8, !tbaa !11
  %868 = fcmp olt double %861, %867
  br i1 %868, label %914, label %869

869:                                              ; preds = %856, %841, %824
  %870 = load ptr, ptr %16, align 8, !tbaa !9
  %871 = load i32, ptr %22, align 4, !tbaa !5
  %872 = sub nsw i32 %871, 2
  %873 = sext i32 %872 to i64
  %874 = getelementptr inbounds double, ptr %870, i64 %873
  %875 = load double, ptr %874, align 8, !tbaa !11
  %876 = load ptr, ptr %13, align 8, !tbaa !9
  %877 = load i32, ptr %22, align 4, !tbaa !5
  %878 = sub nsw i32 %877, 2
  %879 = sext i32 %878 to i64
  %880 = getelementptr inbounds double, ptr %876, i64 %879
  %881 = load double, ptr %880, align 8, !tbaa !11
  %882 = fcmp oge double %875, %881
  %883 = zext i1 %882 to i64
  %884 = select i1 %882, i32 1, i32 -1
  %885 = icmp eq i32 %884, -1
  br i1 %885, label %886, label %937

886:                                              ; preds = %869
  %887 = load ptr, ptr %16, align 8, !tbaa !9
  %888 = load i32, ptr %22, align 4, !tbaa !5
  %889 = sext i32 %888 to i64
  %890 = getelementptr inbounds double, ptr %887, i64 %889
  %891 = load double, ptr %890, align 8, !tbaa !11
  %892 = load ptr, ptr %13, align 8, !tbaa !9
  %893 = load i32, ptr %22, align 4, !tbaa !5
  %894 = sext i32 %893 to i64
  %895 = getelementptr inbounds double, ptr %892, i64 %894
  %896 = load double, ptr %895, align 8, !tbaa !11
  %897 = fcmp oge double %891, %896
  %898 = zext i1 %897 to i64
  %899 = select i1 %897, i32 1, i32 -1
  %900 = icmp eq i32 %899, 1
  br i1 %900, label %901, label %937

901:                                              ; preds = %886
  %902 = load ptr, ptr %16, align 8, !tbaa !9
  %903 = load i32, ptr %22, align 4, !tbaa !5
  %904 = sext i32 %903 to i64
  %905 = getelementptr inbounds double, ptr %902, i64 %904
  %906 = load double, ptr %905, align 8, !tbaa !11
  %907 = load ptr, ptr %13, align 8, !tbaa !9
  %908 = load i32, ptr %22, align 4, !tbaa !5
  %909 = sub nsw i32 %908, 2
  %910 = sext i32 %909 to i64
  %911 = getelementptr inbounds double, ptr %907, i64 %910
  %912 = load double, ptr %911, align 8, !tbaa !11
  %913 = fcmp ogt double %906, %912
  br i1 %913, label %914, label %937

914:                                              ; preds = %901, %856
  %915 = load ptr, ptr %16, align 8, !tbaa !9
  %916 = load i32, ptr %22, align 4, !tbaa !5
  %917 = sub nsw i32 %916, 2
  %918 = sext i32 %917 to i64
  %919 = getelementptr inbounds double, ptr %915, i64 %918
  %920 = load double, ptr %919, align 8, !tbaa !11
  %921 = load ptr, ptr %13, align 8, !tbaa !9
  %922 = load i32, ptr %22, align 4, !tbaa !5
  %923 = sub nsw i32 %922, 2
  %924 = sext i32 %923 to i64
  %925 = getelementptr inbounds double, ptr %921, i64 %924
  %926 = load double, ptr %925, align 8, !tbaa !11
  %927 = fcmp oge double %920, %926
  %928 = zext i1 %927 to i64
  %929 = select i1 %927, i32 1, i32 -1
  %930 = sub nsw i32 0, %929
  %931 = mul nsw i32 %930, 100
  %932 = load ptr, ptr %19, align 8, !tbaa !9
  %933 = load i32, ptr %23, align 4, !tbaa !5
  %934 = add nsw i32 %933, 1
  store i32 %934, ptr %23, align 4, !tbaa !5
  %935 = sext i32 %933 to i64
  %936 = getelementptr inbounds i32, ptr %932, i64 %935
  store i32 %931, ptr %936, align 4, !tbaa !5
  br label %943

937:                                              ; preds = %901, %886, %869, %821, %761, %691, %511
  %938 = load ptr, ptr %19, align 8, !tbaa !9
  %939 = load i32, ptr %23, align 4, !tbaa !5
  %940 = add nsw i32 %939, 1
  store i32 %940, ptr %23, align 4, !tbaa !5
  %941 = sext i32 %939 to i64
  %942 = getelementptr inbounds i32, ptr %938, i64 %941
  store i32 0, ptr %942, align 4, !tbaa !5
  br label %943

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

950:                                              ; preds = %943
  %951 = load ptr, ptr %16, align 8, !tbaa !9
  %952 = load i32, ptr %22, align 4, !tbaa !5
  %953 = sub nsw i32 %952, 2
  %954 = sext i32 %953 to i64
  %955 = getelementptr inbounds double, ptr %951, i64 %954
  %956 = load double, ptr %955, align 8, !tbaa !11
  %957 = load ptr, ptr %13, align 8, !tbaa !9
  %958 = load i32, ptr %22, align 4, !tbaa !5
  %959 = sub nsw i32 %958, 2
  %960 = sext i32 %959 to i64
  %961 = getelementptr inbounds double, ptr %957, i64 %960
  %962 = load double, ptr %961, align 8, !tbaa !11
  %963 = fsub double %956, %962
  %964 = call double @llvm.fabs.f64(double %963)
  br label %1072

965:                                              ; preds = %943
  %966 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %967 = getelementptr inbounds %struct.TA_LibcPriv, ptr %966, i32 0, i32 8
  %968 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %967, i64 0, i64 0
  %969 = getelementptr inbounds %struct.TA_CandleSetting, ptr %968, i32 0, i32 1
  %970 = load i32, ptr %969, align 4, !tbaa !15
  %971 = icmp eq i32 %970, 1
  br i1 %971, label %972, label %986

972:                                              ; preds = %965
  %973 = load ptr, ptr %14, align 8, !tbaa !9
  %974 = load i32, ptr %22, align 4, !tbaa !5
  %975 = sub nsw i32 %974, 2
  %976 = sext i32 %975 to i64
  %977 = getelementptr inbounds double, ptr %973, i64 %976
  %978 = load double, ptr %977, align 8, !tbaa !11
  %979 = load ptr, ptr %15, align 8, !tbaa !9
  %980 = load i32, ptr %22, align 4, !tbaa !5
  %981 = sub nsw i32 %980, 2
  %982 = sext i32 %981 to i64
  %983 = getelementptr inbounds double, ptr %979, i64 %982
  %984 = load double, ptr %983, align 8, !tbaa !11
  %985 = fsub double %978, %984
  br label %1070

986:                                              ; preds = %965
  %987 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %988 = getelementptr inbounds %struct.TA_LibcPriv, ptr %987, i32 0, i32 8
  %989 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %988, i64 0, i64 0
  %990 = getelementptr inbounds %struct.TA_CandleSetting, ptr %989, i32 0, i32 1
  %991 = load i32, ptr %990, align 4, !tbaa !15
  %992 = icmp eq i32 %991, 2
  br i1 %992, label %993, label %1067

993:                                              ; preds = %986
  %994 = load ptr, ptr %14, align 8, !tbaa !9
  %995 = load i32, ptr %22, align 4, !tbaa !5
  %996 = sub nsw i32 %995, 2
  %997 = sext i32 %996 to i64
  %998 = getelementptr inbounds double, ptr %994, i64 %997
  %999 = load double, ptr %998, align 8, !tbaa !11
  %1000 = load ptr, ptr %16, align 8, !tbaa !9
  %1001 = load i32, ptr %22, align 4, !tbaa !5
  %1002 = sub nsw i32 %1001, 2
  %1003 = sext i32 %1002 to i64
  %1004 = getelementptr inbounds double, ptr %1000, i64 %1003
  %1005 = load double, ptr %1004, align 8, !tbaa !11
  %1006 = load ptr, ptr %13, align 8, !tbaa !9
  %1007 = load i32, ptr %22, align 4, !tbaa !5
  %1008 = sub nsw i32 %1007, 2
  %1009 = sext i32 %1008 to i64
  %1010 = getelementptr inbounds double, ptr %1006, i64 %1009
  %1011 = load double, ptr %1010, align 8, !tbaa !11
  %1012 = fcmp oge double %1005, %1011
  br i1 %1012, label %1013, label %1020

1013:                                             ; preds = %993
  %1014 = load ptr, ptr %16, align 8, !tbaa !9
  %1015 = load i32, ptr %22, align 4, !tbaa !5
  %1016 = sub nsw i32 %1015, 2
  %1017 = sext i32 %1016 to i64
  %1018 = getelementptr inbounds double, ptr %1014, i64 %1017
  %1019 = load double, ptr %1018, align 8, !tbaa !11
  br label %1027

1020:                                             ; preds = %993
  %1021 = load ptr, ptr %13, align 8, !tbaa !9
  %1022 = load i32, ptr %22, align 4, !tbaa !5
  %1023 = sub nsw i32 %1022, 2
  %1024 = sext i32 %1023 to i64
  %1025 = getelementptr inbounds double, ptr %1021, i64 %1024
  %1026 = load double, ptr %1025, align 8, !tbaa !11
  br label %1027

1027:                                             ; preds = %1020, %1013
  %1028 = phi double [ %1019, %1013 ], [ %1026, %1020 ]
  %1029 = fsub double %999, %1028
  %1030 = load ptr, ptr %16, align 8, !tbaa !9
  %1031 = load i32, ptr %22, align 4, !tbaa !5
  %1032 = sub nsw i32 %1031, 2
  %1033 = sext i32 %1032 to i64
  %1034 = getelementptr inbounds double, ptr %1030, i64 %1033
  %1035 = load double, ptr %1034, align 8, !tbaa !11
  %1036 = load ptr, ptr %13, align 8, !tbaa !9
  %1037 = load i32, ptr %22, align 4, !tbaa !5
  %1038 = sub nsw i32 %1037, 2
  %1039 = sext i32 %1038 to i64
  %1040 = getelementptr inbounds double, ptr %1036, i64 %1039
  %1041 = load double, ptr %1040, align 8, !tbaa !11
  %1042 = fcmp oge double %1035, %1041
  br i1 %1042, label %1043, label %1050

1043:                                             ; preds = %1027
  %1044 = load ptr, ptr %13, align 8, !tbaa !9
  %1045 = load i32, ptr %22, align 4, !tbaa !5
  %1046 = sub nsw i32 %1045, 2
  %1047 = sext i32 %1046 to i64
  %1048 = getelementptr inbounds double, ptr %1044, i64 %1047
  %1049 = load double, ptr %1048, align 8, !tbaa !11
  br label %1057

1050:                                             ; preds = %1027
  %1051 = load ptr, ptr %16, align 8, !tbaa !9
  %1052 = load i32, ptr %22, align 4, !tbaa !5
  %1053 = sub nsw i32 %1052, 2
  %1054 = sext i32 %1053 to i64
  %1055 = getelementptr inbounds double, ptr %1051, i64 %1054
  %1056 = load double, ptr %1055, align 8, !tbaa !11
  br label %1057

1057:                                             ; preds = %1050, %1043
  %1058 = phi double [ %1049, %1043 ], [ %1056, %1050 ]
  %1059 = load ptr, ptr %15, align 8, !tbaa !9
  %1060 = load i32, ptr %22, align 4, !tbaa !5
  %1061 = sub nsw i32 %1060, 2
  %1062 = sext i32 %1061 to i64
  %1063 = getelementptr inbounds double, ptr %1059, i64 %1062
  %1064 = load double, ptr %1063, align 8, !tbaa !11
  %1065 = fsub double %1058, %1064
  %1066 = fadd double %1029, %1065
  br label %1068

1067:                                             ; preds = %986
  br label %1068

1068:                                             ; preds = %1067, %1057
  %1069 = phi double [ %1066, %1057 ], [ 0.000000e+00, %1067 ]
  br label %1070

1070:                                             ; preds = %1068, %972
  %1071 = phi double [ %985, %972 ], [ %1069, %1068 ]
  br label %1072

1072:                                             ; preds = %1070, %950
  %1073 = phi double [ %964, %950 ], [ %1071, %1070 ]
  %1074 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1075 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1074, i32 0, i32 8
  %1076 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1075, i64 0, i64 0
  %1077 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1076, i32 0, i32 1
  %1078 = load i32, ptr %1077, align 4, !tbaa !15
  %1079 = icmp eq i32 %1078, 0
  br i1 %1079, label %1080, label %1093

1080:                                             ; preds = %1072
  %1081 = load ptr, ptr %16, align 8, !tbaa !9
  %1082 = load i32, ptr %25, align 4, !tbaa !5
  %1083 = sext i32 %1082 to i64
  %1084 = getelementptr inbounds double, ptr %1081, i64 %1083
  %1085 = load double, ptr %1084, align 8, !tbaa !11
  %1086 = load ptr, ptr %13, align 8, !tbaa !9
  %1087 = load i32, ptr %25, align 4, !tbaa !5
  %1088 = sext i32 %1087 to i64
  %1089 = getelementptr inbounds double, ptr %1086, i64 %1088
  %1090 = load double, ptr %1089, align 8, !tbaa !11
  %1091 = fsub double %1085, %1090
  %1092 = call double @llvm.fabs.f64(double %1091)
  br label %1188

1093:                                             ; preds = %1072
  %1094 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1095 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1094, i32 0, i32 8
  %1096 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1095, i64 0, i64 0
  %1097 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1096, i32 0, i32 1
  %1098 = load i32, ptr %1097, align 4, !tbaa !15
  %1099 = icmp eq i32 %1098, 1
  br i1 %1099, label %1100, label %1112

1100:                                             ; preds = %1093
  %1101 = load ptr, ptr %14, align 8, !tbaa !9
  %1102 = load i32, ptr %25, align 4, !tbaa !5
  %1103 = sext i32 %1102 to i64
  %1104 = getelementptr inbounds double, ptr %1101, i64 %1103
  %1105 = load double, ptr %1104, align 8, !tbaa !11
  %1106 = load ptr, ptr %15, align 8, !tbaa !9
  %1107 = load i32, ptr %25, align 4, !tbaa !5
  %1108 = sext i32 %1107 to i64
  %1109 = getelementptr inbounds double, ptr %1106, i64 %1108
  %1110 = load double, ptr %1109, align 8, !tbaa !11
  %1111 = fsub double %1105, %1110
  br label %1186

1112:                                             ; preds = %1093
  %1113 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1114 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1113, i32 0, i32 8
  %1115 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1114, i64 0, i64 0
  %1116 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1115, i32 0, i32 1
  %1117 = load i32, ptr %1116, align 4, !tbaa !15
  %1118 = icmp eq i32 %1117, 2
  br i1 %1118, label %1119, label %1183

1119:                                             ; preds = %1112
  %1120 = load ptr, ptr %14, align 8, !tbaa !9
  %1121 = load i32, ptr %25, align 4, !tbaa !5
  %1122 = sext i32 %1121 to i64
  %1123 = getelementptr inbounds double, ptr %1120, i64 %1122
  %1124 = load double, ptr %1123, align 8, !tbaa !11
  %1125 = load ptr, ptr %16, align 8, !tbaa !9
  %1126 = load i32, ptr %25, align 4, !tbaa !5
  %1127 = sext i32 %1126 to i64
  %1128 = getelementptr inbounds double, ptr %1125, i64 %1127
  %1129 = load double, ptr %1128, align 8, !tbaa !11
  %1130 = load ptr, ptr %13, align 8, !tbaa !9
  %1131 = load i32, ptr %25, align 4, !tbaa !5
  %1132 = sext i32 %1131 to i64
  %1133 = getelementptr inbounds double, ptr %1130, i64 %1132
  %1134 = load double, ptr %1133, align 8, !tbaa !11
  %1135 = fcmp oge double %1129, %1134
  br i1 %1135, label %1136, label %1142

1136:                                             ; preds = %1119
  %1137 = load ptr, ptr %16, align 8, !tbaa !9
  %1138 = load i32, ptr %25, align 4, !tbaa !5
  %1139 = sext i32 %1138 to i64
  %1140 = getelementptr inbounds double, ptr %1137, i64 %1139
  %1141 = load double, ptr %1140, align 8, !tbaa !11
  br label %1148

1142:                                             ; preds = %1119
  %1143 = load ptr, ptr %13, align 8, !tbaa !9
  %1144 = load i32, ptr %25, align 4, !tbaa !5
  %1145 = sext i32 %1144 to i64
  %1146 = getelementptr inbounds double, ptr %1143, i64 %1145
  %1147 = load double, ptr %1146, align 8, !tbaa !11
  br label %1148

1148:                                             ; preds = %1142, %1136
  %1149 = phi double [ %1141, %1136 ], [ %1147, %1142 ]
  %1150 = fsub double %1124, %1149
  %1151 = load ptr, ptr %16, align 8, !tbaa !9
  %1152 = load i32, ptr %25, align 4, !tbaa !5
  %1153 = sext i32 %1152 to i64
  %1154 = getelementptr inbounds double, ptr %1151, i64 %1153
  %1155 = load double, ptr %1154, align 8, !tbaa !11
  %1156 = load ptr, ptr %13, align 8, !tbaa !9
  %1157 = load i32, ptr %25, align 4, !tbaa !5
  %1158 = sext i32 %1157 to i64
  %1159 = getelementptr inbounds double, ptr %1156, i64 %1158
  %1160 = load double, ptr %1159, align 8, !tbaa !11
  %1161 = fcmp oge double %1155, %1160
  br i1 %1161, label %1162, label %1168

1162:                                             ; preds = %1148
  %1163 = load ptr, ptr %13, align 8, !tbaa !9
  %1164 = load i32, ptr %25, align 4, !tbaa !5
  %1165 = sext i32 %1164 to i64
  %1166 = getelementptr inbounds double, ptr %1163, i64 %1165
  %1167 = load double, ptr %1166, align 8, !tbaa !11
  br label %1174

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

1174:                                             ; preds = %1168, %1162
  %1175 = phi double [ %1167, %1162 ], [ %1173, %1168 ]
  %1176 = load ptr, ptr %15, align 8, !tbaa !9
  %1177 = load i32, ptr %25, align 4, !tbaa !5
  %1178 = sext i32 %1177 to i64
  %1179 = getelementptr inbounds double, ptr %1176, i64 %1178
  %1180 = load double, ptr %1179, align 8, !tbaa !11
  %1181 = fsub double %1175, %1180
  %1182 = fadd double %1150, %1181
  br label %1184

1183:                                             ; preds = %1112
  br label %1184

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

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

1188:                                             ; preds = %1186, %1080
  %1189 = phi double [ %1092, %1080 ], [ %1187, %1186 ]
  %1190 = fsub double %1073, %1189
  %1191 = load double, ptr %21, align 8, !tbaa !11
  %1192 = fadd double %1191, %1190
  store double %1192, ptr %21, align 8, !tbaa !11
  %1193 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1194 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1193, i32 0, i32 8
  %1195 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1194, i64 0, i64 2
  %1196 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1195, i32 0, i32 1
  %1197 = load i32, ptr %1196, align 4, !tbaa !15
  %1198 = icmp eq i32 %1197, 0
  br i1 %1198, label %1199, label %1214

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

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

1221:                                             ; preds = %1214
  %1222 = load ptr, ptr %14, align 8, !tbaa !9
  %1223 = load i32, ptr %22, align 4, !tbaa !5
  %1224 = sub nsw i32 %1223, 1
  %1225 = sext i32 %1224 to i64
  %1226 = getelementptr inbounds double, ptr %1222, i64 %1225
  %1227 = load double, ptr %1226, align 8, !tbaa !11
  %1228 = load ptr, ptr %15, align 8, !tbaa !9
  %1229 = load i32, ptr %22, align 4, !tbaa !5
  %1230 = sub nsw i32 %1229, 1
  %1231 = sext i32 %1230 to i64
  %1232 = getelementptr inbounds double, ptr %1228, i64 %1231
  %1233 = load double, ptr %1232, align 8, !tbaa !11
  %1234 = fsub double %1227, %1233
  br label %1319

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

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

1262:                                             ; preds = %1242
  %1263 = load ptr, ptr %16, align 8, !tbaa !9
  %1264 = load i32, ptr %22, align 4, !tbaa !5
  %1265 = sub nsw i32 %1264, 1
  %1266 = sext i32 %1265 to i64
  %1267 = getelementptr inbounds double, ptr %1263, i64 %1266
  %1268 = load double, ptr %1267, align 8, !tbaa !11
  br label %1276

1269:                                             ; preds = %1242
  %1270 = load ptr, ptr %13, align 8, !tbaa !9
  %1271 = load i32, ptr %22, align 4, !tbaa !5
  %1272 = sub nsw i32 %1271, 1
  %1273 = sext i32 %1272 to i64
  %1274 = getelementptr inbounds double, ptr %1270, i64 %1273
  %1275 = load double, ptr %1274, align 8, !tbaa !11
  br label %1276

1276:                                             ; preds = %1269, %1262
  %1277 = phi double [ %1268, %1262 ], [ %1275, %1269 ]
  %1278 = fsub double %1248, %1277
  %1279 = load ptr, ptr %16, align 8, !tbaa !9
  %1280 = load i32, ptr %22, align 4, !tbaa !5
  %1281 = sub nsw i32 %1280, 1
  %1282 = sext i32 %1281 to i64
  %1283 = getelementptr inbounds double, ptr %1279, i64 %1282
  %1284 = load double, ptr %1283, align 8, !tbaa !11
  %1285 = load ptr, ptr %13, align 8, !tbaa !9
  %1286 = load i32, ptr %22, align 4, !tbaa !5
  %1287 = sub nsw i32 %1286, 1
  %1288 = sext i32 %1287 to i64
  %1289 = getelementptr inbounds double, ptr %1285, i64 %1288
  %1290 = load double, ptr %1289, align 8, !tbaa !11
  %1291 = fcmp oge double %1284, %1290
  br i1 %1291, label %1292, label %1299

1292:                                             ; preds = %1276
  %1293 = load ptr, ptr %13, align 8, !tbaa !9
  %1294 = load i32, ptr %22, align 4, !tbaa !5
  %1295 = sub nsw i32 %1294, 1
  %1296 = sext i32 %1295 to i64
  %1297 = getelementptr inbounds double, ptr %1293, i64 %1296
  %1298 = load double, ptr %1297, align 8, !tbaa !11
  br label %1306

1299:                                             ; preds = %1276
  %1300 = load ptr, ptr %16, align 8, !tbaa !9
  %1301 = load i32, ptr %22, align 4, !tbaa !5
  %1302 = sub nsw i32 %1301, 1
  %1303 = sext i32 %1302 to i64
  %1304 = getelementptr inbounds double, ptr %1300, i64 %1303
  %1305 = load double, ptr %1304, align 8, !tbaa !11
  br label %1306

1306:                                             ; preds = %1299, %1292
  %1307 = phi double [ %1298, %1292 ], [ %1305, %1299 ]
  %1308 = load ptr, ptr %15, align 8, !tbaa !9
  %1309 = load i32, ptr %22, align 4, !tbaa !5
  %1310 = sub nsw i32 %1309, 1
  %1311 = sext i32 %1310 to i64
  %1312 = getelementptr inbounds double, ptr %1308, i64 %1311
  %1313 = load double, ptr %1312, align 8, !tbaa !11
  %1314 = fsub double %1307, %1313
  %1315 = fadd double %1278, %1314
  br label %1317

1316:                                             ; preds = %1235
  br label %1317

1317:                                             ; preds = %1316, %1306
  %1318 = phi double [ %1315, %1306 ], [ 0.000000e+00, %1316 ]
  br label %1319

1319:                                             ; preds = %1317, %1221
  %1320 = phi double [ %1234, %1221 ], [ %1318, %1317 ]
  br label %1321

1321:                                             ; preds = %1319, %1199
  %1322 = phi double [ %1213, %1199 ], [ %1320, %1319 ]
  %1323 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1324 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1323, i32 0, i32 8
  %1325 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1324, i64 0, i64 2
  %1326 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1325, i32 0, i32 1
  %1327 = load i32, ptr %1326, align 4, !tbaa !15
  %1328 = icmp eq i32 %1327, 0
  br i1 %1328, label %1329, label %1342

1329:                                             ; preds = %1321
  %1330 = load ptr, ptr %16, align 8, !tbaa !9
  %1331 = load i32, ptr %24, align 4, !tbaa !5
  %1332 = sext i32 %1331 to i64
  %1333 = getelementptr inbounds double, ptr %1330, i64 %1332
  %1334 = load double, ptr %1333, align 8, !tbaa !11
  %1335 = load ptr, ptr %13, align 8, !tbaa !9
  %1336 = load i32, ptr %24, align 4, !tbaa !5
  %1337 = sext i32 %1336 to i64
  %1338 = getelementptr inbounds double, ptr %1335, i64 %1337
  %1339 = load double, ptr %1338, align 8, !tbaa !11
  %1340 = fsub double %1334, %1339
  %1341 = call double @llvm.fabs.f64(double %1340)
  br label %1437

1342:                                             ; preds = %1321
  %1343 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1344 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1343, i32 0, i32 8
  %1345 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1344, i64 0, i64 2
  %1346 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1345, i32 0, i32 1
  %1347 = load i32, ptr %1346, align 4, !tbaa !15
  %1348 = icmp eq i32 %1347, 1
  br i1 %1348, label %1349, label %1361

1349:                                             ; preds = %1342
  %1350 = load ptr, ptr %14, align 8, !tbaa !9
  %1351 = load i32, ptr %24, align 4, !tbaa !5
  %1352 = sext i32 %1351 to i64
  %1353 = getelementptr inbounds double, ptr %1350, i64 %1352
  %1354 = load double, ptr %1353, align 8, !tbaa !11
  %1355 = load ptr, ptr %15, align 8, !tbaa !9
  %1356 = load i32, ptr %24, align 4, !tbaa !5
  %1357 = sext i32 %1356 to i64
  %1358 = getelementptr inbounds double, ptr %1355, i64 %1357
  %1359 = load double, ptr %1358, align 8, !tbaa !11
  %1360 = fsub double %1354, %1359
  br label %1435

1361:                                             ; preds = %1342
  %1362 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1363 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1362, i32 0, i32 8
  %1364 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1363, i64 0, i64 2
  %1365 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1364, i32 0, i32 1
  %1366 = load i32, ptr %1365, align 4, !tbaa !15
  %1367 = icmp eq i32 %1366, 2
  br i1 %1367, label %1368, label %1432

1368:                                             ; preds = %1361
  %1369 = load ptr, ptr %14, align 8, !tbaa !9
  %1370 = load i32, ptr %24, align 4, !tbaa !5
  %1371 = sext i32 %1370 to i64
  %1372 = getelementptr inbounds double, ptr %1369, i64 %1371
  %1373 = load double, ptr %1372, align 8, !tbaa !11
  %1374 = load ptr, ptr %16, align 8, !tbaa !9
  %1375 = load i32, ptr %24, align 4, !tbaa !5
  %1376 = sext i32 %1375 to i64
  %1377 = getelementptr inbounds double, ptr %1374, i64 %1376
  %1378 = load double, ptr %1377, align 8, !tbaa !11
  %1379 = load ptr, ptr %13, align 8, !tbaa !9
  %1380 = load i32, ptr %24, align 4, !tbaa !5
  %1381 = sext i32 %1380 to i64
  %1382 = getelementptr inbounds double, ptr %1379, i64 %1381
  %1383 = load double, ptr %1382, align 8, !tbaa !11
  %1384 = fcmp oge double %1378, %1383
  br i1 %1384, label %1385, label %1391

1385:                                             ; preds = %1368
  %1386 = load ptr, ptr %16, align 8, !tbaa !9
  %1387 = load i32, ptr %24, align 4, !tbaa !5
  %1388 = sext i32 %1387 to i64
  %1389 = getelementptr inbounds double, ptr %1386, i64 %1388
  %1390 = load double, ptr %1389, align 8, !tbaa !11
  br label %1397

1391:                                             ; preds = %1368
  %1392 = load ptr, ptr %13, align 8, !tbaa !9
  %1393 = load i32, ptr %24, align 4, !tbaa !5
  %1394 = sext i32 %1393 to i64
  %1395 = getelementptr inbounds double, ptr %1392, i64 %1394
  %1396 = load double, ptr %1395, align 8, !tbaa !11
  br label %1397

1397:                                             ; preds = %1391, %1385
  %1398 = phi double [ %1390, %1385 ], [ %1396, %1391 ]
  %1399 = fsub double %1373, %1398
  %1400 = load ptr, ptr %16, align 8, !tbaa !9
  %1401 = load i32, ptr %24, align 4, !tbaa !5
  %1402 = sext i32 %1401 to i64
  %1403 = getelementptr inbounds double, ptr %1400, i64 %1402
  %1404 = load double, ptr %1403, align 8, !tbaa !11
  %1405 = load ptr, ptr %13, align 8, !tbaa !9
  %1406 = load i32, ptr %24, align 4, !tbaa !5
  %1407 = sext i32 %1406 to i64
  %1408 = getelementptr inbounds double, ptr %1405, i64 %1407
  %1409 = load double, ptr %1408, align 8, !tbaa !11
  %1410 = fcmp oge double %1404, %1409
  br i1 %1410, label %1411, label %1417

1411:                                             ; preds = %1397
  %1412 = load ptr, ptr %13, align 8, !tbaa !9
  %1413 = load i32, ptr %24, align 4, !tbaa !5
  %1414 = sext i32 %1413 to i64
  %1415 = getelementptr inbounds double, ptr %1412, i64 %1414
  %1416 = load double, ptr %1415, align 8, !tbaa !11
  br label %1423

1417:                                             ; preds = %1397
  %1418 = load ptr, ptr %16, align 8, !tbaa !9
  %1419 = load i32, ptr %24, align 4, !tbaa !5
  %1420 = sext i32 %1419 to i64
  %1421 = getelementptr inbounds double, ptr %1418, i64 %1420
  %1422 = load double, ptr %1421, align 8, !tbaa !11
  br label %1423

1423:                                             ; preds = %1417, %1411
  %1424 = phi double [ %1416, %1411 ], [ %1422, %1417 ]
  %1425 = load ptr, ptr %15, align 8, !tbaa !9
  %1426 = load i32, ptr %24, align 4, !tbaa !5
  %1427 = sext i32 %1426 to i64
  %1428 = getelementptr inbounds double, ptr %1425, i64 %1427
  %1429 = load double, ptr %1428, align 8, !tbaa !11
  %1430 = fsub double %1424, %1429
  %1431 = fadd double %1399, %1430
  br label %1433

1432:                                             ; preds = %1361
  br label %1433

1433:                                             ; preds = %1432, %1423
  %1434 = phi double [ %1431, %1423 ], [ 0.000000e+00, %1432 ]
  br label %1435

1435:                                             ; preds = %1433, %1349
  %1436 = phi double [ %1360, %1349 ], [ %1434, %1433 ]
  br label %1437

1437:                                             ; preds = %1435, %1329
  %1438 = phi double [ %1341, %1329 ], [ %1436, %1435 ]
  %1439 = fsub double %1322, %1438
  %1440 = load double, ptr %20, align 8, !tbaa !11
  %1441 = fadd double %1440, %1439
  store double %1441, ptr %20, align 8, !tbaa !11
  %1442 = load i32, ptr %22, align 4, !tbaa !5
  %1443 = add nsw i32 %1442, 1
  store i32 %1443, ptr %22, align 4, !tbaa !5
  %1444 = load i32, ptr %25, align 4, !tbaa !5
  %1445 = add nsw i32 %1444, 1
  store i32 %1445, ptr %25, align 4, !tbaa !5
  %1446 = load i32, ptr %24, align 4, !tbaa !5
  %1447 = add nsw i32 %1446, 1
  store i32 %1447, ptr %24, align 4, !tbaa !5
  br label %1448

1448:                                             ; preds = %1437
  %1449 = load i32, ptr %22, align 4, !tbaa !5
  %1450 = load i32, ptr %12, align 4, !tbaa !5
  %1451 = icmp sle i32 %1449, %1450
  br i1 %1451, label %344, label %1452, !llvm.loop !20

1452:                                             ; preds = %1448
  %1453 = load i32, ptr %23, align 4, !tbaa !5
  %1454 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 %1453, ptr %1454, align 4, !tbaa !5
  %1455 = load i32, ptr %11, align 4, !tbaa !5
  %1456 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 %1455, ptr %1456, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %27, align 4
  br label %1457

1457:                                             ; preds = %1452, %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
  %1458 = load i32, ptr %10, align 4
  ret i32 %1458
}

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

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

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

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

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

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

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

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

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

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

.lr.ph.split.us447:                               ; preds = %.lr.ph.split.us447.preheader, %.lr.ph.split.us447
  %indvars.iv484 = phi i64 [ %40, %.lr.ph.split.us447.preheader ], [ %indvars.iv.next485, %.lr.ph.split.us447 ]
  %.0348445.us449 = phi double [ 0.000000e+00, %.lr.ph.split.us447.preheader ], [ %57, %.lr.ph.split.us447 ]
  %52 = getelementptr inbounds double, ptr %3, i64 %indvars.iv484
  %53 = load double, ptr %52, align 8, !tbaa !15
  %54 = getelementptr inbounds double, ptr %4, i64 %indvars.iv484
  %55 = load double, ptr %54, align 8, !tbaa !15
  %56 = fsub double %53, %55
  %57 = fadd double %.0348445.us449, %56
  %indvars.iv.next485 = add nsw i64 %indvars.iv484, 1
  %58 = icmp slt i64 %indvars.iv.next485, %41
  br i1 %58, label %.lr.ph.split.us447, label %.preheader444, !llvm.loop !16

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

.preheader444:                                    ; preds = %.lr.ph.split.us452, %.lr.ph.split.us447, %.lr.ph.split.us, %.lr.ph, %25
  %.0348.lcssa = phi double [ 0.000000e+00, %25 ], [ 0.000000e+00, %.lr.ph ], [ %50, %.lr.ph.split.us ], [ %57, %.lr.ph.split.us447 ], [ %72, %.lr.ph.split.us452 ]
  %74 = icmp sgt i32 %33, 0
  br i1 %74, label %.lr.ph459, label %.preheader

.lr.ph459:                                        ; preds = %.preheader444
  %75 = getelementptr inbounds i8, ptr %27, i64 260
  %76 = load i32, ptr %75, align 4, !tbaa !14
  switch i32 %76, label %.preheader [
    i32 0, label %.lr.ph459.split.us.preheader
    i32 1, label %.lr.ph459.split.us462.preheader
    i32 2, label %.lr.ph459.split.us467.preheader
  ]

.lr.ph459.split.us467.preheader:                  ; preds = %.lr.ph459
  %77 = sext i32 %34 to i64
  %78 = sext i32 %31 to i64
  br label %.lr.ph459.split.us467

.lr.ph459.split.us462.preheader:                  ; preds = %.lr.ph459
  %79 = sext i32 %34 to i64
  %80 = sext i32 %31 to i64
  br label %.lr.ph459.split.us462

.lr.ph459.split.us.preheader:                     ; preds = %.lr.ph459
  %81 = sext i32 %34 to i64
  %82 = sext i32 %31 to i64
  br label %.lr.ph459.split.us

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

.lr.ph459.split.us462:                            ; preds = %.lr.ph459.split.us462.preheader, %.lr.ph459.split.us462
  %indvars.iv493 = phi i64 [ %79, %.lr.ph459.split.us462.preheader ], [ %indvars.iv.next494, %.lr.ph459.split.us462 ]
  %.0350457.us464 = phi double [ 0.000000e+00, %.lr.ph459.split.us462.preheader ], [ %96, %.lr.ph459.split.us462 ]
  %91 = getelementptr inbounds double, ptr %3, i64 %indvars.iv493
  %92 = load double, ptr %91, align 8, !tbaa !15
  %93 = getelementptr inbounds double, ptr %4, i64 %indvars.iv493
  %94 = load double, ptr %93, align 8, !tbaa !15
  %95 = fsub double %92, %94
  %96 = fadd double %.0350457.us464, %95
  %indvars.iv.next494 = add nsw i64 %indvars.iv493, 1
  %97 = icmp slt i64 %indvars.iv.next494, %80
  br i1 %97, label %.lr.ph459.split.us462, label %.preheader, !llvm.loop !18

.lr.ph459.split.us467:                            ; preds = %.lr.ph459.split.us467.preheader, %.lr.ph459.split.us467
  %indvars.iv490 = phi i64 [ %77, %.lr.ph459.split.us467.preheader ], [ %indvars.iv.next491, %.lr.ph459.split.us467 ]
  %.0350457.us469 = phi double [ 0.000000e+00, %.lr.ph459.split.us467.preheader ], [ %111, %.lr.ph459.split.us467 ]
  %98 = getelementptr inbounds double, ptr %3, i64 %indvars.iv490
  %99 = load double, ptr %98, align 8, !tbaa !15
  %100 = getelementptr inbounds double, ptr %5, i64 %indvars.iv490
  %101 = load double, ptr %100, align 8, !tbaa !15
  %102 = getelementptr inbounds double, ptr %2, i64 %indvars.iv490
  %103 = load double, ptr %102, align 8, !tbaa !15
  %104 = fcmp ult double %101, %103
  %.418.us = select i1 %104, double %103, double %101
  %105 = fsub double %99, %.418.us
  %106 = select i1 %104, double %101, double %103
  %107 = getelementptr inbounds double, ptr %4, i64 %indvars.iv490
  %108 = load double, ptr %107, align 8, !tbaa !15
  %109 = fsub double %106, %108
  %110 = fadd double %105, %109
  %111 = fadd double %.0350457.us469, %110
  %indvars.iv.next491 = add nsw i64 %indvars.iv490, 1
  %112 = icmp slt i64 %indvars.iv.next491, %78
  br i1 %112, label %.lr.ph459.split.us467, label %.preheader, !llvm.loop !18

.preheader:                                       ; preds = %.lr.ph459.split.us467, %.lr.ph459.split.us462, %.lr.ph459.split.us, %.lr.ph459, %.preheader444
  %.0350.lcssa = phi double [ 0.000000e+00, %.preheader444 ], [ 0.000000e+00, %.lr.ph459 ], [ %89, %.lr.ph459.split.us ], [ %96, %.lr.ph459.split.us462 ], [ %111, %.lr.ph459.split.us467 ]
  %113 = getelementptr inbounds i8, ptr %27, i64 224
  %114 = load double, ptr %113, align 8, !tbaa !19
  %115 = getelementptr inbounds i8, ptr %27, i64 212
  %116 = getelementptr inbounds i8, ptr %27, i64 260
  %117 = getelementptr inbounds i8, ptr %27, i64 272
  %118 = sext i32 %22 to i64
  %119 = zext nneg i32 %0 to i64
  %smax = tail call i64 @llvm.smax.i64(i64 %118, i64 %119)
  %120 = sext i32 %1 to i64
  %121 = sext i32 %34 to i64
  %122 = sext i32 %30 to i64
  br label %123

123:                                              ; preds = %.preheader, %326
  %indvars.iv505 = phi i64 [ %122, %.preheader ], [ %indvars.iv.next506, %326 ]
  %indvars.iv503 = phi i64 [ %121, %.preheader ], [ %indvars.iv.next504, %326 ]
  %indvars.iv501 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next502, %326 ]
  %indvars.iv499 = phi i64 [ %smax, %.preheader ], [ %indvars.iv.next500, %326 ]
  %.1351 = phi double [ %.0350.lcssa, %.preheader ], [ %330, %326 ]
  %.1349 = phi double [ %.0348.lcssa, %.preheader ], [ %264, %326 ]
  %124 = add nsw i64 %indvars.iv499, -2
  %125 = getelementptr inbounds double, ptr %5, i64 %124
  %126 = load double, ptr %125, align 8, !tbaa !15
  %127 = getelementptr inbounds double, ptr %2, i64 %124
  %128 = load double, ptr %127, align 8, !tbaa !15
  %129 = fsub double %126, %128
  %130 = tail call double @llvm.fabs.f64(double %129)
  %131 = load i32, ptr %28, align 8, !tbaa !11
  %.not414 = icmp eq i32 %131, 0
  br i1 %.not414, label %132, label %149

132:                                              ; preds = %123
  %133 = load i32, ptr %115, align 4, !tbaa !14
  switch i32 %133, label %.fold.split [
    i32 0, label %.thread
    i32 1, label %134
    i32 2, label %.thread515
  ]

134:                                              ; preds = %132
  %135 = getelementptr inbounds double, ptr %3, i64 %124
  %136 = load double, ptr %135, align 8, !tbaa !15
  %137 = getelementptr inbounds double, ptr %4, i64 %124
  %138 = load double, ptr %137, align 8, !tbaa !15
  %139 = fsub double %136, %138
  br label %.thread

.thread515:                                       ; preds = %132
  %140 = getelementptr inbounds double, ptr %3, i64 %124
  %141 = load double, ptr %140, align 8, !tbaa !15
  %142 = fcmp ult double %126, %128
  %.419 = select i1 %142, double %128, double %126
  %143 = fsub double %141, %.419
  %144 = select i1 %142, double %126, double %128
  %145 = getelementptr inbounds double, ptr %4, i64 %124
  %146 = load double, ptr %145, align 8, !tbaa !15
  %147 = fsub double %144, %146
  %148 = fadd double %143, %147
  br label %.thread

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

149:                                              ; preds = %123
  %150 = sitofp i32 %131 to double
  %151 = fdiv double %.1349, %150
  %.pre = load i32, ptr %115, align 4, !tbaa !14
  %.pre.fr = freeze i32 %.pre
  %152 = icmp eq i32 %.pre.fr, 2
  br i1 %152, label %153, label %.thread

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

.thread:                                          ; preds = %.fold.split, %132, %134, %.thread515, %149, %153
  %.pn = phi double [ %151, %149 ], [ %148, %.thread515 ], [ %151, %153 ], [ 0.000000e+00, %.fold.split ], [ %130, %132 ], [ %139, %134 ]
  %154 = phi double [ 1.000000e+00, %149 ], [ 2.000000e+00, %.thread515 ], [ 2.000000e+00, %153 ], [ 1.000000e+00, %.fold.split ], [ 1.000000e+00, %132 ], [ 1.000000e+00, %134 ]
  %155 = fmul double %114, %.pn
  %156 = fdiv double %155, %154
  %157 = fcmp ogt double %130, %156
  br i1 %157, label %158, label %219

158:                                              ; preds = %.thread
  %159 = add nsw i64 %indvars.iv499, -1
  %160 = getelementptr inbounds double, ptr %5, i64 %159
  %161 = load double, ptr %160, align 8, !tbaa !15
  %162 = getelementptr inbounds double, ptr %2, i64 %159
  %163 = load double, ptr %162, align 8, !tbaa !15
  %164 = fsub double %161, %163
  %165 = tail call double @llvm.fabs.f64(double %164)
  %166 = load double, ptr %117, align 8, !tbaa !19
  %167 = load i32, ptr %32, align 8, !tbaa !11
  %.not415 = icmp eq i32 %167, 0
  br i1 %.not415, label %168, label %185

168:                                              ; preds = %158
  %169 = load i32, ptr %116, align 4, !tbaa !14
  switch i32 %169, label %.fold.split420 [
    i32 0, label %.thread520
    i32 1, label %170
    i32 2, label %.thread522
  ]

170:                                              ; preds = %168
  %171 = getelementptr inbounds double, ptr %3, i64 %159
  %172 = load double, ptr %171, align 8, !tbaa !15
  %173 = getelementptr inbounds double, ptr %4, i64 %159
  %174 = load double, ptr %173, align 8, !tbaa !15
  %175 = fsub double %172, %174
  br label %.thread520

.thread522:                                       ; preds = %168
  %176 = getelementptr inbounds double, ptr %3, i64 %159
  %177 = load double, ptr %176, align 8, !tbaa !15
  %178 = fcmp ult double %161, %163
  %.421 = select i1 %178, double %163, double %161
  %179 = fsub double %177, %.421
  %180 = select i1 %178, double %161, double %163
  %181 = getelementptr inbounds double, ptr %4, i64 %159
  %182 = load double, ptr %181, align 8, !tbaa !15
  %183 = fsub double %180, %182
  %184 = fadd double %179, %183
  br label %.thread520

.fold.split420:                                   ; preds = %168
  br label %.thread520

185:                                              ; preds = %158
  %186 = sitofp i32 %167 to double
  %187 = fdiv double %.1351, %186
  %.pre512 = load i32, ptr %116, align 4, !tbaa !14
  %.pre512.fr = freeze i32 %.pre512
  %188 = icmp eq i32 %.pre512.fr, 2
  br i1 %188, label %189, label %.thread520

189:                                              ; preds = %185
  br label %.thread520

.thread520:                                       ; preds = %.fold.split420, %168, %170, %.thread522, %185, %189
  %.pn534 = phi double [ %187, %185 ], [ %184, %.thread522 ], [ %187, %189 ], [ 0.000000e+00, %.fold.split420 ], [ %165, %168 ], [ %175, %170 ]
  %190 = phi double [ 1.000000e+00, %185 ], [ 2.000000e+00, %.thread522 ], [ 2.000000e+00, %189 ], [ 1.000000e+00, %.fold.split420 ], [ 1.000000e+00, %168 ], [ 1.000000e+00, %170 ]
  %191 = fmul double %166, %.pn534
  %192 = fdiv double %191, %190
  %193 = fcmp ugt double %165, %192
  br i1 %193, label %219, label %194

194:                                              ; preds = %.thread520
  %195 = fcmp ogt double %161, %163
  %.422 = select i1 %195, double %161, double %163
  %196 = fcmp ogt double %126, %128
  %197 = select i1 %196, double %126, double %128
  %198 = fcmp olt double %.422, %197
  br i1 %198, label %199, label %219

199:                                              ; preds = %194
  %200 = fcmp olt double %161, %163
  %.423 = select i1 %200, double %161, double %163
  %201 = fcmp olt double %126, %128
  %202 = select i1 %201, double %126, double %128
  %203 = fcmp ogt double %.423, %202
  br i1 %203, label %204, label %219

204:                                              ; preds = %199
  %205 = fcmp ult double %126, %128
  %206 = getelementptr inbounds double, ptr %5, i64 %indvars.iv499
  %207 = load double, ptr %206, align 8, !tbaa !15
  %208 = getelementptr inbounds double, ptr %2, i64 %indvars.iv499
  %209 = load double, ptr %208, align 8, !tbaa !15
  br i1 %205, label %213, label %210

210:                                              ; preds = %204
  %211 = fcmp ult double %207, %209
  %212 = fcmp olt double %207, %128
  %or.cond424 = and i1 %212, %211
  br i1 %or.cond424, label %216, label %219

213:                                              ; preds = %204
  %214 = fcmp oge double %207, %209
  %215 = fcmp ogt double %207, %128
  %or.cond425 = and i1 %215, %214
  br i1 %or.cond425, label %216, label %219

216:                                              ; preds = %213, %210
  %217 = fcmp oge double %126, %128
  %218 = select i1 %217, i32 -100, i32 100
  br label %219

219:                                              ; preds = %.thread, %.thread520, %194, %199, %213, %210, %216
  %.sink = phi i32 [ %218, %216 ], [ 0, %210 ], [ 0, %213 ], [ 0, %199 ], [ 0, %194 ], [ 0, %.thread520 ], [ 0, %.thread ]
  %220 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv501
  store i32 %.sink, ptr %220, align 4, !tbaa !5
  %indvars.iv.next502 = add nuw nsw i64 %indvars.iv501, 1
  %221 = load i32, ptr %115, align 4, !tbaa !14
  switch i32 %221, label %260 [
    i32 0, label %.thread431
    i32 1, label %.thread432
    i32 2, label %.thread433
  ]

.thread432:                                       ; preds = %219
  %222 = getelementptr inbounds double, ptr %3, i64 %124
  %223 = load double, ptr %222, align 8, !tbaa !15
  %224 = getelementptr inbounds double, ptr %4, i64 %124
  %225 = load double, ptr %224, align 8, !tbaa !15
  %226 = fsub double %223, %225
  %227 = getelementptr inbounds double, ptr %3, i64 %indvars.iv505
  %228 = load double, ptr %227, align 8, !tbaa !15
  %229 = getelementptr inbounds double, ptr %4, i64 %indvars.iv505
  %230 = load double, ptr %229, align 8, !tbaa !15
  %231 = fsub double %228, %230
  br label %260

.thread433:                                       ; preds = %219
  %232 = getelementptr inbounds double, ptr %3, i64 %124
  %233 = load double, ptr %232, align 8, !tbaa !15
  %234 = fcmp ult double %126, %128
  %.426 = select i1 %234, double %128, double %126
  %235 = fsub double %233, %.426
  %236 = select i1 %234, double %126, double %128
  %237 = getelementptr inbounds double, ptr %4, i64 %124
  %238 = load double, ptr %237, align 8, !tbaa !15
  %239 = fsub double %236, %238
  %240 = fadd double %235, %239
  %241 = getelementptr inbounds double, ptr %3, i64 %indvars.iv505
  %242 = load double, ptr %241, align 8, !tbaa !15
  %243 = getelementptr inbounds double, ptr %5, i64 %indvars.iv505
  %244 = load double, ptr %243, align 8, !tbaa !15
  %245 = getelementptr inbounds double, ptr %2, i64 %indvars.iv505
  %246 = load double, ptr %245, align 8, !tbaa !15
  %247 = fcmp ult double %244, %246
  %.427 = select i1 %247, double %246, double %244
  %248 = fsub double %242, %.427
  %249 = select i1 %247, double %244, double %246
  %250 = getelementptr inbounds double, ptr %4, i64 %indvars.iv505
  %251 = load double, ptr %250, align 8, !tbaa !15
  %252 = fsub double %249, %251
  %253 = fadd double %248, %252
  br label %260

.thread431:                                       ; preds = %219
  %254 = getelementptr inbounds double, ptr %5, i64 %indvars.iv505
  %255 = load double, ptr %254, align 8, !tbaa !15
  %256 = getelementptr inbounds double, ptr %2, i64 %indvars.iv505
  %257 = load double, ptr %256, align 8, !tbaa !15
  %258 = fsub double %255, %257
  %259 = tail call double @llvm.fabs.f64(double %258)
  br label %260

260:                                              ; preds = %219, %.thread432, %.thread433, %.thread431
  %261 = phi double [ %130, %.thread431 ], [ %226, %.thread432 ], [ %240, %.thread433 ], [ 0.000000e+00, %219 ]
  %262 = phi double [ %259, %.thread431 ], [ %231, %.thread432 ], [ %253, %.thread433 ], [ 0.000000e+00, %219 ]
  %263 = fsub double %261, %262
  %264 = fadd double %.1349, %263
  %265 = load i32, ptr %116, align 4, !tbaa !14
  switch i32 %265, label %326 [
    i32 0, label %.thread434
    i32 1, label %.thread435
    i32 2, label %.thread436
  ]

.thread434:                                       ; preds = %260
  %266 = add nsw i64 %indvars.iv499, -1
  %267 = getelementptr inbounds double, ptr %5, i64 %266
  %268 = load double, ptr %267, align 8, !tbaa !15
  %269 = getelementptr inbounds double, ptr %2, i64 %266
  %270 = load double, ptr %269, align 8, !tbaa !15
  %271 = getelementptr inbounds double, ptr %5, i64 %indvars.iv503
  %272 = load double, ptr %271, align 8, !tbaa !15
  %273 = getelementptr inbounds double, ptr %2, i64 %indvars.iv503
  %274 = load double, ptr %273, align 8, !tbaa !15
  %275 = insertelement <2 x double> poison, double %268, i64 0
  %276 = insertelement <2 x double> %275, double %272, i64 1
  %277 = insertelement <2 x double> poison, double %270, i64 0
  %278 = insertelement <2 x double> %277, double %274, i64 1
  %279 = fsub <2 x double> %276, %278
  %280 = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %279)
  br label %326

.thread435:                                       ; preds = %260
  %281 = add nsw i64 %indvars.iv499, -1
  %282 = getelementptr inbounds double, ptr %3, i64 %281
  %283 = load double, ptr %282, align 8, !tbaa !15
  %284 = getelementptr inbounds double, ptr %4, i64 %281
  %285 = load double, ptr %284, align 8, !tbaa !15
  %286 = getelementptr inbounds double, ptr %3, i64 %indvars.iv503
  %287 = load double, ptr %286, align 8, !tbaa !15
  %288 = getelementptr inbounds double, ptr %4, i64 %indvars.iv503
  %289 = load double, ptr %288, align 8, !tbaa !15
  %290 = insertelement <2 x double> poison, double %283, i64 0
  %291 = insertelement <2 x double> %290, double %287, i64 1
  %292 = insertelement <2 x double> poison, double %285, i64 0
  %293 = insertelement <2 x double> %292, double %289, i64 1
  %294 = fsub <2 x double> %291, %293
  br label %326

.thread436:                                       ; preds = %260
  %295 = add nsw i64 %indvars.iv499, -1
  %296 = getelementptr inbounds double, ptr %3, i64 %295
  %297 = load double, ptr %296, align 8, !tbaa !15
  %298 = getelementptr inbounds double, ptr %5, i64 %295
  %299 = load double, ptr %298, align 8, !tbaa !15
  %300 = getelementptr inbounds double, ptr %2, i64 %295
  %301 = load double, ptr %300, align 8, !tbaa !15
  %302 = getelementptr inbounds double, ptr %4, i64 %295
  %303 = load double, ptr %302, align 8, !tbaa !15
  %304 = getelementptr inbounds double, ptr %3, i64 %indvars.iv503
  %305 = load double, ptr %304, align 8, !tbaa !15
  %306 = getelementptr inbounds double, ptr %5, i64 %indvars.iv503
  %307 = load double, ptr %306, align 8, !tbaa !15
  %308 = getelementptr inbounds double, ptr %2, i64 %indvars.iv503
  %309 = load double, ptr %308, align 8, !tbaa !15
  %310 = getelementptr inbounds double, ptr %4, i64 %indvars.iv503
  %311 = load double, ptr %310, align 8, !tbaa !15
  %312 = insertelement <2 x double> poison, double %299, i64 0
  %313 = insertelement <2 x double> %312, double %307, i64 1
  %314 = insertelement <2 x double> poison, double %301, i64 0
  %315 = insertelement <2 x double> %314, double %309, i64 1
  %316 = fcmp ult <2 x double> %313, %315
  %317 = select <2 x i1> %316, <2 x double> %315, <2 x double> %313
  %318 = insertelement <2 x double> poison, double %297, i64 0
  %319 = insertelement <2 x double> %318, double %305, i64 1
  %320 = fsub <2 x double> %319, %317
  %321 = select <2 x i1> %316, <2 x double> %313, <2 x double> %315
  %322 = insertelement <2 x double> poison, double %303, i64 0
  %323 = insertelement <2 x double> %322, double %311, i64 1
  %324 = fsub <2 x double> %321, %323
  %325 = fadd <2 x double> %320, %324
  br label %326

326:                                              ; preds = %260, %.thread435, %.thread436, %.thread434
  %327 = phi <2 x double> [ %280, %.thread434 ], [ %294, %.thread435 ], [ %325, %.thread436 ], [ zeroinitializer, %260 ]
  %shift = shufflevector <2 x double> %327, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %328 = fsub <2 x double> %327, %shift
  %329 = extractelement <2 x double> %328, i64 0
  %330 = fadd double %.1351, %329
  %indvars.iv.next500 = add nuw nsw i64 %indvars.iv499, 1
  %indvars.iv.next506 = add nsw i64 %indvars.iv505, 1
  %indvars.iv.next504 = add nsw i64 %indvars.iv503, 1
  %.not416.not = icmp slt i64 %indvars.iv499, %120
  br i1 %.not416.not, label %123, label %331, !llvm.loop !20

331:                                              ; preds = %326
  %332 = trunc nuw i64 %indvars.iv.next502 to i32
  store i32 %332, ptr %7, align 4, !tbaa !5
  store i32 %spec.select, ptr %6, align 4, !tbaa !5
  br label %333

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