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

; 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_CDL3LINESTRIKE_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_CDL3LINESTRIKE(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 [4 x double], align 16
  %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
  %26 = 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 32, 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
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  %27 = load i32, ptr %11, align 4, !tbaa !5
  %28 = icmp slt i32 %27, 0
  br i1 %28, label %29, label %30

29:                                               ; preds = %9
  store i32 12, ptr %10, align 4
  store i32 1, ptr %26, align 4
  br label %1772

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

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

37:                                               ; preds = %33, %30
  store i32 13, ptr %10, align 4
  store i32 1, ptr %26, align 4
  br label %1772

38:                                               ; preds = %33
  %39 = load ptr, ptr %13, align 8, !tbaa !9
  %40 = icmp ne ptr %39, null
  br i1 %40, label %41, label %50

41:                                               ; preds = %38
  %42 = load ptr, ptr %14, align 8, !tbaa !9
  %43 = icmp ne ptr %42, null
  br i1 %43, label %44, label %50

44:                                               ; preds = %41
  %45 = load ptr, ptr %15, align 8, !tbaa !9
  %46 = icmp ne ptr %45, null
  br i1 %46, label %47, label %50

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

50:                                               ; preds = %47, %44, %41, %38
  store i32 2, ptr %10, align 4
  store i32 1, ptr %26, align 4
  br label %1772

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

54:                                               ; preds = %51
  store i32 2, ptr %10, align 4
  store i32 1, ptr %26, align 4
  br label %1772

55:                                               ; preds = %51
  %56 = call i32 @TA_CDL3LINESTRIKE_Lookback()
  store i32 %56, ptr %25, align 4, !tbaa !5
  %57 = load i32, ptr %11, align 4, !tbaa !5
  %58 = load i32, ptr %25, align 4, !tbaa !5
  %59 = icmp slt i32 %57, %58
  br i1 %59, label %60, label %62

60:                                               ; preds = %55
  %61 = load i32, ptr %25, align 4, !tbaa !5
  store i32 %61, ptr %11, align 4, !tbaa !5
  br label %62

62:                                               ; preds = %60, %55
  %63 = load i32, ptr %11, align 4, !tbaa !5
  %64 = load i32, ptr %12, align 4, !tbaa !5
  %65 = icmp sgt i32 %63, %64
  br i1 %65, label %66, label %69

66:                                               ; preds = %62
  %67 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 0, ptr %67, align 4, !tbaa !5
  %68 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 0, ptr %68, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %26, align 4
  br label %1772

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

80:                                               ; preds = %350, %69
  %81 = load i32, ptr %21, align 4, !tbaa !5
  %82 = load i32, ptr %11, align 4, !tbaa !5
  %83 = icmp slt i32 %81, %82
  br i1 %83, label %84, label %357

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

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

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

114:                                              ; preds = %107
  %115 = load ptr, ptr %14, align 8, !tbaa !9
  %116 = load i32, ptr %21, align 4, !tbaa !5
  %117 = sub nsw i32 %116, 3
  %118 = sext i32 %117 to i64
  %119 = getelementptr inbounds float, ptr %115, i64 %118
  %120 = load float, ptr %119, align 4, !tbaa !16
  %121 = load ptr, ptr %15, align 8, !tbaa !9
  %122 = load i32, ptr %21, align 4, !tbaa !5
  %123 = sub nsw i32 %122, 3
  %124 = sext i32 %123 to i64
  %125 = getelementptr inbounds float, ptr %121, i64 %124
  %126 = load float, ptr %125, align 4, !tbaa !16
  %127 = fsub float %120, %126
  br label %212

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

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

155:                                              ; preds = %135
  %156 = load ptr, ptr %16, align 8, !tbaa !9
  %157 = load i32, ptr %21, align 4, !tbaa !5
  %158 = sub nsw i32 %157, 3
  %159 = sext i32 %158 to i64
  %160 = getelementptr inbounds float, ptr %156, i64 %159
  %161 = load float, ptr %160, align 4, !tbaa !16
  br label %169

162:                                              ; preds = %135
  %163 = load ptr, ptr %13, align 8, !tbaa !9
  %164 = load i32, ptr %21, align 4, !tbaa !5
  %165 = sub nsw i32 %164, 3
  %166 = sext i32 %165 to i64
  %167 = getelementptr inbounds float, ptr %163, i64 %166
  %168 = load float, ptr %167, align 4, !tbaa !16
  br label %169

169:                                              ; preds = %162, %155
  %170 = phi float [ %161, %155 ], [ %168, %162 ]
  %171 = fsub float %141, %170
  %172 = load ptr, ptr %16, align 8, !tbaa !9
  %173 = load i32, ptr %21, align 4, !tbaa !5
  %174 = sub nsw i32 %173, 3
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds float, ptr %172, i64 %175
  %177 = load float, ptr %176, align 4, !tbaa !16
  %178 = load ptr, ptr %13, align 8, !tbaa !9
  %179 = load i32, ptr %21, align 4, !tbaa !5
  %180 = sub nsw i32 %179, 3
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds float, ptr %178, i64 %181
  %183 = load float, ptr %182, align 4, !tbaa !16
  %184 = fcmp oge float %177, %183
  br i1 %184, label %185, label %192

185:                                              ; preds = %169
  %186 = load ptr, ptr %13, align 8, !tbaa !9
  %187 = load i32, ptr %21, align 4, !tbaa !5
  %188 = sub nsw i32 %187, 3
  %189 = sext i32 %188 to i64
  %190 = getelementptr inbounds float, ptr %186, i64 %189
  %191 = load float, ptr %190, align 4, !tbaa !16
  br label %199

192:                                              ; preds = %169
  %193 = load ptr, ptr %16, align 8, !tbaa !9
  %194 = load i32, ptr %21, align 4, !tbaa !5
  %195 = sub nsw i32 %194, 3
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds float, ptr %193, i64 %196
  %198 = load float, ptr %197, align 4, !tbaa !16
  br label %199

199:                                              ; preds = %192, %185
  %200 = phi float [ %191, %185 ], [ %198, %192 ]
  %201 = load ptr, ptr %15, align 8, !tbaa !9
  %202 = load i32, ptr %21, align 4, !tbaa !5
  %203 = sub nsw i32 %202, 3
  %204 = sext i32 %203 to i64
  %205 = getelementptr inbounds float, ptr %201, i64 %204
  %206 = load float, ptr %205, align 4, !tbaa !16
  %207 = fsub float %200, %206
  %208 = fadd float %171, %207
  br label %210

209:                                              ; preds = %128
  br label %210

210:                                              ; preds = %209, %199
  %211 = phi float [ %208, %199 ], [ 0.000000e+00, %209 ]
  br label %212

212:                                              ; preds = %210, %114
  %213 = phi float [ %127, %114 ], [ %211, %210 ]
  %214 = fpext float %213 to double
  br label %215

215:                                              ; preds = %212, %91
  %216 = phi double [ %106, %91 ], [ %214, %212 ]
  %217 = getelementptr inbounds [4 x double], ptr %20, i64 0, i64 3
  %218 = load double, ptr %217, align 8, !tbaa !11
  %219 = fadd double %218, %216
  store double %219, ptr %217, align 8, !tbaa !11
  %220 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %221 = getelementptr inbounds %struct.TA_LibcPriv, ptr %220, i32 0, i32 8
  %222 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %221, i64 0, i64 8
  %223 = getelementptr inbounds %struct.TA_CandleSetting, ptr %222, i32 0, i32 1
  %224 = load i32, ptr %223, align 4, !tbaa !15
  %225 = icmp eq i32 %224, 0
  br i1 %225, label %226, label %242

226:                                              ; preds = %215
  %227 = load ptr, ptr %16, align 8, !tbaa !9
  %228 = load i32, ptr %21, align 4, !tbaa !5
  %229 = sub nsw i32 %228, 2
  %230 = sext i32 %229 to i64
  %231 = getelementptr inbounds float, ptr %227, i64 %230
  %232 = load float, ptr %231, align 4, !tbaa !16
  %233 = load ptr, ptr %13, align 8, !tbaa !9
  %234 = load i32, ptr %21, align 4, !tbaa !5
  %235 = sub nsw i32 %234, 2
  %236 = sext i32 %235 to i64
  %237 = getelementptr inbounds float, ptr %233, i64 %236
  %238 = load float, ptr %237, align 4, !tbaa !16
  %239 = fsub float %232, %238
  %240 = fpext float %239 to double
  %241 = call double @llvm.fabs.f64(double %240)
  br label %350

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

249:                                              ; preds = %242
  %250 = load ptr, ptr %14, align 8, !tbaa !9
  %251 = load i32, ptr %21, align 4, !tbaa !5
  %252 = sub nsw i32 %251, 2
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds float, ptr %250, i64 %253
  %255 = load float, ptr %254, align 4, !tbaa !16
  %256 = load ptr, ptr %15, align 8, !tbaa !9
  %257 = load i32, ptr %21, align 4, !tbaa !5
  %258 = sub nsw i32 %257, 2
  %259 = sext i32 %258 to i64
  %260 = getelementptr inbounds float, ptr %256, i64 %259
  %261 = load float, ptr %260, align 4, !tbaa !16
  %262 = fsub float %255, %261
  br label %347

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

270:                                              ; preds = %263
  %271 = load ptr, ptr %14, align 8, !tbaa !9
  %272 = load i32, ptr %21, align 4, !tbaa !5
  %273 = sub nsw i32 %272, 2
  %274 = sext i32 %273 to i64
  %275 = getelementptr inbounds float, ptr %271, i64 %274
  %276 = load float, ptr %275, align 4, !tbaa !16
  %277 = load ptr, ptr %16, align 8, !tbaa !9
  %278 = load i32, ptr %21, align 4, !tbaa !5
  %279 = sub nsw i32 %278, 2
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds float, ptr %277, i64 %280
  %282 = load float, ptr %281, align 4, !tbaa !16
  %283 = load ptr, ptr %13, align 8, !tbaa !9
  %284 = load i32, ptr %21, align 4, !tbaa !5
  %285 = sub nsw i32 %284, 2
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds float, ptr %283, i64 %286
  %288 = load float, ptr %287, align 4, !tbaa !16
  %289 = fcmp oge float %282, %288
  br i1 %289, label %290, label %297

290:                                              ; preds = %270
  %291 = load ptr, ptr %16, align 8, !tbaa !9
  %292 = load i32, ptr %21, align 4, !tbaa !5
  %293 = sub nsw i32 %292, 2
  %294 = sext i32 %293 to i64
  %295 = getelementptr inbounds float, ptr %291, i64 %294
  %296 = load float, ptr %295, align 4, !tbaa !16
  br label %304

297:                                              ; preds = %270
  %298 = load ptr, ptr %13, align 8, !tbaa !9
  %299 = load i32, ptr %21, align 4, !tbaa !5
  %300 = sub nsw i32 %299, 2
  %301 = sext i32 %300 to i64
  %302 = getelementptr inbounds float, ptr %298, i64 %301
  %303 = load float, ptr %302, align 4, !tbaa !16
  br label %304

304:                                              ; preds = %297, %290
  %305 = phi float [ %296, %290 ], [ %303, %297 ]
  %306 = fsub float %276, %305
  %307 = load ptr, ptr %16, align 8, !tbaa !9
  %308 = load i32, ptr %21, align 4, !tbaa !5
  %309 = sub nsw i32 %308, 2
  %310 = sext i32 %309 to i64
  %311 = getelementptr inbounds float, ptr %307, i64 %310
  %312 = load float, ptr %311, align 4, !tbaa !16
  %313 = load ptr, ptr %13, align 8, !tbaa !9
  %314 = load i32, ptr %21, align 4, !tbaa !5
  %315 = sub nsw i32 %314, 2
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds float, ptr %313, i64 %316
  %318 = load float, ptr %317, align 4, !tbaa !16
  %319 = fcmp oge float %312, %318
  br i1 %319, label %320, label %327

320:                                              ; preds = %304
  %321 = load ptr, ptr %13, align 8, !tbaa !9
  %322 = load i32, ptr %21, align 4, !tbaa !5
  %323 = sub nsw i32 %322, 2
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds float, ptr %321, i64 %324
  %326 = load float, ptr %325, align 4, !tbaa !16
  br label %334

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

334:                                              ; preds = %327, %320
  %335 = phi float [ %326, %320 ], [ %333, %327 ]
  %336 = load ptr, ptr %15, align 8, !tbaa !9
  %337 = load i32, ptr %21, align 4, !tbaa !5
  %338 = sub nsw i32 %337, 2
  %339 = sext i32 %338 to i64
  %340 = getelementptr inbounds float, ptr %336, i64 %339
  %341 = load float, ptr %340, align 4, !tbaa !16
  %342 = fsub float %335, %341
  %343 = fadd float %306, %342
  br label %345

344:                                              ; preds = %263
  br label %345

345:                                              ; preds = %344, %334
  %346 = phi float [ %343, %334 ], [ 0.000000e+00, %344 ]
  br label %347

347:                                              ; preds = %345, %249
  %348 = phi float [ %262, %249 ], [ %346, %345 ]
  %349 = fpext float %348 to double
  br label %350

350:                                              ; preds = %347, %226
  %351 = phi double [ %241, %226 ], [ %349, %347 ]
  %352 = getelementptr inbounds [4 x double], ptr %20, i64 0, i64 2
  %353 = load double, ptr %352, align 16, !tbaa !11
  %354 = fadd double %353, %351
  store double %354, ptr %352, align 16, !tbaa !11
  %355 = load i32, ptr %21, align 4, !tbaa !5
  %356 = add nsw i32 %355, 1
  store i32 %356, ptr %21, align 4, !tbaa !5
  br label %80, !llvm.loop !18

357:                                              ; preds = %80
  %358 = load i32, ptr %11, align 4, !tbaa !5
  store i32 %358, ptr %21, align 4, !tbaa !5
  store i32 0, ptr %22, align 4, !tbaa !5
  br label %359

359:                                              ; preds = %1763, %357
  %360 = load ptr, ptr %16, align 8, !tbaa !9
  %361 = load i32, ptr %21, align 4, !tbaa !5
  %362 = sub nsw i32 %361, 3
  %363 = sext i32 %362 to i64
  %364 = getelementptr inbounds float, ptr %360, i64 %363
  %365 = load float, ptr %364, align 4, !tbaa !16
  %366 = load ptr, ptr %13, align 8, !tbaa !9
  %367 = load i32, ptr %21, align 4, !tbaa !5
  %368 = sub nsw i32 %367, 3
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds float, ptr %366, i64 %369
  %371 = load float, ptr %370, align 4, !tbaa !16
  %372 = fcmp oge float %365, %371
  %373 = zext i1 %372 to i64
  %374 = select i1 %372, i32 1, i32 -1
  %375 = load ptr, ptr %16, align 8, !tbaa !9
  %376 = load i32, ptr %21, align 4, !tbaa !5
  %377 = sub nsw i32 %376, 2
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds float, ptr %375, i64 %378
  %380 = load float, ptr %379, align 4, !tbaa !16
  %381 = load ptr, ptr %13, align 8, !tbaa !9
  %382 = load i32, ptr %21, align 4, !tbaa !5
  %383 = sub nsw i32 %382, 2
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds float, ptr %381, i64 %384
  %386 = load float, ptr %385, align 4, !tbaa !16
  %387 = fcmp oge float %380, %386
  %388 = zext i1 %387 to i64
  %389 = select i1 %387, i32 1, i32 -1
  %390 = icmp eq i32 %374, %389
  br i1 %390, label %391, label %1446

391:                                              ; preds = %359
  %392 = load ptr, ptr %16, align 8, !tbaa !9
  %393 = load i32, ptr %21, align 4, !tbaa !5
  %394 = sub nsw i32 %393, 2
  %395 = sext i32 %394 to i64
  %396 = getelementptr inbounds float, ptr %392, i64 %395
  %397 = load float, ptr %396, align 4, !tbaa !16
  %398 = load ptr, ptr %13, align 8, !tbaa !9
  %399 = load i32, ptr %21, align 4, !tbaa !5
  %400 = sub nsw i32 %399, 2
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds float, ptr %398, i64 %401
  %403 = load float, ptr %402, align 4, !tbaa !16
  %404 = fcmp oge float %397, %403
  %405 = zext i1 %404 to i64
  %406 = select i1 %404, i32 1, i32 -1
  %407 = load ptr, ptr %16, align 8, !tbaa !9
  %408 = load i32, ptr %21, align 4, !tbaa !5
  %409 = sub nsw i32 %408, 1
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds float, ptr %407, i64 %410
  %412 = load float, ptr %411, align 4, !tbaa !16
  %413 = load ptr, ptr %13, align 8, !tbaa !9
  %414 = load i32, ptr %21, align 4, !tbaa !5
  %415 = sub nsw i32 %414, 1
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds float, ptr %413, i64 %416
  %418 = load float, ptr %417, align 4, !tbaa !16
  %419 = fcmp oge float %412, %418
  %420 = zext i1 %419 to i64
  %421 = select i1 %419, i32 1, i32 -1
  %422 = icmp eq i32 %406, %421
  br i1 %422, label %423, label %1446

423:                                              ; preds = %391
  %424 = load ptr, ptr %16, align 8, !tbaa !9
  %425 = load i32, ptr %21, align 4, !tbaa !5
  %426 = sext i32 %425 to i64
  %427 = getelementptr inbounds float, ptr %424, i64 %426
  %428 = load float, ptr %427, align 4, !tbaa !16
  %429 = load ptr, ptr %13, align 8, !tbaa !9
  %430 = load i32, ptr %21, align 4, !tbaa !5
  %431 = sext i32 %430 to i64
  %432 = getelementptr inbounds float, ptr %429, i64 %431
  %433 = load float, ptr %432, align 4, !tbaa !16
  %434 = fcmp oge float %428, %433
  %435 = zext i1 %434 to i64
  %436 = select i1 %434, i32 1, i32 -1
  %437 = load ptr, ptr %16, align 8, !tbaa !9
  %438 = load i32, ptr %21, align 4, !tbaa !5
  %439 = sub nsw i32 %438, 1
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds float, ptr %437, i64 %440
  %442 = load float, ptr %441, align 4, !tbaa !16
  %443 = load ptr, ptr %13, align 8, !tbaa !9
  %444 = load i32, ptr %21, align 4, !tbaa !5
  %445 = sub nsw i32 %444, 1
  %446 = sext i32 %445 to i64
  %447 = getelementptr inbounds float, ptr %443, i64 %446
  %448 = load float, ptr %447, align 4, !tbaa !16
  %449 = fcmp oge float %442, %448
  %450 = zext i1 %449 to i64
  %451 = select i1 %449, i32 1, i32 -1
  %452 = sub nsw i32 0, %451
  %453 = icmp eq i32 %436, %452
  br i1 %453, label %454, label %1446

454:                                              ; preds = %423
  %455 = load ptr, ptr %13, align 8, !tbaa !9
  %456 = load i32, ptr %21, align 4, !tbaa !5
  %457 = sub nsw i32 %456, 2
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds float, ptr %455, i64 %458
  %460 = load float, ptr %459, align 4, !tbaa !16
  %461 = fpext float %460 to double
  %462 = load ptr, ptr %13, align 8, !tbaa !9
  %463 = load i32, ptr %21, align 4, !tbaa !5
  %464 = sub nsw i32 %463, 3
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds float, ptr %462, i64 %465
  %467 = load float, ptr %466, align 4, !tbaa !16
  %468 = load ptr, ptr %16, align 8, !tbaa !9
  %469 = load i32, ptr %21, align 4, !tbaa !5
  %470 = sub nsw i32 %469, 3
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds float, ptr %468, i64 %471
  %473 = load float, ptr %472, align 4, !tbaa !16
  %474 = fcmp olt float %467, %473
  br i1 %474, label %475, label %482

475:                                              ; preds = %454
  %476 = load ptr, ptr %13, align 8, !tbaa !9
  %477 = load i32, ptr %21, align 4, !tbaa !5
  %478 = sub nsw i32 %477, 3
  %479 = sext i32 %478 to i64
  %480 = getelementptr inbounds float, ptr %476, i64 %479
  %481 = load float, ptr %480, align 4, !tbaa !16
  br label %489

482:                                              ; preds = %454
  %483 = load ptr, ptr %16, align 8, !tbaa !9
  %484 = load i32, ptr %21, align 4, !tbaa !5
  %485 = sub nsw i32 %484, 3
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds float, ptr %483, i64 %486
  %488 = load float, ptr %487, align 4, !tbaa !16
  br label %489

489:                                              ; preds = %482, %475
  %490 = phi float [ %481, %475 ], [ %488, %482 ]
  %491 = fpext float %490 to double
  %492 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %493 = getelementptr inbounds %struct.TA_LibcPriv, ptr %492, i32 0, i32 8
  %494 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %493, i64 0, i64 8
  %495 = getelementptr inbounds %struct.TA_CandleSetting, ptr %494, i32 0, i32 3
  %496 = load double, ptr %495, align 8, !tbaa !20
  %497 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %498 = getelementptr inbounds %struct.TA_LibcPriv, ptr %497, i32 0, i32 8
  %499 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %498, i64 0, i64 8
  %500 = getelementptr inbounds %struct.TA_CandleSetting, ptr %499, i32 0, i32 2
  %501 = load i32, ptr %500, align 8, !tbaa !13
  %502 = sitofp i32 %501 to double
  %503 = fcmp une double %502, 0.000000e+00
  br i1 %503, label %504, label %514

504:                                              ; preds = %489
  %505 = getelementptr inbounds [4 x double], ptr %20, i64 0, i64 3
  %506 = load double, ptr %505, align 8, !tbaa !11
  %507 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %508 = getelementptr inbounds %struct.TA_LibcPriv, ptr %507, i32 0, i32 8
  %509 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %508, i64 0, i64 8
  %510 = getelementptr inbounds %struct.TA_CandleSetting, ptr %509, i32 0, i32 2
  %511 = load i32, ptr %510, align 8, !tbaa !13
  %512 = sitofp i32 %511 to double
  %513 = fdiv double %506, %512
  br label %647

514:                                              ; preds = %489
  %515 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %516 = getelementptr inbounds %struct.TA_LibcPriv, ptr %515, i32 0, i32 8
  %517 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %516, i64 0, i64 8
  %518 = getelementptr inbounds %struct.TA_CandleSetting, ptr %517, i32 0, i32 1
  %519 = load i32, ptr %518, align 4, !tbaa !15
  %520 = icmp eq i32 %519, 0
  br i1 %520, label %521, label %537

521:                                              ; preds = %514
  %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 = load ptr, ptr %13, align 8, !tbaa !9
  %529 = load i32, ptr %21, align 4, !tbaa !5
  %530 = sub nsw i32 %529, 3
  %531 = sext i32 %530 to i64
  %532 = getelementptr inbounds float, ptr %528, i64 %531
  %533 = load float, ptr %532, align 4, !tbaa !16
  %534 = fsub float %527, %533
  %535 = fpext float %534 to double
  %536 = call double @llvm.fabs.f64(double %535)
  br label %645

537:                                              ; preds = %514
  %538 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %539 = getelementptr inbounds %struct.TA_LibcPriv, ptr %538, i32 0, i32 8
  %540 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %539, i64 0, i64 8
  %541 = getelementptr inbounds %struct.TA_CandleSetting, ptr %540, i32 0, i32 1
  %542 = load i32, ptr %541, align 4, !tbaa !15
  %543 = icmp eq i32 %542, 1
  br i1 %543, label %544, label %558

544:                                              ; preds = %537
  %545 = load ptr, ptr %14, align 8, !tbaa !9
  %546 = load i32, ptr %21, align 4, !tbaa !5
  %547 = sub nsw i32 %546, 3
  %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 %15, align 8, !tbaa !9
  %552 = load i32, ptr %21, align 4, !tbaa !5
  %553 = sub nsw i32 %552, 3
  %554 = sext i32 %553 to i64
  %555 = getelementptr inbounds float, ptr %551, i64 %554
  %556 = load float, ptr %555, align 4, !tbaa !16
  %557 = fsub float %550, %556
  br label %642

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

565:                                              ; preds = %558
  %566 = load ptr, ptr %14, align 8, !tbaa !9
  %567 = load i32, ptr %21, align 4, !tbaa !5
  %568 = sub nsw i32 %567, 3
  %569 = sext i32 %568 to i64
  %570 = getelementptr inbounds float, ptr %566, i64 %569
  %571 = load float, ptr %570, align 4, !tbaa !16
  %572 = load ptr, ptr %16, align 8, !tbaa !9
  %573 = load i32, ptr %21, align 4, !tbaa !5
  %574 = sub nsw i32 %573, 3
  %575 = sext i32 %574 to i64
  %576 = getelementptr inbounds float, ptr %572, i64 %575
  %577 = load float, ptr %576, align 4, !tbaa !16
  %578 = load ptr, ptr %13, align 8, !tbaa !9
  %579 = load i32, ptr %21, align 4, !tbaa !5
  %580 = sub nsw i32 %579, 3
  %581 = sext i32 %580 to i64
  %582 = getelementptr inbounds float, ptr %578, i64 %581
  %583 = load float, ptr %582, align 4, !tbaa !16
  %584 = fcmp oge float %577, %583
  br i1 %584, label %585, label %592

585:                                              ; preds = %565
  %586 = load ptr, ptr %16, align 8, !tbaa !9
  %587 = load i32, ptr %21, align 4, !tbaa !5
  %588 = sub nsw i32 %587, 3
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds float, ptr %586, i64 %589
  %591 = load float, ptr %590, align 4, !tbaa !16
  br label %599

592:                                              ; preds = %565
  %593 = load ptr, ptr %13, align 8, !tbaa !9
  %594 = load i32, ptr %21, align 4, !tbaa !5
  %595 = sub nsw i32 %594, 3
  %596 = sext i32 %595 to i64
  %597 = getelementptr inbounds float, ptr %593, i64 %596
  %598 = load float, ptr %597, align 4, !tbaa !16
  br label %599

599:                                              ; preds = %592, %585
  %600 = phi float [ %591, %585 ], [ %598, %592 ]
  %601 = fsub float %571, %600
  %602 = load ptr, ptr %16, align 8, !tbaa !9
  %603 = load i32, ptr %21, align 4, !tbaa !5
  %604 = sub nsw i32 %603, 3
  %605 = sext i32 %604 to i64
  %606 = getelementptr inbounds float, ptr %602, i64 %605
  %607 = load float, ptr %606, align 4, !tbaa !16
  %608 = load ptr, ptr %13, align 8, !tbaa !9
  %609 = load i32, ptr %21, align 4, !tbaa !5
  %610 = sub nsw i32 %609, 3
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds float, ptr %608, i64 %611
  %613 = load float, ptr %612, align 4, !tbaa !16
  %614 = fcmp oge float %607, %613
  br i1 %614, label %615, label %622

615:                                              ; preds = %599
  %616 = load ptr, ptr %13, align 8, !tbaa !9
  %617 = load i32, ptr %21, align 4, !tbaa !5
  %618 = sub nsw i32 %617, 3
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds float, ptr %616, i64 %619
  %621 = load float, ptr %620, align 4, !tbaa !16
  br label %629

622:                                              ; preds = %599
  %623 = load ptr, ptr %16, align 8, !tbaa !9
  %624 = load i32, ptr %21, align 4, !tbaa !5
  %625 = sub nsw i32 %624, 3
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds float, ptr %623, i64 %626
  %628 = load float, ptr %627, align 4, !tbaa !16
  br label %629

629:                                              ; preds = %622, %615
  %630 = phi float [ %621, %615 ], [ %628, %622 ]
  %631 = load ptr, ptr %15, align 8, !tbaa !9
  %632 = load i32, ptr %21, align 4, !tbaa !5
  %633 = sub nsw i32 %632, 3
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds float, ptr %631, i64 %634
  %636 = load float, ptr %635, align 4, !tbaa !16
  %637 = fsub float %630, %636
  %638 = fadd float %601, %637
  br label %640

639:                                              ; preds = %558
  br label %640

640:                                              ; preds = %639, %629
  %641 = phi float [ %638, %629 ], [ 0.000000e+00, %639 ]
  br label %642

642:                                              ; preds = %640, %544
  %643 = phi float [ %557, %544 ], [ %641, %640 ]
  %644 = fpext float %643 to double
  br label %645

645:                                              ; preds = %642, %521
  %646 = phi double [ %536, %521 ], [ %644, %642 ]
  br label %647

647:                                              ; preds = %645, %504
  %648 = phi double [ %513, %504 ], [ %646, %645 ]
  %649 = fmul double %496, %648
  %650 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %651 = getelementptr inbounds %struct.TA_LibcPriv, ptr %650, i32 0, i32 8
  %652 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %651, i64 0, i64 8
  %653 = getelementptr inbounds %struct.TA_CandleSetting, ptr %652, i32 0, i32 1
  %654 = load i32, ptr %653, align 4, !tbaa !15
  %655 = icmp eq i32 %654, 2
  %656 = zext i1 %655 to i64
  %657 = select i1 %655, double 2.000000e+00, double 1.000000e+00
  %658 = fdiv double %649, %657
  %659 = fsub double %491, %658
  %660 = fcmp oge double %461, %659
  br i1 %660, label %661, label %1446

661:                                              ; preds = %647
  %662 = load ptr, ptr %13, align 8, !tbaa !9
  %663 = load i32, ptr %21, align 4, !tbaa !5
  %664 = sub nsw i32 %663, 2
  %665 = sext i32 %664 to i64
  %666 = getelementptr inbounds float, ptr %662, i64 %665
  %667 = load float, ptr %666, align 4, !tbaa !16
  %668 = fpext float %667 to double
  %669 = load ptr, ptr %13, align 8, !tbaa !9
  %670 = load i32, ptr %21, align 4, !tbaa !5
  %671 = sub nsw i32 %670, 3
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds float, ptr %669, i64 %672
  %674 = load float, ptr %673, align 4, !tbaa !16
  %675 = load ptr, ptr %16, 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 = fcmp ogt float %674, %680
  br i1 %681, label %682, label %689

682:                                              ; preds = %661
  %683 = load ptr, ptr %13, align 8, !tbaa !9
  %684 = load i32, ptr %21, align 4, !tbaa !5
  %685 = sub nsw i32 %684, 3
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds float, ptr %683, i64 %686
  %688 = load float, ptr %687, align 4, !tbaa !16
  br label %696

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

696:                                              ; preds = %689, %682
  %697 = phi float [ %688, %682 ], [ %695, %689 ]
  %698 = fpext float %697 to double
  %699 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %700 = getelementptr inbounds %struct.TA_LibcPriv, ptr %699, i32 0, i32 8
  %701 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %700, i64 0, i64 8
  %702 = getelementptr inbounds %struct.TA_CandleSetting, ptr %701, i32 0, i32 3
  %703 = load double, ptr %702, align 8, !tbaa !20
  %704 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %705 = getelementptr inbounds %struct.TA_LibcPriv, ptr %704, i32 0, i32 8
  %706 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %705, i64 0, i64 8
  %707 = getelementptr inbounds %struct.TA_CandleSetting, ptr %706, i32 0, i32 2
  %708 = load i32, ptr %707, align 8, !tbaa !13
  %709 = sitofp i32 %708 to double
  %710 = fcmp une double %709, 0.000000e+00
  br i1 %710, label %711, label %721

711:                                              ; preds = %696
  %712 = getelementptr inbounds [4 x double], ptr %20, i64 0, i64 3
  %713 = load double, ptr %712, align 8, !tbaa !11
  %714 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %715 = getelementptr inbounds %struct.TA_LibcPriv, ptr %714, i32 0, i32 8
  %716 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %715, i64 0, i64 8
  %717 = getelementptr inbounds %struct.TA_CandleSetting, ptr %716, i32 0, i32 2
  %718 = load i32, ptr %717, align 8, !tbaa !13
  %719 = sitofp i32 %718 to double
  %720 = fdiv double %713, %719
  br label %854

721:                                              ; preds = %696
  %722 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %723 = getelementptr inbounds %struct.TA_LibcPriv, ptr %722, i32 0, i32 8
  %724 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %723, i64 0, i64 8
  %725 = getelementptr inbounds %struct.TA_CandleSetting, ptr %724, i32 0, i32 1
  %726 = load i32, ptr %725, align 4, !tbaa !15
  %727 = icmp eq i32 %726, 0
  br i1 %727, label %728, label %744

728:                                              ; preds = %721
  %729 = load ptr, ptr %16, align 8, !tbaa !9
  %730 = load i32, ptr %21, align 4, !tbaa !5
  %731 = sub nsw i32 %730, 3
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds float, ptr %729, i64 %732
  %734 = load float, ptr %733, align 4, !tbaa !16
  %735 = load ptr, ptr %13, align 8, !tbaa !9
  %736 = load i32, ptr %21, align 4, !tbaa !5
  %737 = sub nsw i32 %736, 3
  %738 = sext i32 %737 to i64
  %739 = getelementptr inbounds float, ptr %735, i64 %738
  %740 = load float, ptr %739, align 4, !tbaa !16
  %741 = fsub float %734, %740
  %742 = fpext float %741 to double
  %743 = call double @llvm.fabs.f64(double %742)
  br label %852

744:                                              ; preds = %721
  %745 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %746 = getelementptr inbounds %struct.TA_LibcPriv, ptr %745, i32 0, i32 8
  %747 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %746, i64 0, i64 8
  %748 = getelementptr inbounds %struct.TA_CandleSetting, ptr %747, i32 0, i32 1
  %749 = load i32, ptr %748, align 4, !tbaa !15
  %750 = icmp eq i32 %749, 1
  br i1 %750, label %751, label %765

751:                                              ; preds = %744
  %752 = load ptr, ptr %14, align 8, !tbaa !9
  %753 = load i32, ptr %21, align 4, !tbaa !5
  %754 = sub nsw i32 %753, 3
  %755 = sext i32 %754 to i64
  %756 = getelementptr inbounds float, ptr %752, i64 %755
  %757 = load float, ptr %756, align 4, !tbaa !16
  %758 = load ptr, ptr %15, align 8, !tbaa !9
  %759 = load i32, ptr %21, align 4, !tbaa !5
  %760 = sub nsw i32 %759, 3
  %761 = sext i32 %760 to i64
  %762 = getelementptr inbounds float, ptr %758, i64 %761
  %763 = load float, ptr %762, align 4, !tbaa !16
  %764 = fsub float %757, %763
  br label %849

765:                                              ; preds = %744
  %766 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %767 = getelementptr inbounds %struct.TA_LibcPriv, ptr %766, i32 0, i32 8
  %768 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %767, i64 0, i64 8
  %769 = getelementptr inbounds %struct.TA_CandleSetting, ptr %768, i32 0, i32 1
  %770 = load i32, ptr %769, align 4, !tbaa !15
  %771 = icmp eq i32 %770, 2
  br i1 %771, label %772, label %846

772:                                              ; preds = %765
  %773 = load ptr, ptr %14, align 8, !tbaa !9
  %774 = load i32, ptr %21, align 4, !tbaa !5
  %775 = sub nsw i32 %774, 3
  %776 = sext i32 %775 to i64
  %777 = getelementptr inbounds float, ptr %773, i64 %776
  %778 = load float, ptr %777, align 4, !tbaa !16
  %779 = load ptr, ptr %16, align 8, !tbaa !9
  %780 = load i32, ptr %21, align 4, !tbaa !5
  %781 = sub nsw i32 %780, 3
  %782 = sext i32 %781 to i64
  %783 = getelementptr inbounds float, ptr %779, i64 %782
  %784 = load float, ptr %783, align 4, !tbaa !16
  %785 = load ptr, ptr %13, align 8, !tbaa !9
  %786 = load i32, ptr %21, align 4, !tbaa !5
  %787 = sub nsw i32 %786, 3
  %788 = sext i32 %787 to i64
  %789 = getelementptr inbounds float, ptr %785, i64 %788
  %790 = load float, ptr %789, align 4, !tbaa !16
  %791 = fcmp oge float %784, %790
  br i1 %791, label %792, label %799

792:                                              ; preds = %772
  %793 = load ptr, ptr %16, align 8, !tbaa !9
  %794 = load i32, ptr %21, align 4, !tbaa !5
  %795 = sub nsw i32 %794, 3
  %796 = sext i32 %795 to i64
  %797 = getelementptr inbounds float, ptr %793, i64 %796
  %798 = load float, ptr %797, align 4, !tbaa !16
  br label %806

799:                                              ; preds = %772
  %800 = load ptr, ptr %13, align 8, !tbaa !9
  %801 = load i32, ptr %21, align 4, !tbaa !5
  %802 = sub nsw i32 %801, 3
  %803 = sext i32 %802 to i64
  %804 = getelementptr inbounds float, ptr %800, i64 %803
  %805 = load float, ptr %804, align 4, !tbaa !16
  br label %806

806:                                              ; preds = %799, %792
  %807 = phi float [ %798, %792 ], [ %805, %799 ]
  %808 = fsub float %778, %807
  %809 = load ptr, ptr %16, align 8, !tbaa !9
  %810 = load i32, ptr %21, align 4, !tbaa !5
  %811 = sub nsw i32 %810, 3
  %812 = sext i32 %811 to i64
  %813 = getelementptr inbounds float, ptr %809, i64 %812
  %814 = load float, ptr %813, align 4, !tbaa !16
  %815 = load ptr, ptr %13, align 8, !tbaa !9
  %816 = load i32, ptr %21, align 4, !tbaa !5
  %817 = sub nsw i32 %816, 3
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds float, ptr %815, i64 %818
  %820 = load float, ptr %819, align 4, !tbaa !16
  %821 = fcmp oge float %814, %820
  br i1 %821, label %822, label %829

822:                                              ; preds = %806
  %823 = load ptr, ptr %13, align 8, !tbaa !9
  %824 = load i32, ptr %21, align 4, !tbaa !5
  %825 = sub nsw i32 %824, 3
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds float, ptr %823, i64 %826
  %828 = load float, ptr %827, align 4, !tbaa !16
  br label %836

829:                                              ; preds = %806
  %830 = load ptr, ptr %16, align 8, !tbaa !9
  %831 = load i32, ptr %21, align 4, !tbaa !5
  %832 = sub nsw i32 %831, 3
  %833 = sext i32 %832 to i64
  %834 = getelementptr inbounds float, ptr %830, i64 %833
  %835 = load float, ptr %834, align 4, !tbaa !16
  br label %836

836:                                              ; preds = %829, %822
  %837 = phi float [ %828, %822 ], [ %835, %829 ]
  %838 = load ptr, ptr %15, align 8, !tbaa !9
  %839 = load i32, ptr %21, align 4, !tbaa !5
  %840 = sub nsw i32 %839, 3
  %841 = sext i32 %840 to i64
  %842 = getelementptr inbounds float, ptr %838, i64 %841
  %843 = load float, ptr %842, align 4, !tbaa !16
  %844 = fsub float %837, %843
  %845 = fadd float %808, %844
  br label %847

846:                                              ; preds = %765
  br label %847

847:                                              ; preds = %846, %836
  %848 = phi float [ %845, %836 ], [ 0.000000e+00, %846 ]
  br label %849

849:                                              ; preds = %847, %751
  %850 = phi float [ %764, %751 ], [ %848, %847 ]
  %851 = fpext float %850 to double
  br label %852

852:                                              ; preds = %849, %728
  %853 = phi double [ %743, %728 ], [ %851, %849 ]
  br label %854

854:                                              ; preds = %852, %711
  %855 = phi double [ %720, %711 ], [ %853, %852 ]
  %856 = fmul double %703, %855
  %857 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %858 = getelementptr inbounds %struct.TA_LibcPriv, ptr %857, i32 0, i32 8
  %859 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %858, i64 0, i64 8
  %860 = getelementptr inbounds %struct.TA_CandleSetting, ptr %859, i32 0, i32 1
  %861 = load i32, ptr %860, align 4, !tbaa !15
  %862 = icmp eq i32 %861, 2
  %863 = zext i1 %862 to i64
  %864 = select i1 %862, double 2.000000e+00, double 1.000000e+00
  %865 = fdiv double %856, %864
  %866 = fadd double %698, %865
  %867 = fcmp ole double %668, %866
  br i1 %867, label %868, label %1446

868:                                              ; preds = %854
  %869 = load ptr, ptr %13, align 8, !tbaa !9
  %870 = load i32, ptr %21, align 4, !tbaa !5
  %871 = sub nsw i32 %870, 1
  %872 = sext i32 %871 to i64
  %873 = getelementptr inbounds float, ptr %869, i64 %872
  %874 = load float, ptr %873, align 4, !tbaa !16
  %875 = fpext float %874 to double
  %876 = load ptr, ptr %13, align 8, !tbaa !9
  %877 = load i32, ptr %21, align 4, !tbaa !5
  %878 = sub nsw i32 %877, 2
  %879 = sext i32 %878 to i64
  %880 = getelementptr inbounds float, ptr %876, i64 %879
  %881 = load float, ptr %880, align 4, !tbaa !16
  %882 = load ptr, ptr %16, align 8, !tbaa !9
  %883 = load i32, ptr %21, align 4, !tbaa !5
  %884 = sub nsw i32 %883, 2
  %885 = sext i32 %884 to i64
  %886 = getelementptr inbounds float, ptr %882, i64 %885
  %887 = load float, ptr %886, align 4, !tbaa !16
  %888 = fcmp olt float %881, %887
  br i1 %888, label %889, label %896

889:                                              ; preds = %868
  %890 = load ptr, ptr %13, align 8, !tbaa !9
  %891 = load i32, ptr %21, align 4, !tbaa !5
  %892 = sub nsw i32 %891, 2
  %893 = sext i32 %892 to i64
  %894 = getelementptr inbounds float, ptr %890, i64 %893
  %895 = load float, ptr %894, align 4, !tbaa !16
  br label %903

896:                                              ; preds = %868
  %897 = load ptr, ptr %16, align 8, !tbaa !9
  %898 = load i32, ptr %21, align 4, !tbaa !5
  %899 = sub nsw i32 %898, 2
  %900 = sext i32 %899 to i64
  %901 = getelementptr inbounds float, ptr %897, i64 %900
  %902 = load float, ptr %901, align 4, !tbaa !16
  br label %903

903:                                              ; preds = %896, %889
  %904 = phi float [ %895, %889 ], [ %902, %896 ]
  %905 = fpext float %904 to double
  %906 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %907 = getelementptr inbounds %struct.TA_LibcPriv, ptr %906, i32 0, i32 8
  %908 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %907, i64 0, i64 8
  %909 = getelementptr inbounds %struct.TA_CandleSetting, ptr %908, i32 0, i32 3
  %910 = load double, ptr %909, align 8, !tbaa !20
  %911 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %912 = getelementptr inbounds %struct.TA_LibcPriv, ptr %911, i32 0, i32 8
  %913 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %912, i64 0, i64 8
  %914 = getelementptr inbounds %struct.TA_CandleSetting, ptr %913, i32 0, i32 2
  %915 = load i32, ptr %914, align 8, !tbaa !13
  %916 = sitofp i32 %915 to double
  %917 = fcmp une double %916, 0.000000e+00
  br i1 %917, label %918, label %928

918:                                              ; preds = %903
  %919 = getelementptr inbounds [4 x double], ptr %20, i64 0, i64 2
  %920 = load double, ptr %919, align 16, !tbaa !11
  %921 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %922 = getelementptr inbounds %struct.TA_LibcPriv, ptr %921, i32 0, i32 8
  %923 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %922, i64 0, i64 8
  %924 = getelementptr inbounds %struct.TA_CandleSetting, ptr %923, i32 0, i32 2
  %925 = load i32, ptr %924, align 8, !tbaa !13
  %926 = sitofp i32 %925 to double
  %927 = fdiv double %920, %926
  br label %1061

928:                                              ; preds = %903
  %929 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %930 = getelementptr inbounds %struct.TA_LibcPriv, ptr %929, i32 0, i32 8
  %931 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %930, i64 0, i64 8
  %932 = getelementptr inbounds %struct.TA_CandleSetting, ptr %931, i32 0, i32 1
  %933 = load i32, ptr %932, align 4, !tbaa !15
  %934 = icmp eq i32 %933, 0
  br i1 %934, label %935, label %951

935:                                              ; preds = %928
  %936 = load ptr, ptr %16, align 8, !tbaa !9
  %937 = load i32, ptr %21, align 4, !tbaa !5
  %938 = sub nsw i32 %937, 2
  %939 = sext i32 %938 to i64
  %940 = getelementptr inbounds float, ptr %936, i64 %939
  %941 = load float, ptr %940, align 4, !tbaa !16
  %942 = load ptr, ptr %13, align 8, !tbaa !9
  %943 = load i32, ptr %21, align 4, !tbaa !5
  %944 = sub nsw i32 %943, 2
  %945 = sext i32 %944 to i64
  %946 = getelementptr inbounds float, ptr %942, i64 %945
  %947 = load float, ptr %946, align 4, !tbaa !16
  %948 = fsub float %941, %947
  %949 = fpext float %948 to double
  %950 = call double @llvm.fabs.f64(double %949)
  br label %1059

951:                                              ; preds = %928
  %952 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %953 = getelementptr inbounds %struct.TA_LibcPriv, ptr %952, i32 0, i32 8
  %954 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %953, i64 0, i64 8
  %955 = getelementptr inbounds %struct.TA_CandleSetting, ptr %954, i32 0, i32 1
  %956 = load i32, ptr %955, align 4, !tbaa !15
  %957 = icmp eq i32 %956, 1
  br i1 %957, label %958, label %972

958:                                              ; preds = %951
  %959 = load ptr, ptr %14, align 8, !tbaa !9
  %960 = load i32, ptr %21, align 4, !tbaa !5
  %961 = sub nsw i32 %960, 2
  %962 = sext i32 %961 to i64
  %963 = getelementptr inbounds float, ptr %959, i64 %962
  %964 = load float, ptr %963, align 4, !tbaa !16
  %965 = load ptr, ptr %15, align 8, !tbaa !9
  %966 = load i32, ptr %21, align 4, !tbaa !5
  %967 = sub nsw i32 %966, 2
  %968 = sext i32 %967 to i64
  %969 = getelementptr inbounds float, ptr %965, i64 %968
  %970 = load float, ptr %969, align 4, !tbaa !16
  %971 = fsub float %964, %970
  br label %1056

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

979:                                              ; preds = %972
  %980 = load ptr, ptr %14, align 8, !tbaa !9
  %981 = load i32, ptr %21, align 4, !tbaa !5
  %982 = sub nsw i32 %981, 2
  %983 = sext i32 %982 to i64
  %984 = getelementptr inbounds float, ptr %980, i64 %983
  %985 = load float, ptr %984, align 4, !tbaa !16
  %986 = load ptr, ptr %16, align 8, !tbaa !9
  %987 = load i32, ptr %21, align 4, !tbaa !5
  %988 = sub nsw i32 %987, 2
  %989 = sext i32 %988 to i64
  %990 = getelementptr inbounds float, ptr %986, i64 %989
  %991 = load float, ptr %990, align 4, !tbaa !16
  %992 = load ptr, ptr %13, align 8, !tbaa !9
  %993 = load i32, ptr %21, align 4, !tbaa !5
  %994 = sub nsw i32 %993, 2
  %995 = sext i32 %994 to i64
  %996 = getelementptr inbounds float, ptr %992, i64 %995
  %997 = load float, ptr %996, align 4, !tbaa !16
  %998 = fcmp oge float %991, %997
  br i1 %998, label %999, label %1006

999:                                              ; preds = %979
  %1000 = load ptr, ptr %16, align 8, !tbaa !9
  %1001 = load i32, ptr %21, align 4, !tbaa !5
  %1002 = sub nsw i32 %1001, 2
  %1003 = sext i32 %1002 to i64
  %1004 = getelementptr inbounds float, ptr %1000, i64 %1003
  %1005 = load float, ptr %1004, align 4, !tbaa !16
  br label %1013

1006:                                             ; preds = %979
  %1007 = load ptr, ptr %13, align 8, !tbaa !9
  %1008 = load i32, ptr %21, align 4, !tbaa !5
  %1009 = sub nsw i32 %1008, 2
  %1010 = sext i32 %1009 to i64
  %1011 = getelementptr inbounds float, ptr %1007, i64 %1010
  %1012 = load float, ptr %1011, align 4, !tbaa !16
  br label %1013

1013:                                             ; preds = %1006, %999
  %1014 = phi float [ %1005, %999 ], [ %1012, %1006 ]
  %1015 = fsub float %985, %1014
  %1016 = load ptr, ptr %16, align 8, !tbaa !9
  %1017 = load i32, ptr %21, align 4, !tbaa !5
  %1018 = sub nsw i32 %1017, 2
  %1019 = sext i32 %1018 to i64
  %1020 = getelementptr inbounds float, ptr %1016, i64 %1019
  %1021 = load float, ptr %1020, align 4, !tbaa !16
  %1022 = load ptr, ptr %13, align 8, !tbaa !9
  %1023 = load i32, ptr %21, align 4, !tbaa !5
  %1024 = sub nsw i32 %1023, 2
  %1025 = sext i32 %1024 to i64
  %1026 = getelementptr inbounds float, ptr %1022, i64 %1025
  %1027 = load float, ptr %1026, align 4, !tbaa !16
  %1028 = fcmp oge float %1021, %1027
  br i1 %1028, label %1029, label %1036

1029:                                             ; preds = %1013
  %1030 = load ptr, ptr %13, align 8, !tbaa !9
  %1031 = load i32, ptr %21, align 4, !tbaa !5
  %1032 = sub nsw i32 %1031, 2
  %1033 = sext i32 %1032 to i64
  %1034 = getelementptr inbounds float, ptr %1030, i64 %1033
  %1035 = load float, ptr %1034, align 4, !tbaa !16
  br label %1043

1036:                                             ; preds = %1013
  %1037 = load ptr, ptr %16, align 8, !tbaa !9
  %1038 = load i32, ptr %21, align 4, !tbaa !5
  %1039 = sub nsw i32 %1038, 2
  %1040 = sext i32 %1039 to i64
  %1041 = getelementptr inbounds float, ptr %1037, i64 %1040
  %1042 = load float, ptr %1041, align 4, !tbaa !16
  br label %1043

1043:                                             ; preds = %1036, %1029
  %1044 = phi float [ %1035, %1029 ], [ %1042, %1036 ]
  %1045 = load ptr, ptr %15, align 8, !tbaa !9
  %1046 = load i32, ptr %21, align 4, !tbaa !5
  %1047 = sub nsw i32 %1046, 2
  %1048 = sext i32 %1047 to i64
  %1049 = getelementptr inbounds float, ptr %1045, i64 %1048
  %1050 = load float, ptr %1049, align 4, !tbaa !16
  %1051 = fsub float %1044, %1050
  %1052 = fadd float %1015, %1051
  br label %1054

1053:                                             ; preds = %972
  br label %1054

1054:                                             ; preds = %1053, %1043
  %1055 = phi float [ %1052, %1043 ], [ 0.000000e+00, %1053 ]
  br label %1056

1056:                                             ; preds = %1054, %958
  %1057 = phi float [ %971, %958 ], [ %1055, %1054 ]
  %1058 = fpext float %1057 to double
  br label %1059

1059:                                             ; preds = %1056, %935
  %1060 = phi double [ %950, %935 ], [ %1058, %1056 ]
  br label %1061

1061:                                             ; preds = %1059, %918
  %1062 = phi double [ %927, %918 ], [ %1060, %1059 ]
  %1063 = fmul double %910, %1062
  %1064 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1065 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1064, i32 0, i32 8
  %1066 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1065, i64 0, i64 8
  %1067 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1066, i32 0, i32 1
  %1068 = load i32, ptr %1067, align 4, !tbaa !15
  %1069 = icmp eq i32 %1068, 2
  %1070 = zext i1 %1069 to i64
  %1071 = select i1 %1069, double 2.000000e+00, double 1.000000e+00
  %1072 = fdiv double %1063, %1071
  %1073 = fsub double %905, %1072
  %1074 = fcmp oge double %875, %1073
  br i1 %1074, label %1075, label %1446

1075:                                             ; preds = %1061
  %1076 = load ptr, ptr %13, align 8, !tbaa !9
  %1077 = load i32, ptr %21, align 4, !tbaa !5
  %1078 = sub nsw i32 %1077, 1
  %1079 = sext i32 %1078 to i64
  %1080 = getelementptr inbounds float, ptr %1076, i64 %1079
  %1081 = load float, ptr %1080, align 4, !tbaa !16
  %1082 = fpext float %1081 to double
  %1083 = load ptr, ptr %13, align 8, !tbaa !9
  %1084 = load i32, ptr %21, align 4, !tbaa !5
  %1085 = sub nsw i32 %1084, 2
  %1086 = sext i32 %1085 to i64
  %1087 = getelementptr inbounds float, ptr %1083, i64 %1086
  %1088 = load float, ptr %1087, align 4, !tbaa !16
  %1089 = load ptr, ptr %16, align 8, !tbaa !9
  %1090 = load i32, ptr %21, align 4, !tbaa !5
  %1091 = sub nsw i32 %1090, 2
  %1092 = sext i32 %1091 to i64
  %1093 = getelementptr inbounds float, ptr %1089, i64 %1092
  %1094 = load float, ptr %1093, align 4, !tbaa !16
  %1095 = fcmp ogt float %1088, %1094
  br i1 %1095, label %1096, label %1103

1096:                                             ; preds = %1075
  %1097 = load ptr, ptr %13, align 8, !tbaa !9
  %1098 = load i32, ptr %21, align 4, !tbaa !5
  %1099 = sub nsw i32 %1098, 2
  %1100 = sext i32 %1099 to i64
  %1101 = getelementptr inbounds float, ptr %1097, i64 %1100
  %1102 = load float, ptr %1101, align 4, !tbaa !16
  br label %1110

1103:                                             ; preds = %1075
  %1104 = load ptr, ptr %16, align 8, !tbaa !9
  %1105 = load i32, ptr %21, align 4, !tbaa !5
  %1106 = sub nsw i32 %1105, 2
  %1107 = sext i32 %1106 to i64
  %1108 = getelementptr inbounds float, ptr %1104, i64 %1107
  %1109 = load float, ptr %1108, align 4, !tbaa !16
  br label %1110

1110:                                             ; preds = %1103, %1096
  %1111 = phi float [ %1102, %1096 ], [ %1109, %1103 ]
  %1112 = fpext float %1111 to double
  %1113 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1114 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1113, i32 0, i32 8
  %1115 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1114, i64 0, i64 8
  %1116 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1115, i32 0, i32 3
  %1117 = load double, ptr %1116, align 8, !tbaa !20
  %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 8
  %1121 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1120, i32 0, i32 2
  %1122 = load i32, ptr %1121, align 8, !tbaa !13
  %1123 = sitofp i32 %1122 to double
  %1124 = fcmp une double %1123, 0.000000e+00
  br i1 %1124, label %1125, label %1135

1125:                                             ; preds = %1110
  %1126 = getelementptr inbounds [4 x double], ptr %20, i64 0, i64 2
  %1127 = load double, ptr %1126, align 16, !tbaa !11
  %1128 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1129 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1128, i32 0, i32 8
  %1130 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1129, i64 0, i64 8
  %1131 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1130, i32 0, i32 2
  %1132 = load i32, ptr %1131, align 8, !tbaa !13
  %1133 = sitofp i32 %1132 to double
  %1134 = fdiv double %1127, %1133
  br label %1268

1135:                                             ; preds = %1110
  %1136 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1137 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1136, i32 0, i32 8
  %1138 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1137, i64 0, i64 8
  %1139 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1138, i32 0, i32 1
  %1140 = load i32, ptr %1139, align 4, !tbaa !15
  %1141 = icmp eq i32 %1140, 0
  br i1 %1141, label %1142, label %1158

1142:                                             ; preds = %1135
  %1143 = load ptr, ptr %16, align 8, !tbaa !9
  %1144 = load i32, ptr %21, align 4, !tbaa !5
  %1145 = sub nsw i32 %1144, 2
  %1146 = sext i32 %1145 to i64
  %1147 = getelementptr inbounds float, ptr %1143, i64 %1146
  %1148 = load float, ptr %1147, align 4, !tbaa !16
  %1149 = load ptr, ptr %13, align 8, !tbaa !9
  %1150 = load i32, ptr %21, align 4, !tbaa !5
  %1151 = sub nsw i32 %1150, 2
  %1152 = sext i32 %1151 to i64
  %1153 = getelementptr inbounds float, ptr %1149, i64 %1152
  %1154 = load float, ptr %1153, align 4, !tbaa !16
  %1155 = fsub float %1148, %1154
  %1156 = fpext float %1155 to double
  %1157 = call double @llvm.fabs.f64(double %1156)
  br label %1266

1158:                                             ; preds = %1135
  %1159 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1160 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1159, i32 0, i32 8
  %1161 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1160, i64 0, i64 8
  %1162 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1161, i32 0, i32 1
  %1163 = load i32, ptr %1162, align 4, !tbaa !15
  %1164 = icmp eq i32 %1163, 1
  br i1 %1164, label %1165, label %1179

1165:                                             ; preds = %1158
  %1166 = load ptr, ptr %14, align 8, !tbaa !9
  %1167 = load i32, ptr %21, align 4, !tbaa !5
  %1168 = sub nsw i32 %1167, 2
  %1169 = sext i32 %1168 to i64
  %1170 = getelementptr inbounds float, ptr %1166, i64 %1169
  %1171 = load float, ptr %1170, align 4, !tbaa !16
  %1172 = load ptr, ptr %15, align 8, !tbaa !9
  %1173 = load i32, ptr %21, align 4, !tbaa !5
  %1174 = sub nsw i32 %1173, 2
  %1175 = sext i32 %1174 to i64
  %1176 = getelementptr inbounds float, ptr %1172, i64 %1175
  %1177 = load float, ptr %1176, align 4, !tbaa !16
  %1178 = fsub float %1171, %1177
  br label %1263

1179:                                             ; preds = %1158
  %1180 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1181 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1180, i32 0, i32 8
  %1182 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1181, i64 0, i64 8
  %1183 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1182, i32 0, i32 1
  %1184 = load i32, ptr %1183, align 4, !tbaa !15
  %1185 = icmp eq i32 %1184, 2
  br i1 %1185, label %1186, label %1260

1186:                                             ; preds = %1179
  %1187 = load ptr, ptr %14, align 8, !tbaa !9
  %1188 = load i32, ptr %21, align 4, !tbaa !5
  %1189 = sub nsw i32 %1188, 2
  %1190 = sext i32 %1189 to i64
  %1191 = getelementptr inbounds float, ptr %1187, i64 %1190
  %1192 = load float, ptr %1191, align 4, !tbaa !16
  %1193 = load ptr, ptr %16, align 8, !tbaa !9
  %1194 = load i32, ptr %21, align 4, !tbaa !5
  %1195 = sub nsw i32 %1194, 2
  %1196 = sext i32 %1195 to i64
  %1197 = getelementptr inbounds float, ptr %1193, i64 %1196
  %1198 = load float, ptr %1197, align 4, !tbaa !16
  %1199 = load ptr, ptr %13, align 8, !tbaa !9
  %1200 = load i32, ptr %21, align 4, !tbaa !5
  %1201 = sub nsw i32 %1200, 2
  %1202 = sext i32 %1201 to i64
  %1203 = getelementptr inbounds float, ptr %1199, i64 %1202
  %1204 = load float, ptr %1203, align 4, !tbaa !16
  %1205 = fcmp oge float %1198, %1204
  br i1 %1205, label %1206, label %1213

1206:                                             ; preds = %1186
  %1207 = load ptr, ptr %16, align 8, !tbaa !9
  %1208 = load i32, ptr %21, align 4, !tbaa !5
  %1209 = sub nsw i32 %1208, 2
  %1210 = sext i32 %1209 to i64
  %1211 = getelementptr inbounds float, ptr %1207, i64 %1210
  %1212 = load float, ptr %1211, align 4, !tbaa !16
  br label %1220

1213:                                             ; preds = %1186
  %1214 = load ptr, ptr %13, align 8, !tbaa !9
  %1215 = load i32, ptr %21, align 4, !tbaa !5
  %1216 = sub nsw i32 %1215, 2
  %1217 = sext i32 %1216 to i64
  %1218 = getelementptr inbounds float, ptr %1214, i64 %1217
  %1219 = load float, ptr %1218, align 4, !tbaa !16
  br label %1220

1220:                                             ; preds = %1213, %1206
  %1221 = phi float [ %1212, %1206 ], [ %1219, %1213 ]
  %1222 = fsub float %1192, %1221
  %1223 = load ptr, ptr %16, align 8, !tbaa !9
  %1224 = load i32, ptr %21, align 4, !tbaa !5
  %1225 = sub nsw i32 %1224, 2
  %1226 = sext i32 %1225 to i64
  %1227 = getelementptr inbounds float, ptr %1223, i64 %1226
  %1228 = load float, ptr %1227, align 4, !tbaa !16
  %1229 = load ptr, ptr %13, align 8, !tbaa !9
  %1230 = load i32, ptr %21, align 4, !tbaa !5
  %1231 = sub nsw i32 %1230, 2
  %1232 = sext i32 %1231 to i64
  %1233 = getelementptr inbounds float, ptr %1229, i64 %1232
  %1234 = load float, ptr %1233, align 4, !tbaa !16
  %1235 = fcmp oge float %1228, %1234
  br i1 %1235, label %1236, label %1243

1236:                                             ; preds = %1220
  %1237 = load ptr, ptr %13, align 8, !tbaa !9
  %1238 = load i32, ptr %21, align 4, !tbaa !5
  %1239 = sub nsw i32 %1238, 2
  %1240 = sext i32 %1239 to i64
  %1241 = getelementptr inbounds float, ptr %1237, i64 %1240
  %1242 = load float, ptr %1241, align 4, !tbaa !16
  br label %1250

1243:                                             ; preds = %1220
  %1244 = load ptr, ptr %16, align 8, !tbaa !9
  %1245 = load i32, ptr %21, align 4, !tbaa !5
  %1246 = sub nsw i32 %1245, 2
  %1247 = sext i32 %1246 to i64
  %1248 = getelementptr inbounds float, ptr %1244, i64 %1247
  %1249 = load float, ptr %1248, align 4, !tbaa !16
  br label %1250

1250:                                             ; preds = %1243, %1236
  %1251 = phi float [ %1242, %1236 ], [ %1249, %1243 ]
  %1252 = load ptr, ptr %15, align 8, !tbaa !9
  %1253 = load i32, ptr %21, align 4, !tbaa !5
  %1254 = sub nsw i32 %1253, 2
  %1255 = sext i32 %1254 to i64
  %1256 = getelementptr inbounds float, ptr %1252, i64 %1255
  %1257 = load float, ptr %1256, align 4, !tbaa !16
  %1258 = fsub float %1251, %1257
  %1259 = fadd float %1222, %1258
  br label %1261

1260:                                             ; preds = %1179
  br label %1261

1261:                                             ; preds = %1260, %1250
  %1262 = phi float [ %1259, %1250 ], [ 0.000000e+00, %1260 ]
  br label %1263

1263:                                             ; preds = %1261, %1165
  %1264 = phi float [ %1178, %1165 ], [ %1262, %1261 ]
  %1265 = fpext float %1264 to double
  br label %1266

1266:                                             ; preds = %1263, %1142
  %1267 = phi double [ %1157, %1142 ], [ %1265, %1263 ]
  br label %1268

1268:                                             ; preds = %1266, %1125
  %1269 = phi double [ %1134, %1125 ], [ %1267, %1266 ]
  %1270 = fmul double %1117, %1269
  %1271 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1272 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1271, i32 0, i32 8
  %1273 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1272, i64 0, i64 8
  %1274 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1273, i32 0, i32 1
  %1275 = load i32, ptr %1274, align 4, !tbaa !15
  %1276 = icmp eq i32 %1275, 2
  %1277 = zext i1 %1276 to i64
  %1278 = select i1 %1276, double 2.000000e+00, double 1.000000e+00
  %1279 = fdiv double %1270, %1278
  %1280 = fadd double %1112, %1279
  %1281 = fcmp ole double %1082, %1280
  br i1 %1281, label %1282, label %1446

1282:                                             ; preds = %1268
  %1283 = load ptr, ptr %16, align 8, !tbaa !9
  %1284 = load i32, ptr %21, align 4, !tbaa !5
  %1285 = sub nsw i32 %1284, 1
  %1286 = sext i32 %1285 to i64
  %1287 = getelementptr inbounds float, ptr %1283, i64 %1286
  %1288 = load float, ptr %1287, align 4, !tbaa !16
  %1289 = load ptr, ptr %13, align 8, !tbaa !9
  %1290 = load i32, ptr %21, align 4, !tbaa !5
  %1291 = sub nsw i32 %1290, 1
  %1292 = sext i32 %1291 to i64
  %1293 = getelementptr inbounds float, ptr %1289, i64 %1292
  %1294 = load float, ptr %1293, align 4, !tbaa !16
  %1295 = fcmp oge float %1288, %1294
  %1296 = zext i1 %1295 to i64
  %1297 = select i1 %1295, i32 1, i32 -1
  %1298 = icmp eq i32 %1297, 1
  br i1 %1298, label %1299, label %1353

1299:                                             ; preds = %1282
  %1300 = load ptr, ptr %16, align 8, !tbaa !9
  %1301 = load i32, ptr %21, align 4, !tbaa !5
  %1302 = sub nsw i32 %1301, 1
  %1303 = sext i32 %1302 to i64
  %1304 = getelementptr inbounds float, ptr %1300, i64 %1303
  %1305 = load float, ptr %1304, align 4, !tbaa !16
  %1306 = load ptr, ptr %16, align 8, !tbaa !9
  %1307 = load i32, ptr %21, align 4, !tbaa !5
  %1308 = sub nsw i32 %1307, 2
  %1309 = sext i32 %1308 to i64
  %1310 = getelementptr inbounds float, ptr %1306, i64 %1309
  %1311 = load float, ptr %1310, align 4, !tbaa !16
  %1312 = fcmp ogt float %1305, %1311
  br i1 %1312, label %1313, label %1353

1313:                                             ; preds = %1299
  %1314 = load ptr, ptr %16, align 8, !tbaa !9
  %1315 = load i32, ptr %21, align 4, !tbaa !5
  %1316 = sub nsw i32 %1315, 2
  %1317 = sext i32 %1316 to i64
  %1318 = getelementptr inbounds float, ptr %1314, i64 %1317
  %1319 = load float, ptr %1318, align 4, !tbaa !16
  %1320 = load ptr, ptr %16, align 8, !tbaa !9
  %1321 = load i32, ptr %21, align 4, !tbaa !5
  %1322 = sub nsw i32 %1321, 3
  %1323 = sext i32 %1322 to i64
  %1324 = getelementptr inbounds float, ptr %1320, i64 %1323
  %1325 = load float, ptr %1324, align 4, !tbaa !16
  %1326 = fcmp ogt float %1319, %1325
  br i1 %1326, label %1327, label %1353

1327:                                             ; preds = %1313
  %1328 = load ptr, ptr %13, align 8, !tbaa !9
  %1329 = load i32, ptr %21, align 4, !tbaa !5
  %1330 = sext i32 %1329 to i64
  %1331 = getelementptr inbounds float, ptr %1328, i64 %1330
  %1332 = load float, ptr %1331, align 4, !tbaa !16
  %1333 = load ptr, ptr %16, align 8, !tbaa !9
  %1334 = load i32, ptr %21, align 4, !tbaa !5
  %1335 = sub nsw i32 %1334, 1
  %1336 = sext i32 %1335 to i64
  %1337 = getelementptr inbounds float, ptr %1333, i64 %1336
  %1338 = load float, ptr %1337, align 4, !tbaa !16
  %1339 = fcmp ogt float %1332, %1338
  br i1 %1339, label %1340, label %1353

1340:                                             ; preds = %1327
  %1341 = load ptr, ptr %16, align 8, !tbaa !9
  %1342 = load i32, ptr %21, align 4, !tbaa !5
  %1343 = sext i32 %1342 to i64
  %1344 = getelementptr inbounds float, ptr %1341, i64 %1343
  %1345 = load float, ptr %1344, align 4, !tbaa !16
  %1346 = load ptr, ptr %13, align 8, !tbaa !9
  %1347 = load i32, ptr %21, align 4, !tbaa !5
  %1348 = sub nsw i32 %1347, 3
  %1349 = sext i32 %1348 to i64
  %1350 = getelementptr inbounds float, ptr %1346, i64 %1349
  %1351 = load float, ptr %1350, align 4, !tbaa !16
  %1352 = fcmp olt float %1345, %1351
  br i1 %1352, label %1424, label %1353

1353:                                             ; preds = %1340, %1327, %1313, %1299, %1282
  %1354 = load ptr, ptr %16, align 8, !tbaa !9
  %1355 = load i32, ptr %21, align 4, !tbaa !5
  %1356 = sub nsw i32 %1355, 1
  %1357 = sext i32 %1356 to i64
  %1358 = getelementptr inbounds float, ptr %1354, i64 %1357
  %1359 = load float, ptr %1358, align 4, !tbaa !16
  %1360 = load ptr, ptr %13, align 8, !tbaa !9
  %1361 = load i32, ptr %21, align 4, !tbaa !5
  %1362 = sub nsw i32 %1361, 1
  %1363 = sext i32 %1362 to i64
  %1364 = getelementptr inbounds float, ptr %1360, i64 %1363
  %1365 = load float, ptr %1364, align 4, !tbaa !16
  %1366 = fcmp oge float %1359, %1365
  %1367 = zext i1 %1366 to i64
  %1368 = select i1 %1366, i32 1, i32 -1
  %1369 = icmp eq i32 %1368, -1
  br i1 %1369, label %1370, label %1446

1370:                                             ; preds = %1353
  %1371 = load ptr, ptr %16, align 8, !tbaa !9
  %1372 = load i32, ptr %21, align 4, !tbaa !5
  %1373 = sub nsw i32 %1372, 1
  %1374 = sext i32 %1373 to i64
  %1375 = getelementptr inbounds float, ptr %1371, i64 %1374
  %1376 = load float, ptr %1375, align 4, !tbaa !16
  %1377 = load ptr, ptr %16, align 8, !tbaa !9
  %1378 = load i32, ptr %21, align 4, !tbaa !5
  %1379 = sub nsw i32 %1378, 2
  %1380 = sext i32 %1379 to i64
  %1381 = getelementptr inbounds float, ptr %1377, i64 %1380
  %1382 = load float, ptr %1381, align 4, !tbaa !16
  %1383 = fcmp olt float %1376, %1382
  br i1 %1383, label %1384, label %1446

1384:                                             ; preds = %1370
  %1385 = load ptr, ptr %16, align 8, !tbaa !9
  %1386 = load i32, ptr %21, align 4, !tbaa !5
  %1387 = sub nsw i32 %1386, 2
  %1388 = sext i32 %1387 to i64
  %1389 = getelementptr inbounds float, ptr %1385, i64 %1388
  %1390 = load float, ptr %1389, align 4, !tbaa !16
  %1391 = load ptr, ptr %16, align 8, !tbaa !9
  %1392 = load i32, ptr %21, align 4, !tbaa !5
  %1393 = sub nsw i32 %1392, 3
  %1394 = sext i32 %1393 to i64
  %1395 = getelementptr inbounds float, ptr %1391, i64 %1394
  %1396 = load float, ptr %1395, align 4, !tbaa !16
  %1397 = fcmp olt float %1390, %1396
  br i1 %1397, label %1398, label %1446

1398:                                             ; preds = %1384
  %1399 = load ptr, ptr %13, align 8, !tbaa !9
  %1400 = load i32, ptr %21, align 4, !tbaa !5
  %1401 = sext i32 %1400 to i64
  %1402 = getelementptr inbounds float, ptr %1399, i64 %1401
  %1403 = load float, ptr %1402, align 4, !tbaa !16
  %1404 = load ptr, ptr %16, align 8, !tbaa !9
  %1405 = load i32, ptr %21, align 4, !tbaa !5
  %1406 = sub nsw i32 %1405, 1
  %1407 = sext i32 %1406 to i64
  %1408 = getelementptr inbounds float, ptr %1404, i64 %1407
  %1409 = load float, ptr %1408, align 4, !tbaa !16
  %1410 = fcmp olt float %1403, %1409
  br i1 %1410, label %1411, label %1446

1411:                                             ; preds = %1398
  %1412 = load ptr, ptr %16, align 8, !tbaa !9
  %1413 = load i32, ptr %21, align 4, !tbaa !5
  %1414 = sext i32 %1413 to i64
  %1415 = getelementptr inbounds float, ptr %1412, i64 %1414
  %1416 = load float, ptr %1415, align 4, !tbaa !16
  %1417 = load ptr, ptr %13, align 8, !tbaa !9
  %1418 = load i32, ptr %21, align 4, !tbaa !5
  %1419 = sub nsw i32 %1418, 3
  %1420 = sext i32 %1419 to i64
  %1421 = getelementptr inbounds float, ptr %1417, i64 %1420
  %1422 = load float, ptr %1421, align 4, !tbaa !16
  %1423 = fcmp ogt float %1416, %1422
  br i1 %1423, label %1424, label %1446

1424:                                             ; preds = %1411, %1340
  %1425 = load ptr, ptr %16, align 8, !tbaa !9
  %1426 = load i32, ptr %21, align 4, !tbaa !5
  %1427 = sub nsw i32 %1426, 1
  %1428 = sext i32 %1427 to i64
  %1429 = getelementptr inbounds float, ptr %1425, i64 %1428
  %1430 = load float, ptr %1429, align 4, !tbaa !16
  %1431 = load ptr, ptr %13, align 8, !tbaa !9
  %1432 = load i32, ptr %21, align 4, !tbaa !5
  %1433 = sub nsw i32 %1432, 1
  %1434 = sext i32 %1433 to i64
  %1435 = getelementptr inbounds float, ptr %1431, i64 %1434
  %1436 = load float, ptr %1435, align 4, !tbaa !16
  %1437 = fcmp oge float %1430, %1436
  %1438 = zext i1 %1437 to i64
  %1439 = select i1 %1437, i32 1, i32 -1
  %1440 = mul nsw i32 %1439, 100
  %1441 = load ptr, ptr %19, align 8, !tbaa !9
  %1442 = load i32, ptr %22, align 4, !tbaa !5
  %1443 = add nsw i32 %1442, 1
  store i32 %1443, ptr %22, align 4, !tbaa !5
  %1444 = sext i32 %1442 to i64
  %1445 = getelementptr inbounds i32, ptr %1441, i64 %1444
  store i32 %1440, ptr %1445, align 4, !tbaa !5
  br label %1452

1446:                                             ; preds = %1411, %1398, %1384, %1370, %1353, %1268, %1061, %854, %647, %423, %391, %359
  %1447 = load ptr, ptr %19, align 8, !tbaa !9
  %1448 = load i32, ptr %22, align 4, !tbaa !5
  %1449 = add nsw i32 %1448, 1
  store i32 %1449, ptr %22, align 4, !tbaa !5
  %1450 = sext i32 %1448 to i64
  %1451 = getelementptr inbounds i32, ptr %1447, i64 %1450
  store i32 0, ptr %1451, align 4, !tbaa !5
  br label %1452

1452:                                             ; preds = %1446, %1424
  store i32 3, ptr %23, align 4, !tbaa !5
  br label %1453

1453:                                             ; preds = %1755, %1452
  %1454 = load i32, ptr %23, align 4, !tbaa !5
  %1455 = icmp sge i32 %1454, 2
  br i1 %1455, label %1456, label %1758

1456:                                             ; preds = %1453
  %1457 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1458 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1457, i32 0, i32 8
  %1459 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1458, i64 0, i64 8
  %1460 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1459, i32 0, i32 1
  %1461 = load i32, ptr %1460, align 4, !tbaa !15
  %1462 = icmp eq i32 %1461, 0
  br i1 %1462, label %1463, label %1481

1463:                                             ; preds = %1456
  %1464 = load ptr, ptr %16, align 8, !tbaa !9
  %1465 = load i32, ptr %21, align 4, !tbaa !5
  %1466 = load i32, ptr %23, align 4, !tbaa !5
  %1467 = sub nsw i32 %1465, %1466
  %1468 = sext i32 %1467 to i64
  %1469 = getelementptr inbounds float, ptr %1464, i64 %1468
  %1470 = load float, ptr %1469, align 4, !tbaa !16
  %1471 = load ptr, ptr %13, align 8, !tbaa !9
  %1472 = load i32, ptr %21, align 4, !tbaa !5
  %1473 = load i32, ptr %23, align 4, !tbaa !5
  %1474 = sub nsw i32 %1472, %1473
  %1475 = sext i32 %1474 to i64
  %1476 = getelementptr inbounds float, ptr %1471, i64 %1475
  %1477 = load float, ptr %1476, align 4, !tbaa !16
  %1478 = fsub float %1470, %1477
  %1479 = fpext float %1478 to double
  %1480 = call double @llvm.fabs.f64(double %1479)
  br label %1601

1481:                                             ; preds = %1456
  %1482 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1483 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1482, i32 0, i32 8
  %1484 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1483, i64 0, i64 8
  %1485 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1484, i32 0, i32 1
  %1486 = load i32, ptr %1485, align 4, !tbaa !15
  %1487 = icmp eq i32 %1486, 1
  br i1 %1487, label %1488, label %1504

1488:                                             ; preds = %1481
  %1489 = load ptr, ptr %14, align 8, !tbaa !9
  %1490 = load i32, ptr %21, align 4, !tbaa !5
  %1491 = load i32, ptr %23, align 4, !tbaa !5
  %1492 = sub nsw i32 %1490, %1491
  %1493 = sext i32 %1492 to i64
  %1494 = getelementptr inbounds float, ptr %1489, i64 %1493
  %1495 = load float, ptr %1494, align 4, !tbaa !16
  %1496 = load ptr, ptr %15, align 8, !tbaa !9
  %1497 = load i32, ptr %21, align 4, !tbaa !5
  %1498 = load i32, ptr %23, align 4, !tbaa !5
  %1499 = sub nsw i32 %1497, %1498
  %1500 = sext i32 %1499 to i64
  %1501 = getelementptr inbounds float, ptr %1496, i64 %1500
  %1502 = load float, ptr %1501, align 4, !tbaa !16
  %1503 = fsub float %1495, %1502
  br label %1598

1504:                                             ; preds = %1481
  %1505 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1506 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1505, i32 0, i32 8
  %1507 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1506, i64 0, i64 8
  %1508 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1507, i32 0, i32 1
  %1509 = load i32, ptr %1508, align 4, !tbaa !15
  %1510 = icmp eq i32 %1509, 2
  br i1 %1510, label %1511, label %1595

1511:                                             ; preds = %1504
  %1512 = load ptr, ptr %14, align 8, !tbaa !9
  %1513 = load i32, ptr %21, align 4, !tbaa !5
  %1514 = load i32, ptr %23, align 4, !tbaa !5
  %1515 = sub nsw i32 %1513, %1514
  %1516 = sext i32 %1515 to i64
  %1517 = getelementptr inbounds float, ptr %1512, i64 %1516
  %1518 = load float, ptr %1517, align 4, !tbaa !16
  %1519 = load ptr, ptr %16, align 8, !tbaa !9
  %1520 = load i32, ptr %21, align 4, !tbaa !5
  %1521 = load i32, ptr %23, align 4, !tbaa !5
  %1522 = sub nsw i32 %1520, %1521
  %1523 = sext i32 %1522 to i64
  %1524 = getelementptr inbounds float, ptr %1519, i64 %1523
  %1525 = load float, ptr %1524, align 4, !tbaa !16
  %1526 = load ptr, ptr %13, align 8, !tbaa !9
  %1527 = load i32, ptr %21, align 4, !tbaa !5
  %1528 = load i32, ptr %23, align 4, !tbaa !5
  %1529 = sub nsw i32 %1527, %1528
  %1530 = sext i32 %1529 to i64
  %1531 = getelementptr inbounds float, ptr %1526, i64 %1530
  %1532 = load float, ptr %1531, align 4, !tbaa !16
  %1533 = fcmp oge float %1525, %1532
  br i1 %1533, label %1534, label %1542

1534:                                             ; preds = %1511
  %1535 = load ptr, ptr %16, align 8, !tbaa !9
  %1536 = load i32, ptr %21, align 4, !tbaa !5
  %1537 = load i32, ptr %23, align 4, !tbaa !5
  %1538 = sub nsw i32 %1536, %1537
  %1539 = sext i32 %1538 to i64
  %1540 = getelementptr inbounds float, ptr %1535, i64 %1539
  %1541 = load float, ptr %1540, align 4, !tbaa !16
  br label %1550

1542:                                             ; preds = %1511
  %1543 = load ptr, ptr %13, align 8, !tbaa !9
  %1544 = load i32, ptr %21, align 4, !tbaa !5
  %1545 = load i32, ptr %23, align 4, !tbaa !5
  %1546 = sub nsw i32 %1544, %1545
  %1547 = sext i32 %1546 to i64
  %1548 = getelementptr inbounds float, ptr %1543, i64 %1547
  %1549 = load float, ptr %1548, align 4, !tbaa !16
  br label %1550

1550:                                             ; preds = %1542, %1534
  %1551 = phi float [ %1541, %1534 ], [ %1549, %1542 ]
  %1552 = fsub float %1518, %1551
  %1553 = load ptr, ptr %16, align 8, !tbaa !9
  %1554 = load i32, ptr %21, align 4, !tbaa !5
  %1555 = load i32, ptr %23, align 4, !tbaa !5
  %1556 = sub nsw i32 %1554, %1555
  %1557 = sext i32 %1556 to i64
  %1558 = getelementptr inbounds float, ptr %1553, i64 %1557
  %1559 = load float, ptr %1558, align 4, !tbaa !16
  %1560 = load ptr, ptr %13, align 8, !tbaa !9
  %1561 = load i32, ptr %21, align 4, !tbaa !5
  %1562 = load i32, ptr %23, align 4, !tbaa !5
  %1563 = sub nsw i32 %1561, %1562
  %1564 = sext i32 %1563 to i64
  %1565 = getelementptr inbounds float, ptr %1560, i64 %1564
  %1566 = load float, ptr %1565, align 4, !tbaa !16
  %1567 = fcmp oge float %1559, %1566
  br i1 %1567, label %1568, label %1576

1568:                                             ; preds = %1550
  %1569 = load ptr, ptr %13, align 8, !tbaa !9
  %1570 = load i32, ptr %21, align 4, !tbaa !5
  %1571 = load i32, ptr %23, align 4, !tbaa !5
  %1572 = sub nsw i32 %1570, %1571
  %1573 = sext i32 %1572 to i64
  %1574 = getelementptr inbounds float, ptr %1569, i64 %1573
  %1575 = load float, ptr %1574, align 4, !tbaa !16
  br label %1584

1576:                                             ; preds = %1550
  %1577 = load ptr, ptr %16, align 8, !tbaa !9
  %1578 = load i32, ptr %21, align 4, !tbaa !5
  %1579 = load i32, ptr %23, align 4, !tbaa !5
  %1580 = sub nsw i32 %1578, %1579
  %1581 = sext i32 %1580 to i64
  %1582 = getelementptr inbounds float, ptr %1577, i64 %1581
  %1583 = load float, ptr %1582, align 4, !tbaa !16
  br label %1584

1584:                                             ; preds = %1576, %1568
  %1585 = phi float [ %1575, %1568 ], [ %1583, %1576 ]
  %1586 = load ptr, ptr %15, align 8, !tbaa !9
  %1587 = load i32, ptr %21, align 4, !tbaa !5
  %1588 = load i32, ptr %23, align 4, !tbaa !5
  %1589 = sub nsw i32 %1587, %1588
  %1590 = sext i32 %1589 to i64
  %1591 = getelementptr inbounds float, ptr %1586, i64 %1590
  %1592 = load float, ptr %1591, align 4, !tbaa !16
  %1593 = fsub float %1585, %1592
  %1594 = fadd float %1552, %1593
  br label %1596

1595:                                             ; preds = %1504
  br label %1596

1596:                                             ; preds = %1595, %1584
  %1597 = phi float [ %1594, %1584 ], [ 0.000000e+00, %1595 ]
  br label %1598

1598:                                             ; preds = %1596, %1488
  %1599 = phi float [ %1503, %1488 ], [ %1597, %1596 ]
  %1600 = fpext float %1599 to double
  br label %1601

1601:                                             ; preds = %1598, %1463
  %1602 = phi double [ %1480, %1463 ], [ %1600, %1598 ]
  %1603 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1604 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1603, i32 0, i32 8
  %1605 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1604, i64 0, i64 8
  %1606 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1605, i32 0, i32 1
  %1607 = load i32, ptr %1606, align 4, !tbaa !15
  %1608 = icmp eq i32 %1607, 0
  br i1 %1608, label %1609, label %1627

1609:                                             ; preds = %1601
  %1610 = load ptr, ptr %16, align 8, !tbaa !9
  %1611 = load i32, ptr %24, align 4, !tbaa !5
  %1612 = load i32, ptr %23, align 4, !tbaa !5
  %1613 = sub nsw i32 %1611, %1612
  %1614 = sext i32 %1613 to i64
  %1615 = getelementptr inbounds float, ptr %1610, i64 %1614
  %1616 = load float, ptr %1615, align 4, !tbaa !16
  %1617 = load ptr, ptr %13, align 8, !tbaa !9
  %1618 = load i32, ptr %24, align 4, !tbaa !5
  %1619 = load i32, ptr %23, align 4, !tbaa !5
  %1620 = sub nsw i32 %1618, %1619
  %1621 = sext i32 %1620 to i64
  %1622 = getelementptr inbounds float, ptr %1617, i64 %1621
  %1623 = load float, ptr %1622, align 4, !tbaa !16
  %1624 = fsub float %1616, %1623
  %1625 = fpext float %1624 to double
  %1626 = call double @llvm.fabs.f64(double %1625)
  br label %1747

1627:                                             ; preds = %1601
  %1628 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1629 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1628, i32 0, i32 8
  %1630 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1629, i64 0, i64 8
  %1631 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1630, i32 0, i32 1
  %1632 = load i32, ptr %1631, align 4, !tbaa !15
  %1633 = icmp eq i32 %1632, 1
  br i1 %1633, label %1634, label %1650

1634:                                             ; preds = %1627
  %1635 = load ptr, ptr %14, align 8, !tbaa !9
  %1636 = load i32, ptr %24, align 4, !tbaa !5
  %1637 = load i32, ptr %23, align 4, !tbaa !5
  %1638 = sub nsw i32 %1636, %1637
  %1639 = sext i32 %1638 to i64
  %1640 = getelementptr inbounds float, ptr %1635, i64 %1639
  %1641 = load float, ptr %1640, align 4, !tbaa !16
  %1642 = load ptr, ptr %15, align 8, !tbaa !9
  %1643 = load i32, ptr %24, align 4, !tbaa !5
  %1644 = load i32, ptr %23, align 4, !tbaa !5
  %1645 = sub nsw i32 %1643, %1644
  %1646 = sext i32 %1645 to i64
  %1647 = getelementptr inbounds float, ptr %1642, i64 %1646
  %1648 = load float, ptr %1647, align 4, !tbaa !16
  %1649 = fsub float %1641, %1648
  br label %1744

1650:                                             ; preds = %1627
  %1651 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1652 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1651, i32 0, i32 8
  %1653 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1652, i64 0, i64 8
  %1654 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1653, i32 0, i32 1
  %1655 = load i32, ptr %1654, align 4, !tbaa !15
  %1656 = icmp eq i32 %1655, 2
  br i1 %1656, label %1657, label %1741

1657:                                             ; preds = %1650
  %1658 = load ptr, ptr %14, align 8, !tbaa !9
  %1659 = load i32, ptr %24, align 4, !tbaa !5
  %1660 = load i32, ptr %23, align 4, !tbaa !5
  %1661 = sub nsw i32 %1659, %1660
  %1662 = sext i32 %1661 to i64
  %1663 = getelementptr inbounds float, ptr %1658, i64 %1662
  %1664 = load float, ptr %1663, align 4, !tbaa !16
  %1665 = load ptr, ptr %16, align 8, !tbaa !9
  %1666 = load i32, ptr %24, align 4, !tbaa !5
  %1667 = load i32, ptr %23, align 4, !tbaa !5
  %1668 = sub nsw i32 %1666, %1667
  %1669 = sext i32 %1668 to i64
  %1670 = getelementptr inbounds float, ptr %1665, i64 %1669
  %1671 = load float, ptr %1670, align 4, !tbaa !16
  %1672 = load ptr, ptr %13, align 8, !tbaa !9
  %1673 = load i32, ptr %24, align 4, !tbaa !5
  %1674 = load i32, ptr %23, align 4, !tbaa !5
  %1675 = sub nsw i32 %1673, %1674
  %1676 = sext i32 %1675 to i64
  %1677 = getelementptr inbounds float, ptr %1672, i64 %1676
  %1678 = load float, ptr %1677, align 4, !tbaa !16
  %1679 = fcmp oge float %1671, %1678
  br i1 %1679, label %1680, label %1688

1680:                                             ; preds = %1657
  %1681 = load ptr, ptr %16, align 8, !tbaa !9
  %1682 = load i32, ptr %24, align 4, !tbaa !5
  %1683 = load i32, ptr %23, align 4, !tbaa !5
  %1684 = sub nsw i32 %1682, %1683
  %1685 = sext i32 %1684 to i64
  %1686 = getelementptr inbounds float, ptr %1681, i64 %1685
  %1687 = load float, ptr %1686, align 4, !tbaa !16
  br label %1696

1688:                                             ; preds = %1657
  %1689 = load ptr, ptr %13, align 8, !tbaa !9
  %1690 = load i32, ptr %24, align 4, !tbaa !5
  %1691 = load i32, ptr %23, align 4, !tbaa !5
  %1692 = sub nsw i32 %1690, %1691
  %1693 = sext i32 %1692 to i64
  %1694 = getelementptr inbounds float, ptr %1689, i64 %1693
  %1695 = load float, ptr %1694, align 4, !tbaa !16
  br label %1696

1696:                                             ; preds = %1688, %1680
  %1697 = phi float [ %1687, %1680 ], [ %1695, %1688 ]
  %1698 = fsub float %1664, %1697
  %1699 = load ptr, ptr %16, align 8, !tbaa !9
  %1700 = load i32, ptr %24, align 4, !tbaa !5
  %1701 = load i32, ptr %23, align 4, !tbaa !5
  %1702 = sub nsw i32 %1700, %1701
  %1703 = sext i32 %1702 to i64
  %1704 = getelementptr inbounds float, ptr %1699, i64 %1703
  %1705 = load float, ptr %1704, align 4, !tbaa !16
  %1706 = load ptr, ptr %13, align 8, !tbaa !9
  %1707 = load i32, ptr %24, align 4, !tbaa !5
  %1708 = load i32, ptr %23, align 4, !tbaa !5
  %1709 = sub nsw i32 %1707, %1708
  %1710 = sext i32 %1709 to i64
  %1711 = getelementptr inbounds float, ptr %1706, i64 %1710
  %1712 = load float, ptr %1711, align 4, !tbaa !16
  %1713 = fcmp oge float %1705, %1712
  br i1 %1713, label %1714, label %1722

1714:                                             ; preds = %1696
  %1715 = load ptr, ptr %13, align 8, !tbaa !9
  %1716 = load i32, ptr %24, align 4, !tbaa !5
  %1717 = load i32, ptr %23, align 4, !tbaa !5
  %1718 = sub nsw i32 %1716, %1717
  %1719 = sext i32 %1718 to i64
  %1720 = getelementptr inbounds float, ptr %1715, i64 %1719
  %1721 = load float, ptr %1720, align 4, !tbaa !16
  br label %1730

1722:                                             ; preds = %1696
  %1723 = load ptr, ptr %16, align 8, !tbaa !9
  %1724 = load i32, ptr %24, align 4, !tbaa !5
  %1725 = load i32, ptr %23, align 4, !tbaa !5
  %1726 = sub nsw i32 %1724, %1725
  %1727 = sext i32 %1726 to i64
  %1728 = getelementptr inbounds float, ptr %1723, i64 %1727
  %1729 = load float, ptr %1728, align 4, !tbaa !16
  br label %1730

1730:                                             ; preds = %1722, %1714
  %1731 = phi float [ %1721, %1714 ], [ %1729, %1722 ]
  %1732 = load ptr, ptr %15, align 8, !tbaa !9
  %1733 = load i32, ptr %24, align 4, !tbaa !5
  %1734 = load i32, ptr %23, align 4, !tbaa !5
  %1735 = sub nsw i32 %1733, %1734
  %1736 = sext i32 %1735 to i64
  %1737 = getelementptr inbounds float, ptr %1732, i64 %1736
  %1738 = load float, ptr %1737, align 4, !tbaa !16
  %1739 = fsub float %1731, %1738
  %1740 = fadd float %1698, %1739
  br label %1742

1741:                                             ; preds = %1650
  br label %1742

1742:                                             ; preds = %1741, %1730
  %1743 = phi float [ %1740, %1730 ], [ 0.000000e+00, %1741 ]
  br label %1744

1744:                                             ; preds = %1742, %1634
  %1745 = phi float [ %1649, %1634 ], [ %1743, %1742 ]
  %1746 = fpext float %1745 to double
  br label %1747

1747:                                             ; preds = %1744, %1609
  %1748 = phi double [ %1626, %1609 ], [ %1746, %1744 ]
  %1749 = fsub double %1602, %1748
  %1750 = load i32, ptr %23, align 4, !tbaa !5
  %1751 = sext i32 %1750 to i64
  %1752 = getelementptr inbounds [4 x double], ptr %20, i64 0, i64 %1751
  %1753 = load double, ptr %1752, align 8, !tbaa !11
  %1754 = fadd double %1753, %1749
  store double %1754, ptr %1752, align 8, !tbaa !11
  br label %1755

1755:                                             ; preds = %1747
  %1756 = load i32, ptr %23, align 4, !tbaa !5
  %1757 = add nsw i32 %1756, -1
  store i32 %1757, ptr %23, align 4, !tbaa !5
  br label %1453, !llvm.loop !21

1758:                                             ; preds = %1453
  %1759 = load i32, ptr %21, align 4, !tbaa !5
  %1760 = add nsw i32 %1759, 1
  store i32 %1760, ptr %21, align 4, !tbaa !5
  %1761 = load i32, ptr %24, align 4, !tbaa !5
  %1762 = add nsw i32 %1761, 1
  store i32 %1762, ptr %24, align 4, !tbaa !5
  br label %1763

1763:                                             ; preds = %1758
  %1764 = load i32, ptr %21, align 4, !tbaa !5
  %1765 = load i32, ptr %12, align 4, !tbaa !5
  %1766 = icmp sle i32 %1764, %1765
  br i1 %1766, label %359, label %1767, !llvm.loop !22

1767:                                             ; preds = %1763
  %1768 = load i32, ptr %22, align 4, !tbaa !5
  %1769 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 %1768, ptr %1769, align 4, !tbaa !5
  %1770 = load i32, ptr %11, align 4, !tbaa !5
  %1771 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 %1770, ptr %1771, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %26, align 4
  br label %1772

1772:                                             ; preds = %1767, %66, %54, %50, %37, %29
  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 4, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #3
  %1773 = load i32, ptr %10, align 4
  ret i32 %1773
}

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}
!22 = distinct !{!22, !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_CDL3LINESTRIKE_Lookback() local_unnamed_addr #0

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

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

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

25:                                               ; preds = %21
  %26 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %27 = getelementptr inbounds i8, ptr %26, i64 408
  %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 404
  %32 = load i32, ptr %31, align 4, !tbaa !14
  switch i32 %32, label %.preheader [
    i32 0, label %.thread.us.preheader
    i32 1, label %.thread499.us.preheader
    i32 2, label %.thread501.us.preheader
  ]

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

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

.thread.us.preheader:                             ; preds = %.lr.ph
  %37 = sext i32 %29 to i64
  %38 = zext nneg i32 %spec.select to i64
  br label %.thread.us

.thread.us:                                       ; preds = %.thread.us.preheader, %.thread.us
  %indvars.iv568 = phi i64 [ %37, %.thread.us.preheader ], [ %indvars.iv.next569, %.thread.us ]
  %39 = phi <2 x double> [ zeroinitializer, %.thread.us.preheader ], [ %48, %.thread.us ]
  %40 = add nsw i64 %indvars.iv568, -3
  %41 = getelementptr inbounds float, ptr %5, i64 %40
  %42 = getelementptr inbounds float, ptr %2, i64 %40
  %43 = load <2 x float>, ptr %41, align 4, !tbaa !15
  %44 = load <2 x float>, ptr %42, align 4, !tbaa !15
  %45 = fsub <2 x float> %43, %44
  %46 = tail call <2 x float> @llvm.fabs.v2f32(<2 x float> %45)
  %47 = fpext <2 x float> %46 to <2 x double>
  %48 = fadd <2 x double> %39, %47
  %indvars.iv.next569 = add nsw i64 %indvars.iv568, 1
  %49 = icmp slt i64 %indvars.iv.next569, %38
  br i1 %49, label %.thread.us, label %.preheader, !llvm.loop !17

.thread499.us:                                    ; preds = %.thread499.us.preheader, %.thread499.us
  %indvars.iv565 = phi i64 [ %35, %.thread499.us.preheader ], [ %indvars.iv.next566, %.thread499.us ]
  %50 = phi <2 x double> [ zeroinitializer, %.thread499.us.preheader ], [ %58, %.thread499.us ]
  %51 = add nsw i64 %indvars.iv565, -3
  %52 = getelementptr inbounds float, ptr %3, i64 %51
  %53 = getelementptr inbounds float, ptr %4, i64 %51
  %54 = load <2 x float>, ptr %52, align 4, !tbaa !15
  %55 = load <2 x float>, ptr %53, align 4, !tbaa !15
  %56 = fsub <2 x float> %54, %55
  %57 = fpext <2 x float> %56 to <2 x double>
  %58 = fadd <2 x double> %50, %57
  %indvars.iv.next566 = add nsw i64 %indvars.iv565, 1
  %59 = icmp slt i64 %indvars.iv.next566, %36
  br i1 %59, label %.thread499.us, label %.preheader, !llvm.loop !17

.thread501.us:                                    ; preds = %.thread501.us.preheader, %.thread501.us
  %indvars.iv = phi i64 [ %33, %.thread501.us.preheader ], [ %indvars.iv.next, %.thread501.us ]
  %60 = phi <2 x double> [ zeroinitializer, %.thread501.us.preheader ], [ %77, %.thread501.us ]
  %61 = add nsw i64 %indvars.iv, -3
  %62 = getelementptr inbounds float, ptr %3, i64 %61
  %63 = getelementptr inbounds float, ptr %5, i64 %61
  %64 = getelementptr inbounds float, ptr %2, i64 %61
  %65 = getelementptr inbounds float, ptr %4, i64 %61
  %66 = load <2 x float>, ptr %62, align 4, !tbaa !15
  %67 = load <2 x float>, ptr %63, align 4, !tbaa !15
  %68 = load <2 x float>, ptr %64, align 4, !tbaa !15
  %69 = fcmp ult <2 x float> %67, %68
  %70 = select <2 x i1> %69, <2 x float> %68, <2 x float> %67
  %71 = fsub <2 x float> %66, %70
  %72 = select <2 x i1> %69, <2 x float> %67, <2 x float> %68
  %73 = load <2 x float>, ptr %65, align 4, !tbaa !15
  %74 = fsub <2 x float> %72, %73
  %75 = fadd <2 x float> %71, %74
  %76 = fpext <2 x float> %75 to <2 x double>
  %77 = fadd <2 x double> %60, %76
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %78 = icmp slt i64 %indvars.iv.next, %34
  br i1 %78, label %.thread501.us, label %.preheader, !llvm.loop !17

.preheader:                                       ; preds = %.thread501.us, %.thread499.us, %.thread.us, %.lr.ph, %25
  %79 = phi <2 x double> [ zeroinitializer, %25 ], [ zeroinitializer, %.lr.ph ], [ %48, %.thread.us ], [ %58, %.thread499.us ], [ %77, %.thread501.us ]
  %80 = getelementptr inbounds i8, ptr %26, i64 404
  %81 = getelementptr inbounds i8, ptr %26, i64 416
  %82 = sext i32 %22 to i64
  %83 = zext nneg i32 %0 to i64
  %smax = tail call i64 @llvm.smax.i64(i64 %82, i64 %83)
  %84 = sext i32 %1 to i64
  %85 = sext i32 %29 to i64
  br label %86

86:                                               ; preds = %.preheader, %.split544.us
  %indvars.iv587 = phi i64 [ %85, %.preheader ], [ %indvars.iv.next588, %.split544.us ]
  %indvars.iv585 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next586, %.split544.us ]
  %indvars.iv583 = phi i64 [ %smax, %.preheader ], [ %indvars.iv.next584, %.split544.us ]
  %87 = phi <2 x double> [ %79, %.preheader ], [ %361, %.split544.us ]
  %88 = add nsw i64 %indvars.iv583, -3
  %89 = getelementptr inbounds float, ptr %5, i64 %88
  %90 = load float, ptr %89, align 4, !tbaa !15
  %91 = getelementptr inbounds float, ptr %2, i64 %88
  %92 = load float, ptr %91, align 4, !tbaa !15
  %93 = fcmp ult float %90, %92
  %94 = add nsw i64 %indvars.iv583, -2
  %95 = getelementptr inbounds float, ptr %5, i64 %94
  %96 = load float, ptr %95, align 4, !tbaa !15
  %97 = getelementptr inbounds float, ptr %2, i64 %94
  %98 = load float, ptr %97, align 4, !tbaa !15
  %99 = fcmp oge float %96, %98
  %100 = xor i1 %93, %99
  br i1 %100, label %101, label %.thread503

