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

; 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_CDLLONGLEGGEDDOJI_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_CDLLONGLEGGEDDOJI(i32 noundef %0, i32 noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8) #0 {
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  store i32 %0, ptr %11, align 4, !tbaa !5
  store i32 %1, ptr %12, align 4, !tbaa !5
  store ptr %2, ptr %13, align 8, !tbaa !9
  store ptr %3, ptr %14, align 8, !tbaa !9
  store ptr %4, ptr %15, align 8, !tbaa !9
  store ptr %5, ptr %16, align 8, !tbaa !9
  store ptr %6, ptr %17, align 8, !tbaa !9
  store ptr %7, ptr %18, align 8, !tbaa !9
  store ptr %8, ptr %19, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  %28 = load i32, ptr %11, align 4, !tbaa !5
  %29 = icmp slt i32 %28, 0
  br i1 %29, label %30, label %31

30:                                               ; preds = %9
  store i32 12, ptr %10, align 4
  store i32 1, ptr %27, align 4
  br label %1388

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

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

38:                                               ; preds = %34, %31
  store i32 13, ptr %10, align 4
  store i32 1, ptr %27, align 4
  br label %1388

39:                                               ; preds = %34
  %40 = load ptr, ptr %13, align 8, !tbaa !9
  %41 = icmp ne ptr %40, null
  br i1 %41, label %42, label %51

42:                                               ; preds = %39
  %43 = load ptr, ptr %14, align 8, !tbaa !9
  %44 = icmp ne ptr %43, null
  br i1 %44, label %45, label %51

45:                                               ; preds = %42
  %46 = load ptr, ptr %15, align 8, !tbaa !9
  %47 = icmp ne ptr %46, null
  br i1 %47, label %48, label %51

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

51:                                               ; preds = %48, %45, %42, %39
  store i32 2, ptr %10, align 4
  store i32 1, ptr %27, align 4
  br label %1388

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

55:                                               ; preds = %52
  store i32 2, ptr %10, align 4
  store i32 1, ptr %27, align 4
  br label %1388

56:                                               ; preds = %52
  %57 = call i32 @TA_CDLLONGLEGGEDDOJI_Lookback()
  store i32 %57, ptr %26, align 4, !tbaa !5
  %58 = load i32, ptr %11, align 4, !tbaa !5
  %59 = load i32, ptr %26, align 4, !tbaa !5
  %60 = icmp slt i32 %58, %59
  br i1 %60, label %61, label %63

61:                                               ; preds = %56
  %62 = load i32, ptr %26, align 4, !tbaa !5
  store i32 %62, ptr %11, align 4, !tbaa !5
  br label %63

63:                                               ; preds = %61, %56
  %64 = load i32, ptr %11, align 4, !tbaa !5
  %65 = load i32, ptr %12, align 4, !tbaa !5
  %66 = icmp sgt i32 %64, %65
  br i1 %66, label %67, label %70

67:                                               ; preds = %63
  %68 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 0, ptr %68, align 4, !tbaa !5
  %69 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 0, ptr %69, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %27, align 4
  br label %1388

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

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

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

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

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

118:                                              ; preds = %111
  %119 = load ptr, ptr %14, align 8, !tbaa !9
  %120 = load i32, ptr %22, align 4, !tbaa !5
  %121 = sext i32 %120 to i64
  %122 = getelementptr inbounds float, ptr %119, i64 %121
  %123 = load float, ptr %122, align 4, !tbaa !16
  %124 = load ptr, ptr %15, align 8, !tbaa !9
  %125 = load i32, ptr %22, align 4, !tbaa !5
  %126 = sext i32 %125 to i64
  %127 = getelementptr inbounds float, ptr %124, i64 %126
  %128 = load float, ptr %127, align 4, !tbaa !16
  %129 = fsub float %123, %128
  br label %204

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

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

154:                                              ; preds = %137
  %155 = load ptr, ptr %16, align 8, !tbaa !9
  %156 = load i32, ptr %22, align 4, !tbaa !5
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds float, ptr %155, i64 %157
  %159 = load float, ptr %158, align 4, !tbaa !16
  br label %166

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

166:                                              ; preds = %160, %154
  %167 = phi float [ %159, %154 ], [ %165, %160 ]
  %168 = fsub float %142, %167
  %169 = load ptr, ptr %16, align 8, !tbaa !9
  %170 = load i32, ptr %22, align 4, !tbaa !5
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds float, ptr %169, i64 %171
  %173 = load float, ptr %172, align 4, !tbaa !16
  %174 = load ptr, ptr %13, align 8, !tbaa !9
  %175 = load i32, ptr %22, align 4, !tbaa !5
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds float, ptr %174, i64 %176
  %178 = load float, ptr %177, align 4, !tbaa !16
  %179 = fcmp oge float %173, %178
  br i1 %179, label %180, label %186

180:                                              ; preds = %166
  %181 = load ptr, ptr %13, align 8, !tbaa !9
  %182 = load i32, ptr %22, align 4, !tbaa !5
  %183 = sext i32 %182 to i64
  %184 = getelementptr inbounds float, ptr %181, i64 %183
  %185 = load float, ptr %184, align 4, !tbaa !16
  br label %192

186:                                              ; preds = %166
  %187 = load ptr, ptr %16, align 8, !tbaa !9
  %188 = load i32, ptr %22, align 4, !tbaa !5
  %189 = sext i32 %188 to i64
  %190 = getelementptr inbounds float, ptr %187, i64 %189
  %191 = load float, ptr %190, align 4, !tbaa !16
  br label %192

192:                                              ; preds = %186, %180
  %193 = phi float [ %185, %180 ], [ %191, %186 ]
  %194 = load ptr, ptr %15, align 8, !tbaa !9
  %195 = load i32, ptr %22, align 4, !tbaa !5
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds float, ptr %194, i64 %196
  %198 = load float, ptr %197, align 4, !tbaa !16
  %199 = fsub float %193, %198
  %200 = fadd float %168, %199
  br label %202

201:                                              ; preds = %130
  br label %202

202:                                              ; preds = %201, %192
  %203 = phi float [ %200, %192 ], [ 0.000000e+00, %201 ]
  br label %204

204:                                              ; preds = %202, %118
  %205 = phi float [ %129, %118 ], [ %203, %202 ]
  %206 = fpext float %205 to double
  br label %207

207:                                              ; preds = %204, %97
  %208 = phi double [ %110, %97 ], [ %206, %204 ]
  %209 = load double, ptr %20, align 8, !tbaa !11
  %210 = fadd double %209, %208
  store double %210, ptr %20, align 8, !tbaa !11
  %211 = load i32, ptr %22, align 4, !tbaa !5
  %212 = add nsw i32 %211, 1
  store i32 %212, ptr %22, align 4, !tbaa !5
  br label %86, !llvm.loop !18

213:                                              ; preds = %86
  %214 = load i32, ptr %25, align 4, !tbaa !5
  store i32 %214, ptr %22, align 4, !tbaa !5
  br label %215

215:                                              ; preds = %336, %213
  %216 = load i32, ptr %22, align 4, !tbaa !5
  %217 = load i32, ptr %11, align 4, !tbaa !5
  %218 = icmp slt i32 %216, %217
  br i1 %218, label %219, label %342

219:                                              ; preds = %215
  %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 4
  %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 %240

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

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

247:                                              ; preds = %240
  %248 = load ptr, ptr %14, align 8, !tbaa !9
  %249 = load i32, ptr %22, align 4, !tbaa !5
  %250 = sext i32 %249 to i64
  %251 = getelementptr inbounds float, ptr %248, i64 %250
  %252 = load float, ptr %251, align 4, !tbaa !16
  %253 = load ptr, ptr %15, align 8, !tbaa !9
  %254 = load i32, ptr %22, align 4, !tbaa !5
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds float, ptr %253, i64 %255
  %257 = load float, ptr %256, align 4, !tbaa !16
  %258 = fsub float %252, %257
  br label %333

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

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

283:                                              ; preds = %266
  %284 = load ptr, ptr %16, align 8, !tbaa !9
  %285 = load i32, ptr %22, align 4, !tbaa !5
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds float, ptr %284, i64 %286
  %288 = load float, ptr %287, align 4, !tbaa !16
  br label %295

289:                                              ; preds = %266
  %290 = load ptr, ptr %13, align 8, !tbaa !9
  %291 = load i32, ptr %22, align 4, !tbaa !5
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds float, ptr %290, i64 %292
  %294 = load float, ptr %293, align 4, !tbaa !16
  br label %295

295:                                              ; preds = %289, %283
  %296 = phi float [ %288, %283 ], [ %294, %289 ]
  %297 = fsub float %271, %296
  %298 = load ptr, ptr %16, align 8, !tbaa !9
  %299 = load i32, ptr %22, align 4, !tbaa !5
  %300 = sext i32 %299 to i64
  %301 = getelementptr inbounds float, ptr %298, i64 %300
  %302 = load float, ptr %301, align 4, !tbaa !16
  %303 = load ptr, ptr %13, align 8, !tbaa !9
  %304 = load i32, ptr %22, align 4, !tbaa !5
  %305 = sext i32 %304 to i64
  %306 = getelementptr inbounds float, ptr %303, i64 %305
  %307 = load float, ptr %306, align 4, !tbaa !16
  %308 = fcmp oge float %302, %307
  br i1 %308, label %309, label %315

309:                                              ; preds = %295
  %310 = load ptr, ptr %13, align 8, !tbaa !9
  %311 = load i32, ptr %22, align 4, !tbaa !5
  %312 = sext i32 %311 to i64
  %313 = getelementptr inbounds float, ptr %310, i64 %312
  %314 = load float, ptr %313, align 4, !tbaa !16
  br label %321

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

321:                                              ; preds = %315, %309
  %322 = phi float [ %314, %309 ], [ %320, %315 ]
  %323 = load ptr, ptr %15, align 8, !tbaa !9
  %324 = load i32, ptr %22, align 4, !tbaa !5
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds float, ptr %323, i64 %325
  %327 = load float, ptr %326, align 4, !tbaa !16
  %328 = fsub float %322, %327
  %329 = fadd float %297, %328
  br label %331

330:                                              ; preds = %259
  br label %331

331:                                              ; preds = %330, %321
  %332 = phi float [ %329, %321 ], [ 0.000000e+00, %330 ]
  br label %333

333:                                              ; preds = %331, %247
  %334 = phi float [ %258, %247 ], [ %332, %331 ]
  %335 = fpext float %334 to double
  br label %336

336:                                              ; preds = %333, %226
  %337 = phi double [ %239, %226 ], [ %335, %333 ]
  %338 = load double, ptr %21, align 8, !tbaa !11
  %339 = fadd double %338, %337
  store double %339, ptr %21, align 8, !tbaa !11
  %340 = load i32, ptr %22, align 4, !tbaa !5
  %341 = add nsw i32 %340, 1
  store i32 %341, ptr %22, align 4, !tbaa !5
  br label %215, !llvm.loop !20

342:                                              ; preds = %215
  store i32 0, ptr %23, align 4, !tbaa !5
  br label %343

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

369:                                              ; preds = %343
  %370 = load double, ptr %20, align 8, !tbaa !11
  %371 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %372 = getelementptr inbounds %struct.TA_LibcPriv, ptr %371, i32 0, i32 8
  %373 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %372, i64 0, i64 3
  %374 = getelementptr inbounds %struct.TA_CandleSetting, ptr %373, i32 0, i32 2
  %375 = load i32, ptr %374, align 8, !tbaa !13
  %376 = sitofp i32 %375 to double
  %377 = fdiv double %370, %376
  br label %497

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

