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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

214:                                              ; preds = %133
  br label %215

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

355:                                              ; preds = %274
  br label %356

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

545:                                              ; preds = %464
  br label %546

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

740:                                              ; preds = %733, %726
  %741 = phi double [ %732, %726 ], [ %739, %733 ]
  %742 = load ptr, ptr %15, align 8, !tbaa !9
  %743 = load i32, ptr %22, align 4, !tbaa !5
  %744 = sub nsw i32 %743, 1
  %745 = sext i32 %744 to i64
  %746 = getelementptr inbounds double, ptr %742, i64 %745
  %747 = load double, ptr %746, align 8, !tbaa !11
  %748 = fsub double %741, %747
  %749 = fadd double %712, %748
  br label %751

750:                                              ; preds = %669
  br label %751

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

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

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

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

771:                                              ; preds = %757
  %772 = load ptr, ptr %16, align 8, !tbaa !9
  %773 = load i32, ptr %22, align 4, !tbaa !5
  %774 = sext i32 %773 to i64
  %775 = getelementptr inbounds double, ptr %772, i64 %774
  %776 = load double, ptr %775, align 8, !tbaa !11
  %777 = load ptr, ptr %16, align 8, !tbaa !9
  %778 = load i32, ptr %22, align 4, !tbaa !5
  %779 = sub nsw i32 %778, 1
  %780 = sext i32 %779 to i64
  %781 = getelementptr inbounds double, ptr %777, i64 %780
  %782 = load double, ptr %781, align 8, !tbaa !11
  %783 = load ptr, ptr %16, align 8, !tbaa !9
  %784 = load i32, ptr %22, align 4, !tbaa !5
  %785 = sub nsw i32 %784, 1
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds double, ptr %783, i64 %786
  %788 = load double, ptr %787, align 8, !tbaa !11
  %789 = load ptr, ptr %13, align 8, !tbaa !9
  %790 = load i32, ptr %22, align 4, !tbaa !5
  %791 = sub nsw i32 %790, 1
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds double, ptr %789, i64 %792
  %794 = load double, ptr %793, align 8, !tbaa !11
  %795 = fsub double %788, %794
  %796 = call double @llvm.fabs.f64(double %795)
  %797 = call double @llvm.fmuladd.f64(double %796, double 5.000000e-01, double %782)
  %798 = fcmp ole double %776, %797
  br i1 %798, label %799, label %805

799:                                              ; preds = %771
  %800 = load ptr, ptr %19, align 8, !tbaa !9
  %801 = load i32, ptr %23, align 4, !tbaa !5
  %802 = add nsw i32 %801, 1
  store i32 %802, ptr %23, align 4, !tbaa !5
  %803 = sext i32 %801 to i64
  %804 = getelementptr inbounds i32, ptr %800, i64 %803
  store i32 -100, ptr %804, align 4, !tbaa !5
  br label %811

805:                                              ; preds = %771, %757, %580, %565, %552, %368
  %806 = load ptr, ptr %19, align 8, !tbaa !9
  %807 = load i32, ptr %23, align 4, !tbaa !5
  %808 = add nsw i32 %807, 1
  store i32 %808, ptr %23, align 4, !tbaa !5
  %809 = sext i32 %807 to i64
  %810 = getelementptr inbounds i32, ptr %806, i64 %809
  store i32 0, ptr %810, align 4, !tbaa !5
  br label %811

811:                                              ; preds = %805, %799
  %812 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %813 = getelementptr inbounds %struct.TA_LibcPriv, ptr %812, i32 0, i32 8
  %814 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %813, i64 0, i64 10
  %815 = getelementptr inbounds %struct.TA_CandleSetting, ptr %814, i32 0, i32 1
  %816 = load i32, ptr %815, align 4, !tbaa !15
  %817 = icmp eq i32 %816, 0
  br i1 %817, label %818, label %833

818:                                              ; preds = %811
  %819 = load ptr, ptr %16, align 8, !tbaa !9
  %820 = load i32, ptr %22, align 4, !tbaa !5
  %821 = sub nsw i32 %820, 1
  %822 = sext i32 %821 to i64
  %823 = getelementptr inbounds double, ptr %819, i64 %822
  %824 = load double, ptr %823, align 8, !tbaa !11
  %825 = load ptr, ptr %13, align 8, !tbaa !9
  %826 = load i32, ptr %22, align 4, !tbaa !5
  %827 = sub nsw i32 %826, 1
  %828 = sext i32 %827 to i64
  %829 = getelementptr inbounds double, ptr %825, i64 %828
  %830 = load double, ptr %829, align 8, !tbaa !11
  %831 = fsub double %824, %830
  %832 = call double @llvm.fabs.f64(double %831)
  br label %940

