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

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

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1

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

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

; Function Attrs: nounwind uwtable
define dso_local i32 @TA_S_CDLBREAKAWAY(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 i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = 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 4, 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
  %26 = load i32, ptr %11, align 4, !tbaa !5
  %27 = icmp slt i32 %26, 0
  br i1 %27, label %28, label %29

28:                                               ; preds = %9
  store i32 12, ptr %10, align 4
  store i32 1, ptr %25, align 4
  br label %1123

29:                                               ; preds = %9
  %30 = load i32, ptr %12, align 4, !tbaa !5
  %31 = icmp slt i32 %30, 0
  br i1 %31, label %36, label %32

32:                                               ; preds = %29
  %33 = load i32, ptr %12, align 4, !tbaa !5
  %34 = load i32, ptr %11, align 4, !tbaa !5
  %35 = icmp slt i32 %33, %34
  br i1 %35, label %36, label %37

36:                                               ; preds = %32, %29
  store i32 13, ptr %10, align 4
  store i32 1, ptr %25, align 4
  br label %1123

37:                                               ; preds = %32
  %38 = load ptr, ptr %13, align 8, !tbaa !9
  %39 = icmp ne ptr %38, null
  br i1 %39, label %40, label %49

40:                                               ; preds = %37
  %41 = load ptr, ptr %14, align 8, !tbaa !9
  %42 = icmp ne ptr %41, null
  br i1 %42, label %43, label %49

43:                                               ; preds = %40
  %44 = load ptr, ptr %15, align 8, !tbaa !9
  %45 = icmp ne ptr %44, null
  br i1 %45, label %46, label %49

46:                                               ; preds = %43
  %47 = load ptr, ptr %16, align 8, !tbaa !9
  %48 = icmp ne ptr %47, null
  br i1 %48, label %50, label %49

49:                                               ; preds = %46, %43, %40, %37
  store i32 2, ptr %10, align 4
  store i32 1, ptr %25, align 4
  br label %1123

50:                                               ; preds = %46
  %51 = load ptr, ptr %19, align 8, !tbaa !9
  %52 = icmp ne ptr %51, null
  br i1 %52, label %54, label %53

53:                                               ; preds = %50
  store i32 2, ptr %10, align 4
  store i32 1, ptr %25, align 4
  br label %1123

54:                                               ; preds = %50
  %55 = call i32 @TA_CDLBREAKAWAY_Lookback()
  store i32 %55, ptr %24, align 4, !tbaa !5
  %56 = load i32, ptr %11, align 4, !tbaa !5
  %57 = load i32, ptr %24, align 4, !tbaa !5
  %58 = icmp slt i32 %56, %57
  br i1 %58, label %59, label %61

59:                                               ; preds = %54
  %60 = load i32, ptr %24, align 4, !tbaa !5
  store i32 %60, ptr %11, align 4, !tbaa !5
  br label %61

61:                                               ; preds = %59, %54
  %62 = load i32, ptr %11, align 4, !tbaa !5
  %63 = load i32, ptr %12, align 4, !tbaa !5
  %64 = icmp sgt i32 %62, %63
  br i1 %64, label %65, label %68

65:                                               ; preds = %61
  %66 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 0, ptr %66, align 4, !tbaa !5
  %67 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 0, ptr %67, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %25, align 4
  br label %1123

68:                                               ; preds = %61
  store double 0.000000e+00, ptr %20, align 8, !tbaa !11
  %69 = load i32, ptr %11, align 4, !tbaa !5
  %70 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %71 = getelementptr inbounds %struct.TA_LibcPriv, ptr %70, i32 0, i32 8
  %72 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %71, i64 0, i64 0
  %73 = getelementptr inbounds %struct.TA_CandleSetting, ptr %72, i32 0, i32 2
  %74 = load i32, ptr %73, align 8, !tbaa !13
  %75 = sub nsw i32 %69, %74
  store i32 %75, ptr %23, align 4, !tbaa !5
  %76 = load i32, ptr %23, align 4, !tbaa !5
  store i32 %76, ptr %21, align 4, !tbaa !5
  br label %77

77:                                               ; preds = %212, %68
  %78 = load i32, ptr %21, align 4, !tbaa !5
  %79 = load i32, ptr %11, align 4, !tbaa !5
  %80 = icmp slt i32 %78, %79
  br i1 %80, label %81, label %218

81:                                               ; preds = %77
  %82 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %83 = getelementptr inbounds %struct.TA_LibcPriv, ptr %82, i32 0, i32 8
  %84 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %83, i64 0, i64 0
  %85 = getelementptr inbounds %struct.TA_CandleSetting, ptr %84, i32 0, i32 1
  %86 = load i32, ptr %85, align 4, !tbaa !15
  %87 = icmp eq i32 %86, 0
  br i1 %87, label %88, label %104

88:                                               ; preds = %81
  %89 = load ptr, ptr %16, align 8, !tbaa !9
  %90 = load i32, ptr %21, align 4, !tbaa !5
  %91 = sub nsw i32 %90, 4
  %92 = sext i32 %91 to i64
  %93 = getelementptr inbounds float, ptr %89, i64 %92
  %94 = load float, ptr %93, align 4, !tbaa !16
  %95 = load ptr, ptr %13, align 8, !tbaa !9
  %96 = load i32, ptr %21, align 4, !tbaa !5
  %97 = sub nsw i32 %96, 4
  %98 = sext i32 %97 to i64
  %99 = getelementptr inbounds float, ptr %95, i64 %98
  %100 = load float, ptr %99, align 4, !tbaa !16
  %101 = fsub float %94, %100
  %102 = fpext float %101 to double
  %103 = call double @llvm.fabs.f64(double %102)
  br label %212

104:                                              ; preds = %81
  %105 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %106 = getelementptr inbounds %struct.TA_LibcPriv, ptr %105, i32 0, i32 8
  %107 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %106, i64 0, i64 0
  %108 = getelementptr inbounds %struct.TA_CandleSetting, ptr %107, i32 0, i32 1
  %109 = load i32, ptr %108, align 4, !tbaa !15
  %110 = icmp eq i32 %109, 1
  br i1 %110, label %111, label %125

111:                                              ; preds = %104
  %112 = load ptr, ptr %14, align 8, !tbaa !9
  %113 = load i32, ptr %21, align 4, !tbaa !5
  %114 = sub nsw i32 %113, 4
  %115 = sext i32 %114 to i64
  %116 = getelementptr inbounds float, ptr %112, i64 %115
  %117 = load float, ptr %116, align 4, !tbaa !16
  %118 = load ptr, ptr %15, align 8, !tbaa !9
  %119 = load i32, ptr %21, align 4, !tbaa !5
  %120 = sub nsw i32 %119, 4
  %121 = sext i32 %120 to i64
  %122 = getelementptr inbounds float, ptr %118, i64 %121
  %123 = load float, ptr %122, align 4, !tbaa !16
  %124 = fsub float %117, %123
  br label %209

125:                                              ; preds = %104
  %126 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %127 = getelementptr inbounds %struct.TA_LibcPriv, ptr %126, i32 0, i32 8
  %128 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %127, i64 0, i64 0
  %129 = getelementptr inbounds %struct.TA_CandleSetting, ptr %128, i32 0, i32 1
  %130 = load i32, ptr %129, align 4, !tbaa !15
  %131 = icmp eq i32 %130, 2
  br i1 %131, label %132, label %206

132:                                              ; preds = %125
  %133 = load ptr, ptr %14, align 8, !tbaa !9
  %134 = load i32, ptr %21, align 4, !tbaa !5
  %135 = sub nsw i32 %134, 4
  %136 = sext i32 %135 to i64
  %137 = getelementptr inbounds float, ptr %133, i64 %136
  %138 = load float, ptr %137, align 4, !tbaa !16
  %139 = load ptr, ptr %16, align 8, !tbaa !9
  %140 = load i32, ptr %21, align 4, !tbaa !5
  %141 = sub nsw i32 %140, 4
  %142 = sext i32 %141 to i64
  %143 = getelementptr inbounds float, ptr %139, i64 %142
  %144 = load float, ptr %143, align 4, !tbaa !16
  %145 = load ptr, ptr %13, align 8, !tbaa !9
  %146 = load i32, ptr %21, align 4, !tbaa !5
  %147 = sub nsw i32 %146, 4
  %148 = sext i32 %147 to i64
  %149 = getelementptr inbounds float, ptr %145, i64 %148
  %150 = load float, ptr %149, align 4, !tbaa !16
  %151 = fcmp oge float %144, %150
  br i1 %151, label %152, label %159

152:                                              ; preds = %132
  %153 = load ptr, ptr %16, align 8, !tbaa !9
  %154 = load i32, ptr %21, align 4, !tbaa !5
  %155 = sub nsw i32 %154, 4
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds float, ptr %153, i64 %156
  %158 = load float, ptr %157, align 4, !tbaa !16
  br label %166

159:                                              ; preds = %132
  %160 = load ptr, ptr %13, align 8, !tbaa !9
  %161 = load i32, ptr %21, align 4, !tbaa !5
  %162 = sub nsw i32 %161, 4
  %163 = sext i32 %162 to i64
  %164 = getelementptr inbounds float, ptr %160, i64 %163
  %165 = load float, ptr %164, align 4, !tbaa !16
  br label %166

166:                                              ; preds = %159, %152
  %167 = phi float [ %158, %152 ], [ %165, %159 ]
  %168 = fsub float %138, %167
  %169 = load ptr, ptr %16, align 8, !tbaa !9
  %170 = load i32, ptr %21, align 4, !tbaa !5
  %171 = sub nsw i32 %170, 4
  %172 = sext i32 %171 to i64
  %173 = getelementptr inbounds float, ptr %169, i64 %172
  %174 = load float, ptr %173, align 4, !tbaa !16
  %175 = load ptr, ptr %13, align 8, !tbaa !9
  %176 = load i32, ptr %21, align 4, !tbaa !5
  %177 = sub nsw i32 %176, 4
  %178 = sext i32 %177 to i64
  %179 = getelementptr inbounds float, ptr %175, i64 %178
  %180 = load float, ptr %179, align 4, !tbaa !16
  %181 = fcmp oge float %174, %180
  br i1 %181, label %182, label %189

182:                                              ; preds = %166
  %183 = load ptr, ptr %13, align 8, !tbaa !9
  %184 = load i32, ptr %21, align 4, !tbaa !5
  %185 = sub nsw i32 %184, 4
  %186 = sext i32 %185 to i64
  %187 = getelementptr inbounds float, ptr %183, i64 %186
  %188 = load float, ptr %187, align 4, !tbaa !16
  br label %196

189:                                              ; preds = %166
  %190 = load ptr, ptr %16, align 8, !tbaa !9
  %191 = load i32, ptr %21, align 4, !tbaa !5
  %192 = sub nsw i32 %191, 4
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds float, ptr %190, i64 %193
  %195 = load float, ptr %194, align 4, !tbaa !16
  br label %196

196:                                              ; preds = %189, %182
  %197 = phi float [ %188, %182 ], [ %195, %189 ]
  %198 = load ptr, ptr %15, align 8, !tbaa !9
  %199 = load i32, ptr %21, align 4, !tbaa !5
  %200 = sub nsw i32 %199, 4
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds float, ptr %198, i64 %201
  %203 = load float, ptr %202, align 4, !tbaa !16
  %204 = fsub float %197, %203
  %205 = fadd float %168, %204
  br label %207

206:                                              ; preds = %125
  br label %207

207:                                              ; preds = %206, %196
  %208 = phi float [ %205, %196 ], [ 0.000000e+00, %206 ]
  br label %209

209:                                              ; preds = %207, %111
  %210 = phi float [ %124, %111 ], [ %208, %207 ]
  %211 = fpext float %210 to double
  br label %212

212:                                              ; preds = %209, %88
  %213 = phi double [ %103, %88 ], [ %211, %209 ]
  %214 = load double, ptr %20, align 8, !tbaa !11
  %215 = fadd double %214, %213
  store double %215, ptr %20, align 8, !tbaa !11
  %216 = load i32, ptr %21, align 4, !tbaa !5
  %217 = add nsw i32 %216, 1
  store i32 %217, ptr %21, align 4, !tbaa !5
  br label %77, !llvm.loop !18

218:                                              ; preds = %77
  %219 = load i32, ptr %11, align 4, !tbaa !5
  store i32 %219, ptr %21, align 4, !tbaa !5
  store i32 0, ptr %22, align 4, !tbaa !5
  br label %220

220:                                              ; preds = %1114, %218
  %221 = load ptr, ptr %16, align 8, !tbaa !9
  %222 = load i32, ptr %21, align 4, !tbaa !5
  %223 = sub nsw i32 %222, 4
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds float, ptr %221, i64 %224
  %226 = load float, ptr %225, align 4, !tbaa !16
  %227 = load ptr, ptr %13, align 8, !tbaa !9
  %228 = load i32, ptr %21, align 4, !tbaa !5
  %229 = sub nsw i32 %228, 4
  %230 = sext i32 %229 to i64
  %231 = getelementptr inbounds float, ptr %227, i64 %230
  %232 = load float, ptr %231, align 4, !tbaa !16
  %233 = fsub float %226, %232
  %234 = fpext float %233 to double
  %235 = call double @llvm.fabs.f64(double %234)
  %236 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %237 = getelementptr inbounds %struct.TA_LibcPriv, ptr %236, i32 0, i32 8
  %238 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %237, i64 0, i64 0
  %239 = getelementptr inbounds %struct.TA_CandleSetting, ptr %238, i32 0, i32 3
  %240 = load double, ptr %239, align 8, !tbaa !20
  %241 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %242 = getelementptr inbounds %struct.TA_LibcPriv, ptr %241, i32 0, i32 8
  %243 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %242, i64 0, i64 0
  %244 = getelementptr inbounds %struct.TA_CandleSetting, ptr %243, i32 0, i32 2
  %245 = load i32, ptr %244, align 8, !tbaa !13
  %246 = sitofp i32 %245 to double
  %247 = fcmp une double %246, 0.000000e+00
  br i1 %247, label %248, label %257

248:                                              ; preds = %220
  %249 = load double, ptr %20, align 8, !tbaa !11
  %250 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %251 = getelementptr inbounds %struct.TA_LibcPriv, ptr %250, i32 0, i32 8
  %252 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %251, i64 0, i64 0
  %253 = getelementptr inbounds %struct.TA_CandleSetting, ptr %252, i32 0, i32 2
  %254 = load i32, ptr %253, align 8, !tbaa !13
  %255 = sitofp i32 %254 to double
  %256 = fdiv double %249, %255
  br label %390

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

264:                                              ; preds = %257
  %265 = load ptr, ptr %16, align 8, !tbaa !9
  %266 = load i32, ptr %21, align 4, !tbaa !5
  %267 = sub nsw i32 %266, 4
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds float, ptr %265, i64 %268
  %270 = load float, ptr %269, align 4, !tbaa !16
  %271 = load ptr, ptr %13, align 8, !tbaa !9
  %272 = load i32, ptr %21, align 4, !tbaa !5
  %273 = sub nsw i32 %272, 4
  %274 = sext i32 %273 to i64
  %275 = getelementptr inbounds float, ptr %271, i64 %274
  %276 = load float, ptr %275, align 4, !tbaa !16
  %277 = fsub float %270, %276
  %278 = fpext float %277 to double
  %279 = call double @llvm.fabs.f64(double %278)
  br label %388

280:                                              ; preds = %257
  %281 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %282 = getelementptr inbounds %struct.TA_LibcPriv, ptr %281, i32 0, i32 8
  %283 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %282, i64 0, i64 0
  %284 = getelementptr inbounds %struct.TA_CandleSetting, ptr %283, i32 0, i32 1
  %285 = load i32, ptr %284, align 4, !tbaa !15
  %286 = icmp eq i32 %285, 1
  br i1 %286, label %287, label %301

287:                                              ; preds = %280
  %288 = load ptr, ptr %14, align 8, !tbaa !9
  %289 = load i32, ptr %21, align 4, !tbaa !5
  %290 = sub nsw i32 %289, 4
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds float, ptr %288, i64 %291
  %293 = load float, ptr %292, align 4, !tbaa !16
  %294 = load ptr, ptr %15, align 8, !tbaa !9
  %295 = load i32, ptr %21, align 4, !tbaa !5
  %296 = sub nsw i32 %295, 4
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds float, ptr %294, i64 %297
  %299 = load float, ptr %298, align 4, !tbaa !16
  %300 = fsub float %293, %299
  br label %385

301:                                              ; preds = %280
  %302 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %303 = getelementptr inbounds %struct.TA_LibcPriv, ptr %302, i32 0, i32 8
  %304 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %303, i64 0, i64 0
  %305 = getelementptr inbounds %struct.TA_CandleSetting, ptr %304, i32 0, i32 1
  %306 = load i32, ptr %305, align 4, !tbaa !15
  %307 = icmp eq i32 %306, 2
  br i1 %307, label %308, label %382

308:                                              ; preds = %301
  %309 = load ptr, ptr %14, align 8, !tbaa !9
  %310 = load i32, ptr %21, align 4, !tbaa !5
  %311 = sub nsw i32 %310, 4
  %312 = sext i32 %311 to i64
  %313 = getelementptr inbounds float, ptr %309, i64 %312
  %314 = load float, ptr %313, align 4, !tbaa !16
  %315 = load ptr, ptr %16, align 8, !tbaa !9
  %316 = load i32, ptr %21, align 4, !tbaa !5
  %317 = sub nsw i32 %316, 4
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds float, ptr %315, i64 %318
  %320 = load float, ptr %319, align 4, !tbaa !16
  %321 = load ptr, ptr %13, align 8, !tbaa !9
  %322 = load i32, ptr %21, align 4, !tbaa !5
  %323 = sub nsw i32 %322, 4
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds float, ptr %321, i64 %324
  %326 = load float, ptr %325, align 4, !tbaa !16
  %327 = fcmp oge float %320, %326
  br i1 %327, label %328, label %335

328:                                              ; preds = %308
  %329 = load ptr, ptr %16, align 8, !tbaa !9
  %330 = load i32, ptr %21, align 4, !tbaa !5
  %331 = sub nsw i32 %330, 4
  %332 = sext i32 %331 to i64
  %333 = getelementptr inbounds float, ptr %329, i64 %332
  %334 = load float, ptr %333, align 4, !tbaa !16
  br label %342

335:                                              ; preds = %308
  %336 = load ptr, ptr %13, align 8, !tbaa !9
  %337 = load i32, ptr %21, align 4, !tbaa !5
  %338 = sub nsw i32 %337, 4
  %339 = sext i32 %338 to i64
  %340 = getelementptr inbounds float, ptr %336, i64 %339
  %341 = load float, ptr %340, align 4, !tbaa !16
  br label %342

342:                                              ; preds = %335, %328
  %343 = phi float [ %334, %328 ], [ %341, %335 ]
  %344 = fsub float %314, %343
  %345 = load ptr, ptr %16, align 8, !tbaa !9
  %346 = load i32, ptr %21, align 4, !tbaa !5
  %347 = sub nsw i32 %346, 4
  %348 = sext i32 %347 to i64
  %349 = getelementptr inbounds float, ptr %345, i64 %348
  %350 = load float, ptr %349, align 4, !tbaa !16
  %351 = load ptr, ptr %13, align 8, !tbaa !9
  %352 = load i32, ptr %21, align 4, !tbaa !5
  %353 = sub nsw i32 %352, 4
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds float, ptr %351, i64 %354
  %356 = load float, ptr %355, align 4, !tbaa !16
  %357 = fcmp oge float %350, %356
  br i1 %357, label %358, label %365

358:                                              ; preds = %342
  %359 = load ptr, ptr %13, align 8, !tbaa !9
  %360 = load i32, ptr %21, align 4, !tbaa !5
  %361 = sub nsw i32 %360, 4
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds float, ptr %359, i64 %362
  %364 = load float, ptr %363, align 4, !tbaa !16
  br label %372

365:                                              ; preds = %342
  %366 = load ptr, ptr %16, align 8, !tbaa !9
  %367 = load i32, ptr %21, align 4, !tbaa !5
  %368 = sub nsw i32 %367, 4
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds float, ptr %366, i64 %369
  %371 = load float, ptr %370, align 4, !tbaa !16
  br label %372

372:                                              ; preds = %365, %358
  %373 = phi float [ %364, %358 ], [ %371, %365 ]
  %374 = load ptr, ptr %15, align 8, !tbaa !9
  %375 = load i32, ptr %21, align 4, !tbaa !5
  %376 = sub nsw i32 %375, 4
  %377 = sext i32 %376 to i64
  %378 = getelementptr inbounds float, ptr %374, i64 %377
  %379 = load float, ptr %378, align 4, !tbaa !16
  %380 = fsub float %373, %379
  %381 = fadd float %344, %380
  br label %383

382:                                              ; preds = %301
  br label %383

383:                                              ; preds = %382, %372
  %384 = phi float [ %381, %372 ], [ 0.000000e+00, %382 ]
  br label %385

385:                                              ; preds = %383, %287
  %386 = phi float [ %300, %287 ], [ %384, %383 ]
  %387 = fpext float %386 to double
  br label %388

388:                                              ; preds = %385, %264
  %389 = phi double [ %279, %264 ], [ %387, %385 ]
  br label %390

390:                                              ; preds = %388, %248
  %391 = phi double [ %256, %248 ], [ %389, %388 ]
  %392 = fmul double %240, %391
  %393 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %394 = getelementptr inbounds %struct.TA_LibcPriv, ptr %393, i32 0, i32 8
  %395 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %394, i64 0, i64 0
  %396 = getelementptr inbounds %struct.TA_CandleSetting, ptr %395, i32 0, i32 1
  %397 = load i32, ptr %396, align 4, !tbaa !15
  %398 = icmp eq i32 %397, 2
  %399 = zext i1 %398 to i64
  %400 = select i1 %398, double 2.000000e+00, double 1.000000e+00
  %401 = fdiv double %392, %400
  %402 = fcmp ogt double %235, %401
  br i1 %402, label %403, label %836

403:                                              ; preds = %390
  %404 = load ptr, ptr %16, align 8, !tbaa !9
  %405 = load i32, ptr %21, align 4, !tbaa !5
  %406 = sub nsw i32 %405, 4
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds float, ptr %404, i64 %407
  %409 = load float, ptr %408, align 4, !tbaa !16
  %410 = load ptr, ptr %13, align 8, !tbaa !9
  %411 = load i32, ptr %21, align 4, !tbaa !5
  %412 = sub nsw i32 %411, 4
  %413 = sext i32 %412 to i64
  %414 = getelementptr inbounds float, ptr %410, i64 %413
  %415 = load float, ptr %414, align 4, !tbaa !16
  %416 = fcmp oge float %409, %415
  %417 = zext i1 %416 to i64
  %418 = select i1 %416, i32 1, i32 -1
  %419 = load ptr, ptr %16, align 8, !tbaa !9
  %420 = load i32, ptr %21, align 4, !tbaa !5
  %421 = sub nsw i32 %420, 3
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds float, ptr %419, i64 %422
  %424 = load float, ptr %423, align 4, !tbaa !16
  %425 = load ptr, ptr %13, align 8, !tbaa !9
  %426 = load i32, ptr %21, align 4, !tbaa !5
  %427 = sub nsw i32 %426, 3
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds float, ptr %425, i64 %428
  %430 = load float, ptr %429, align 4, !tbaa !16
  %431 = fcmp oge float %424, %430
  %432 = zext i1 %431 to i64
  %433 = select i1 %431, i32 1, i32 -1
  %434 = icmp eq i32 %418, %433
  br i1 %434, label %435, label %836

435:                                              ; preds = %403
  %436 = load ptr, ptr %16, align 8, !tbaa !9
  %437 = load i32, ptr %21, align 4, !tbaa !5
  %438 = sub nsw i32 %437, 3
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds float, ptr %436, i64 %439
  %441 = load float, ptr %440, align 4, !tbaa !16
  %442 = load ptr, ptr %13, align 8, !tbaa !9
  %443 = load i32, ptr %21, align 4, !tbaa !5
  %444 = sub nsw i32 %443, 3
  %445 = sext i32 %444 to i64
  %446 = getelementptr inbounds float, ptr %442, i64 %445
  %447 = load float, ptr %446, align 4, !tbaa !16
  %448 = fcmp oge float %441, %447
  %449 = zext i1 %448 to i64
  %450 = select i1 %448, i32 1, i32 -1
  %451 = load ptr, ptr %16, align 8, !tbaa !9
  %452 = load i32, ptr %21, align 4, !tbaa !5
  %453 = sub nsw i32 %452, 1
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds float, ptr %451, i64 %454
  %456 = load float, ptr %455, align 4, !tbaa !16
  %457 = load ptr, ptr %13, align 8, !tbaa !9
  %458 = load i32, ptr %21, align 4, !tbaa !5
  %459 = sub nsw i32 %458, 1
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds float, ptr %457, i64 %460
  %462 = load float, ptr %461, align 4, !tbaa !16
  %463 = fcmp oge float %456, %462
  %464 = zext i1 %463 to i64
  %465 = select i1 %463, i32 1, i32 -1
  %466 = icmp eq i32 %450, %465
  br i1 %466, label %467, label %836

467:                                              ; preds = %435
  %468 = load ptr, ptr %16, align 8, !tbaa !9
  %469 = load i32, ptr %21, align 4, !tbaa !5
  %470 = sub nsw i32 %469, 1
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds float, ptr %468, i64 %471
  %473 = load float, ptr %472, align 4, !tbaa !16
  %474 = load ptr, ptr %13, align 8, !tbaa !9
  %475 = load i32, ptr %21, align 4, !tbaa !5
  %476 = sub nsw i32 %475, 1
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds float, ptr %474, i64 %477
  %479 = load float, ptr %478, align 4, !tbaa !16
  %480 = fcmp oge float %473, %479
  %481 = zext i1 %480 to i64
  %482 = select i1 %480, i32 1, i32 -1
  %483 = load ptr, ptr %16, align 8, !tbaa !9
  %484 = load i32, ptr %21, align 4, !tbaa !5
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds float, ptr %483, i64 %485
  %487 = load float, ptr %486, align 4, !tbaa !16
  %488 = load ptr, ptr %13, align 8, !tbaa !9
  %489 = load i32, ptr %21, align 4, !tbaa !5
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds float, ptr %488, i64 %490
  %492 = load float, ptr %491, align 4, !tbaa !16
  %493 = fcmp oge float %487, %492
  %494 = zext i1 %493 to i64
  %495 = select i1 %493, i32 1, i32 -1
  %496 = sub nsw i32 0, %495
  %497 = icmp eq i32 %482, %496
  br i1 %497, label %498, label %836

498:                                              ; preds = %467
  %499 = load ptr, ptr %16, align 8, !tbaa !9
  %500 = load i32, ptr %21, align 4, !tbaa !5
  %501 = sub nsw i32 %500, 4
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds float, ptr %499, i64 %502
  %504 = load float, ptr %503, align 4, !tbaa !16
  %505 = load ptr, ptr %13, align 8, !tbaa !9
  %506 = load i32, ptr %21, align 4, !tbaa !5
  %507 = sub nsw i32 %506, 4
  %508 = sext i32 %507 to i64
  %509 = getelementptr inbounds float, ptr %505, i64 %508
  %510 = load float, ptr %509, align 4, !tbaa !16
  %511 = fcmp oge float %504, %510
  %512 = zext i1 %511 to i64
  %513 = select i1 %511, i32 1, i32 -1
  %514 = icmp eq i32 %513, -1
  br i1 %514, label %515, label %657

515:                                              ; preds = %498
  %516 = load ptr, ptr %13, align 8, !tbaa !9
  %517 = load i32, ptr %21, align 4, !tbaa !5
  %518 = sub nsw i32 %517, 3
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds float, ptr %516, i64 %519
  %521 = load float, ptr %520, align 4, !tbaa !16
  %522 = load ptr, ptr %16, align 8, !tbaa !9
  %523 = load i32, ptr %21, align 4, !tbaa !5
  %524 = sub nsw i32 %523, 3
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds float, ptr %522, i64 %525
  %527 = load float, ptr %526, align 4, !tbaa !16
  %528 = fcmp ogt float %521, %527
  br i1 %528, label %529, label %536

529:                                              ; preds = %515
  %530 = load ptr, ptr %13, align 8, !tbaa !9
  %531 = load i32, ptr %21, align 4, !tbaa !5
  %532 = sub nsw i32 %531, 3
  %533 = sext i32 %532 to i64
  %534 = getelementptr inbounds float, ptr %530, i64 %533
  %535 = load float, ptr %534, align 4, !tbaa !16
  br label %543

536:                                              ; preds = %515
  %537 = load ptr, ptr %16, align 8, !tbaa !9
  %538 = load i32, ptr %21, align 4, !tbaa !5
  %539 = sub nsw i32 %538, 3
  %540 = sext i32 %539 to i64
  %541 = getelementptr inbounds float, ptr %537, i64 %540
  %542 = load float, ptr %541, align 4, !tbaa !16
  br label %543

543:                                              ; preds = %536, %529
  %544 = phi float [ %535, %529 ], [ %542, %536 ]
  %545 = load ptr, ptr %13, align 8, !tbaa !9
  %546 = load i32, ptr %21, align 4, !tbaa !5
  %547 = sub nsw i32 %546, 4
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds float, ptr %545, i64 %548
  %550 = load float, ptr %549, align 4, !tbaa !16
  %551 = load ptr, ptr %16, align 8, !tbaa !9
  %552 = load i32, ptr %21, align 4, !tbaa !5
  %553 = sub nsw i32 %552, 4
  %554 = sext i32 %553 to i64
  %555 = getelementptr inbounds float, ptr %551, i64 %554
  %556 = load float, ptr %555, align 4, !tbaa !16
  %557 = fcmp olt float %550, %556
  br i1 %557, label %558, label %565

558:                                              ; preds = %543
  %559 = load ptr, ptr %13, align 8, !tbaa !9
  %560 = load i32, ptr %21, align 4, !tbaa !5
  %561 = sub nsw i32 %560, 4
  %562 = sext i32 %561 to i64
  %563 = getelementptr inbounds float, ptr %559, i64 %562
  %564 = load float, ptr %563, align 4, !tbaa !16
  br label %572

565:                                              ; preds = %543
  %566 = load ptr, ptr %16, align 8, !tbaa !9
  %567 = load i32, ptr %21, align 4, !tbaa !5
  %568 = sub nsw i32 %567, 4
  %569 = sext i32 %568 to i64
  %570 = getelementptr inbounds float, ptr %566, i64 %569
  %571 = load float, ptr %570, align 4, !tbaa !16
  br label %572

572:                                              ; preds = %565, %558
  %573 = phi float [ %564, %558 ], [ %571, %565 ]
  %574 = fcmp olt float %544, %573
  br i1 %574, label %575, label %657

575:                                              ; preds = %572
  %576 = load ptr, ptr %14, align 8, !tbaa !9
  %577 = load i32, ptr %21, align 4, !tbaa !5
  %578 = sub nsw i32 %577, 2
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds float, ptr %576, i64 %579
  %581 = load float, ptr %580, align 4, !tbaa !16
  %582 = load ptr, ptr %14, align 8, !tbaa !9
  %583 = load i32, ptr %21, align 4, !tbaa !5
  %584 = sub nsw i32 %583, 3
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds float, ptr %582, i64 %585
  %587 = load float, ptr %586, align 4, !tbaa !16
  %588 = fcmp olt float %581, %587
  br i1 %588, label %589, label %657

589:                                              ; preds = %575
  %590 = load ptr, ptr %15, align 8, !tbaa !9
  %591 = load i32, ptr %21, align 4, !tbaa !5
  %592 = sub nsw i32 %591, 2
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds float, ptr %590, i64 %593
  %595 = load float, ptr %594, align 4, !tbaa !16
  %596 = load ptr, ptr %15, align 8, !tbaa !9
  %597 = load i32, ptr %21, align 4, !tbaa !5
  %598 = sub nsw i32 %597, 3
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds float, ptr %596, i64 %599
  %601 = load float, ptr %600, align 4, !tbaa !16
  %602 = fcmp olt float %595, %601
  br i1 %602, label %603, label %657

603:                                              ; preds = %589
  %604 = load ptr, ptr %14, align 8, !tbaa !9
  %605 = load i32, ptr %21, align 4, !tbaa !5
  %606 = sub nsw i32 %605, 1
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds float, ptr %604, i64 %607
  %609 = load float, ptr %608, align 4, !tbaa !16
  %610 = load ptr, ptr %14, align 8, !tbaa !9
  %611 = load i32, ptr %21, align 4, !tbaa !5
  %612 = sub nsw i32 %611, 2
  %613 = sext i32 %612 to i64
  %614 = getelementptr inbounds float, ptr %610, i64 %613
  %615 = load float, ptr %614, align 4, !tbaa !16
  %616 = fcmp olt float %609, %615
  br i1 %616, label %617, label %657

617:                                              ; preds = %603
  %618 = load ptr, ptr %15, align 8, !tbaa !9
  %619 = load i32, ptr %21, align 4, !tbaa !5
  %620 = sub nsw i32 %619, 1
  %621 = sext i32 %620 to i64
  %622 = getelementptr inbounds float, ptr %618, i64 %621
  %623 = load float, ptr %622, align 4, !tbaa !16
  %624 = load ptr, ptr %15, align 8, !tbaa !9
  %625 = load i32, ptr %21, align 4, !tbaa !5
  %626 = sub nsw i32 %625, 2
  %627 = sext i32 %626 to i64
  %628 = getelementptr inbounds float, ptr %624, i64 %627
  %629 = load float, ptr %628, align 4, !tbaa !16
  %630 = fcmp olt float %623, %629
  br i1 %630, label %631, label %657

631:                                              ; preds = %617
  %632 = load ptr, ptr %16, align 8, !tbaa !9
  %633 = load i32, ptr %21, align 4, !tbaa !5
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds float, ptr %632, i64 %634
  %636 = load float, ptr %635, align 4, !tbaa !16
  %637 = load ptr, ptr %13, align 8, !tbaa !9
  %638 = load i32, ptr %21, align 4, !tbaa !5
  %639 = sub nsw i32 %638, 3
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds float, ptr %637, i64 %640
  %642 = load float, ptr %641, align 4, !tbaa !16
  %643 = fcmp ogt float %636, %642
  br i1 %643, label %644, label %657

644:                                              ; preds = %631
  %645 = load ptr, ptr %16, align 8, !tbaa !9
  %646 = load i32, ptr %21, align 4, !tbaa !5
  %647 = sext i32 %646 to i64
  %648 = getelementptr inbounds float, ptr %645, i64 %647
  %649 = load float, ptr %648, align 4, !tbaa !16
  %650 = load ptr, ptr %16, align 8, !tbaa !9
  %651 = load i32, ptr %21, align 4, !tbaa !5
  %652 = sub nsw i32 %651, 4
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds float, ptr %650, i64 %653
  %655 = load float, ptr %654, align 4, !tbaa !16
  %656 = fcmp olt float %649, %655
  br i1 %656, label %816, label %657

657:                                              ; preds = %644, %631, %617, %603, %589, %575, %572, %498
  %658 = load ptr, ptr %16, align 8, !tbaa !9
  %659 = load i32, ptr %21, align 4, !tbaa !5
  %660 = sub nsw i32 %659, 4
  %661 = sext i32 %660 to i64
  %662 = getelementptr inbounds float, ptr %658, i64 %661
  %663 = load float, ptr %662, align 4, !tbaa !16
  %664 = load ptr, ptr %13, align 8, !tbaa !9
  %665 = load i32, ptr %21, align 4, !tbaa !5
  %666 = sub nsw i32 %665, 4
  %667 = sext i32 %666 to i64
  %668 = getelementptr inbounds float, ptr %664, i64 %667
  %669 = load float, ptr %668, align 4, !tbaa !16
  %670 = fcmp oge float %663, %669
  %671 = zext i1 %670 to i64
  %672 = select i1 %670, i32 1, i32 -1
  %673 = icmp eq i32 %672, 1
  br i1 %673, label %674, label %836

674:                                              ; preds = %657
  %675 = load ptr, ptr %13, align 8, !tbaa !9
  %676 = load i32, ptr %21, align 4, !tbaa !5
  %677 = sub nsw i32 %676, 3
  %678 = sext i32 %677 to i64
  %679 = getelementptr inbounds float, ptr %675, i64 %678
  %680 = load float, ptr %679, align 4, !tbaa !16
  %681 = load ptr, ptr %16, align 8, !tbaa !9
  %682 = load i32, ptr %21, align 4, !tbaa !5
  %683 = sub nsw i32 %682, 3
  %684 = sext i32 %683 to i64
  %685 = getelementptr inbounds float, ptr %681, i64 %684
  %686 = load float, ptr %685, align 4, !tbaa !16
  %687 = fcmp olt float %680, %686
  br i1 %687, label %688, label %695

688:                                              ; preds = %674
  %689 = load ptr, ptr %13, align 8, !tbaa !9
  %690 = load i32, ptr %21, align 4, !tbaa !5
  %691 = sub nsw i32 %690, 3
  %692 = sext i32 %691 to i64
  %693 = getelementptr inbounds float, ptr %689, i64 %692
  %694 = load float, ptr %693, align 4, !tbaa !16
  br label %702

695:                                              ; preds = %674
  %696 = load ptr, ptr %16, align 8, !tbaa !9
  %697 = load i32, ptr %21, align 4, !tbaa !5
  %698 = sub nsw i32 %697, 3
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds float, ptr %696, i64 %699
  %701 = load float, ptr %700, align 4, !tbaa !16
  br label %702

702:                                              ; preds = %695, %688
  %703 = phi float [ %694, %688 ], [ %701, %695 ]
  %704 = load ptr, ptr %13, align 8, !tbaa !9
  %705 = load i32, ptr %21, align 4, !tbaa !5
  %706 = sub nsw i32 %705, 4
  %707 = sext i32 %706 to i64
  %708 = getelementptr inbounds float, ptr %704, i64 %707
  %709 = load float, ptr %708, align 4, !tbaa !16
  %710 = load ptr, ptr %16, align 8, !tbaa !9
  %711 = load i32, ptr %21, align 4, !tbaa !5
  %712 = sub nsw i32 %711, 4
  %713 = sext i32 %712 to i64
  %714 = getelementptr inbounds float, ptr %710, i64 %713
  %715 = load float, ptr %714, align 4, !tbaa !16
  %716 = fcmp ogt float %709, %715
  br i1 %716, label %717, label %724

717:                                              ; preds = %702
  %718 = load ptr, ptr %13, align 8, !tbaa !9
  %719 = load i32, ptr %21, align 4, !tbaa !5
  %720 = sub nsw i32 %719, 4
  %721 = sext i32 %720 to i64
  %722 = getelementptr inbounds float, ptr %718, i64 %721
  %723 = load float, ptr %722, align 4, !tbaa !16
  br label %731

724:                                              ; preds = %702
  %725 = load ptr, ptr %16, align 8, !tbaa !9
  %726 = load i32, ptr %21, align 4, !tbaa !5
  %727 = sub nsw i32 %726, 4
  %728 = sext i32 %727 to i64
  %729 = getelementptr inbounds float, ptr %725, i64 %728
  %730 = load float, ptr %729, align 4, !tbaa !16
  br label %731

731:                                              ; preds = %724, %717
  %732 = phi float [ %723, %717 ], [ %730, %724 ]
  %733 = fcmp ogt float %703, %732
  br i1 %733, label %734, label %836

734:                                              ; preds = %731
  %735 = load ptr, ptr %14, align 8, !tbaa !9
  %736 = load i32, ptr %21, align 4, !tbaa !5
  %737 = sub nsw i32 %736, 2
  %738 = sext i32 %737 to i64
  %739 = getelementptr inbounds float, ptr %735, i64 %738
  %740 = load float, ptr %739, align 4, !tbaa !16
  %741 = load ptr, ptr %14, align 8, !tbaa !9
  %742 = load i32, ptr %21, align 4, !tbaa !5
  %743 = sub nsw i32 %742, 3
  %744 = sext i32 %743 to i64
  %745 = getelementptr inbounds float, ptr %741, i64 %744
  %746 = load float, ptr %745, align 4, !tbaa !16
  %747 = fcmp ogt float %740, %746
  br i1 %747, label %748, label %836

748:                                              ; preds = %734
  %749 = load ptr, ptr %15, align 8, !tbaa !9
  %750 = load i32, ptr %21, align 4, !tbaa !5
  %751 = sub nsw i32 %750, 2
  %752 = sext i32 %751 to i64
  %753 = getelementptr inbounds float, ptr %749, i64 %752
  %754 = load float, ptr %753, align 4, !tbaa !16
  %755 = load ptr, ptr %15, align 8, !tbaa !9
  %756 = load i32, ptr %21, align 4, !tbaa !5
  %757 = sub nsw i32 %756, 3
  %758 = sext i32 %757 to i64
  %759 = getelementptr inbounds float, ptr %755, i64 %758
  %760 = load float, ptr %759, align 4, !tbaa !16
  %761 = fcmp ogt float %754, %760
  br i1 %761, label %762, label %836

762:                                              ; preds = %748
  %763 = load ptr, ptr %14, align 8, !tbaa !9
  %764 = load i32, ptr %21, align 4, !tbaa !5
  %765 = sub nsw i32 %764, 1
  %766 = sext i32 %765 to i64
  %767 = getelementptr inbounds float, ptr %763, i64 %766
  %768 = load float, ptr %767, align 4, !tbaa !16
  %769 = load ptr, ptr %14, align 8, !tbaa !9
  %770 = load i32, ptr %21, align 4, !tbaa !5
  %771 = sub nsw i32 %770, 2
  %772 = sext i32 %771 to i64
  %773 = getelementptr inbounds float, ptr %769, i64 %772
  %774 = load float, ptr %773, align 4, !tbaa !16
  %775 = fcmp ogt float %768, %774
  br i1 %775, label %776, label %836

776:                                              ; preds = %762
  %777 = load ptr, ptr %15, align 8, !tbaa !9
  %778 = load i32, ptr %21, align 4, !tbaa !5
  %779 = sub nsw i32 %778, 1
  %780 = sext i32 %779 to i64
  %781 = getelementptr inbounds float, ptr %777, i64 %780
  %782 = load float, ptr %781, align 4, !tbaa !16
  %783 = load ptr, ptr %15, align 8, !tbaa !9
  %784 = load i32, ptr %21, align 4, !tbaa !5
  %785 = sub nsw i32 %784, 2
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds float, ptr %783, i64 %786
  %788 = load float, ptr %787, align 4, !tbaa !16
  %789 = fcmp ogt float %782, %788
  br i1 %789, label %790, label %836

790:                                              ; preds = %776
  %791 = load ptr, ptr %16, align 8, !tbaa !9
  %792 = load i32, ptr %21, align 4, !tbaa !5
  %793 = sext i32 %792 to i64
  %794 = getelementptr inbounds float, ptr %791, i64 %793
  %795 = load float, ptr %794, align 4, !tbaa !16
  %796 = load ptr, ptr %13, align 8, !tbaa !9
  %797 = load i32, ptr %21, align 4, !tbaa !5
  %798 = sub nsw i32 %797, 3
  %799 = sext i32 %798 to i64
  %800 = getelementptr inbounds float, ptr %796, i64 %799
  %801 = load float, ptr %800, align 4, !tbaa !16
  %802 = fcmp olt float %795, %801
  br i1 %802, label %803, label %836

803:                                              ; preds = %790
  %804 = load ptr, ptr %16, align 8, !tbaa !9
  %805 = load i32, ptr %21, align 4, !tbaa !5
  %806 = sext i32 %805 to i64
  %807 = getelementptr inbounds float, ptr %804, i64 %806
  %808 = load float, ptr %807, align 4, !tbaa !16
  %809 = load ptr, ptr %16, align 8, !tbaa !9
  %810 = load i32, ptr %21, align 4, !tbaa !5
  %811 = sub nsw i32 %810, 4
  %812 = sext i32 %811 to i64
  %813 = getelementptr inbounds float, ptr %809, i64 %812
  %814 = load float, ptr %813, align 4, !tbaa !16
  %815 = fcmp ogt float %808, %814
  br i1 %815, label %816, label %836

816:                                              ; preds = %803, %644
  %817 = load ptr, ptr %16, align 8, !tbaa !9
  %818 = load i32, ptr %21, align 4, !tbaa !5
  %819 = sext i32 %818 to i64
  %820 = getelementptr inbounds float, ptr %817, i64 %819
  %821 = load float, ptr %820, align 4, !tbaa !16
  %822 = load ptr, ptr %13, align 8, !tbaa !9
  %823 = load i32, ptr %21, align 4, !tbaa !5
  %824 = sext i32 %823 to i64
  %825 = getelementptr inbounds float, ptr %822, i64 %824
  %826 = load float, ptr %825, align 4, !tbaa !16
  %827 = fcmp oge float %821, %826
  %828 = zext i1 %827 to i64
  %829 = select i1 %827, i32 1, i32 -1
  %830 = mul nsw i32 %829, 100
  %831 = load ptr, ptr %19, align 8, !tbaa !9
  %832 = load i32, ptr %22, align 4, !tbaa !5
  %833 = add nsw i32 %832, 1
  store i32 %833, ptr %22, align 4, !tbaa !5
  %834 = sext i32 %832 to i64
  %835 = getelementptr inbounds i32, ptr %831, i64 %834
  store i32 %830, ptr %835, align 4, !tbaa !5
  br label %842

836:                                              ; preds = %803, %790, %776, %762, %748, %734, %731, %657, %467, %435, %403, %390
  %837 = load ptr, ptr %19, align 8, !tbaa !9
  %838 = load i32, ptr %22, align 4, !tbaa !5
  %839 = add nsw i32 %838, 1
  store i32 %839, ptr %22, align 4, !tbaa !5
  %840 = sext i32 %838 to i64
  %841 = getelementptr inbounds i32, ptr %837, i64 %840
  store i32 0, ptr %841, align 4, !tbaa !5
  br label %842

842:                                              ; preds = %836, %816
  %843 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %844 = getelementptr inbounds %struct.TA_LibcPriv, ptr %843, i32 0, i32 8
  %845 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %844, i64 0, i64 0
  %846 = getelementptr inbounds %struct.TA_CandleSetting, ptr %845, i32 0, i32 1
  %847 = load i32, ptr %846, align 4, !tbaa !15
  %848 = icmp eq i32 %847, 0
  br i1 %848, label %849, label %865

849:                                              ; preds = %842
  %850 = load ptr, ptr %16, align 8, !tbaa !9
  %851 = load i32, ptr %21, align 4, !tbaa !5
  %852 = sub nsw i32 %851, 4
  %853 = sext i32 %852 to i64
  %854 = getelementptr inbounds float, ptr %850, i64 %853
  %855 = load float, ptr %854, align 4, !tbaa !16
  %856 = load ptr, ptr %13, align 8, !tbaa !9
  %857 = load i32, ptr %21, align 4, !tbaa !5
  %858 = sub nsw i32 %857, 4
  %859 = sext i32 %858 to i64
  %860 = getelementptr inbounds float, ptr %856, i64 %859
  %861 = load float, ptr %860, align 4, !tbaa !16
  %862 = fsub float %855, %861
  %863 = fpext float %862 to double
  %864 = call double @llvm.fabs.f64(double %863)
  br label %973

865:                                              ; preds = %842
  %866 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %867 = getelementptr inbounds %struct.TA_LibcPriv, ptr %866, i32 0, i32 8
  %868 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %867, i64 0, i64 0
  %869 = getelementptr inbounds %struct.TA_CandleSetting, ptr %868, i32 0, i32 1
  %870 = load i32, ptr %869, align 4, !tbaa !15
  %871 = icmp eq i32 %870, 1
  br i1 %871, label %872, label %886

872:                                              ; preds = %865
  %873 = load ptr, ptr %14, align 8, !tbaa !9
  %874 = load i32, ptr %21, align 4, !tbaa !5
  %875 = sub nsw i32 %874, 4
  %876 = sext i32 %875 to i64
  %877 = getelementptr inbounds float, ptr %873, i64 %876
  %878 = load float, ptr %877, align 4, !tbaa !16
  %879 = load ptr, ptr %15, align 8, !tbaa !9
  %880 = load i32, ptr %21, align 4, !tbaa !5
  %881 = sub nsw i32 %880, 4
  %882 = sext i32 %881 to i64
  %883 = getelementptr inbounds float, ptr %879, i64 %882
  %884 = load float, ptr %883, align 4, !tbaa !16
  %885 = fsub float %878, %884
  br label %970

886:                                              ; preds = %865
  %887 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %888 = getelementptr inbounds %struct.TA_LibcPriv, ptr %887, i32 0, i32 8
  %889 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %888, i64 0, i64 0
  %890 = getelementptr inbounds %struct.TA_CandleSetting, ptr %889, i32 0, i32 1
  %891 = load i32, ptr %890, align 4, !tbaa !15
  %892 = icmp eq i32 %891, 2
  br i1 %892, label %893, label %967

893:                                              ; preds = %886
  %894 = load ptr, ptr %14, align 8, !tbaa !9
  %895 = load i32, ptr %21, align 4, !tbaa !5
  %896 = sub nsw i32 %895, 4
  %897 = sext i32 %896 to i64
  %898 = getelementptr inbounds float, ptr %894, i64 %897
  %899 = load float, ptr %898, align 4, !tbaa !16
  %900 = load ptr, ptr %16, align 8, !tbaa !9
  %901 = load i32, ptr %21, align 4, !tbaa !5
  %902 = sub nsw i32 %901, 4
  %903 = sext i32 %902 to i64
  %904 = getelementptr inbounds float, ptr %900, i64 %903
  %905 = load float, ptr %904, align 4, !tbaa !16
  %906 = load ptr, ptr %13, align 8, !tbaa !9
  %907 = load i32, ptr %21, align 4, !tbaa !5
  %908 = sub nsw i32 %907, 4
  %909 = sext i32 %908 to i64
  %910 = getelementptr inbounds float, ptr %906, i64 %909
  %911 = load float, ptr %910, align 4, !tbaa !16
  %912 = fcmp oge float %905, %911
  br i1 %912, label %913, label %920

913:                                              ; preds = %893
  %914 = load ptr, ptr %16, align 8, !tbaa !9
  %915 = load i32, ptr %21, align 4, !tbaa !5
  %916 = sub nsw i32 %915, 4
  %917 = sext i32 %916 to i64
  %918 = getelementptr inbounds float, ptr %914, i64 %917
  %919 = load float, ptr %918, align 4, !tbaa !16
  br label %927

920:                                              ; preds = %893
  %921 = load ptr, ptr %13, align 8, !tbaa !9
  %922 = load i32, ptr %21, align 4, !tbaa !5
  %923 = sub nsw i32 %922, 4
  %924 = sext i32 %923 to i64
  %925 = getelementptr inbounds float, ptr %921, i64 %924
  %926 = load float, ptr %925, align 4, !tbaa !16
  br label %927

927:                                              ; preds = %920, %913
  %928 = phi float [ %919, %913 ], [ %926, %920 ]
  %929 = fsub float %899, %928
  %930 = load ptr, ptr %16, align 8, !tbaa !9
  %931 = load i32, ptr %21, align 4, !tbaa !5
  %932 = sub nsw i32 %931, 4
  %933 = sext i32 %932 to i64
  %934 = getelementptr inbounds float, ptr %930, i64 %933
  %935 = load float, ptr %934, align 4, !tbaa !16
  %936 = load ptr, ptr %13, align 8, !tbaa !9
  %937 = load i32, ptr %21, align 4, !tbaa !5
  %938 = sub nsw i32 %937, 4
  %939 = sext i32 %938 to i64
  %940 = getelementptr inbounds float, ptr %936, i64 %939
  %941 = load float, ptr %940, align 4, !tbaa !16
  %942 = fcmp oge float %935, %941
  br i1 %942, label %943, label %950

943:                                              ; preds = %927
  %944 = load ptr, ptr %13, align 8, !tbaa !9
  %945 = load i32, ptr %21, align 4, !tbaa !5
  %946 = sub nsw i32 %945, 4
  %947 = sext i32 %946 to i64
  %948 = getelementptr inbounds float, ptr %944, i64 %947
  %949 = load float, ptr %948, align 4, !tbaa !16
  br label %957

950:                                              ; preds = %927
  %951 = load ptr, ptr %16, align 8, !tbaa !9
  %952 = load i32, ptr %21, align 4, !tbaa !5
  %953 = sub nsw i32 %952, 4
  %954 = sext i32 %953 to i64
  %955 = getelementptr inbounds float, ptr %951, i64 %954
  %956 = load float, ptr %955, align 4, !tbaa !16
  br label %957

957:                                              ; preds = %950, %943
  %958 = phi float [ %949, %943 ], [ %956, %950 ]
  %959 = load ptr, ptr %15, align 8, !tbaa !9
  %960 = load i32, ptr %21, align 4, !tbaa !5
  %961 = sub nsw i32 %960, 4
  %962 = sext i32 %961 to i64
  %963 = getelementptr inbounds float, ptr %959, i64 %962
  %964 = load float, ptr %963, align 4, !tbaa !16
  %965 = fsub float %958, %964
  %966 = fadd float %929, %965
  br label %968

967:                                              ; preds = %886
  br label %968

968:                                              ; preds = %967, %957
  %969 = phi float [ %966, %957 ], [ 0.000000e+00, %967 ]
  br label %970

970:                                              ; preds = %968, %872
  %971 = phi float [ %885, %872 ], [ %969, %968 ]
  %972 = fpext float %971 to double
  br label %973

973:                                              ; preds = %970, %849
  %974 = phi double [ %864, %849 ], [ %972, %970 ]
  %975 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %976 = getelementptr inbounds %struct.TA_LibcPriv, ptr %975, i32 0, i32 8
  %977 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %976, i64 0, i64 0
  %978 = getelementptr inbounds %struct.TA_CandleSetting, ptr %977, i32 0, i32 1
  %979 = load i32, ptr %978, align 4, !tbaa !15
  %980 = icmp eq i32 %979, 0
  br i1 %980, label %981, label %997

981:                                              ; preds = %973
  %982 = load ptr, ptr %16, align 8, !tbaa !9
  %983 = load i32, ptr %23, align 4, !tbaa !5
  %984 = sub nsw i32 %983, 4
  %985 = sext i32 %984 to i64
  %986 = getelementptr inbounds float, ptr %982, i64 %985
  %987 = load float, ptr %986, align 4, !tbaa !16
  %988 = load ptr, ptr %13, align 8, !tbaa !9
  %989 = load i32, ptr %23, align 4, !tbaa !5
  %990 = sub nsw i32 %989, 4
  %991 = sext i32 %990 to i64
  %992 = getelementptr inbounds float, ptr %988, i64 %991
  %993 = load float, ptr %992, align 4, !tbaa !16
  %994 = fsub float %987, %993
  %995 = fpext float %994 to double
  %996 = call double @llvm.fabs.f64(double %995)
  br label %1105

997:                                              ; preds = %973
  %998 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %999 = getelementptr inbounds %struct.TA_LibcPriv, ptr %998, i32 0, i32 8
  %1000 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %999, i64 0, i64 0
  %1001 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1000, i32 0, i32 1
  %1002 = load i32, ptr %1001, align 4, !tbaa !15
  %1003 = icmp eq i32 %1002, 1
  br i1 %1003, label %1004, label %1018

1004:                                             ; preds = %997
  %1005 = load ptr, ptr %14, align 8, !tbaa !9
  %1006 = load i32, ptr %23, align 4, !tbaa !5
  %1007 = sub nsw i32 %1006, 4
  %1008 = sext i32 %1007 to i64
  %1009 = getelementptr inbounds float, ptr %1005, i64 %1008
  %1010 = load float, ptr %1009, align 4, !tbaa !16
  %1011 = load ptr, ptr %15, align 8, !tbaa !9
  %1012 = load i32, ptr %23, align 4, !tbaa !5
  %1013 = sub nsw i32 %1012, 4
  %1014 = sext i32 %1013 to i64
  %1015 = getelementptr inbounds float, ptr %1011, i64 %1014
  %1016 = load float, ptr %1015, align 4, !tbaa !16
  %1017 = fsub float %1010, %1016
  br label %1102

1018:                                             ; preds = %997
  %1019 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1020 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1019, i32 0, i32 8
  %1021 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1020, i64 0, i64 0
  %1022 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1021, i32 0, i32 1
  %1023 = load i32, ptr %1022, align 4, !tbaa !15
  %1024 = icmp eq i32 %1023, 2
  br i1 %1024, label %1025, label %1099

1025:                                             ; preds = %1018
  %1026 = load ptr, ptr %14, align 8, !tbaa !9
  %1027 = load i32, ptr %23, align 4, !tbaa !5
  %1028 = sub nsw i32 %1027, 4
  %1029 = sext i32 %1028 to i64
  %1030 = getelementptr inbounds float, ptr %1026, i64 %1029
  %1031 = load float, ptr %1030, align 4, !tbaa !16
  %1032 = load ptr, ptr %16, align 8, !tbaa !9
  %1033 = load i32, ptr %23, align 4, !tbaa !5
  %1034 = sub nsw i32 %1033, 4
  %1035 = sext i32 %1034 to i64
  %1036 = getelementptr inbounds float, ptr %1032, i64 %1035
  %1037 = load float, ptr %1036, align 4, !tbaa !16
  %1038 = load ptr, ptr %13, align 8, !tbaa !9
  %1039 = load i32, ptr %23, align 4, !tbaa !5
  %1040 = sub nsw i32 %1039, 4
  %1041 = sext i32 %1040 to i64
  %1042 = getelementptr inbounds float, ptr %1038, i64 %1041
  %1043 = load float, ptr %1042, align 4, !tbaa !16
  %1044 = fcmp oge float %1037, %1043
  br i1 %1044, label %1045, label %1052

1045:                                             ; preds = %1025
  %1046 = load ptr, ptr %16, align 8, !tbaa !9
  %1047 = load i32, ptr %23, align 4, !tbaa !5
  %1048 = sub nsw i32 %1047, 4
  %1049 = sext i32 %1048 to i64
  %1050 = getelementptr inbounds float, ptr %1046, i64 %1049
  %1051 = load float, ptr %1050, align 4, !tbaa !16
  br label %1059

1052:                                             ; preds = %1025
  %1053 = load ptr, ptr %13, align 8, !tbaa !9
  %1054 = load i32, ptr %23, align 4, !tbaa !5
  %1055 = sub nsw i32 %1054, 4
  %1056 = sext i32 %1055 to i64
  %1057 = getelementptr inbounds float, ptr %1053, i64 %1056
  %1058 = load float, ptr %1057, align 4, !tbaa !16
  br label %1059

1059:                                             ; preds = %1052, %1045
  %1060 = phi float [ %1051, %1045 ], [ %1058, %1052 ]
  %1061 = fsub float %1031, %1060
  %1062 = load ptr, ptr %16, align 8, !tbaa !9
  %1063 = load i32, ptr %23, align 4, !tbaa !5
  %1064 = sub nsw i32 %1063, 4
  %1065 = sext i32 %1064 to i64
  %1066 = getelementptr inbounds float, ptr %1062, i64 %1065
  %1067 = load float, ptr %1066, align 4, !tbaa !16
  %1068 = load ptr, ptr %13, align 8, !tbaa !9
  %1069 = load i32, ptr %23, align 4, !tbaa !5
  %1070 = sub nsw i32 %1069, 4
  %1071 = sext i32 %1070 to i64
  %1072 = getelementptr inbounds float, ptr %1068, i64 %1071
  %1073 = load float, ptr %1072, align 4, !tbaa !16
  %1074 = fcmp oge float %1067, %1073
  br i1 %1074, label %1075, label %1082

1075:                                             ; preds = %1059
  %1076 = load ptr, ptr %13, align 8, !tbaa !9
  %1077 = load i32, ptr %23, align 4, !tbaa !5
  %1078 = sub nsw i32 %1077, 4
  %1079 = sext i32 %1078 to i64
  %1080 = getelementptr inbounds float, ptr %1076, i64 %1079
  %1081 = load float, ptr %1080, align 4, !tbaa !16
  br label %1089

1082:                                             ; preds = %1059
  %1083 = load ptr, ptr %16, align 8, !tbaa !9
  %1084 = load i32, ptr %23, align 4, !tbaa !5
  %1085 = sub nsw i32 %1084, 4
  %1086 = sext i32 %1085 to i64
  %1087 = getelementptr inbounds float, ptr %1083, i64 %1086
  %1088 = load float, ptr %1087, align 4, !tbaa !16
  br label %1089

1089:                                             ; preds = %1082, %1075
  %1090 = phi float [ %1081, %1075 ], [ %1088, %1082 ]
  %1091 = load ptr, ptr %15, align 8, !tbaa !9
  %1092 = load i32, ptr %23, align 4, !tbaa !5
  %1093 = sub nsw i32 %1092, 4
  %1094 = sext i32 %1093 to i64
  %1095 = getelementptr inbounds float, ptr %1091, i64 %1094
  %1096 = load float, ptr %1095, align 4, !tbaa !16
  %1097 = fsub float %1090, %1096
  %1098 = fadd float %1061, %1097
  br label %1100

1099:                                             ; preds = %1018
  br label %1100

1100:                                             ; preds = %1099, %1089
  %1101 = phi float [ %1098, %1089 ], [ 0.000000e+00, %1099 ]
  br label %1102

1102:                                             ; preds = %1100, %1004
  %1103 = phi float [ %1017, %1004 ], [ %1101, %1100 ]
  %1104 = fpext float %1103 to double
  br label %1105

1105:                                             ; preds = %1102, %981
  %1106 = phi double [ %996, %981 ], [ %1104, %1102 ]
  %1107 = fsub double %974, %1106
  %1108 = load double, ptr %20, align 8, !tbaa !11
  %1109 = fadd double %1108, %1107
  store double %1109, ptr %20, align 8, !tbaa !11
  %1110 = load i32, ptr %21, align 4, !tbaa !5
  %1111 = add nsw i32 %1110, 1
  store i32 %1111, ptr %21, align 4, !tbaa !5
  %1112 = load i32, ptr %23, align 4, !tbaa !5
  %1113 = add nsw i32 %1112, 1
  store i32 %1113, ptr %23, align 4, !tbaa !5
  br label %1114

1114:                                             ; preds = %1105
  %1115 = load i32, ptr %21, align 4, !tbaa !5
  %1116 = load i32, ptr %12, align 4, !tbaa !5
  %1117 = icmp sle i32 %1115, %1116
  br i1 %1117, label %220, label %1118, !llvm.loop !21

1118:                                             ; preds = %1114
  %1119 = load i32, ptr %22, align 4, !tbaa !5
  %1120 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 %1119, ptr %1120, align 4, !tbaa !5
  %1121 = load i32, ptr %11, align 4, !tbaa !5
  %1122 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 %1121, ptr %1122, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %25, align 4
  br label %1123

1123:                                             ; preds = %1118, %65, %53, %49, %36, %28
  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 4, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  %1124 = load i32, ptr %10, align 4
  ret i32 %1124
}

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 = !{!17, !17, i64 0}
!17 = !{!"float", !7, i64 0}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.mustprogress"}
!20 = !{!14, !12, i64 16}
!21 = distinct !{!21, !19}


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

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

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

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

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