385:                                              ; preds = %378
  %386 = load ptr, ptr %16, align 8, !tbaa !9
  %387 = load i32, ptr %22, align 4, !tbaa !5
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds float, ptr %386, i64 %388
  %390 = load float, ptr %389, align 4, !tbaa !16
  %391 = load ptr, ptr %13, align 8, !tbaa !9
  %392 = load i32, ptr %22, align 4, !tbaa !5
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds float, ptr %391, i64 %393
  %395 = load float, ptr %394, align 4, !tbaa !16
  %396 = fsub float %390, %395
  %397 = fpext float %396 to double
  %398 = call double @llvm.fabs.f64(double %397)
  br label %495

399:                                              ; preds = %378
  %400 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %401 = getelementptr inbounds %struct.TA_LibcPriv, ptr %400, i32 0, i32 8
  %402 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %401, i64 0, i64 3
  %403 = getelementptr inbounds %struct.TA_CandleSetting, ptr %402, i32 0, i32 1
  %404 = load i32, ptr %403, align 4, !tbaa !15
  %405 = icmp eq i32 %404, 1
  br i1 %405, label %406, label %418

406:                                              ; preds = %399
  %407 = load ptr, ptr %14, align 8, !tbaa !9
  %408 = load i32, ptr %22, align 4, !tbaa !5
  %409 = sext i32 %408 to i64
  %410 = getelementptr inbounds float, ptr %407, i64 %409
  %411 = load float, ptr %410, align 4, !tbaa !16
  %412 = load ptr, ptr %15, align 8, !tbaa !9
  %413 = load i32, ptr %22, align 4, !tbaa !5
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds float, ptr %412, i64 %414
  %416 = load float, ptr %415, align 4, !tbaa !16
  %417 = fsub float %411, %416
  br label %492

418:                                              ; preds = %399
  %419 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %420 = getelementptr inbounds %struct.TA_LibcPriv, ptr %419, i32 0, i32 8
  %421 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %420, i64 0, i64 3
  %422 = getelementptr inbounds %struct.TA_CandleSetting, ptr %421, i32 0, i32 1
  %423 = load i32, ptr %422, align 4, !tbaa !15
  %424 = icmp eq i32 %423, 2
  br i1 %424, label %425, label %489

425:                                              ; preds = %418
  %426 = load ptr, ptr %14, align 8, !tbaa !9
  %427 = load i32, ptr %22, align 4, !tbaa !5
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds float, ptr %426, i64 %428
  %430 = load float, ptr %429, align 4, !tbaa !16
  %431 = load ptr, ptr %16, align 8, !tbaa !9
  %432 = load i32, ptr %22, align 4, !tbaa !5
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds float, ptr %431, i64 %433
  %435 = load float, ptr %434, align 4, !tbaa !16
  %436 = load ptr, ptr %13, align 8, !tbaa !9
  %437 = load i32, ptr %22, align 4, !tbaa !5
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds float, ptr %436, i64 %438
  %440 = load float, ptr %439, align 4, !tbaa !16
  %441 = fcmp oge float %435, %440
  br i1 %441, label %442, label %448

442:                                              ; preds = %425
  %443 = load ptr, ptr %16, align 8, !tbaa !9
  %444 = load i32, ptr %22, align 4, !tbaa !5
  %445 = sext i32 %444 to i64
  %446 = getelementptr inbounds float, ptr %443, i64 %445
  %447 = load float, ptr %446, align 4, !tbaa !16
  br label %454

448:                                              ; preds = %425
  %449 = load ptr, ptr %13, align 8, !tbaa !9
  %450 = load i32, ptr %22, align 4, !tbaa !5
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds float, ptr %449, i64 %451
  %453 = load float, ptr %452, align 4, !tbaa !16
  br label %454

454:                                              ; preds = %448, %442
  %455 = phi float [ %447, %442 ], [ %453, %448 ]
  %456 = fsub float %430, %455
  %457 = load ptr, ptr %16, align 8, !tbaa !9
  %458 = load i32, ptr %22, align 4, !tbaa !5
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds float, ptr %457, i64 %459
  %461 = load float, ptr %460, align 4, !tbaa !16
  %462 = load ptr, ptr %13, align 8, !tbaa !9
  %463 = load i32, ptr %22, align 4, !tbaa !5
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds float, ptr %462, i64 %464
  %466 = load float, ptr %465, align 4, !tbaa !16
  %467 = fcmp oge float %461, %466
  br i1 %467, label %468, label %474

468:                                              ; preds = %454
  %469 = load ptr, ptr %13, align 8, !tbaa !9
  %470 = load i32, ptr %22, align 4, !tbaa !5
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds float, ptr %469, i64 %471
  %473 = load float, ptr %472, align 4, !tbaa !16
  br label %480

474:                                              ; preds = %454
  %475 = load ptr, ptr %16, align 8, !tbaa !9
  %476 = load i32, ptr %22, align 4, !tbaa !5
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds float, ptr %475, i64 %477
  %479 = load float, ptr %478, align 4, !tbaa !16
  br label %480

480:                                              ; preds = %474, %468
  %481 = phi float [ %473, %468 ], [ %479, %474 ]
  %482 = load ptr, ptr %15, align 8, !tbaa !9
  %483 = load i32, ptr %22, align 4, !tbaa !5
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds float, ptr %482, i64 %484
  %486 = load float, ptr %485, align 4, !tbaa !16
  %487 = fsub float %481, %486
  %488 = fadd float %456, %487
  br label %490

489:                                              ; preds = %418
  br label %490

490:                                              ; preds = %489, %480
  %491 = phi float [ %488, %480 ], [ 0.000000e+00, %489 ]
  br label %492

492:                                              ; preds = %490, %406
  %493 = phi float [ %417, %406 ], [ %491, %490 ]
  %494 = fpext float %493 to double
  br label %495

495:                                              ; preds = %492, %385
  %496 = phi double [ %398, %385 ], [ %494, %492 ]
  br label %497

497:                                              ; preds = %495, %369
  %498 = phi double [ %377, %369 ], [ %496, %495 ]
  %499 = fmul double %361, %498
  %500 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %501 = getelementptr inbounds %struct.TA_LibcPriv, ptr %500, i32 0, i32 8
  %502 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %501, i64 0, i64 3
  %503 = getelementptr inbounds %struct.TA_CandleSetting, ptr %502, i32 0, i32 1
  %504 = load i32, ptr %503, align 4, !tbaa !15
  %505 = icmp eq i32 %504, 2
  %506 = zext i1 %505 to i64
  %507 = select i1 %505, double 2.000000e+00, double 1.000000e+00
  %508 = fdiv double %499, %507
  %509 = fcmp ole double %356, %508
  br i1 %509, label %510, label %888

510:                                              ; preds = %497
  %511 = load ptr, ptr %16, align 8, !tbaa !9
  %512 = load i32, ptr %22, align 4, !tbaa !5
  %513 = sext i32 %512 to i64
  %514 = getelementptr inbounds float, ptr %511, i64 %513
  %515 = load float, ptr %514, align 4, !tbaa !16
  %516 = load ptr, ptr %13, align 8, !tbaa !9
  %517 = load i32, ptr %22, align 4, !tbaa !5
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds float, ptr %516, i64 %518
  %520 = load float, ptr %519, align 4, !tbaa !16
  %521 = fcmp oge float %515, %520
  br i1 %521, label %522, label %528

522:                                              ; preds = %510
  %523 = load ptr, ptr %13, align 8, !tbaa !9
  %524 = load i32, ptr %22, align 4, !tbaa !5
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds float, ptr %523, i64 %525
  %527 = load float, ptr %526, align 4, !tbaa !16
  br label %534

528:                                              ; preds = %510
  %529 = load ptr, ptr %16, align 8, !tbaa !9
  %530 = load i32, ptr %22, align 4, !tbaa !5
  %531 = sext i32 %530 to i64
  %532 = getelementptr inbounds float, ptr %529, i64 %531
  %533 = load float, ptr %532, align 4, !tbaa !16
  br label %534

534:                                              ; preds = %528, %522
  %535 = phi float [ %527, %522 ], [ %533, %528 ]
  %536 = load ptr, ptr %15, align 8, !tbaa !9
  %537 = load i32, ptr %22, align 4, !tbaa !5
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds float, ptr %536, i64 %538
  %540 = load float, ptr %539, align 4, !tbaa !16
  %541 = fsub float %535, %540
  %542 = fpext float %541 to double
  %543 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %544 = getelementptr inbounds %struct.TA_LibcPriv, ptr %543, i32 0, i32 8
  %545 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %544, i64 0, i64 4
  %546 = getelementptr inbounds %struct.TA_CandleSetting, ptr %545, i32 0, i32 3
  %547 = load double, ptr %546, align 8, !tbaa !21
  %548 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %549 = getelementptr inbounds %struct.TA_LibcPriv, ptr %548, i32 0, i32 8
  %550 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %549, i64 0, i64 4
  %551 = getelementptr inbounds %struct.TA_CandleSetting, ptr %550, i32 0, i32 2
  %552 = load i32, ptr %551, align 8, !tbaa !13
  %553 = sitofp i32 %552 to double
  %554 = fcmp une double %553, 0.000000e+00
  br i1 %554, label %555, label %564

555:                                              ; preds = %534
  %556 = load double, ptr %21, align 8, !tbaa !11
  %557 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %558 = getelementptr inbounds %struct.TA_LibcPriv, ptr %557, i32 0, i32 8
  %559 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %558, i64 0, i64 4
  %560 = getelementptr inbounds %struct.TA_CandleSetting, ptr %559, i32 0, i32 2
  %561 = load i32, ptr %560, align 8, !tbaa !13
  %562 = sitofp i32 %561 to double
  %563 = fdiv double %556, %562
  br label %683

564:                                              ; preds = %534
  %565 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %566 = getelementptr inbounds %struct.TA_LibcPriv, ptr %565, i32 0, i32 8
  %567 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %566, i64 0, i64 4
  %568 = getelementptr inbounds %struct.TA_CandleSetting, ptr %567, i32 0, i32 1
  %569 = load i32, ptr %568, align 4, !tbaa !15
  %570 = icmp eq i32 %569, 0
  br i1 %570, label %571, label %585

571:                                              ; preds = %564
  %572 = load ptr, ptr %16, align 8, !tbaa !9
  %573 = load i32, ptr %22, align 4, !tbaa !5
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds float, ptr %572, i64 %574
  %576 = load float, ptr %575, align 4, !tbaa !16
  %577 = load ptr, ptr %13, align 8, !tbaa !9
  %578 = load i32, ptr %22, align 4, !tbaa !5
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds float, ptr %577, i64 %579
  %581 = load float, ptr %580, align 4, !tbaa !16
  %582 = fsub float %576, %581
  %583 = fpext float %582 to double
  %584 = call double @llvm.fabs.f64(double %583)
  br label %681

585:                                              ; preds = %564
  %586 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %587 = getelementptr inbounds %struct.TA_LibcPriv, ptr %586, i32 0, i32 8
  %588 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %587, i64 0, i64 4
  %589 = getelementptr inbounds %struct.TA_CandleSetting, ptr %588, i32 0, i32 1
  %590 = load i32, ptr %589, align 4, !tbaa !15
  %591 = icmp eq i32 %590, 1
  br i1 %591, label %592, label %604

592:                                              ; preds = %585
  %593 = load ptr, ptr %14, align 8, !tbaa !9
  %594 = load i32, ptr %22, align 4, !tbaa !5
  %595 = sext i32 %594 to i64
  %596 = getelementptr inbounds float, ptr %593, i64 %595
  %597 = load float, ptr %596, align 4, !tbaa !16
  %598 = load ptr, ptr %15, align 8, !tbaa !9
  %599 = load i32, ptr %22, align 4, !tbaa !5
  %600 = sext i32 %599 to i64
  %601 = getelementptr inbounds float, ptr %598, i64 %600
  %602 = load float, ptr %601, align 4, !tbaa !16
  %603 = fsub float %597, %602
  br label %678

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