833:                                              ; preds = %811
  %834 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %835 = getelementptr inbounds %struct.TA_LibcPriv, ptr %834, i32 0, i32 8
  %836 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %835, i64 0, i64 10
  %837 = getelementptr inbounds %struct.TA_CandleSetting, ptr %836, i32 0, i32 1
  %838 = load i32, ptr %837, align 4, !tbaa !15
  %839 = icmp eq i32 %838, 1
  br i1 %839, label %840, label %854

840:                                              ; preds = %833
  %841 = load ptr, ptr %14, align 8, !tbaa !9
  %842 = load i32, ptr %22, align 4, !tbaa !5
  %843 = sub nsw i32 %842, 1
  %844 = sext i32 %843 to i64
  %845 = getelementptr inbounds double, ptr %841, i64 %844
  %846 = load double, ptr %845, align 8, !tbaa !11
  %847 = load ptr, ptr %15, align 8, !tbaa !9
  %848 = load i32, ptr %22, align 4, !tbaa !5
  %849 = sub nsw i32 %848, 1
  %850 = sext i32 %849 to i64
  %851 = getelementptr inbounds double, ptr %847, i64 %850
  %852 = load double, ptr %851, align 8, !tbaa !11
  %853 = fsub double %846, %852
  br label %938

854:                                              ; preds = %833
  %855 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %856 = getelementptr inbounds %struct.TA_LibcPriv, ptr %855, i32 0, i32 8
  %857 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %856, i64 0, i64 10
  %858 = getelementptr inbounds %struct.TA_CandleSetting, ptr %857, i32 0, i32 1
  %859 = load i32, ptr %858, align 4, !tbaa !15
  %860 = icmp eq i32 %859, 2
  br i1 %860, label %861, label %935

861:                                              ; preds = %854
  %862 = load ptr, ptr %14, align 8, !tbaa !9
  %863 = load i32, ptr %22, align 4, !tbaa !5
  %864 = sub nsw i32 %863, 1
  %865 = sext i32 %864 to i64
  %866 = getelementptr inbounds double, ptr %862, i64 %865
  %867 = load double, ptr %866, align 8, !tbaa !11
  %868 = load ptr, ptr %16, align 8, !tbaa !9
  %869 = load i32, ptr %22, align 4, !tbaa !5
  %870 = sub nsw i32 %869, 1
  %871 = sext i32 %870 to i64
  %872 = getelementptr inbounds double, ptr %868, i64 %871
  %873 = load double, ptr %872, align 8, !tbaa !11
  %874 = load ptr, ptr %13, align 8, !tbaa !9
  %875 = load i32, ptr %22, align 4, !tbaa !5
  %876 = sub nsw i32 %875, 1
  %877 = sext i32 %876 to i64
  %878 = getelementptr inbounds double, ptr %874, i64 %877
  %879 = load double, ptr %878, align 8, !tbaa !11
  %880 = fcmp oge double %873, %879
  br i1 %880, label %881, label %888

881:                                              ; preds = %861
  %882 = load ptr, ptr %16, align 8, !tbaa !9
  %883 = load i32, ptr %22, align 4, !tbaa !5
  %884 = sub nsw i32 %883, 1
  %885 = sext i32 %884 to i64
  %886 = getelementptr inbounds double, ptr %882, i64 %885
  %887 = load double, ptr %886, align 8, !tbaa !11
  br label %895

888:                                              ; preds = %861
  %889 = load ptr, ptr %13, align 8, !tbaa !9
  %890 = load i32, ptr %22, align 4, !tbaa !5
  %891 = sub nsw i32 %890, 1
  %892 = sext i32 %891 to i64
  %893 = getelementptr inbounds double, ptr %889, i64 %892
  %894 = load double, ptr %893, align 8, !tbaa !11
  br label %895

895:                                              ; preds = %888, %881
  %896 = phi double [ %887, %881 ], [ %894, %888 ]
  %897 = fsub double %867, %896
  %898 = load ptr, ptr %16, align 8, !tbaa !9
  %899 = load i32, ptr %22, align 4, !tbaa !5
  %900 = sub nsw i32 %899, 1
  %901 = sext i32 %900 to i64
  %902 = getelementptr inbounds double, ptr %898, i64 %901
  %903 = load double, ptr %902, align 8, !tbaa !11
  %904 = load ptr, ptr %13, align 8, !tbaa !9
  %905 = load i32, ptr %22, align 4, !tbaa !5
  %906 = sub nsw i32 %905, 1
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds double, ptr %904, i64 %907
  %909 = load double, ptr %908, align 8, !tbaa !11
  %910 = fcmp oge double %903, %909
  br i1 %910, label %911, label %918