101:                                              ; preds = %86
  %102 = add nsw i64 %indvars.iv583, -1
  %103 = getelementptr inbounds float, ptr %5, i64 %102
  %104 = load float, ptr %103, align 4, !tbaa !15
  %105 = getelementptr inbounds float, ptr %2, i64 %102
  %106 = load float, ptr %105, align 4, !tbaa !15
  %107 = fcmp oge float %104, %106
  %108 = xor i1 %99, %107
  br i1 %108, label %.thread503, label %109

109:                                              ; preds = %101
  %110 = getelementptr inbounds float, ptr %5, i64 %indvars.iv583
  %111 = load float, ptr %110, align 4, !tbaa !15
  %112 = getelementptr inbounds float, ptr %2, i64 %indvars.iv583
  %113 = load float, ptr %112, align 4, !tbaa !15
  %114 = fcmp oge float %111, %113
  %115 = xor i1 %107, %114
  br i1 %115, label %116, label %.thread503

116:                                              ; preds = %109
  %117 = fpext float %98 to double
  %118 = fcmp olt float %92, %90
  %.487 = select i1 %118, float %92, float %90
  %119 = fpext float %.487 to double
  %120 = load double, ptr %81, align 8, !tbaa !19
  %121 = load i32, ptr %27, align 8, !tbaa !11
  %.not477 = icmp eq i32 %121, 0
  br i1 %.not477, label %126, label %122