611:                                              ; preds = %604
  %612 = load ptr, ptr %14, align 8, !tbaa !9
  %613 = load i32, ptr %22, align 4, !tbaa !5
  %614 = sext i32 %613 to i64
  %615 = getelementptr inbounds float, ptr %612, i64 %614
  %616 = load float, ptr %615, align 4, !tbaa !16
  %617 = load ptr, ptr %16, align 8, !tbaa !9
  %618 = load i32, ptr %22, align 4, !tbaa !5
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds float, ptr %617, i64 %619
  %621 = load float, ptr %620, align 4, !tbaa !16
  %622 = load ptr, ptr %13, align 8, !tbaa !9
  %623 = load i32, ptr %22, align 4, !tbaa !5
  %624 = sext i32 %623 to i64
  %625 = getelementptr inbounds float, ptr %622, i64 %624
  %626 = load float, ptr %625, align 4, !tbaa !16
  %627 = fcmp oge float %621, %626
  br i1 %627, label %628, label %634

628:                                              ; preds = %611
  %629 = load ptr, ptr %16, align 8, !tbaa !9
  %630 = load i32, ptr %22, align 4, !tbaa !5
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds float, ptr %629, i64 %631
  %633 = load float, ptr %632, align 4, !tbaa !16
  br label %640

634:                                              ; preds = %611
  %635 = load ptr, ptr %13, align 8, !tbaa !9
  %636 = load i32, ptr %22, align 4, !tbaa !5
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds float, ptr %635, i64 %637
  %639 = load float, ptr %638, align 4, !tbaa !16
  br label %640

640:                                              ; preds = %634, %628
  %641 = phi float [ %633, %628 ], [ %639, %634 ]
  %642 = fsub float %616, %641
  %643 = load ptr, ptr %16, align 8, !tbaa !9
  %644 = load i32, ptr %22, align 4, !tbaa !5
  %645 = sext i32 %644 to i64
  %646 = getelementptr inbounds float, ptr %643, i64 %645
  %647 = load float, ptr %646, align 4, !tbaa !16
  %648 = load ptr, ptr %13, align 8, !tbaa !9
  %649 = load i32, ptr %22, align 4, !tbaa !5
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds float, ptr %648, i64 %650
  %652 = load float, ptr %651, align 4, !tbaa !16
  %653 = fcmp oge float %647, %652
  br i1 %653, label %654, label %660

654:                                              ; preds = %640
  %655 = load ptr, ptr %13, align 8, !tbaa !9
  %656 = load i32, ptr %22, align 4, !tbaa !5
  %657 = sext i32 %656 to i64
  %658 = getelementptr inbounds float, ptr %655, i64 %657
  %659 = load float, ptr %658, align 4, !tbaa !16
  br label %666

660:                                              ; preds = %640
  %661 = load ptr, ptr %16, align 8, !tbaa !9
  %662 = load i32, ptr %22, align 4, !tbaa !5
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds float, ptr %661, i64 %663
  %665 = load float, ptr %664, align 4, !tbaa !16
  br label %666

666:                                              ; preds = %660, %654
  %667 = phi float [ %659, %654 ], [ %665, %660 ]
  %668 = load ptr, ptr %15, align 8, !tbaa !9
  %669 = load i32, ptr %22, align 4, !tbaa !5
  %670 = sext i32 %669 to i64
  %671 = getelementptr inbounds float, ptr %668, i64 %670
  %672 = load float, ptr %671, align 4, !tbaa !16
  %673 = fsub float %667, %672
  %674 = fadd float %642, %673
  br label %676

675:                                              ; preds = %604
  br label %676

676:                                              ; preds = %675, %666
  %677 = phi float [ %674, %666 ], [ 0.000000e+00, %675 ]
  br label %678

678:                                              ; preds = %676, %592
  %679 = phi float [ %603, %592 ], [ %677, %676 ]
  %680 = fpext float %679 to double
  br label %681

681:                                              ; preds = %678, %571
  %682 = phi double [ %584, %571 ], [ %680, %678 ]
  br label %683

683:                                              ; preds = %681, %555
  %684 = phi double [ %563, %555 ], [ %682, %681 ]
  %685 = fmul double %547, %684
  %686 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %687 = getelementptr inbounds %struct.TA_LibcPriv, ptr %686, i32 0, i32 8
  %688 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %687, i64 0, i64 4
  %689 = getelementptr inbounds %struct.TA_CandleSetting, ptr %688, i32 0, i32 1
  %690 = load i32, ptr %689, align 4, !tbaa !15
  %691 = icmp eq i32 %690, 2
  %692 = zext i1 %691 to i64
  %693 = select i1 %691, double 2.000000e+00, double 1.000000e+00
  %694 = fdiv double %685, %693
  %695 = fcmp ogt double %542, %694
  br i1 %695, label %882, label %696

696:                                              ; preds = %683
  %697 = load ptr, ptr %14, align 8, !tbaa !9
  %698 = load i32, ptr %22, align 4, !tbaa !5
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds float, ptr %697, i64 %699
  %701 = load float, ptr %700, align 4, !tbaa !16
  %702 = load ptr, ptr %16, align 8, !tbaa !9
  %703 = load i32, ptr %22, align 4, !tbaa !5
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds float, ptr %702, i64 %704
  %706 = load float, ptr %705, align 4, !tbaa !16
  %707 = load ptr, ptr %13, align 8, !tbaa !9
  %708 = load i32, ptr %22, align 4, !tbaa !5
  %709 = sext i32 %708 to i64
  %710 = getelementptr inbounds float, ptr %707, i64 %709
  %711 = load float, ptr %710, align 4, !tbaa !16
  %712 = fcmp oge float %706, %711
  br i1 %712, label %713, label %719

713:                                              ; preds = %696
  %714 = load ptr, ptr %16, align 8, !tbaa !9
  %715 = load i32, ptr %22, align 4, !tbaa !5
  %716 = sext i32 %715 to i64
  %717 = getelementptr inbounds float, ptr %714, i64 %716
  %718 = load float, ptr %717, align 4, !tbaa !16
  br label %725

719:                                              ; preds = %696
  %720 = load ptr, ptr %13, align 8, !tbaa !9
  %721 = load i32, ptr %22, align 4, !tbaa !5
  %722 = sext i32 %721 to i64
  %723 = getelementptr inbounds float, ptr %720, i64 %722
  %724 = load float, ptr %723, align 4, !tbaa !16
  br label %725

725:                                              ; preds = %719, %713
  %726 = phi float [ %718, %713 ], [ %724, %719 ]
  %727 = fsub float %701, %726
  %728 = fpext float %727 to double
  %729 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %730 = getelementptr inbounds %struct.TA_LibcPriv, ptr %729, i32 0, i32 8
  %731 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %730, i64 0, i64 4
  %732 = getelementptr inbounds %struct.TA_CandleSetting, ptr %731, i32 0, i32 3
  %733 = load double, ptr %732, align 8, !tbaa !21
  %734 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %735 = getelementptr inbounds %struct.TA_LibcPriv, ptr %734, i32 0, i32 8
  %736 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %735, i64 0, i64 4
  %737 = getelementptr inbounds %struct.TA_CandleSetting, ptr %736, i32 0, i32 2
  %738 = load i32, ptr %737, align 8, !tbaa !13
  %739 = sitofp i32 %738 to double
  %740 = fcmp une double %739, 0.000000e+00
  br i1 %740, label %741, label %750

741:                                              ; preds = %725
  %742 = load double, ptr %21, align 8, !tbaa !11
  %743 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %744 = getelementptr inbounds %struct.TA_LibcPriv, ptr %743, i32 0, i32 8
  %745 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %744, i64 0, i64 4
  %746 = getelementptr inbounds %struct.TA_CandleSetting, ptr %745, i32 0, i32 2
  %747 = load i32, ptr %746, align 8, !tbaa !13
  %748 = sitofp i32 %747 to double
  %749 = fdiv double %742, %748
  br label %869

750:                                              ; preds = %725
  %751 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %752 = getelementptr inbounds %struct.TA_LibcPriv, ptr %751, i32 0, i32 8
  %753 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %752, i64 0, i64 4
  %754 = getelementptr inbounds %struct.TA_CandleSetting, ptr %753, i32 0, i32 1
  %755 = load i32, ptr %754, align 4, !tbaa !15
  %756 = icmp eq i32 %755, 0
  br i1 %756, label %757, label %771

757:                                              ; preds = %750
  %758 = load ptr, ptr %16, align 8, !tbaa !9
  %759 = load i32, ptr %22, align 4, !tbaa !5
  %760 = sext i32 %759 to i64
  %761 = getelementptr inbounds float, ptr %758, i64 %760
  %762 = load float, ptr %761, align 4, !tbaa !16
  %763 = load ptr, ptr %13, align 8, !tbaa !9
  %764 = load i32, ptr %22, align 4, !tbaa !5
  %765 = sext i32 %764 to i64
  %766 = getelementptr inbounds float, ptr %763, i64 %765
  %767 = load float, ptr %766, align 4, !tbaa !16
  %768 = fsub float %762, %767
  %769 = fpext float %768 to double
  %770 = call double @llvm.fabs.f64(double %769)
  br label %867

771:                                              ; preds = %750
  %772 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %773 = getelementptr inbounds %struct.TA_LibcPriv, ptr %772, i32 0, i32 8
  %774 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %773, i64 0, i64 4
  %775 = getelementptr inbounds %struct.TA_CandleSetting, ptr %774, i32 0, i32 1
  %776 = load i32, ptr %775, align 4, !tbaa !15
  %777 = icmp eq i32 %776, 1
  br i1 %777, label %778, label %790

778:                                              ; preds = %771
  %779 = load ptr, ptr %14, align 8, !tbaa !9
  %780 = load i32, ptr %22, align 4, !tbaa !5
  %781 = sext i32 %780 to i64
  %782 = getelementptr inbounds float, ptr %779, i64 %781
  %783 = load float, ptr %782, align 4, !tbaa !16
  %784 = load ptr, ptr %15, align 8, !tbaa !9
  %785 = load i32, ptr %22, align 4, !tbaa !5
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds float, ptr %784, i64 %786
  %788 = load float, ptr %787, align 4, !tbaa !16
  %789 = fsub float %783, %788
  br label %864

790:                                              ; preds = %771
  %791 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %792 = getelementptr inbounds %struct.TA_LibcPriv, ptr %791, i32 0, i32 8
  %793 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %792, i64 0, i64 4
  %794 = getelementptr inbounds %struct.TA_CandleSetting, ptr %793, i32 0, i32 1
  %795 = load i32, ptr %794, align 4, !tbaa !15
  %796 = icmp eq i32 %795, 2
  br i1 %796, label %797, label %861

797:                                              ; preds = %790
  %798 = load ptr, ptr %14, align 8, !tbaa !9
  %799 = load i32, ptr %22, align 4, !tbaa !5
  %800 = sext i32 %799 to i64
  %801 = getelementptr inbounds float, ptr %798, i64 %800
  %802 = load float, ptr %801, align 4, !tbaa !16
  %803 = load ptr, ptr %16, align 8, !tbaa !9
  %804 = load i32, ptr %22, align 4, !tbaa !5
  %805 = sext i32 %804 to i64
  %806 = getelementptr inbounds float, ptr %803, i64 %805
  %807 = load float, ptr %806, align 4, !tbaa !16
  %808 = load ptr, ptr %13, align 8, !tbaa !9
  %809 = load i32, ptr %22, align 4, !tbaa !5
  %810 = sext i32 %809 to i64
  %811 = getelementptr inbounds float, ptr %808, i64 %810
  %812 = load float, ptr %811, align 4, !tbaa !16
  %813 = fcmp oge float %807, %812
  br i1 %813, label %814, label %820