.lr.ph:                                           ; preds = %25
  %31 = getelementptr inbounds i8, ptr %26, i64 212
  %32 = load i32, ptr %31, align 4, !tbaa !14
  switch i32 %32, label %.preheader [
    i32 0, label %.lr.ph.split.us.preheader
    i32 1, label %.lr.ph.split.us359.preheader
    i32 2, label %.lr.ph.split.us365.preheader
  ]

.lr.ph.split.us365.preheader:                     ; preds = %.lr.ph
  %33 = sext i32 %29 to i64
  %34 = zext nneg i32 %spec.select to i64
  br label %.lr.ph.split.us365

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

.lr.ph.split.us.preheader:                        ; preds = %.lr.ph
  %37 = sext i32 %29 to i64
  %38 = 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.iv380 = phi i64 [ %37, %.lr.ph.split.us.preheader ], [ %indvars.iv.next381, %.lr.ph.split.us ]
  %.0278357.us = phi double [ 0.000000e+00, %.lr.ph.split.us.preheader ], [ %47, %.lr.ph.split.us ]
  %39 = add nsw i64 %indvars.iv380, -4
  %40 = getelementptr inbounds float, ptr %5, i64 %39
  %41 = load float, ptr %40, align 4, !tbaa !15
  %42 = getelementptr inbounds float, ptr %2, i64 %39
  %43 = load float, ptr %42, align 4, !tbaa !15
  %44 = fsub float %41, %43
  %45 = tail call float @llvm.fabs.f32(float %44)
  %46 = fpext float %45 to double
  %47 = fadd double %.0278357.us, %46
  %indvars.iv.next381 = add nsw i64 %indvars.iv380, 1
  %48 = icmp slt i64 %indvars.iv.next381, %38
  br i1 %48, label %.lr.ph.split.us, label %.preheader, !llvm.loop !17