122:                                              ; preds = %116
  %123 = sitofp i32 %121 to double
  %124 = extractelement <2 x double> %87, i64 0
  %125 = fdiv double %124, %123
  %.pre = load i32, ptr %80, align 4, !tbaa !14
  br label %146

126:                                              ; preds = %116
  %127 = load i32, ptr %80, align 4, !tbaa !14
  switch i32 %127, label %143 [
    i32 0, label %.thread603
    i32 1, label %128
    i32 2, label %134
  ]

128:                                              ; preds = %126
  %129 = getelementptr inbounds float, ptr %3, i64 %88
  %130 = load float, ptr %129, align 4, !tbaa !15
  %131 = getelementptr inbounds float, ptr %4, i64 %88
  %132 = load float, ptr %131, align 4, !tbaa !15
  %133 = fsub float %130, %132
  br label %143

134:                                              ; preds = %126
  %135 = getelementptr inbounds float, ptr %3, i64 %88
  %136 = load float, ptr %135, align 4, !tbaa !15
  %.488 = select i1 %93, float %92, float %90
  %137 = fsub float %136, %.488
  %138 = select i1 %93, float %90, float %92
  %139 = getelementptr inbounds float, ptr %4, i64 %88
  %140 = load float, ptr %139, align 4, !tbaa !15
  %141 = fsub float %138, %140
  %142 = fadd float %137, %141
  br label %143