814:                                              ; preds = %797
  %815 = load ptr, ptr %16, align 8, !tbaa !9
  %816 = load i32, ptr %22, align 4, !tbaa !5
  %817 = sext i32 %816 to i64
  %818 = getelementptr inbounds float, ptr %815, i64 %817
  %819 = load float, ptr %818, align 4, !tbaa !16
  br label %826

820:                                              ; preds = %797
  %821 = load ptr, ptr %13, align 8, !tbaa !9
  %822 = load i32, ptr %22, align 4, !tbaa !5
  %823 = sext i32 %822 to i64
  %824 = getelementptr inbounds float, ptr %821, i64 %823
  %825 = load float, ptr %824, align 4, !tbaa !16
  br label %826

826:                                              ; preds = %820, %814
  %827 = phi float [ %819, %814 ], [ %825, %820 ]
  %828 = fsub float %802, %827
  %829 = load ptr, ptr %16, align 8, !tbaa !9
  %830 = load i32, ptr %22, align 4, !tbaa !5
  %831 = sext i32 %830 to i64
  %832 = getelementptr inbounds float, ptr %829, i64 %831
  %833 = load float, ptr %832, align 4, !tbaa !16
  %834 = load ptr, ptr %13, align 8, !tbaa !9
  %835 = load i32, ptr %22, align 4, !tbaa !5
  %836 = sext i32 %835 to i64
  %837 = getelementptr inbounds float, ptr %834, i64 %836
  %838 = load float, ptr %837, align 4, !tbaa !16
  %839 = fcmp oge float %833, %838
  br i1 %839, label %840, label %846

840:                                              ; preds = %826
  %841 = load ptr, ptr %13, align 8, !tbaa !9
  %842 = load i32, ptr %22, align 4, !tbaa !5
  %843 = sext i32 %842 to i64
  %844 = getelementptr inbounds float, ptr %841, i64 %843
  %845 = load float, ptr %844, align 4, !tbaa !16
  br label %852

846:                                              ; preds = %826
  %847 = load ptr, ptr %16, align 8, !tbaa !9
  %848 = load i32, ptr %22, align 4, !tbaa !5
  %849 = sext i32 %848 to i64
  %850 = getelementptr inbounds float, ptr %847, i64 %849
  %851 = load float, ptr %850, align 4, !tbaa !16
  br label %852

852:                                              ; preds = %846, %840
  %853 = phi float [ %845, %840 ], [ %851, %846 ]
  %854 = load ptr, ptr %15, align 8, !tbaa !9
  %855 = load i32, ptr %22, align 4, !tbaa !5
  %856 = sext i32 %855 to i64
  %857 = getelementptr inbounds float, ptr %854, i64 %856
  %858 = load float, ptr %857, align 4, !tbaa !16
  %859 = fsub float %853, %858
  %860 = fadd float %828, %859
  br label %862

861:                                              ; preds = %790
  br label %862

862:                                              ; preds = %861, %852
  %863 = phi float [ %860, %852 ], [ 0.000000e+00, %861 ]
  br label %864

864:                                              ; preds = %862, %778
  %865 = phi float [ %789, %778 ], [ %863, %862 ]
  %866 = fpext float %865 to double
  br label %867

867:                                              ; preds = %864, %757
  %868 = phi double [ %770, %757 ], [ %866, %864 ]
  br label %869

869:                                              ; preds = %867, %741
  %870 = phi double [ %749, %741 ], [ %868, %867 ]
  %871 = fmul double %733, %870
  %872 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %873 = getelementptr inbounds %struct.TA_LibcPriv, ptr %872, i32 0, i32 8
  %874 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %873, i64 0, i64 4
  %875 = getelementptr inbounds %struct.TA_CandleSetting, ptr %874, i32 0, i32 1
  %876 = load i32, ptr %875, align 4, !tbaa !15
  %877 = icmp eq i32 %876, 2
  %878 = zext i1 %877 to i64
  %879 = select i1 %877, double 2.000000e+00, double 1.000000e+00
  %880 = fdiv double %871, %879
  %881 = fcmp ogt double %728, %880
  br i1 %881, label %882, label %888

882:                                              ; preds = %869, %683
  %883 = load ptr, ptr %19, align 8, !tbaa !9
  %884 = load i32, ptr %23, align 4, !tbaa !5
  %885 = add nsw i32 %884, 1
  store i32 %885, ptr %23, align 4, !tbaa !5
  %886 = sext i32 %884 to i64
  %887 = getelementptr inbounds i32, ptr %883, i64 %886
  store i32 100, ptr %887, align 4, !tbaa !5
  br label %894

888:                                              ; preds = %869, %497
  %889 = load ptr, ptr %19, align 8, !tbaa !9
  %890 = load i32, ptr %23, align 4, !tbaa !5
  %891 = add nsw i32 %890, 1
  store i32 %891, ptr %23, align 4, !tbaa !5
  %892 = sext i32 %890 to i64
  %893 = getelementptr inbounds i32, ptr %889, i64 %892
  store i32 0, ptr %893, align 4, !tbaa !5
  br label %894

894:                                              ; preds = %888, %882
  %895 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %896 = getelementptr inbounds %struct.TA_LibcPriv, ptr %895, i32 0, i32 8
  %897 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %896, i64 0, i64 3
  %898 = getelementptr inbounds %struct.TA_CandleSetting, ptr %897, i32 0, i32 1
  %899 = load i32, ptr %898, align 4, !tbaa !15
  %900 = icmp eq i32 %899, 0
  br i1 %900, label %901, label %915

901:                                              ; preds = %894
  %902 = load ptr, ptr %16, align 8, !tbaa !9
  %903 = load i32, ptr %22, align 4, !tbaa !5
  %904 = sext i32 %903 to i64
  %905 = getelementptr inbounds float, ptr %902, i64 %904
  %906 = load float, ptr %905, align 4, !tbaa !16
  %907 = load ptr, ptr %13, align 8, !tbaa !9
  %908 = load i32, ptr %22, align 4, !tbaa !5
  %909 = sext i32 %908 to i64
  %910 = getelementptr inbounds float, ptr %907, i64 %909
  %911 = load float, ptr %910, align 4, !tbaa !16
  %912 = fsub float %906, %911
  %913 = fpext float %912 to double
  %914 = call double @llvm.fabs.f64(double %913)
  br label %1011

915:                                              ; preds = %894
  %916 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %917 = getelementptr inbounds %struct.TA_LibcPriv, ptr %916, i32 0, i32 8
  %918 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %917, i64 0, i64 3
  %919 = getelementptr inbounds %struct.TA_CandleSetting, ptr %918, i32 0, i32 1
  %920 = load i32, ptr %919, align 4, !tbaa !15
  %921 = icmp eq i32 %920, 1
  br i1 %921, label %922, label %934

922:                                              ; preds = %915
  %923 = load ptr, ptr %14, align 8, !tbaa !9
  %924 = load i32, ptr %22, align 4, !tbaa !5
  %925 = sext i32 %924 to i64
  %926 = getelementptr inbounds float, ptr %923, i64 %925
  %927 = load float, ptr %926, align 4, !tbaa !16
  %928 = load ptr, ptr %15, align 8, !tbaa !9
  %929 = load i32, ptr %22, align 4, !tbaa !5
  %930 = sext i32 %929 to i64
  %931 = getelementptr inbounds float, ptr %928, i64 %930
  %932 = load float, ptr %931, align 4, !tbaa !16
  %933 = fsub float %927, %932
  br label %1008

934:                                              ; preds = %915
  %935 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %936 = getelementptr inbounds %struct.TA_LibcPriv, ptr %935, i32 0, i32 8
  %937 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %936, i64 0, i64 3
  %938 = getelementptr inbounds %struct.TA_CandleSetting, ptr %937, i32 0, i32 1
  %939 = load i32, ptr %938, align 4, !tbaa !15
  %940 = icmp eq i32 %939, 2
  br i1 %940, label %941, label %1005

941:                                              ; preds = %934
  %942 = load ptr, ptr %14, align 8, !tbaa !9
  %943 = load i32, ptr %22, align 4, !tbaa !5
  %944 = sext i32 %943 to i64
  %945 = getelementptr inbounds float, ptr %942, i64 %944
  %946 = load float, ptr %945, align 4, !tbaa !16
  %947 = load ptr, ptr %16, align 8, !tbaa !9
  %948 = load i32, ptr %22, align 4, !tbaa !5
  %949 = sext i32 %948 to i64
  %950 = getelementptr inbounds float, ptr %947, i64 %949
  %951 = load float, ptr %950, align 4, !tbaa !16
  %952 = load ptr, ptr %13, align 8, !tbaa !9
  %953 = load i32, ptr %22, align 4, !tbaa !5
  %954 = sext i32 %953 to i64
  %955 = getelementptr inbounds float, ptr %952, i64 %954
  %956 = load float, ptr %955, align 4, !tbaa !16
  %957 = fcmp oge float %951, %956
  br i1 %957, label %958, label %964

958:                                              ; preds = %941
  %959 = load ptr, ptr %16, align 8, !tbaa !9
  %960 = load i32, ptr %22, align 4, !tbaa !5
  %961 = sext i32 %960 to i64
  %962 = getelementptr inbounds float, ptr %959, i64 %961
  %963 = load float, ptr %962, align 4, !tbaa !16
  br label %970

964:                                              ; preds = %941
  %965 = load ptr, ptr %13, align 8, !tbaa !9
  %966 = load i32, ptr %22, align 4, !tbaa !5
  %967 = sext i32 %966 to i64
  %968 = getelementptr inbounds float, ptr %965, i64 %967
  %969 = load float, ptr %968, align 4, !tbaa !16
  br label %970

970:                                              ; preds = %964, %958
  %971 = phi float [ %963, %958 ], [ %969, %964 ]
  %972 = fsub float %946, %971
  %973 = load ptr, ptr %16, align 8, !tbaa !9
  %974 = load i32, ptr %22, align 4, !tbaa !5
  %975 = sext i32 %974 to i64
  %976 = getelementptr inbounds float, ptr %973, i64 %975
  %977 = load float, ptr %976, align 4, !tbaa !16
  %978 = load ptr, ptr %13, align 8, !tbaa !9
  %979 = load i32, ptr %22, align 4, !tbaa !5
  %980 = sext i32 %979 to i64
  %981 = getelementptr inbounds float, ptr %978, i64 %980
  %982 = load float, ptr %981, align 4, !tbaa !16
  %983 = fcmp oge float %977, %982
  br i1 %983, label %984, label %990

984:                                              ; preds = %970
  %985 = load ptr, ptr %13, align 8, !tbaa !9
  %986 = load i32, ptr %22, align 4, !tbaa !5
  %987 = sext i32 %986 to i64
  %988 = getelementptr inbounds float, ptr %985, i64 %987
  %989 = load float, ptr %988, align 4, !tbaa !16
  br label %996

990:                                              ; preds = %970
  %991 = load ptr, ptr %16, align 8, !tbaa !9
  %992 = load i32, ptr %22, align 4, !tbaa !5
  %993 = sext i32 %992 to i64
  %994 = getelementptr inbounds float, ptr %991, i64 %993
  %995 = load float, ptr %994, align 4, !tbaa !16
  br label %996

996:                                              ; preds = %990, %984
  %997 = phi float [ %989, %984 ], [ %995, %990 ]
  %998 = load ptr, ptr %15, align 8, !tbaa !9
  %999 = load i32, ptr %22, align 4, !tbaa !5
  %1000 = sext i32 %999 to i64
  %1001 = getelementptr inbounds float, ptr %998, i64 %1000
  %1002 = load float, ptr %1001, align 4, !tbaa !16
  %1003 = fsub float %997, %1002
  %1004 = fadd float %972, %1003
  br label %1006