.lr.ph.split.us359:                               ; preds = %.lr.ph.split.us359.preheader, %.lr.ph.split.us359
  %indvars.iv377 = phi i64 [ %35, %.lr.ph.split.us359.preheader ], [ %indvars.iv.next378, %.lr.ph.split.us359 ]
  %.0278357.us361 = phi double [ 0.000000e+00, %.lr.ph.split.us359.preheader ], [ %56, %.lr.ph.split.us359 ]
  %49 = add nsw i64 %indvars.iv377, -4
  %50 = getelementptr inbounds float, ptr %3, i64 %49
  %51 = load float, ptr %50, align 4, !tbaa !15
  %52 = getelementptr inbounds float, ptr %4, i64 %49
  %53 = load float, ptr %52, align 4, !tbaa !15
  %54 = fsub float %51, %53
  %55 = fpext float %54 to double
  %56 = fadd double %.0278357.us361, %55
  %indvars.iv.next378 = add nsw i64 %indvars.iv377, 1
  %57 = icmp slt i64 %indvars.iv.next378, %36
  br i1 %57, label %.lr.ph.split.us359, label %.preheader, !llvm.loop !17

.lr.ph.split.us365:                               ; preds = %.lr.ph.split.us365.preheader, %.lr.ph.split.us365
  %indvars.iv = phi i64 [ %33, %.lr.ph.split.us365.preheader ], [ %indvars.iv.next, %.lr.ph.split.us365 ]
  %.0278357.us367 = phi double [ 0.000000e+00, %.lr.ph.split.us365.preheader ], [ %73, %.lr.ph.split.us365 ]
  %58 = add nsw i64 %indvars.iv, -4
  %59 = getelementptr inbounds float, ptr %3, i64 %58
  %60 = load float, ptr %59, align 4, !tbaa !15
  %61 = getelementptr inbounds float, ptr %5, i64 %58
  %62 = load float, ptr %61, align 4, !tbaa !15
  %63 = getelementptr inbounds float, ptr %2, i64 %58
  %64 = load float, ptr %63, align 4, !tbaa !15
  %65 = fcmp ult float %62, %64
  %..us = select i1 %65, float %64, float %62
  %66 = fsub float %60, %..us
  %67 = select i1 %65, float %62, float %64
  %68 = getelementptr inbounds float, ptr %4, i64 %58
  %69 = load float, ptr %68, align 4, !tbaa !15
  %70 = fsub float %67, %69
  %71 = fadd float %66, %70
  %72 = fpext float %71 to double
  %73 = fadd double %.0278357.us367, %72
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %74 = icmp slt i64 %indvars.iv.next, %34
  br i1 %74, label %.lr.ph.split.us365, label %.preheader, !llvm.loop !17