143:                                              ; preds = %126, %134, %128
  %144 = phi float [ %133, %128 ], [ %142, %134 ], [ 0.000000e+00, %126 ]
  %145 = fpext float %144 to double
  br label %146

146:                                              ; preds = %143, %122
  %147 = phi i32 [ %.pre, %122 ], [ %127, %143 ]
  %148 = phi double [ %125, %122 ], [ %145, %143 ]
  %.fr = freeze i32 %147
  %149 = fmul double %120, %148
  %150 = icmp eq i32 %.fr, 2
  %151 = select i1 %150, double 2.000000e+00, double 1.000000e+00
  %152 = fdiv double %149, %151
  %153 = fsub double %119, %152
  %154 = fcmp ugt double %153, %117
  br i1 %154, label %.thread503, label %163

.thread603:                                       ; preds = %126
  %155 = fsub float %90, %92
  %156 = tail call float @llvm.fabs.f32(float %155)
  %157 = fpext float %156 to double
  %158 = fmul double %120, %157
  %159 = fsub double %119, %158
  %160 = fcmp ugt double %159, %117
  br i1 %160, label %.thread503, label %.thread606

.thread606:                                       ; preds = %.thread603
  %161 = fcmp ogt float %92, %90
  %.489605 = select i1 %161, float %92, float %90
  %162 = fpext float %.489605 to double
  br label %171