1005:                                             ; preds = %934
  br label %1006

1006:                                             ; preds = %1005, %996
  %1007 = phi float [ %1004, %996 ], [ 0.000000e+00, %1005 ]
  br label %1008

1008:                                             ; preds = %1006, %922
  %1009 = phi float [ %933, %922 ], [ %1007, %1006 ]
  %1010 = fpext float %1009 to double
  br label %1011

1011:                                             ; preds = %1008, %901
  %1012 = phi double [ %914, %901 ], [ %1010, %1008 ]
  %1013 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1014 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1013, i32 0, i32 8
  %1015 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1014, i64 0, i64 3
  %1016 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1015, i32 0, i32 1
  %1017 = load i32, ptr %1016, align 4, !tbaa !15
  %1018 = icmp eq i32 %1017, 0
  br i1 %1018, label %1019, label %1033

1019:                                             ; preds = %1011
  %1020 = load ptr, ptr %16, align 8, !tbaa !9
  %1021 = load i32, ptr %24, align 4, !tbaa !5
  %1022 = sext i32 %1021 to i64
  %1023 = getelementptr inbounds float, ptr %1020, i64 %1022
  %1024 = load float, ptr %1023, align 4, !tbaa !16
  %1025 = load ptr, ptr %13, align 8, !tbaa !9
  %1026 = load i32, ptr %24, align 4, !tbaa !5
  %1027 = sext i32 %1026 to i64
  %1028 = getelementptr inbounds float, ptr %1025, i64 %1027
  %1029 = load float, ptr %1028, align 4, !tbaa !16
  %1030 = fsub float %1024, %1029
  %1031 = fpext float %1030 to double
  %1032 = call double @llvm.fabs.f64(double %1031)
  br label %1129

1033:                                             ; preds = %1011
  %1034 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1035 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1034, i32 0, i32 8
  %1036 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1035, i64 0, i64 3
  %1037 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1036, i32 0, i32 1
  %1038 = load i32, ptr %1037, align 4, !tbaa !15
  %1039 = icmp eq i32 %1038, 1
  br i1 %1039, label %1040, label %1052

1040:                                             ; preds = %1033
  %1041 = load ptr, ptr %14, align 8, !tbaa !9
  %1042 = load i32, ptr %24, align 4, !tbaa !5
  %1043 = sext i32 %1042 to i64
  %1044 = getelementptr inbounds float, ptr %1041, i64 %1043
  %1045 = load float, ptr %1044, align 4, !tbaa !16
  %1046 = load ptr, ptr %15, align 8, !tbaa !9
  %1047 = load i32, ptr %24, align 4, !tbaa !5
  %1048 = sext i32 %1047 to i64
  %1049 = getelementptr inbounds float, ptr %1046, i64 %1048
  %1050 = load float, ptr %1049, align 4, !tbaa !16
  %1051 = fsub float %1045, %1050
  br label %1126

1052:                                             ; preds = %1033
  %1053 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1054 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1053, i32 0, i32 8
  %1055 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1054, i64 0, i64 3
  %1056 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1055, i32 0, i32 1
  %1057 = load i32, ptr %1056, align 4, !tbaa !15
  %1058 = icmp eq i32 %1057, 2
  br i1 %1058, label %1059, label %1123

1059:                                             ; preds = %1052
  %1060 = load ptr, ptr %14, align 8, !tbaa !9
  %1061 = load i32, ptr %24, align 4, !tbaa !5
  %1062 = sext i32 %1061 to i64
  %1063 = getelementptr inbounds float, ptr %1060, i64 %1062
  %1064 = load float, ptr %1063, align 4, !tbaa !16
  %1065 = load ptr, ptr %16, align 8, !tbaa !9
  %1066 = load i32, ptr %24, align 4, !tbaa !5
  %1067 = sext i32 %1066 to i64
  %1068 = getelementptr inbounds float, ptr %1065, i64 %1067
  %1069 = load float, ptr %1068, align 4, !tbaa !16
  %1070 = load ptr, ptr %13, align 8, !tbaa !9
  %1071 = load i32, ptr %24, align 4, !tbaa !5
  %1072 = sext i32 %1071 to i64
  %1073 = getelementptr inbounds float, ptr %1070, i64 %1072
  %1074 = load float, ptr %1073, align 4, !tbaa !16
  %1075 = fcmp oge float %1069, %1074
  br i1 %1075, label %1076, label %1082

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

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

1088:                                             ; preds = %1082, %1076
  %1089 = phi float [ %1081, %1076 ], [ %1087, %1082 ]
  %1090 = fsub float %1064, %1089
  %1091 = load ptr, ptr %16, align 8, !tbaa !9
  %1092 = load i32, ptr %24, align 4, !tbaa !5
  %1093 = sext i32 %1092 to i64
  %1094 = getelementptr inbounds float, ptr %1091, i64 %1093
  %1095 = load float, ptr %1094, align 4, !tbaa !16
  %1096 = load ptr, ptr %13, align 8, !tbaa !9
  %1097 = load i32, ptr %24, align 4, !tbaa !5
  %1098 = sext i32 %1097 to i64
  %1099 = getelementptr inbounds float, ptr %1096, i64 %1098
  %1100 = load float, ptr %1099, align 4, !tbaa !16
  %1101 = fcmp oge float %1095, %1100
  br i1 %1101, label %1102, label %1108

1102:                                             ; preds = %1088
  %1103 = load ptr, ptr %13, align 8, !tbaa !9
  %1104 = load i32, ptr %24, align 4, !tbaa !5
  %1105 = sext i32 %1104 to i64
  %1106 = getelementptr inbounds float, ptr %1103, i64 %1105
  %1107 = load float, ptr %1106, align 4, !tbaa !16
  br label %1114

1108:                                             ; preds = %1088
  %1109 = load ptr, ptr %16, align 8, !tbaa !9
  %1110 = load i32, ptr %24, align 4, !tbaa !5
  %1111 = sext i32 %1110 to i64
  %1112 = getelementptr inbounds float, ptr %1109, i64 %1111
  %1113 = load float, ptr %1112, align 4, !tbaa !16
  br label %1114

1114:                                             ; preds = %1108, %1102
  %1115 = phi float [ %1107, %1102 ], [ %1113, %1108 ]
  %1116 = load ptr, ptr %15, align 8, !tbaa !9
  %1117 = load i32, ptr %24, align 4, !tbaa !5
  %1118 = sext i32 %1117 to i64
  %1119 = getelementptr inbounds float, ptr %1116, i64 %1118
  %1120 = load float, ptr %1119, align 4, !tbaa !16
  %1121 = fsub float %1115, %1120
  %1122 = fadd float %1090, %1121
  br label %1124

1123:                                             ; preds = %1052
  br label %1124

1124:                                             ; preds = %1123, %1114
  %1125 = phi float [ %1122, %1114 ], [ 0.000000e+00, %1123 ]
  br label %1126

1126:                                             ; preds = %1124, %1040
  %1127 = phi float [ %1051, %1040 ], [ %1125, %1124 ]
  %1128 = fpext float %1127 to double
  br label %1129

1129:                                             ; preds = %1126, %1019
  %1130 = phi double [ %1032, %1019 ], [ %1128, %1126 ]
  %1131 = fsub double %1012, %1130
  %1132 = load double, ptr %20, align 8, !tbaa !11
  %1133 = fadd double %1132, %1131
  store double %1133, ptr %20, align 8, !tbaa !11
  %1134 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1135 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1134, i32 0, i32 8
  %1136 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1135, i64 0, i64 4
  %1137 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1136, i32 0, i32 1
  %1138 = load i32, ptr %1137, align 4, !tbaa !15
  %1139 = icmp eq i32 %1138, 0
  br i1 %1139, label %1140, label %1154

1140:                                             ; preds = %1129
  %1141 = load ptr, ptr %16, align 8, !tbaa !9
  %1142 = load i32, ptr %22, align 4, !tbaa !5
  %1143 = sext i32 %1142 to i64
  %1144 = getelementptr inbounds float, ptr %1141, i64 %1143
  %1145 = load float, ptr %1144, align 4, !tbaa !16
  %1146 = load ptr, ptr %13, align 8, !tbaa !9
  %1147 = load i32, ptr %22, align 4, !tbaa !5
  %1148 = sext i32 %1147 to i64
  %1149 = getelementptr inbounds float, ptr %1146, i64 %1148
  %1150 = load float, ptr %1149, align 4, !tbaa !16
  %1151 = fsub float %1145, %1150
  %1152 = fpext float %1151 to double
  %1153 = call double @llvm.fabs.f64(double %1152)
  br label %1250

1154:                                             ; preds = %1129
  %1155 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1156 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1155, i32 0, i32 8
  %1157 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1156, i64 0, i64 4
  %1158 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1157, i32 0, i32 1
  %1159 = load i32, ptr %1158, align 4, !tbaa !15
  %1160 = icmp eq i32 %1159, 1
  br i1 %1160, label %1161, label %1173

1161:                                             ; preds = %1154
  %1162 = load ptr, ptr %14, align 8, !tbaa !9
  %1163 = load i32, ptr %22, align 4, !tbaa !5
  %1164 = sext i32 %1163 to i64
  %1165 = getelementptr inbounds float, ptr %1162, i64 %1164
  %1166 = load float, ptr %1165, align 4, !tbaa !16
  %1167 = load ptr, ptr %15, align 8, !tbaa !9
  %1168 = load i32, ptr %22, align 4, !tbaa !5
  %1169 = sext i32 %1168 to i64
  %1170 = getelementptr inbounds float, ptr %1167, i64 %1169
  %1171 = load float, ptr %1170, align 4, !tbaa !16
  %1172 = fsub float %1166, %1171
  br label %1247

1173:                                             ; preds = %1154
  %1174 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1175 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1174, i32 0, i32 8
  %1176 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1175, i64 0, i64 4
  %1177 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1176, i32 0, i32 1
  %1178 = load i32, ptr %1177, align 4, !tbaa !15
  %1179 = icmp eq i32 %1178, 2
  br i1 %1179, label %1180, label %1244

1180:                                             ; preds = %1173
  %1181 = load ptr, ptr %14, align 8, !tbaa !9
  %1182 = load i32, ptr %22, align 4, !tbaa !5
  %1183 = sext i32 %1182 to i64
  %1184 = getelementptr inbounds float, ptr %1181, i64 %1183
  %1185 = load float, ptr %1184, align 4, !tbaa !16
  %1186 = load ptr, ptr %16, align 8, !tbaa !9
  %1187 = load i32, ptr %22, align 4, !tbaa !5
  %1188 = sext i32 %1187 to i64
  %1189 = getelementptr inbounds float, ptr %1186, i64 %1188
  %1190 = load float, ptr %1189, align 4, !tbaa !16
  %1191 = load ptr, ptr %13, align 8, !tbaa !9
  %1192 = load i32, ptr %22, align 4, !tbaa !5
  %1193 = sext i32 %1192 to i64
  %1194 = getelementptr inbounds float, ptr %1191, i64 %1193
  %1195 = load float, ptr %1194, align 4, !tbaa !16
  %1196 = fcmp oge float %1190, %1195
  br i1 %1196, label %1197, label %1203

1197:                                             ; preds = %1180
  %1198 = load ptr, ptr %16, align 8, !tbaa !9
  %1199 = load i32, ptr %22, align 4, !tbaa !5
  %1200 = sext i32 %1199 to i64
  %1201 = getelementptr inbounds float, ptr %1198, i64 %1200
  %1202 = load float, ptr %1201, align 4, !tbaa !16
  br label %1209

1203:                                             ; preds = %1180
  %1204 = load ptr, ptr %13, align 8, !tbaa !9
  %1205 = load i32, ptr %22, align 4, !tbaa !5
  %1206 = sext i32 %1205 to i64
  %1207 = getelementptr inbounds float, ptr %1204, i64 %1206
  %1208 = load float, ptr %1207, align 4, !tbaa !16
  br label %1209