911:                                              ; preds = %895
  %912 = load ptr, ptr %13, align 8, !tbaa !9
  %913 = load i32, ptr %22, align 4, !tbaa !5
  %914 = sub nsw i32 %913, 1
  %915 = sext i32 %914 to i64
  %916 = getelementptr inbounds double, ptr %912, i64 %915
  %917 = load double, ptr %916, align 8, !tbaa !11
  br label %925

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

925:                                              ; preds = %918, %911
  %926 = phi double [ %917, %911 ], [ %924, %918 ]
  %927 = load ptr, ptr %15, align 8, !tbaa !9
  %928 = load i32, ptr %22, align 4, !tbaa !5
  %929 = sub nsw i32 %928, 1
  %930 = sext i32 %929 to i64
  %931 = getelementptr inbounds double, ptr %927, i64 %930
  %932 = load double, ptr %931, align 8, !tbaa !11
  %933 = fsub double %926, %932
  %934 = fadd double %897, %933
  br label %936

935:                                              ; preds = %854
  br label %936

936:                                              ; preds = %935, %925
  %937 = phi double [ %934, %925 ], [ 0.000000e+00, %935 ]
  br label %938

938:                                              ; preds = %936, %840
  %939 = phi double [ %853, %840 ], [ %937, %936 ]
  br label %940

940:                                              ; preds = %938, %818
  %941 = phi double [ %832, %818 ], [ %939, %938 ]
  %942 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %943 = getelementptr inbounds %struct.TA_LibcPriv, ptr %942, i32 0, i32 8
  %944 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %943, i64 0, i64 10
  %945 = getelementptr inbounds %struct.TA_CandleSetting, ptr %944, i32 0, i32 1
  %946 = load i32, ptr %945, align 4, !tbaa !15
  %947 = icmp eq i32 %946, 0
  br i1 %947, label %948, label %963

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

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

970:                                              ; preds = %963
  %971 = load ptr, ptr %14, align 8, !tbaa !9
  %972 = load i32, ptr %24, align 4, !tbaa !5
  %973 = sub nsw i32 %972, 1
  %974 = sext i32 %973 to i64
  %975 = getelementptr inbounds double, ptr %971, i64 %974
  %976 = load double, ptr %975, align 8, !tbaa !11
  %977 = load ptr, ptr %15, align 8, !tbaa !9
  %978 = load i32, ptr %24, align 4, !tbaa !5
  %979 = sub nsw i32 %978, 1
  %980 = sext i32 %979 to i64
  %981 = getelementptr inbounds double, ptr %977, i64 %980
  %982 = load double, ptr %981, align 8, !tbaa !11
  %983 = fsub double %976, %982
  br label %1068

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

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

1011:                                             ; preds = %991
  %1012 = load ptr, ptr %16, align 8, !tbaa !9
  %1013 = load i32, ptr %24, align 4, !tbaa !5
  %1014 = sub nsw i32 %1013, 1
  %1015 = sext i32 %1014 to i64
  %1016 = getelementptr inbounds double, ptr %1012, i64 %1015
  %1017 = load double, ptr %1016, align 8, !tbaa !11
  br label %1025

1018:                                             ; preds = %991
  %1019 = load ptr, ptr %13, align 8, !tbaa !9
  %1020 = load i32, ptr %24, align 4, !tbaa !5
  %1021 = sub nsw i32 %1020, 1
  %1022 = sext i32 %1021 to i64
  %1023 = getelementptr inbounds double, ptr %1019, i64 %1022
  %1024 = load double, ptr %1023, align 8, !tbaa !11
  br label %1025

1025:                                             ; preds = %1018, %1011
  %1026 = phi double [ %1017, %1011 ], [ %1024, %1018 ]
  %1027 = fsub double %997, %1026
  %1028 = load ptr, ptr %16, align 8, !tbaa !9
  %1029 = load i32, ptr %24, align 4, !tbaa !5
  %1030 = sub nsw i32 %1029, 1
  %1031 = sext i32 %1030 to i64
  %1032 = getelementptr inbounds double, ptr %1028, i64 %1031
  %1033 = load double, ptr %1032, align 8, !tbaa !11
  %1034 = load ptr, ptr %13, align 8, !tbaa !9
  %1035 = load i32, ptr %24, align 4, !tbaa !5
  %1036 = sub nsw i32 %1035, 1
  %1037 = sext i32 %1036 to i64
  %1038 = getelementptr inbounds double, ptr %1034, i64 %1037
  %1039 = load double, ptr %1038, align 8, !tbaa !11
  %1040 = fcmp oge double %1033, %1039
  br i1 %1040, label %1041, label %1048