163:                                              ; preds = %146
  %164 = fcmp ogt float %92, %90
  %.489 = select i1 %164, float %92, float %90
  %165 = fpext float %.489 to double
  br i1 %.not477, label %170, label %166

166:                                              ; preds = %163
  %167 = sitofp i32 %121 to double
  %168 = extractelement <2 x double> %87, i64 0
  %169 = fdiv double %168, %167
  br label %195

170:                                              ; preds = %163
  switch i32 %.fr, label %192 [
    i32 0, label %171
    i32 1, label %177
    i32 2, label %183
  ]

171:                                              ; preds = %.thread606, %170
  %172 = phi double [ 1.000000e+00, %.thread606 ], [ %151, %170 ]
  %173 = phi double [ %162, %.thread606 ], [ %165, %170 ]
  %174 = fsub float %90, %92
  %175 = tail call float @llvm.fabs.f32(float %174)
  %176 = fpext float %175 to double
  br label %195

177:                                              ; preds = %170
  %178 = getelementptr inbounds float, ptr %3, i64 %88
  %179 = load float, ptr %178, align 4, !tbaa !15
  %180 = getelementptr inbounds float, ptr %4, i64 %88
  %181 = load float, ptr %180, align 4, !tbaa !15
  %182 = fsub float %179, %181
  br label %192