1209:                                             ; preds = %1203, %1197
  %1210 = phi float [ %1202, %1197 ], [ %1208, %1203 ]
  %1211 = fsub float %1185, %1210
  %1212 = load ptr, ptr %16, align 8, !tbaa !9
  %1213 = load i32, ptr %22, align 4, !tbaa !5
  %1214 = sext i32 %1213 to i64
  %1215 = getelementptr inbounds float, ptr %1212, i64 %1214
  %1216 = load float, ptr %1215, align 4, !tbaa !16
  %1217 = load ptr, ptr %13, align 8, !tbaa !9
  %1218 = load i32, ptr %22, align 4, !tbaa !5
  %1219 = sext i32 %1218 to i64
  %1220 = getelementptr inbounds float, ptr %1217, i64 %1219
  %1221 = load float, ptr %1220, align 4, !tbaa !16
  %1222 = fcmp oge float %1216, %1221
  br i1 %1222, label %1223, label %1229

1223:                                             ; preds = %1209
  %1224 = load ptr, ptr %13, align 8, !tbaa !9
  %1225 = load i32, ptr %22, align 4, !tbaa !5
  %1226 = sext i32 %1225 to i64
  %1227 = getelementptr inbounds float, ptr %1224, i64 %1226
  %1228 = load float, ptr %1227, align 4, !tbaa !16
  br label %1235

1229:                                             ; preds = %1209
  %1230 = load ptr, ptr %16, align 8, !tbaa !9
  %1231 = load i32, ptr %22, align 4, !tbaa !5
  %1232 = sext i32 %1231 to i64
  %1233 = getelementptr inbounds float, ptr %1230, i64 %1232
  %1234 = load float, ptr %1233, align 4, !tbaa !16
  br label %1235

1235:                                             ; preds = %1229, %1223
  %1236 = phi float [ %1228, %1223 ], [ %1234, %1229 ]
  %1237 = load ptr, ptr %15, align 8, !tbaa !9
  %1238 = load i32, ptr %22, align 4, !tbaa !5
  %1239 = sext i32 %1238 to i64
  %1240 = getelementptr inbounds float, ptr %1237, i64 %1239
  %1241 = load float, ptr %1240, align 4, !tbaa !16
  %1242 = fsub float %1236, %1241
  %1243 = fadd float %1211, %1242
  br label %1245

1244:                                             ; preds = %1173
  br label %1245

1245:                                             ; preds = %1244, %1235
  %1246 = phi float [ %1243, %1235 ], [ 0.000000e+00, %1244 ]
  br label %1247

1247:                                             ; preds = %1245, %1161
  %1248 = phi float [ %1172, %1161 ], [ %1246, %1245 ]
  %1249 = fpext float %1248 to double
  br label %1250

1250:                                             ; preds = %1247, %1140
  %1251 = phi double [ %1153, %1140 ], [ %1249, %1247 ]
  %1252 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1253 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1252, i32 0, i32 8
  %1254 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1253, i64 0, i64 4
  %1255 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1254, i32 0, i32 1
  %1256 = load i32, ptr %1255, align 4, !tbaa !15
  %1257 = icmp eq i32 %1256, 0
  br i1 %1257, label %1258, label %1272

1258:                                             ; preds = %1250
  %1259 = load ptr, ptr %16, align 8, !tbaa !9
  %1260 = load i32, ptr %25, align 4, !tbaa !5
  %1261 = sext i32 %1260 to i64
  %1262 = getelementptr inbounds float, ptr %1259, i64 %1261
  %1263 = load float, ptr %1262, align 4, !tbaa !16
  %1264 = load ptr, ptr %13, align 8, !tbaa !9
  %1265 = load i32, ptr %25, align 4, !tbaa !5
  %1266 = sext i32 %1265 to i64
  %1267 = getelementptr inbounds float, ptr %1264, i64 %1266
  %1268 = load float, ptr %1267, align 4, !tbaa !16
  %1269 = fsub float %1263, %1268
  %1270 = fpext float %1269 to double
  %1271 = call double @llvm.fabs.f64(double %1270)
  br label %1368

1272:                                             ; preds = %1250
  %1273 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1274 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1273, i32 0, i32 8
  %1275 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1274, i64 0, i64 4
  %1276 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1275, i32 0, i32 1
  %1277 = load i32, ptr %1276, align 4, !tbaa !15
  %1278 = icmp eq i32 %1277, 1
  br i1 %1278, label %1279, label %1291

1279:                                             ; preds = %1272
  %1280 = load ptr, ptr %14, align 8, !tbaa !9
  %1281 = load i32, ptr %25, align 4, !tbaa !5
  %1282 = sext i32 %1281 to i64
  %1283 = getelementptr inbounds float, ptr %1280, i64 %1282
  %1284 = load float, ptr %1283, align 4, !tbaa !16
  %1285 = load ptr, ptr %15, align 8, !tbaa !9
  %1286 = load i32, ptr %25, align 4, !tbaa !5
  %1287 = sext i32 %1286 to i64
  %1288 = getelementptr inbounds float, ptr %1285, i64 %1287
  %1289 = load float, ptr %1288, align 4, !tbaa !16
  %1290 = fsub float %1284, %1289
  br label %1365

1291:                                             ; preds = %1272
  %1292 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1293 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1292, i32 0, i32 8
  %1294 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1293, i64 0, i64 4
  %1295 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1294, i32 0, i32 1
  %1296 = load i32, ptr %1295, align 4, !tbaa !15
  %1297 = icmp eq i32 %1296, 2
  br i1 %1297, label %1298, label %1362

1298:                                             ; preds = %1291
  %1299 = load ptr, ptr %14, align 8, !tbaa !9
  %1300 = load i32, ptr %25, align 4, !tbaa !5
  %1301 = sext i32 %1300 to i64
  %1302 = getelementptr inbounds float, ptr %1299, i64 %1301
  %1303 = load float, ptr %1302, align 4, !tbaa !16
  %1304 = load ptr, ptr %16, align 8, !tbaa !9
  %1305 = load i32, ptr %25, align 4, !tbaa !5
  %1306 = sext i32 %1305 to i64
  %1307 = getelementptr inbounds float, ptr %1304, i64 %1306
  %1308 = load float, ptr %1307, align 4, !tbaa !16
  %1309 = load ptr, ptr %13, align 8, !tbaa !9
  %1310 = load i32, ptr %25, align 4, !tbaa !5
  %1311 = sext i32 %1310 to i64
  %1312 = getelementptr inbounds float, ptr %1309, i64 %1311
  %1313 = load float, ptr %1312, align 4, !tbaa !16
  %1314 = fcmp oge float %1308, %1313
  br i1 %1314, label %1315, label %1321

1315:                                             ; preds = %1298
  %1316 = load ptr, ptr %16, align 8, !tbaa !9
  %1317 = load i32, ptr %25, align 4, !tbaa !5
  %1318 = sext i32 %1317 to i64
  %1319 = getelementptr inbounds float, ptr %1316, i64 %1318
  %1320 = load float, ptr %1319, align 4, !tbaa !16
  br label %1327

1321:                                             ; preds = %1298
  %1322 = load ptr, ptr %13, align 8, !tbaa !9
  %1323 = load i32, ptr %25, align 4, !tbaa !5
  %1324 = sext i32 %1323 to i64
  %1325 = getelementptr inbounds float, ptr %1322, i64 %1324
  %1326 = load float, ptr %1325, align 4, !tbaa !16
  br label %1327

1327:                                             ; preds = %1321, %1315
  %1328 = phi float [ %1320, %1315 ], [ %1326, %1321 ]
  %1329 = fsub float %1303, %1328
  %1330 = load ptr, ptr %16, align 8, !tbaa !9
  %1331 = load i32, ptr %25, align 4, !tbaa !5
  %1332 = sext i32 %1331 to i64
  %1333 = getelementptr inbounds float, ptr %1330, i64 %1332
  %1334 = load float, ptr %1333, align 4, !tbaa !16
  %1335 = load ptr, ptr %13, align 8, !tbaa !9
  %1336 = load i32, ptr %25, align 4, !tbaa !5
  %1337 = sext i32 %1336 to i64
  %1338 = getelementptr inbounds float, ptr %1335, i64 %1337
  %1339 = load float, ptr %1338, align 4, !tbaa !16
  %1340 = fcmp oge float %1334, %1339
  br i1 %1340, label %1341, label %1347

1341:                                             ; preds = %1327
  %1342 = load ptr, ptr %13, align 8, !tbaa !9
  %1343 = load i32, ptr %25, align 4, !tbaa !5
  %1344 = sext i32 %1343 to i64
  %1345 = getelementptr inbounds float, ptr %1342, i64 %1344
  %1346 = load float, ptr %1345, align 4, !tbaa !16
  br label %1353

1347:                                             ; preds = %1327
  %1348 = load ptr, ptr %16, align 8, !tbaa !9
  %1349 = load i32, ptr %25, align 4, !tbaa !5
  %1350 = sext i32 %1349 to i64
  %1351 = getelementptr inbounds float, ptr %1348, i64 %1350
  %1352 = load float, ptr %1351, align 4, !tbaa !16
  br label %1353

1353:                                             ; preds = %1347, %1341
  %1354 = phi float [ %1346, %1341 ], [ %1352, %1347 ]
  %1355 = load ptr, ptr %15, align 8, !tbaa !9
  %1356 = load i32, ptr %25, align 4, !tbaa !5
  %1357 = sext i32 %1356 to i64
  %1358 = getelementptr inbounds float, ptr %1355, i64 %1357
  %1359 = load float, ptr %1358, align 4, !tbaa !16
  %1360 = fsub float %1354, %1359
  %1361 = fadd float %1329, %1360
  br label %1363

1362:                                             ; preds = %1291
  br label %1363

1363:                                             ; preds = %1362, %1353
  %1364 = phi float [ %1361, %1353 ], [ 0.000000e+00, %1362 ]
  br label %1365

1365:                                             ; preds = %1363, %1279
  %1366 = phi float [ %1290, %1279 ], [ %1364, %1363 ]
  %1367 = fpext float %1366 to double
  br label %1368

1368:                                             ; preds = %1365, %1258
  %1369 = phi double [ %1271, %1258 ], [ %1367, %1365 ]
  %1370 = fsub double %1251, %1369
  %1371 = load double, ptr %21, align 8, !tbaa !11
  %1372 = fadd double %1371, %1370
  store double %1372, ptr %21, align 8, !tbaa !11
  %1373 = load i32, ptr %22, align 4, !tbaa !5
  %1374 = add nsw i32 %1373, 1
  store i32 %1374, ptr %22, align 4, !tbaa !5
  %1375 = load i32, ptr %24, align 4, !tbaa !5
  %1376 = add nsw i32 %1375, 1
  store i32 %1376, ptr %24, align 4, !tbaa !5
  %1377 = load i32, ptr %25, align 4, !tbaa !5
  %1378 = add nsw i32 %1377, 1
  store i32 %1378, ptr %25, align 4, !tbaa !5
  br label %1379

1379:                                             ; preds = %1368
  %1380 = load i32, ptr %22, align 4, !tbaa !5
  %1381 = load i32, ptr %12, align 4, !tbaa !5
  %1382 = icmp sle i32 %1380, %1381
  br i1 %1382, label %343, label %1383, !llvm.loop !22

1383:                                             ; preds = %1379
  %1384 = load i32, ptr %23, align 4, !tbaa !5
  %1385 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 %1384, ptr %1385, align 4, !tbaa !5
  %1386 = load i32, ptr %11, align 4, !tbaa !5
  %1387 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 %1386, ptr %1387, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %27, align 4
  br label %1388