.preheader:                                       ; preds = %.lr.ph.split.us365, %.lr.ph.split.us359, %.lr.ph.split.us, %.lr.ph, %25
  %.0278.lcssa = phi double [ 0.000000e+00, %25 ], [ 0.000000e+00, %.lr.ph ], [ %47, %.lr.ph.split.us ], [ %56, %.lr.ph.split.us359 ], [ %73, %.lr.ph.split.us365 ]
  %75 = getelementptr inbounds i8, ptr %26, i64 224
  %76 = load double, ptr %75, align 8, !tbaa !19
  %77 = getelementptr inbounds i8, ptr %26, i64 212
  %78 = sext i32 %22 to i64
  %79 = zext nneg i32 %0 to i64
  %smax = tail call i64 @llvm.smax.i64(i64 %78, i64 %79)
  %80 = sext i32 %1 to i64
  %81 = sext i32 %29 to i64
  br label %82

82:                                               ; preds = %.preheader, %256
  %indvars.iv387 = phi i64 [ %81, %.preheader ], [ %indvars.iv.next388, %256 ]
  %indvars.iv385 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next386, %256 ]
  %indvars.iv383 = phi i64 [ %smax, %.preheader ], [ %indvars.iv.next384, %256 ]
  %.1279 = phi double [ %.0278.lcssa, %.preheader ], [ %260, %256 ]
  %83 = add nsw i64 %indvars.iv383, -4
  %84 = getelementptr inbounds float, ptr %5, i64 %83
  %85 = load float, ptr %84, align 4, !tbaa !15
  %86 = getelementptr inbounds float, ptr %2, i64 %83
  %87 = load float, ptr %86, align 4, !tbaa !15
  %88 = fsub float %85, %87
  %89 = tail call float @llvm.fabs.f32(float %88)
  %90 = fpext float %89 to double
  %91 = load i32, ptr %27, align 8, !tbaa !11
  %.not328 = icmp eq i32 %91, 0
  br i1 %.not328, label %95, label %92