183:                                              ; preds = %170
  %184 = getelementptr inbounds float, ptr %3, i64 %88
  %185 = load float, ptr %184, align 4, !tbaa !15
  %.490 = select i1 %93, float %92, float %90
  %186 = fsub float %185, %.490
  %187 = select i1 %93, float %90, float %92
  %188 = getelementptr inbounds float, ptr %4, i64 %88
  %189 = load float, ptr %188, align 4, !tbaa !15
  %190 = fsub float %187, %189
  %191 = fadd float %186, %190
  br label %192

192:                                              ; preds = %170, %183, %177
  %193 = phi float [ %182, %177 ], [ %191, %183 ], [ 0.000000e+00, %170 ]
  %194 = fpext float %193 to double
  br label %195

195:                                              ; preds = %171, %192, %166
  %196 = phi double [ %165, %166 ], [ %173, %171 ], [ %165, %192 ]
  %197 = phi i32 [ %.fr, %166 ], [ 0, %171 ], [ %.fr, %192 ]
  %198 = phi double [ %151, %166 ], [ %172, %171 ], [ %151, %192 ]
  %199 = phi double [ %169, %166 ], [ %176, %171 ], [ %194, %192 ]
  %200 = fmul double %120, %199
  %201 = fdiv double %200, %198
  %202 = fadd double %201, %196
  %203 = fcmp ult double %202, %117
  br i1 %203, label %.thread503, label %204