1388:                                             ; preds = %1383, %67, %55, %51, %38, %30
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  %1389 = load i32, ptr %10, align 4
  ret i32 %1389
}

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 = distinct !{!20, !19}
!21 = !{!14, !12, i64 16}
!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_CDLLONGLEGGEDDOJI_Lookback() local_unnamed_addr #0

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

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

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

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

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

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

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

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

.lr.ph.split.us:                                  ; preds = %.lr.ph.split.us.preheader, %.lr.ph.split.us
  %indvars.iv468 = phi i64 [ %40, %.lr.ph.split.us.preheader ], [ %indvars.iv.next469, %.lr.ph.split.us ]
  %.0334438.us = phi double [ 0.000000e+00, %.lr.ph.split.us.preheader ], [ %49, %.lr.ph.split.us ]
  %42 = getelementptr inbounds float, ptr %5, i64 %indvars.iv468
  %43 = load float, ptr %42, align 4, !tbaa !15
  %44 = getelementptr inbounds float, ptr %2, i64 %indvars.iv468
  %45 = load float, ptr %44, align 4, !tbaa !15
  %46 = fsub float %43, %45
  %47 = tail call float @llvm.fabs.f32(float %46)
  %48 = fpext float %47 to double
  %49 = fadd double %.0334438.us, %48
  %indvars.iv.next469 = add nsw i64 %indvars.iv468, 1
  %50 = icmp slt i64 %indvars.iv.next469, %41
  br i1 %50, label %.lr.ph.split.us, label %.preheader437, !llvm.loop !17

.lr.ph.split.us440:                               ; preds = %.lr.ph.split.us440.preheader, %.lr.ph.split.us440
  %indvars.iv465 = phi i64 [ %38, %.lr.ph.split.us440.preheader ], [ %indvars.iv.next466, %.lr.ph.split.us440 ]
  %.0334438.us442 = phi double [ 0.000000e+00, %.lr.ph.split.us440.preheader ], [ %57, %.lr.ph.split.us440 ]
  %51 = getelementptr inbounds float, ptr %3, i64 %indvars.iv465
  %52 = load float, ptr %51, align 4, !tbaa !15
  %53 = getelementptr inbounds float, ptr %4, i64 %indvars.iv465
  %54 = load float, ptr %53, align 4, !tbaa !15
  %55 = fsub float %52, %54
  %56 = fpext float %55 to double
  %57 = fadd double %.0334438.us442, %56
  %indvars.iv.next466 = add nsw i64 %indvars.iv465, 1
  %58 = icmp slt i64 %indvars.iv.next466, %39
  br i1 %58, label %.lr.ph.split.us440, label %.preheader437, !llvm.loop !17

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

.preheader437:                                    ; preds = %.lr.ph.split.us446, %.lr.ph.split.us440, %.lr.ph.split.us, %.lr.ph, %25
  %.0334.lcssa = phi double [ 0.000000e+00, %25 ], [ 0.000000e+00, %.lr.ph ], [ %49, %.lr.ph.split.us ], [ %57, %.lr.ph.split.us440 ], [ %73, %.lr.ph.split.us446 ]
  %75 = icmp sgt i32 %31, 0
  br i1 %75, label %.lr.ph454, label %.preheader437..preheader_crit_edge

.preheader437..preheader_crit_edge:               ; preds = %.preheader437
  %.pre490 = sext i32 %32 to i64
  br label %.preheader

.lr.ph454:                                        ; preds = %.preheader437
  %76 = getelementptr inbounds i8, ptr %26, i64 308
  %77 = load i32, ptr %76, align 4, !tbaa !14
  %78 = sext i32 %32 to i64
  %79 = zext nneg i32 %spec.select to i64
  br label %90

.preheader.loopexit:                              ; preds = %118
  %80 = trunc nsw i64 %indvars.iv.next472 to i32
  br label %.preheader

.preheader:                                       ; preds = %.preheader437..preheader_crit_edge, %.preheader.loopexit
  %.pre-phi = phi i64 [ %.pre490, %.preheader437..preheader_crit_edge ], [ %78, %.preheader.loopexit ]
  %.0332.lcssa = phi double [ 0.000000e+00, %.preheader437..preheader_crit_edge ], [ %120, %.preheader.loopexit ]
  %.1331.lcssa = phi i32 [ %32, %.preheader437..preheader_crit_edge ], [ %80, %.preheader.loopexit ]
  %81 = getelementptr inbounds i8, ptr %26, i64 296
  %82 = load double, ptr %81, align 8, !tbaa !19
  %83 = getelementptr inbounds i8, ptr %26, i64 284
  %84 = getelementptr inbounds i8, ptr %26, i64 308
  %85 = getelementptr inbounds i8, ptr %26, i64 320
  %86 = zext i32 %.1331.lcssa to i64
  %87 = sext i32 %29 to i64
  %smax = tail call i32 @llvm.smax.i32(i32 %.1331.lcssa, i32 %1)
  %88 = add i32 %smax, 1
  %89 = sub i32 %88, %.1331.lcssa
  %wide.trip.count = zext i32 %89 to i64
  br label %122

90:                                               ; preds = %.lr.ph454, %118
  %indvars.iv471 = phi i64 [ %78, %.lr.ph454 ], [ %indvars.iv.next472, %118 ]
  %.0332452 = phi double [ 0.000000e+00, %.lr.ph454 ], [ %120, %118 ]
  switch i32 %77, label %118 [
    i32 0, label %91
    i32 1, label %98
    i32 2, label %104
  ]

91:                                               ; preds = %90
  %92 = getelementptr inbounds float, ptr %5, i64 %indvars.iv471
  %93 = load float, ptr %92, align 4, !tbaa !15
  %94 = getelementptr inbounds float, ptr %2, i64 %indvars.iv471
  %95 = load float, ptr %94, align 4, !tbaa !15
  %96 = fsub float %93, %95
  %97 = tail call float @llvm.fabs.f32(float %96)
  br label %118

98:                                               ; preds = %90
  %99 = getelementptr inbounds float, ptr %3, i64 %indvars.iv471
  %100 = load float, ptr %99, align 4, !tbaa !15
  %101 = getelementptr inbounds float, ptr %4, i64 %indvars.iv471
  %102 = load float, ptr %101, align 4, !tbaa !15
  %103 = fsub float %100, %102
  br label %118

104:                                              ; preds = %90
  %105 = getelementptr inbounds float, ptr %3, i64 %indvars.iv471
  %106 = load float, ptr %105, align 4, !tbaa !15
  %107 = getelementptr inbounds float, ptr %5, i64 %indvars.iv471
  %108 = load float, ptr %107, align 4, !tbaa !15
  %109 = getelementptr inbounds float, ptr %2, i64 %indvars.iv471
  %110 = load float, ptr %109, align 4, !tbaa !15
  %111 = fcmp ult float %108, %110
  %.408 = select i1 %111, float %110, float %108
  %112 = fsub float %106, %.408
  %113 = select i1 %111, float %108, float %110
  %114 = getelementptr inbounds float, ptr %4, i64 %indvars.iv471
  %115 = load float, ptr %114, align 4, !tbaa !15
  %116 = fsub float %113, %115
  %117 = fadd float %112, %116
  br label %118

118:                                              ; preds = %98, %104, %90, %91
  %.in405 = phi float [ %97, %91 ], [ %103, %98 ], [ %117, %104 ], [ 0.000000e+00, %90 ]
  %119 = fpext float %.in405 to double
  %120 = fadd double %.0332452, %119
  %indvars.iv.next472 = add nsw i64 %indvars.iv471, 1
  %121 = icmp slt i64 %indvars.iv.next472, %79
  br i1 %121, label %90, label %.preheader.loopexit, !llvm.loop !20

122:                                              ; preds = %.preheader, %314
  %indvars.iv480 = phi i64 [ %.pre-phi, %.preheader ], [ %indvars.iv.next481, %314 ]
  %indvars.iv478 = phi i64 [ %87, %.preheader ], [ %indvars.iv.next479, %314 ]
  %indvars.iv476 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next477, %314 ]
  %indvars.iv474 = phi i64 [ %86, %.preheader ], [ %indvars.iv.next475, %314 ]
  %.1335 = phi double [ %.0334.lcssa, %.preheader ], [ %272, %314 ]
  %.1333 = phi double [ %.0332.lcssa, %.preheader ], [ %318, %314 ]
  %123 = getelementptr inbounds float, ptr %5, i64 %indvars.iv474
  %124 = load float, ptr %123, align 4, !tbaa !15
  %125 = getelementptr inbounds float, ptr %2, i64 %indvars.iv474
  %126 = load float, ptr %125, align 4, !tbaa !15
  %127 = fsub float %124, %126
  %128 = tail call float @llvm.fabs.f32(float %127)
  %129 = fpext float %128 to double
  %130 = load i32, ptr %27, align 8, !tbaa !11
  %.not398 = icmp eq i32 %130, 0
  br i1 %.not398, label %134, label %131

131:                                              ; preds = %122
  %132 = sitofp i32 %130 to double
  %133 = fdiv double %.1335, %132
  %.pre = load i32, ptr %83, align 4, !tbaa !14
  br label %155

134:                                              ; preds = %122
  %135 = load i32, ptr %83, align 4, !tbaa !14
  switch i32 %135, label %152 [
    i32 0, label %.thread491
    i32 1, label %136
    i32 2, label %142
  ]

136:                                              ; preds = %134
  %137 = getelementptr inbounds float, ptr %3, i64 %indvars.iv474
  %138 = load float, ptr %137, align 4, !tbaa !15
  %139 = getelementptr inbounds float, ptr %4, i64 %indvars.iv474
  %140 = load float, ptr %139, align 4, !tbaa !15
  %141 = fsub float %138, %140
  br label %152

142:                                              ; preds = %134
  %143 = getelementptr inbounds float, ptr %3, i64 %indvars.iv474
  %144 = load float, ptr %143, align 4, !tbaa !15
  %145 = fcmp ult float %124, %126
  %.409 = select i1 %145, float %126, float %124
  %146 = fsub float %144, %.409
  %147 = select i1 %145, float %124, float %126
  %148 = getelementptr inbounds float, ptr %4, i64 %indvars.iv474
  %149 = load float, ptr %148, align 4, !tbaa !15
  %150 = fsub float %147, %149
  %151 = fadd float %146, %150
  br label %152

152:                                              ; preds = %134, %142, %136
  %153 = phi float [ %141, %136 ], [ %151, %142 ], [ 0.000000e+00, %134 ]
  %154 = fpext float %153 to double
  br label %155

155:                                              ; preds = %152, %131
  %156 = phi i32 [ %.pre, %131 ], [ %135, %152 ]
  %157 = phi double [ %133, %131 ], [ %154, %152 ]
  %.fr = freeze i32 %156
  %158 = icmp eq i32 %.fr, 2
  br i1 %158, label %159, label %.thread491

159:                                              ; preds = %155
  br label %.thread491

.thread491:                                       ; preds = %134, %155, %159
  %.pn = phi double [ %157, %159 ], [ %157, %155 ], [ %129, %134 ]
  %160 = phi double [ 2.000000e+00, %159 ], [ 1.000000e+00, %155 ], [ 1.000000e+00, %134 ]
  %161 = fmul double %82, %.pn
  %162 = fdiv double %161, %160
  %163 = fcmp ult double %162, %129
  br i1 %163, label %224, label %164

164:                                              ; preds = %.thread491
  %165 = fcmp ult float %124, %126
  %.410 = select i1 %165, float %124, float %126
  %166 = getelementptr inbounds float, ptr %4, i64 %indvars.iv474
  %167 = load float, ptr %166, align 4, !tbaa !15
  %168 = fsub float %.410, %167
  %169 = fpext float %168 to double
  %170 = load double, ptr %85, align 8, !tbaa !19
  %171 = load i32, ptr %30, align 8, !tbaa !11
  %.not399 = icmp eq i32 %171, 0
  br i1 %.not399, label %175, label %172