92:                                               ; preds = %82
  %93 = sitofp i32 %91 to double
  %94 = fdiv double %.1279, %93
  %.pre = load i32, ptr %77, align 4, !tbaa !14
  br label %116

95:                                               ; preds = %82
  %96 = load i32, ptr %77, align 4, !tbaa !14
  switch i32 %96, label %113 [
    i32 0, label %.thread392
    i32 1, label %97
    i32 2, label %103
  ]

97:                                               ; preds = %95
  %98 = getelementptr inbounds float, ptr %3, i64 %83
  %99 = load float, ptr %98, align 4, !tbaa !15
  %100 = getelementptr inbounds float, ptr %4, i64 %83
  %101 = load float, ptr %100, align 4, !tbaa !15
  %102 = fsub float %99, %101
  br label %113

103:                                              ; preds = %95
  %104 = getelementptr inbounds float, ptr %3, i64 %83
  %105 = load float, ptr %104, align 4, !tbaa !15
  %106 = fcmp ult float %85, %87
  %.335 = select i1 %106, float %87, float %85
  %107 = fsub float %105, %.335
  %108 = select i1 %106, float %85, float %87
  %109 = getelementptr inbounds float, ptr %4, i64 %83
  %110 = load float, ptr %109, align 4, !tbaa !15
  %111 = fsub float %108, %110
  %112 = fadd float %107, %111
  br label %113