204:                                              ; preds = %195
  %205 = fpext float %106 to double
  %206 = fcmp olt float %98, %96
  %.491 = select i1 %206, float %98, float %96
  %207 = fpext float %.491 to double
  br i1 %.not477, label %212, label %208

208:                                              ; preds = %204
  %209 = sitofp i32 %121 to double
  %210 = extractelement <2 x double> %87, i64 1
  %211 = fdiv double %210, %209
  br label %236

212:                                              ; preds = %204
  switch i32 %197, label %233 [
    i32 0, label %213
    i32 1, label %217
    i32 2, label %223
  ]

213:                                              ; preds = %212
  %214 = fsub float %96, %98
  %215 = tail call float @llvm.fabs.f32(float %214)
  %216 = fpext float %215 to double
  br label %236

217:                                              ; preds = %212
  %218 = getelementptr inbounds float, ptr %3, i64 %94
  %219 = load float, ptr %218, align 4, !tbaa !15
  %220 = getelementptr inbounds float, ptr %4, i64 %94
  %221 = load float, ptr %220, align 4, !tbaa !15
  %222 = fsub float %219, %221
  br label %233

223:                                              ; preds = %212
  %224 = getelementptr inbounds float, ptr %3, i64 %94
  %225 = load float, ptr %224, align 4, !tbaa !15
  %226 = fcmp ult float %96, %98
  %.492 = select i1 %226, float %98, float %96
  %227 = fsub float %225, %.492
  %228 = select i1 %226, float %96, float %98
  %229 = getelementptr inbounds float, ptr %4, i64 %94
  %230 = load float, ptr %229, align 4, !tbaa !15
  %231 = fsub float %228, %230
  %232 = fadd float %227, %231
  br label %233