1041:                                             ; preds = %1025
  %1042 = load ptr, ptr %13, align 8, !tbaa !9
  %1043 = load i32, ptr %24, align 4, !tbaa !5
  %1044 = sub nsw i32 %1043, 1
  %1045 = sext i32 %1044 to i64
  %1046 = getelementptr inbounds double, ptr %1042, i64 %1045
  %1047 = load double, ptr %1046, align 8, !tbaa !11
  br label %1055

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

1055:                                             ; preds = %1048, %1041
  %1056 = phi double [ %1047, %1041 ], [ %1054, %1048 ]
  %1057 = load ptr, ptr %15, align 8, !tbaa !9
  %1058 = load i32, ptr %24, align 4, !tbaa !5
  %1059 = sub nsw i32 %1058, 1
  %1060 = sext i32 %1059 to i64
  %1061 = getelementptr inbounds double, ptr %1057, i64 %1060
  %1062 = load double, ptr %1061, align 8, !tbaa !11
  %1063 = fsub double %1056, %1062
  %1064 = fadd double %1027, %1063
  br label %1066

1065:                                             ; preds = %984
  br label %1066

1066:                                             ; preds = %1065, %1055
  %1067 = phi double [ %1064, %1055 ], [ 0.000000e+00, %1065 ]
  br label %1068

1068:                                             ; preds = %1066, %970
  %1069 = phi double [ %983, %970 ], [ %1067, %1066 ]
  br label %1070

1070:                                             ; preds = %1068, %948
  %1071 = phi double [ %962, %948 ], [ %1069, %1068 ]
  %1072 = fsub double %941, %1071
  %1073 = load double, ptr %20, align 8, !tbaa !11
  %1074 = fadd double %1073, %1072
  store double %1074, ptr %20, align 8, !tbaa !11
  %1075 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1076 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1075, i32 0, i32 8
  %1077 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1076, i64 0, i64 0
  %1078 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1077, i32 0, i32 1
  %1079 = load i32, ptr %1078, align 4, !tbaa !15
  %1080 = icmp eq i32 %1079, 0
  br i1 %1080, label %1081, label %1096

1081:                                             ; preds = %1070
  %1082 = load ptr, ptr %16, align 8, !tbaa !9
  %1083 = load i32, ptr %22, align 4, !tbaa !5
  %1084 = sub nsw i32 %1083, 1
  %1085 = sext i32 %1084 to i64
  %1086 = getelementptr inbounds double, ptr %1082, i64 %1085
  %1087 = load double, ptr %1086, align 8, !tbaa !11
  %1088 = load ptr, ptr %13, align 8, !tbaa !9
  %1089 = load i32, ptr %22, align 4, !tbaa !5
  %1090 = sub nsw i32 %1089, 1
  %1091 = sext i32 %1090 to i64
  %1092 = getelementptr inbounds double, ptr %1088, i64 %1091
  %1093 = load double, ptr %1092, align 8, !tbaa !11
  %1094 = fsub double %1087, %1093
  %1095 = call double @llvm.fabs.f64(double %1094)
  br label %1203

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

1103:                                             ; preds = %1096
  %1104 = load ptr, ptr %14, align 8, !tbaa !9
  %1105 = load i32, ptr %22, align 4, !tbaa !5
  %1106 = sub nsw i32 %1105, 1
  %1107 = sext i32 %1106 to i64
  %1108 = getelementptr inbounds double, ptr %1104, i64 %1107
  %1109 = load double, ptr %1108, align 8, !tbaa !11
  %1110 = load ptr, ptr %15, align 8, !tbaa !9
  %1111 = load i32, ptr %22, align 4, !tbaa !5
  %1112 = sub nsw i32 %1111, 1
  %1113 = sext i32 %1112 to i64
  %1114 = getelementptr inbounds double, ptr %1110, i64 %1113
  %1115 = load double, ptr %1114, align 8, !tbaa !11
  %1116 = fsub double %1109, %1115
  br label %1201

1117:                                             ; preds = %1096
  %1118 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1119 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1118, i32 0, i32 8
  %1120 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1119, i64 0, i64 0
  %1121 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1120, i32 0, i32 1
  %1122 = load i32, ptr %1121, align 4, !tbaa !15
  %1123 = icmp eq i32 %1122, 2
  br i1 %1123, label %1124, label %1198