113:                                              ; preds = %95, %103, %97
  %114 = phi float [ %102, %97 ], [ %112, %103 ], [ 0.000000e+00, %95 ]
  %115 = fpext float %114 to double
  br label %116

116:                                              ; preds = %113, %92
  %117 = phi i32 [ %.pre, %92 ], [ %96, %113 ]
  %118 = phi double [ %94, %92 ], [ %115, %113 ]
  %.fr = freeze i32 %117
  %119 = icmp eq i32 %.fr, 2
  br i1 %119, label %120, label %.thread392

120:                                              ; preds = %116
  br label %.thread392

.thread392:                                       ; preds = %95, %116, %120
  %.pn = phi double [ %118, %120 ], [ %118, %116 ], [ %90, %95 ]
  %121 = phi double [ 2.000000e+00, %120 ], [ 1.000000e+00, %116 ], [ 1.000000e+00, %95 ]
  %122 = fmul double %76, %.pn
  %123 = fdiv double %122, %121
  %124 = fcmp olt double %123, %90
  br i1 %124, label %125, label %210

125:                                              ; preds = %.thread392
  %126 = fcmp oge float %85, %87
  %127 = add nsw i64 %indvars.iv383, -3
  %128 = getelementptr inbounds float, ptr %5, i64 %127
  %129 = load float, ptr %128, align 4, !tbaa !15
  %130 = getelementptr inbounds float, ptr %2, i64 %127
  %131 = load float, ptr %130, align 4, !tbaa !15
  %132 = fcmp oge float %129, %131
  %133 = xor i1 %126, %132
  br i1 %133, label %210, label %134