233:                                              ; preds = %212, %223, %217
  %234 = phi float [ %222, %217 ], [ %232, %223 ], [ 0.000000e+00, %212 ]
  %235 = fpext float %234 to double
  br label %236

236:                                              ; preds = %213, %233, %208
  %237 = phi double [ %211, %208 ], [ %216, %213 ], [ %235, %233 ]
  %238 = fmul double %120, %237
  %239 = fdiv double %238, %198
  %240 = fsub double %207, %239
  %241 = fcmp ugt double %240, %205
  br i1 %241, label %.thread503, label %242

242:                                              ; preds = %236
  %243 = fcmp ogt float %98, %96
  %.493 = select i1 %243, float %98, float %96
  %244 = fpext float %.493 to double
  br i1 %.not477, label %249, label %245

245:                                              ; preds = %242
  %246 = sitofp i32 %121 to double
  %247 = extractelement <2 x double> %87, i64 1
  %248 = fdiv double %247, %246
  br label %273

249:                                              ; preds = %242
  switch i32 %197, label %270 [
    i32 0, label %250
    i32 1, label %254
    i32 2, label %260
  ]

250:                                              ; preds = %249
  %251 = fsub float %96, %98
  %252 = tail call float @llvm.fabs.f32(float %251)
  %253 = fpext float %252 to double
  br label %273

254:                                              ; preds = %249
  %255 = getelementptr inbounds float, ptr %3, i64 %94
  %256 = load float, ptr %255, align 4, !tbaa !15
  %257 = getelementptr inbounds float, ptr %4, i64 %94
  %258 = load float, ptr %257, align 4, !tbaa !15
  %259 = fsub float %256, %258
  br label %270

260:                                              ; preds = %249
  %261 = getelementptr inbounds float, ptr %3, i64 %94
  %262 = load float, ptr %261, align 4, !tbaa !15
  %263 = fcmp ult float %96, %98
  %.494 = select i1 %263, float %98, float %96
  %264 = fsub float %262, %.494
  %265 = select i1 %263, float %96, float %98
  %266 = getelementptr inbounds float, ptr %4, i64 %94
  %267 = load float, ptr %266, align 4, !tbaa !15
  %268 = fsub float %265, %267
  %269 = fadd float %264, %268
  br label %270

270:                                              ; preds = %249, %260, %254
  %271 = phi float [ %259, %254 ], [ %269, %260 ], [ 0.000000e+00, %249 ]
  %272 = fpext float %271 to double
  br label %273

273:                                              ; preds = %250, %270, %245
  %274 = phi double [ %248, %245 ], [ %253, %250 ], [ %272, %270 ]
  %275 = fmul double %120, %274
  %276 = fdiv double %275, %198
  %277 = fadd double %276, %244
  %278 = fcmp ult double %277, %205
  br i1 %278, label %.thread503, label %279

279:                                              ; preds = %273
  %280 = fcmp ult float %104, %106
  br i1 %280, label %286, label %281

281:                                              ; preds = %279
  %282 = fcmp ogt float %104, %96
  %283 = fcmp ogt float %96, %90
  %or.cond510 = and i1 %283, %282
  %284 = fcmp ogt float %113, %104
  %or.cond511 = and i1 %or.cond510, %284
  %285 = fcmp olt float %111, %92
  %or.cond512 = and i1 %285, %or.cond511
  br i1 %or.cond512, label %291, label %.thread503

286:                                              ; preds = %279
  %287 = fcmp olt float %104, %96
  %288 = fcmp olt float %96, %90
  %or.cond513 = and i1 %288, %287
  %289 = fcmp olt float %113, %104
  %or.cond514 = and i1 %or.cond513, %289
  %290 = fcmp ogt float %111, %92
  %or.cond515 = and i1 %290, %or.cond514
  br i1 %or.cond515, label %291, label %.thread503

291:                                              ; preds = %286, %281
  %292 = select i1 %107, i32 100, i32 -100
  br label %.thread503

.thread503:                                       ; preds = %86, %101, %109, %146, %195, %236, %273, %286, %281, %.thread603, %291
  %.sink = phi i32 [ %292, %291 ], [ 0, %.thread603 ], [ 0, %281 ], [ 0, %286 ], [ 0, %273 ], [ 0, %236 ], [ 0, %195 ], [ 0, %146 ], [ 0, %109 ], [ 0, %101 ], [ 0, %86 ]
  %293 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv585
  store i32 %.sink, ptr %293, align 4, !tbaa !5
  %indvars.iv.next586 = add nuw nsw i64 %indvars.iv585, 1
  %294 = load i32, ptr %80, align 4, !tbaa !14
  switch i32 %294, label %.split544.us [
    i32 0, label %.thread504.us.preheader
    i32 1, label %.thread506.us.preheader
    i32 2, label %.thread508.us.preheader
  ]

.thread508.us.preheader:                          ; preds = %.thread503
  %295 = add nsw i64 %indvars.iv583, -3
  %296 = getelementptr inbounds float, ptr %3, i64 %295
  %297 = getelementptr inbounds float, ptr %5, i64 %295
  %298 = getelementptr inbounds float, ptr %2, i64 %295
  %299 = getelementptr inbounds float, ptr %4, i64 %295
  %300 = add nsw i64 %indvars.iv587, -3
  %301 = getelementptr inbounds float, ptr %3, i64 %300
  %302 = getelementptr inbounds float, ptr %5, i64 %300
  %303 = getelementptr inbounds float, ptr %2, i64 %300
  %304 = getelementptr inbounds float, ptr %4, i64 %300
  %305 = load <2 x float>, ptr %296, align 4, !tbaa !15
  %306 = load <2 x float>, ptr %297, align 4, !tbaa !15
  %307 = load <2 x float>, ptr %298, align 4, !tbaa !15
  %308 = fcmp ult <2 x float> %306, %307
  %309 = select <2 x i1> %308, <2 x float> %307, <2 x float> %306
  %310 = fsub <2 x float> %305, %309
  %311 = select <2 x i1> %308, <2 x float> %306, <2 x float> %307
  %312 = load <2 x float>, ptr %299, align 4, !tbaa !15
  %313 = fsub <2 x float> %311, %312
  %314 = fadd <2 x float> %310, %313
  %315 = fpext <2 x float> %314 to <2 x double>
  %316 = load <2 x float>, ptr %301, align 4, !tbaa !15
  %317 = load <2 x float>, ptr %302, align 4, !tbaa !15
  %318 = load <2 x float>, ptr %303, align 4, !tbaa !15
  %319 = fcmp ult <2 x float> %317, %318
  %320 = select <2 x i1> %319, <2 x float> %318, <2 x float> %317
  %321 = fsub <2 x float> %316, %320
  %322 = select <2 x i1> %319, <2 x float> %317, <2 x float> %318
  %323 = load <2 x float>, ptr %304, align 4, !tbaa !15
  %324 = fsub <2 x float> %322, %323
  %325 = fadd <2 x float> %321, %324
  %326 = fpext <2 x float> %325 to <2 x double>
  %327 = fsub <2 x double> %315, %326
  br label %.split544.us

.thread506.us.preheader:                          ; preds = %.thread503
  %328 = add nsw i64 %indvars.iv583, -3
  %329 = getelementptr inbounds float, ptr %3, i64 %328
  %330 = getelementptr inbounds float, ptr %4, i64 %328
  %331 = add nsw i64 %indvars.iv587, -3
  %332 = getelementptr inbounds float, ptr %3, i64 %331
  %333 = getelementptr inbounds float, ptr %4, i64 %331
  %334 = load <2 x float>, ptr %329, align 4, !tbaa !15
  %335 = load <2 x float>, ptr %330, align 4, !tbaa !15
  %336 = fsub <2 x float> %334, %335
  %337 = fpext <2 x float> %336 to <2 x double>
  %338 = load <2 x float>, ptr %332, align 4, !tbaa !15
  %339 = load <2 x float>, ptr %333, align 4, !tbaa !15
  %340 = fsub <2 x float> %338, %339
  %341 = fpext <2 x float> %340 to <2 x double>
  %342 = fsub <2 x double> %337, %341
  br label %.split544.us

.thread504.us.preheader:                          ; preds = %.thread503
  %343 = add nsw i64 %indvars.iv583, -3
  %344 = getelementptr inbounds float, ptr %5, i64 %343
  %345 = getelementptr inbounds float, ptr %2, i64 %343
  %346 = add nsw i64 %indvars.iv587, -3
  %347 = getelementptr inbounds float, ptr %5, i64 %346
  %348 = getelementptr inbounds float, ptr %2, i64 %346
  %349 = load <2 x float>, ptr %344, align 4, !tbaa !15
  %350 = load <2 x float>, ptr %345, align 4, !tbaa !15
  %351 = fsub <2 x float> %349, %350
  %352 = tail call <2 x float> @llvm.fabs.v2f32(<2 x float> %351)
  %353 = fpext <2 x float> %352 to <2 x double>
  %354 = load <2 x float>, ptr %347, align 4, !tbaa !15
  %355 = load <2 x float>, ptr %348, align 4, !tbaa !15
  %356 = fsub <2 x float> %354, %355
  %357 = tail call <2 x float> @llvm.fabs.v2f32(<2 x float> %356)
  %358 = fpext <2 x float> %357 to <2 x double>
  %359 = fsub <2 x double> %353, %358
  br label %.split544.us

.split544.us:                                     ; preds = %.thread503, %.thread508.us.preheader, %.thread506.us.preheader, %.thread504.us.preheader
  %360 = phi <2 x double> [ %327, %.thread508.us.preheader ], [ %342, %.thread506.us.preheader ], [ %359, %.thread504.us.preheader ], [ zeroinitializer, %.thread503 ]
  %361 = fadd <2 x double> %87, %360
  %indvars.iv.next584 = add nuw nsw i64 %indvars.iv583, 1
  %indvars.iv.next588 = add nsw i64 %indvars.iv587, 1
  %.not481.not = icmp slt i64 %indvars.iv583, %84
  br i1 %.not481.not, label %86, label %362, !llvm.loop !20

362:                                              ; preds = %.split544.us
  %363 = trunc nuw i64 %indvars.iv.next586 to i32
  store i32 %363, ptr %7, align 4, !tbaa !5
  store i32 %spec.select, ptr %6, align 4, !tbaa !5
  br label %364

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x float> @llvm.fabs.v2f32(<2 x float>) #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