1124:                                             ; preds = %1117
  %1125 = load ptr, ptr %14, align 8, !tbaa !9
  %1126 = load i32, ptr %22, align 4, !tbaa !5
  %1127 = sub nsw i32 %1126, 1
  %1128 = sext i32 %1127 to i64
  %1129 = getelementptr inbounds double, ptr %1125, i64 %1128
  %1130 = load double, ptr %1129, align 8, !tbaa !11
  %1131 = load ptr, ptr %16, align 8, !tbaa !9
  %1132 = load i32, ptr %22, align 4, !tbaa !5
  %1133 = sub nsw i32 %1132, 1
  %1134 = sext i32 %1133 to i64
  %1135 = getelementptr inbounds double, ptr %1131, i64 %1134
  %1136 = load double, ptr %1135, align 8, !tbaa !11
  %1137 = load ptr, ptr %13, align 8, !tbaa !9
  %1138 = load i32, ptr %22, align 4, !tbaa !5
  %1139 = sub nsw i32 %1138, 1
  %1140 = sext i32 %1139 to i64
  %1141 = getelementptr inbounds double, ptr %1137, i64 %1140
  %1142 = load double, ptr %1141, align 8, !tbaa !11
  %1143 = fcmp oge double %1136, %1142
  br i1 %1143, label %1144, label %1151

1144:                                             ; preds = %1124
  %1145 = load ptr, ptr %16, align 8, !tbaa !9
  %1146 = load i32, ptr %22, align 4, !tbaa !5
  %1147 = sub nsw i32 %1146, 1
  %1148 = sext i32 %1147 to i64
  %1149 = getelementptr inbounds double, ptr %1145, i64 %1148
  %1150 = load double, ptr %1149, align 8, !tbaa !11
  br label %1158

1151:                                             ; preds = %1124
  %1152 = load ptr, ptr %13, align 8, !tbaa !9
  %1153 = load i32, ptr %22, align 4, !tbaa !5
  %1154 = sub nsw i32 %1153, 1
  %1155 = sext i32 %1154 to i64
  %1156 = getelementptr inbounds double, ptr %1152, i64 %1155
  %1157 = load double, ptr %1156, align 8, !tbaa !11
  br label %1158

1158:                                             ; preds = %1151, %1144
  %1159 = phi double [ %1150, %1144 ], [ %1157, %1151 ]
  %1160 = fsub double %1130, %1159
  %1161 = load ptr, ptr %16, align 8, !tbaa !9
  %1162 = load i32, ptr %22, align 4, !tbaa !5
  %1163 = sub nsw i32 %1162, 1
  %1164 = sext i32 %1163 to i64
  %1165 = getelementptr inbounds double, ptr %1161, i64 %1164
  %1166 = load double, ptr %1165, align 8, !tbaa !11
  %1167 = load ptr, ptr %13, align 8, !tbaa !9
  %1168 = load i32, ptr %22, align 4, !tbaa !5
  %1169 = sub nsw i32 %1168, 1
  %1170 = sext i32 %1169 to i64
  %1171 = getelementptr inbounds double, ptr %1167, i64 %1170
  %1172 = load double, ptr %1171, align 8, !tbaa !11
  %1173 = fcmp oge double %1166, %1172
  br i1 %1173, label %1174, label %1181

1174:                                             ; preds = %1158
  %1175 = load ptr, ptr %13, align 8, !tbaa !9
  %1176 = load i32, ptr %22, align 4, !tbaa !5
  %1177 = sub nsw i32 %1176, 1
  %1178 = sext i32 %1177 to i64
  %1179 = getelementptr inbounds double, ptr %1175, i64 %1178
  %1180 = load double, ptr %1179, align 8, !tbaa !11
  br label %1188

1181:                                             ; preds = %1158
  %1182 = load ptr, ptr %16, align 8, !tbaa !9
  %1183 = load i32, ptr %22, align 4, !tbaa !5
  %1184 = sub nsw i32 %1183, 1
  %1185 = sext i32 %1184 to i64
  %1186 = getelementptr inbounds double, ptr %1182, i64 %1185
  %1187 = load double, ptr %1186, align 8, !tbaa !11
  br label %1188

1188:                                             ; preds = %1181, %1174
  %1189 = phi double [ %1180, %1174 ], [ %1187, %1181 ]
  %1190 = load ptr, ptr %15, align 8, !tbaa !9
  %1191 = load i32, ptr %22, align 4, !tbaa !5
  %1192 = sub nsw i32 %1191, 1
  %1193 = sext i32 %1192 to i64
  %1194 = getelementptr inbounds double, ptr %1190, i64 %1193
  %1195 = load double, ptr %1194, align 8, !tbaa !11
  %1196 = fsub double %1189, %1195
  %1197 = fadd double %1160, %1196
  br label %1199

1198:                                             ; preds = %1117
  br label %1199

1199:                                             ; preds = %1198, %1188
  %1200 = phi double [ %1197, %1188 ], [ 0.000000e+00, %1198 ]
  br label %1201

1201:                                             ; preds = %1199, %1103
  %1202 = phi double [ %1116, %1103 ], [ %1200, %1199 ]
  br label %1203