134:                                              ; preds = %125
  %135 = add nsw i64 %indvars.iv383, -1
  %136 = getelementptr inbounds float, ptr %5, i64 %135
  %137 = load float, ptr %136, align 4, !tbaa !15
  %138 = getelementptr inbounds float, ptr %2, i64 %135
  %139 = load float, ptr %138, align 4, !tbaa !15
  %140 = fcmp oge float %137, %139
  %141 = xor i1 %132, %140
  br i1 %141, label %210, label %142

142:                                              ; preds = %134
  %143 = getelementptr inbounds float, ptr %5, i64 %indvars.iv383
  %144 = load float, ptr %143, align 4, !tbaa !15
  %145 = getelementptr inbounds float, ptr %2, i64 %indvars.iv383
  %146 = load float, ptr %145, align 4, !tbaa !15
  %147 = fcmp oge float %144, %146
  %148 = xor i1 %140, %147
  br i1 %148, label %149, label %210

149:                                              ; preds = %142
  br i1 %126, label %178, label %150

150:                                              ; preds = %149
  %151 = fcmp ogt float %131, %129
  %.336 = select i1 %151, float %131, float %129
  %152 = fcmp olt float %87, %85
  %153 = select i1 %152, float %87, float %85
  %154 = fcmp olt float %.336, %153
  br i1 %154, label %155, label %178