172:                                              ; preds = %164
  %173 = sitofp i32 %171 to double
  %174 = fdiv double %.1333, %173
  %.pre489 = load i32, ptr %84, align 4, !tbaa !14
  br label %189

175:                                              ; preds = %164
  %176 = load i32, ptr %84, align 4, !tbaa !14
  switch i32 %176, label %186 [
    i32 0, label %.thread496
    i32 1, label %177
    i32 2, label %181
  ]

177:                                              ; preds = %175
  %178 = getelementptr inbounds float, ptr %3, i64 %indvars.iv474
  %179 = load float, ptr %178, align 4, !tbaa !15
  %180 = fsub float %179, %167
  br label %186

181:                                              ; preds = %175
  %182 = getelementptr inbounds float, ptr %3, i64 %indvars.iv474
  %183 = load float, ptr %182, align 4, !tbaa !15
  %.411 = select i1 %165, float %126, float %124
  %184 = fsub float %183, %.411
  %185 = fadd float %168, %184
  br label %186

186:                                              ; preds = %175, %181, %177
  %187 = phi float [ %180, %177 ], [ %185, %181 ], [ 0.000000e+00, %175 ]
  %188 = fpext float %187 to double
  br label %189

189:                                              ; preds = %186, %172
  %190 = phi i32 [ %.pre489, %172 ], [ %176, %186 ]
  %191 = phi double [ %174, %172 ], [ %188, %186 ]
  %.fr506 = freeze i32 %190
  %192 = fmul double %170, %191
  %193 = icmp eq i32 %.fr506, 2
  %194 = select i1 %193, double 2.000000e+00, double 1.000000e+00
  %195 = fdiv double %192, %194
  %196 = fcmp olt double %195, %169
  br i1 %196, label %225, label %202

.thread496:                                       ; preds = %175
  %197 = fmul double %170, %129
  %198 = fcmp olt double %197, %169
  br i1 %198, label %225, label %.thread499

.thread499:                                       ; preds = %.thread496
  %199 = getelementptr inbounds float, ptr %3, i64 %indvars.iv474
  %200 = load float, ptr %199, align 4, !tbaa !15
  %.412498 = select i1 %165, float %126, float %124
  %201 = fsub float %200, %.412498
  br label %217

202:                                              ; preds = %189
  %203 = getelementptr inbounds float, ptr %3, i64 %indvars.iv474
  %204 = load float, ptr %203, align 4, !tbaa !15
  %.412 = select i1 %165, float %126, float %124
  %205 = fsub float %204, %.412
  br i1 %.not399, label %209, label %206

206:                                              ; preds = %202
  %207 = sitofp i32 %171 to double
  %208 = fdiv double %.1333, %207
  br label %217

209:                                              ; preds = %202
  switch i32 %.fr506, label %214 [
    i32 0, label %217
    i32 1, label %210
    i32 2, label %212
  ]

210:                                              ; preds = %209
  %211 = fsub float %204, %167
  br label %214

212:                                              ; preds = %209
  %213 = fadd float %168, %205
  br label %214

214:                                              ; preds = %209, %212, %210
  %215 = phi float [ %211, %210 ], [ %213, %212 ], [ 0.000000e+00, %209 ]
  %216 = fpext float %215 to double
  br label %217

217:                                              ; preds = %.thread499, %209, %214, %206
  %.in = phi float [ %205, %206 ], [ %205, %214 ], [ %205, %209 ], [ %201, %.thread499 ]
  %218 = phi double [ %194, %206 ], [ %194, %214 ], [ %194, %209 ], [ 1.000000e+00, %.thread499 ]
  %219 = phi double [ %208, %206 ], [ %216, %214 ], [ %129, %209 ], [ %129, %.thread499 ]
  %220 = fpext float %.in to double
  %221 = fmul double %170, %219
  %222 = fdiv double %221, %218
  %223 = fcmp olt double %222, %220
  br i1 %223, label %225, label %224

224:                                              ; preds = %217, %.thread491
  br label %225

225:                                              ; preds = %189, %217, %.thread496, %224
  %.sink = phi i32 [ 0, %224 ], [ 100, %.thread496 ], [ 100, %217 ], [ 100, %189 ]
  %226 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv476
  store i32 %.sink, ptr %226, align 4, !tbaa !5
  %indvars.iv.next477 = add nuw nsw i64 %indvars.iv476, 1
  %227 = load i32, ptr %83, align 4, !tbaa !14
  switch i32 %227, label %268 [
    i32 0, label %.thread
    i32 1, label %.thread420
    i32 2, label %.thread422
  ]

.thread:                                          ; preds = %225
  %228 = getelementptr inbounds float, ptr %5, i64 %indvars.iv478
  %229 = load float, ptr %228, align 4, !tbaa !15
  %230 = getelementptr inbounds float, ptr %2, i64 %indvars.iv478
  %231 = load float, ptr %230, align 4, !tbaa !15
  %232 = fsub float %229, %231
  %233 = tail call float @llvm.fabs.f32(float %232)
  br label %268

.thread420:                                       ; preds = %225
  %234 = getelementptr inbounds float, ptr %3, i64 %indvars.iv474
  %235 = load float, ptr %234, align 4, !tbaa !15
  %236 = getelementptr inbounds float, ptr %4, i64 %indvars.iv474
  %237 = load float, ptr %236, align 4, !tbaa !15
  %238 = fsub float %235, %237
  %239 = fpext float %238 to double
  %240 = getelementptr inbounds float, ptr %3, i64 %indvars.iv478
  %241 = load float, ptr %240, align 4, !tbaa !15
  %242 = getelementptr inbounds float, ptr %4, i64 %indvars.iv478
  %243 = load float, ptr %242, align 4, !tbaa !15
  %244 = fsub float %241, %243
  br label %268

.thread422:                                       ; preds = %225
  %245 = getelementptr inbounds float, ptr %3, i64 %indvars.iv474
  %246 = load float, ptr %245, align 4, !tbaa !15
  %247 = fcmp ult float %124, %126
  %.414 = select i1 %247, float %126, float %124
  %248 = fsub float %246, %.414
  %249 = select i1 %247, float %124, float %126
  %250 = getelementptr inbounds float, ptr %4, i64 %indvars.iv474
  %251 = load float, ptr %250, align 4, !tbaa !15
  %252 = fsub float %249, %251
  %253 = fadd float %248, %252
  %254 = fpext float %253 to double
  %255 = getelementptr inbounds float, ptr %3, i64 %indvars.iv478
  %256 = load float, ptr %255, align 4, !tbaa !15
  %257 = getelementptr inbounds float, ptr %5, i64 %indvars.iv478
  %258 = load float, ptr %257, align 4, !tbaa !15
  %259 = getelementptr inbounds float, ptr %2, i64 %indvars.iv478
  %260 = load float, ptr %259, align 4, !tbaa !15
  %261 = fcmp ult float %258, %260
  %.415 = select i1 %261, float %260, float %258
  %262 = fsub float %256, %.415
  %263 = select i1 %261, float %258, float %260
  %264 = getelementptr inbounds float, ptr %4, i64 %indvars.iv478
  %265 = load float, ptr %264, align 4, !tbaa !15
  %266 = fsub float %263, %265
  %267 = fadd float %262, %266
  br label %268

268:                                              ; preds = %225, %.thread420, %.thread422, %.thread
  %269 = phi double [ %129, %.thread ], [ %239, %.thread420 ], [ %254, %.thread422 ], [ 0.000000e+00, %225 ]
  %.in401 = phi float [ %233, %.thread ], [ %244, %.thread420 ], [ %267, %.thread422 ], [ 0.000000e+00, %225 ]
  %270 = fpext float %.in401 to double
  %271 = fsub double %269, %270
  %272 = fadd double %.1335, %271
  %273 = load i32, ptr %84, align 4, !tbaa !14
  switch i32 %273, label %314 [
    i32 0, label %.thread424
    i32 1, label %.thread426
    i32 2, label %.thread428
  ]

.thread424:                                       ; preds = %268
  %274 = getelementptr inbounds float, ptr %5, i64 %indvars.iv480
  %275 = load float, ptr %274, align 4, !tbaa !15
  %276 = getelementptr inbounds float, ptr %2, i64 %indvars.iv480
  %277 = load float, ptr %276, align 4, !tbaa !15
  %278 = fsub float %275, %277
  %279 = tail call float @llvm.fabs.f32(float %278)
  br label %314

.thread426:                                       ; preds = %268
  %280 = getelementptr inbounds float, ptr %3, i64 %indvars.iv474
  %281 = load float, ptr %280, align 4, !tbaa !15
  %282 = getelementptr inbounds float, ptr %4, i64 %indvars.iv474
  %283 = load float, ptr %282, align 4, !tbaa !15
  %284 = fsub float %281, %283
  %285 = fpext float %284 to double
  %286 = getelementptr inbounds float, ptr %3, i64 %indvars.iv480
  %287 = load float, ptr %286, align 4, !tbaa !15
  %288 = getelementptr inbounds float, ptr %4, i64 %indvars.iv480
  %289 = load float, ptr %288, align 4, !tbaa !15
  %290 = fsub float %287, %289
  br label %314

.thread428:                                       ; preds = %268
  %291 = getelementptr inbounds float, ptr %3, i64 %indvars.iv474
  %292 = load float, ptr %291, align 4, !tbaa !15
  %293 = fcmp ult float %124, %126
  %.416 = select i1 %293, float %126, float %124
  %294 = fsub float %292, %.416
  %295 = select i1 %293, float %124, float %126
  %296 = getelementptr inbounds float, ptr %4, i64 %indvars.iv474
  %297 = load float, ptr %296, align 4, !tbaa !15
  %298 = fsub float %295, %297
  %299 = fadd float %294, %298
  %300 = fpext float %299 to double
  %301 = getelementptr inbounds float, ptr %3, i64 %indvars.iv480
  %302 = load float, ptr %301, align 4, !tbaa !15
  %303 = getelementptr inbounds float, ptr %5, i64 %indvars.iv480
  %304 = load float, ptr %303, align 4, !tbaa !15
  %305 = getelementptr inbounds float, ptr %2, i64 %indvars.iv480
  %306 = load float, ptr %305, align 4, !tbaa !15
  %307 = fcmp ult float %304, %306
  %.417 = select i1 %307, float %306, float %304
  %308 = fsub float %302, %.417
  %309 = select i1 %307, float %304, float %306
  %310 = getelementptr inbounds float, ptr %4, i64 %indvars.iv480
  %311 = load float, ptr %310, align 4, !tbaa !15
  %312 = fsub float %309, %311
  %313 = fadd float %308, %312
  br label %314

314:                                              ; preds = %268, %.thread426, %.thread428, %.thread424
  %315 = phi double [ %129, %.thread424 ], [ %285, %.thread426 ], [ %300, %.thread428 ], [ 0.000000e+00, %268 ]
  %.in403 = phi float [ %279, %.thread424 ], [ %290, %.thread426 ], [ %313, %.thread428 ], [ 0.000000e+00, %268 ]
  %316 = fpext float %.in403 to double
  %317 = fsub double %315, %316
  %318 = fadd double %.1333, %317
  %indvars.iv.next475 = add nuw nsw i64 %indvars.iv474, 1
  %indvars.iv.next479 = add nsw i64 %indvars.iv478, 1
  %indvars.iv.next481 = add nsw i64 %indvars.iv480, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next477, %wide.trip.count
  br i1 %exitcond.not, label %319, label %122, !llvm.loop !21

319:                                              ; preds = %314
  store i32 %89, ptr %7, align 4, !tbaa !5
  store i32 %spec.select, ptr %6, align 4, !tbaa !5
  br label %320

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

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}
!21 = distinct !{!21, !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