1203:                                             ; preds = %1201, %1081
  %1204 = phi double [ %1095, %1081 ], [ %1202, %1201 ]
  %1205 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1206 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1205, i32 0, i32 8
  %1207 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1206, i64 0, i64 0
  %1208 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1207, i32 0, i32 1
  %1209 = load i32, ptr %1208, align 4, !tbaa !15
  %1210 = icmp eq i32 %1209, 0
  br i1 %1210, label %1211, label %1226

1211:                                             ; preds = %1203
  %1212 = load ptr, ptr %16, align 8, !tbaa !9
  %1213 = load i32, ptr %25, align 4, !tbaa !5
  %1214 = sub nsw i32 %1213, 1
  %1215 = sext i32 %1214 to i64
  %1216 = getelementptr inbounds double, ptr %1212, i64 %1215
  %1217 = load double, ptr %1216, align 8, !tbaa !11
  %1218 = load ptr, ptr %13, align 8, !tbaa !9
  %1219 = load i32, ptr %25, align 4, !tbaa !5
  %1220 = sub nsw i32 %1219, 1
  %1221 = sext i32 %1220 to i64
  %1222 = getelementptr inbounds double, ptr %1218, i64 %1221
  %1223 = load double, ptr %1222, align 8, !tbaa !11
  %1224 = fsub double %1217, %1223
  %1225 = call double @llvm.fabs.f64(double %1224)
  br label %1333

1226:                                             ; preds = %1203
  %1227 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1228 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1227, i32 0, i32 8
  %1229 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1228, i64 0, i64 0
  %1230 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1229, i32 0, i32 1
  %1231 = load i32, ptr %1230, align 4, !tbaa !15
  %1232 = icmp eq i32 %1231, 1
  br i1 %1232, label %1233, label %1247

1233:                                             ; preds = %1226
  %1234 = load ptr, ptr %14, align 8, !tbaa !9
  %1235 = load i32, ptr %25, align 4, !tbaa !5
  %1236 = sub nsw i32 %1235, 1
  %1237 = sext i32 %1236 to i64
  %1238 = getelementptr inbounds double, ptr %1234, i64 %1237
  %1239 = load double, ptr %1238, align 8, !tbaa !11
  %1240 = load ptr, ptr %15, align 8, !tbaa !9
  %1241 = load i32, ptr %25, align 4, !tbaa !5
  %1242 = sub nsw i32 %1241, 1
  %1243 = sext i32 %1242 to i64
  %1244 = getelementptr inbounds double, ptr %1240, i64 %1243
  %1245 = load double, ptr %1244, align 8, !tbaa !11
  %1246 = fsub double %1239, %1245
  br label %1331

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

1254:                                             ; preds = %1247
  %1255 = load ptr, ptr %14, align 8, !tbaa !9
  %1256 = load i32, ptr %25, 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 = load ptr, ptr %16, align 8, !tbaa !9
  %1262 = load i32, ptr %25, align 4, !tbaa !5
  %1263 = sub nsw i32 %1262, 1
  %1264 = sext i32 %1263 to i64
  %1265 = getelementptr inbounds double, ptr %1261, i64 %1264
  %1266 = load double, ptr %1265, align 8, !tbaa !11
  %1267 = load ptr, ptr %13, align 8, !tbaa !9
  %1268 = load i32, ptr %25, align 4, !tbaa !5
  %1269 = sub nsw i32 %1268, 1
  %1270 = sext i32 %1269 to i64
  %1271 = getelementptr inbounds double, ptr %1267, i64 %1270
  %1272 = load double, ptr %1271, align 8, !tbaa !11
  %1273 = fcmp oge double %1266, %1272
  br i1 %1273, label %1274, label %1281

1274:                                             ; preds = %1254
  %1275 = load ptr, ptr %16, align 8, !tbaa !9
  %1276 = load i32, ptr %25, align 4, !tbaa !5
  %1277 = sub nsw i32 %1276, 1
  %1278 = sext i32 %1277 to i64
  %1279 = getelementptr inbounds double, ptr %1275, i64 %1278
  %1280 = load double, ptr %1279, align 8, !tbaa !11
  br label %1288

1281:                                             ; preds = %1254
  %1282 = load ptr, ptr %13, align 8, !tbaa !9
  %1283 = load i32, ptr %25, align 4, !tbaa !5
  %1284 = sub nsw i32 %1283, 1
  %1285 = sext i32 %1284 to i64
  %1286 = getelementptr inbounds double, ptr %1282, i64 %1285
  %1287 = load double, ptr %1286, align 8, !tbaa !11
  br label %1288