155:                                              ; preds = %150
  %156 = add nsw i64 %indvars.iv383, -2
  %157 = getelementptr inbounds float, ptr %3, i64 %156
  %158 = load float, ptr %157, align 4, !tbaa !15
  %159 = getelementptr inbounds float, ptr %3, i64 %127
  %160 = load float, ptr %159, align 4, !tbaa !15
  %161 = fcmp olt float %158, %160
  br i1 %161, label %162, label %178

162:                                              ; preds = %155
  %163 = getelementptr inbounds float, ptr %4, i64 %156
  %164 = load float, ptr %163, align 4, !tbaa !15
  %165 = getelementptr inbounds float, ptr %4, i64 %127
  %166 = load float, ptr %165, align 4, !tbaa !15
  %167 = fcmp olt float %164, %166
  br i1 %167, label %168, label %178

168:                                              ; preds = %162
  %169 = getelementptr inbounds float, ptr %3, i64 %135
  %170 = load float, ptr %169, align 4, !tbaa !15
  %171 = fcmp olt float %170, %158
  br i1 %171, label %172, label %178

172:                                              ; preds = %168
  %173 = getelementptr inbounds float, ptr %4, i64 %135
  %174 = load float, ptr %173, align 4, !tbaa !15
  %175 = fcmp olt float %174, %164
  %176 = fcmp ogt float %144, %131
  %or.cond346 = and i1 %176, %175
  %177 = fcmp olt float %144, %85
  %or.cond347 = select i1 %or.cond346, i1 %177, i1 false
  br i1 %or.cond347, label %208, label %178

178:                                              ; preds = %172, %168, %162, %155, %150, %149
  %179 = fcmp ult float %85, %87
  br i1 %179, label %210, label %180

180:                                              ; preds = %178
  %181 = fcmp olt float %131, %129
  %.337 = select i1 %181, float %131, float %129
  %182 = fcmp ogt float %87, %85
  %183 = select i1 %182, float %87, float %85
  %184 = fcmp ogt float %.337, %183
  br i1 %184, label %185, label %210

185:                                              ; preds = %180
  %186 = add nsw i64 %indvars.iv383, -2
  %187 = getelementptr inbounds float, ptr %3, i64 %186
  %188 = load float, ptr %187, align 4, !tbaa !15
  %189 = getelementptr inbounds float, ptr %3, i64 %127
  %190 = load float, ptr %189, align 4, !tbaa !15
  %191 = fcmp ogt float %188, %190
  br i1 %191, label %192, label %210

192:                                              ; preds = %185
  %193 = getelementptr inbounds float, ptr %4, i64 %186
  %194 = load float, ptr %193, align 4, !tbaa !15
  %195 = getelementptr inbounds float, ptr %4, i64 %127
  %196 = load float, ptr %195, align 4, !tbaa !15
  %197 = fcmp ogt float %194, %196
  br i1 %197, label %198, label %210

198:                                              ; preds = %192
  %199 = getelementptr inbounds float, ptr %3, i64 %135
  %200 = load float, ptr %199, align 4, !tbaa !15
  %201 = fcmp ogt float %200, %188
  br i1 %201, label %202, label %210

202:                                              ; preds = %198
  %203 = getelementptr inbounds float, ptr %4, i64 %135
  %204 = load float, ptr %203, align 4, !tbaa !15
  %205 = fcmp ogt float %204, %194
  %206 = fcmp olt float %144, %131
  %or.cond348 = and i1 %206, %205
  %207 = fcmp ogt float %144, %85
  %or.cond349 = select i1 %or.cond348, i1 %207, i1 false
  br i1 %or.cond349, label %208, label %210

208:                                              ; preds = %202, %172
  %209 = select i1 %147, i32 100, i32 -100
  br label %210

210:                                              ; preds = %.thread392, %125, %134, %142, %178, %180, %185, %192, %198, %202, %208
  %.sink = phi i32 [ %209, %208 ], [ 0, %202 ], [ 0, %198 ], [ 0, %192 ], [ 0, %185 ], [ 0, %180 ], [ 0, %178 ], [ 0, %142 ], [ 0, %134 ], [ 0, %125 ], [ 0, %.thread392 ]
  %211 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv385
  store i32 %.sink, ptr %211, align 4, !tbaa !5
  %indvars.iv.next386 = add nuw nsw i64 %indvars.iv385, 1
  %212 = load i32, ptr %77, align 4, !tbaa !14
  switch i32 %212, label %256 [
    i32 0, label %.thread
    i32 1, label %.thread342
    i32 2, label %.thread344
  ]

.thread:                                          ; preds = %210
  %213 = add nsw i64 %indvars.iv387, -4
  %214 = getelementptr inbounds float, ptr %5, i64 %213
  %215 = load float, ptr %214, align 4, !tbaa !15
  %216 = getelementptr inbounds float, ptr %2, i64 %213
  %217 = load float, ptr %216, align 4, !tbaa !15
  %218 = fsub float %215, %217
  %219 = tail call float @llvm.fabs.f32(float %218)
  br label %256

.thread342:                                       ; preds = %210
  %220 = getelementptr inbounds float, ptr %3, i64 %83
  %221 = load float, ptr %220, align 4, !tbaa !15
  %222 = getelementptr inbounds float, ptr %4, i64 %83
  %223 = load float, ptr %222, align 4, !tbaa !15
  %224 = fsub float %221, %223
  %225 = fpext float %224 to double
  %226 = add nsw i64 %indvars.iv387, -4
  %227 = getelementptr inbounds float, ptr %3, i64 %226
  %228 = load float, ptr %227, align 4, !tbaa !15
  %229 = getelementptr inbounds float, ptr %4, i64 %226
  %230 = load float, ptr %229, align 4, !tbaa !15
  %231 = fsub float %228, %230
  br label %256

.thread344:                                       ; preds = %210
  %232 = getelementptr inbounds float, ptr %3, i64 %83
  %233 = load float, ptr %232, align 4, !tbaa !15
  %234 = fcmp ult float %85, %87
  %.338 = select i1 %234, float %87, float %85
  %235 = fsub float %233, %.338
  %236 = select i1 %234, float %85, float %87
  %237 = getelementptr inbounds float, ptr %4, i64 %83
  %238 = load float, ptr %237, align 4, !tbaa !15
  %239 = fsub float %236, %238
  %240 = fadd float %235, %239
  %241 = fpext float %240 to double
  %242 = add nsw i64 %indvars.iv387, -4
  %243 = getelementptr inbounds float, ptr %3, i64 %242
  %244 = load float, ptr %243, align 4, !tbaa !15
  %245 = getelementptr inbounds float, ptr %5, i64 %242
  %246 = load float, ptr %245, align 4, !tbaa !15
  %247 = getelementptr inbounds float, ptr %2, i64 %242
  %248 = load float, ptr %247, align 4, !tbaa !15
  %249 = fcmp ult float %246, %248
  %.339 = select i1 %249, float %248, float %246
  %250 = fsub float %244, %.339
  %251 = select i1 %249, float %246, float %248
  %252 = getelementptr inbounds float, ptr %4, i64 %242
  %253 = load float, ptr %252, align 4, !tbaa !15
  %254 = fsub float %251, %253
  %255 = fadd float %250, %254
  br label %256

256:                                              ; preds = %210, %.thread342, %.thread344, %.thread
  %257 = phi double [ %90, %.thread ], [ %225, %.thread342 ], [ %241, %.thread344 ], [ 0.000000e+00, %210 ]
  %.in331 = phi float [ %219, %.thread ], [ %231, %.thread342 ], [ %255, %.thread344 ], [ 0.000000e+00, %210 ]
  %258 = fpext float %.in331 to double
  %259 = fsub double %257, %258
  %260 = fadd double %.1279, %259
  %indvars.iv.next384 = add nuw nsw i64 %indvars.iv383, 1
  %indvars.iv.next388 = add nsw i64 %indvars.iv387, 1
  %.not332.not = icmp slt i64 %indvars.iv383, %80
  br i1 %.not332.not, label %82, label %261, !llvm.loop !20

261:                                              ; preds = %256
  %262 = trunc nuw i64 %indvars.iv.next386 to i32
  store i32 %262, ptr %7, align 4, !tbaa !5
  store i32 %spec.select, ptr %6, align 4, !tbaa !5
  br label %263

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #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 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 = !{!16, !16, i64 0}
!16 = !{!"float", !7, i64 0}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = !{!12, !13, i64 16}
!20 = distinct !{!20, !18}


; 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