1288:                                             ; preds = %1281, %1274
  %1289 = phi double [ %1280, %1274 ], [ %1287, %1281 ]
  %1290 = fsub double %1260, %1289
  %1291 = load ptr, ptr %16, align 8, !tbaa !9
  %1292 = load i32, ptr %25, align 4, !tbaa !5
  %1293 = sub nsw i32 %1292, 1
  %1294 = sext i32 %1293 to i64
  %1295 = getelementptr inbounds double, ptr %1291, i64 %1294
  %1296 = load double, ptr %1295, align 8, !tbaa !11
  %1297 = load ptr, ptr %13, align 8, !tbaa !9
  %1298 = load i32, ptr %25, align 4, !tbaa !5
  %1299 = sub nsw i32 %1298, 1
  %1300 = sext i32 %1299 to i64
  %1301 = getelementptr inbounds double, ptr %1297, i64 %1300
  %1302 = load double, ptr %1301, align 8, !tbaa !11
  %1303 = fcmp oge double %1296, %1302
  br i1 %1303, label %1304, label %1311

1304:                                             ; preds = %1288
  %1305 = load ptr, ptr %13, align 8, !tbaa !9
  %1306 = load i32, ptr %25, align 4, !tbaa !5
  %1307 = sub nsw i32 %1306, 1
  %1308 = sext i32 %1307 to i64
  %1309 = getelementptr inbounds double, ptr %1305, i64 %1308
  %1310 = load double, ptr %1309, align 8, !tbaa !11
  br label %1318

1311:                                             ; preds = %1288
  %1312 = load ptr, ptr %16, align 8, !tbaa !9
  %1313 = load i32, ptr %25, align 4, !tbaa !5
  %1314 = sub nsw i32 %1313, 1
  %1315 = sext i32 %1314 to i64
  %1316 = getelementptr inbounds double, ptr %1312, i64 %1315
  %1317 = load double, ptr %1316, align 8, !tbaa !11
  br label %1318

1318:                                             ; preds = %1311, %1304
  %1319 = phi double [ %1310, %1304 ], [ %1317, %1311 ]
  %1320 = load ptr, ptr %15, align 8, !tbaa !9
  %1321 = load i32, ptr %25, align 4, !tbaa !5
  %1322 = sub nsw i32 %1321, 1
  %1323 = sext i32 %1322 to i64
  %1324 = getelementptr inbounds double, ptr %1320, i64 %1323
  %1325 = load double, ptr %1324, align 8, !tbaa !11
  %1326 = fsub double %1319, %1325
  %1327 = fadd double %1290, %1326
  br label %1329

1328:                                             ; preds = %1247
  br label %1329

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

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

1333:                                             ; preds = %1331, %1211
  %1334 = phi double [ %1225, %1211 ], [ %1332, %1331 ]
  %1335 = fsub double %1204, %1334
  %1336 = load double, ptr %21, align 8, !tbaa !11
  %1337 = fadd double %1336, %1335
  store double %1337, ptr %21, align 8, !tbaa !11
  %1338 = load i32, ptr %22, align 4, !tbaa !5
  %1339 = add nsw i32 %1338, 1
  store i32 %1339, ptr %22, align 4, !tbaa !5
  %1340 = load i32, ptr %24, align 4, !tbaa !5
  %1341 = add nsw i32 %1340, 1
  store i32 %1341, ptr %24, align 4, !tbaa !5
  %1342 = load i32, ptr %25, align 4, !tbaa !5
  %1343 = add nsw i32 %1342, 1
  store i32 %1343, ptr %25, align 4, !tbaa !5
  br label %1344

1344:                                             ; preds = %1333
  %1345 = load i32, ptr %22, align 4, !tbaa !5
  %1346 = load i32, ptr %12, align 4, !tbaa !5
  %1347 = icmp sle i32 %1345, %1346
  br i1 %1347, label %368, label %1348, !llvm.loop !20

1348:                                             ; preds = %1344
  %1349 = load i32, ptr %23, align 4, !tbaa !5
  %1350 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 %1349, ptr %1350, align 4, !tbaa !5
  %1351 = load i32, ptr %11, align 4, !tbaa !5
  %1352 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 %1351, ptr %1352, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %27, align 4
  br label %1353

1353:                                             ; preds = %1348, %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
  %1354 = load i32, ptr %10, align 4
  ret i32 %1354
}

; 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 speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, 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_CDLTHRUSTING_Lookback() local_unnamed_addr #0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

126:                                              ; preds = %.preheader, %317
  %indvars.iv454 = phi i64 [ %125, %.preheader ], [ %indvars.iv.next455, %317 ]
  %indvars.iv452 = phi i64 [ %124, %.preheader ], [ %indvars.iv.next453, %317 ]
  %indvars.iv450 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next451, %317 ]
  %indvars.iv448 = phi i64 [ %smax, %.preheader ], [ %indvars.iv.next449, %317 ]
  %.1311 = phi double [ %.0310.lcssa, %.preheader ], [ %261, %317 ]
  %.1309 = phi double [ %.0308.lcssa, %.preheader ], [ %321, %317 ]
  %127 = add nsw i64 %indvars.iv448, -1
  %128 = getelementptr inbounds double, ptr %5, i64 %127
  %129 = load double, ptr %128, align 8, !tbaa !15
  %130 = getelementptr inbounds double, ptr %2, i64 %127
  %131 = load double, ptr %130, align 8, !tbaa !15
  %132 = fcmp ult double %129, %131
  br i1 %132, label %133, label %199

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.thread470:                                       ; preds = %175, %178, %177, %.thread472, %187, %191
  %.pn484 = phi double [ %189, %187 ], [ %186, %.thread472 ], [ %189, %191 ], [ 0.000000e+00, %175 ], [ %181, %178 ], [ %135, %177 ]
  %192 = phi double [ 1.000000e+00, %187 ], [ 2.000000e+00, %.thread472 ], [ 2.000000e+00, %191 ], [ 1.000000e+00, %175 ], [ 1.000000e+00, %178 ], [ 1.000000e+00, %177 ]
  %193 = fmul double %173, %.pn484
  %194 = fdiv double %193, %192
  %195 = fadd double %129, %194
  %196 = fcmp ule double %164, %195
  %197 = tail call double @llvm.fmuladd.f64(double %135, double 5.000000e-01, double %129)
  %198 = fcmp ugt double %164, %197
  %or.cond385 = or i1 %198, %196
  br i1 %or.cond385, label %199, label %200

199:                                              ; preds = %.thread470, %168, %162, %.thread463, %126
  br label %200

200:                                              ; preds = %.thread470, %199
  %.sink = phi i32 [ 0, %199 ], [ -100, %.thread470 ]
  %201 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv450
  store i32 %.sink, ptr %201, align 4, !tbaa !5
  %indvars.iv.next451 = add nuw nsw i64 %indvars.iv450, 1
  %202 = load i32, ptr %117, align 4, !tbaa !14
  switch i32 %202, label %257 [
    i32 0, label %.thread
    i32 1, label %.thread379
    i32 2, label %.thread380
  ]

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

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

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

257:                                              ; preds = %200, %.thread379, %.thread380, %.thread
  %258 = phi <2 x double> [ %213, %.thread ], [ %227, %.thread379 ], [ %256, %.thread380 ], [ zeroinitializer, %200 ]
  %shift = shufflevector <2 x double> %258, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %259 = fsub <2 x double> %258, %shift
  %260 = extractelement <2 x double> %259, i64 0
  %261 = fadd double %.1311, %260
  %262 = load i32, ptr %118, align 4, !tbaa !14
  switch i32 %262, label %317 [
    i32 0, label %.thread381
    i32 1, label %.thread382
    i32 2, label %.thread383
  ]

.thread381:                                       ; preds = %257
  %263 = add nsw i64 %indvars.iv454, -1
  %264 = getelementptr inbounds double, ptr %5, i64 %263
  %265 = load double, ptr %264, align 8, !tbaa !15
  %266 = getelementptr inbounds double, ptr %2, i64 %263
  %267 = load double, ptr %266, align 8, !tbaa !15
  %268 = insertelement <2 x double> poison, double %129, i64 0
  %269 = insertelement <2 x double> %268, double %265, i64 1
  %270 = insertelement <2 x double> poison, double %131, i64 0
  %271 = insertelement <2 x double> %270, double %267, i64 1
  %272 = fsub <2 x double> %269, %271
  %273 = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %272)
  br label %317

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

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

317:                                              ; preds = %257, %.thread382, %.thread383, %.thread381
  %318 = phi <2 x double> [ %273, %.thread381 ], [ %287, %.thread382 ], [ %316, %.thread383 ], [ zeroinitializer, %257 ]
  %shift494 = shufflevector <2 x double> %318, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %319 = fsub <2 x double> %318, %shift494
  %320 = extractelement <2 x double> %319, i64 0
  %321 = fadd double %.1309, %320
  %indvars.iv.next449 = add nuw nsw i64 %indvars.iv448, 1
  %indvars.iv.next453 = add nsw i64 %indvars.iv452, 1
  %indvars.iv.next455 = add nsw i64 %indvars.iv454, 1
  %.not369.not = icmp slt i64 %indvars.iv448, %123
  br i1 %.not369.not, label %126, label %322, !llvm.loop !20

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

324:                                              ; preds = %13, %11, %9, %322, %24
  %.0 = phi i32 [ 0, %24 ], [ 0, %322 ], [ 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: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, 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