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

; 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_CDLDOJISTAR_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_CDLDOJISTAR(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 %1378

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

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

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

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

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

87:                                               ; preds = %209, %70
  %88 = load i32, ptr %22, align 4, !tbaa !5
  %89 = load i32, ptr %11, align 4, !tbaa !5
  %90 = sub nsw i32 %89, 1
  %91 = icmp slt i32 %88, %90
  br i1 %91, label %92, label %215

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

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

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

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

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

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

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

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

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

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

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

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

203:                                              ; preds = %132
  br label %204

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

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

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

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

217:                                              ; preds = %338, %215
  %218 = load i32, ptr %22, align 4, !tbaa !5
  %219 = load i32, ptr %11, align 4, !tbaa !5
  %220 = icmp slt i32 %218, %219
  br i1 %220, label %221, label %344

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

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

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

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

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

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

285:                                              ; preds = %268
  %286 = load ptr, ptr %16, align 8, !tbaa !9
  %287 = load i32, ptr %22, align 4, !tbaa !5
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds float, ptr %286, i64 %288
  %290 = load float, ptr %289, align 4, !tbaa !16
  br label %297

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

297:                                              ; preds = %291, %285
  %298 = phi float [ %290, %285 ], [ %296, %291 ]
  %299 = fsub float %273, %298
  %300 = load ptr, ptr %16, align 8, !tbaa !9
  %301 = load i32, ptr %22, align 4, !tbaa !5
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds float, ptr %300, i64 %302
  %304 = load float, ptr %303, align 4, !tbaa !16
  %305 = load ptr, ptr %13, align 8, !tbaa !9
  %306 = load i32, ptr %22, align 4, !tbaa !5
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds float, ptr %305, i64 %307
  %309 = load float, ptr %308, align 4, !tbaa !16
  %310 = fcmp oge float %304, %309
  br i1 %310, label %311, label %317

311:                                              ; preds = %297
  %312 = load ptr, ptr %13, align 8, !tbaa !9
  %313 = load i32, ptr %22, align 4, !tbaa !5
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds float, ptr %312, i64 %314
  %316 = load float, ptr %315, align 4, !tbaa !16
  br label %323

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

323:                                              ; preds = %317, %311
  %324 = phi float [ %316, %311 ], [ %322, %317 ]
  %325 = load ptr, ptr %15, align 8, !tbaa !9
  %326 = load i32, ptr %22, align 4, !tbaa !5
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds float, ptr %325, i64 %327
  %329 = load float, ptr %328, align 4, !tbaa !16
  %330 = fsub float %324, %329
  %331 = fadd float %299, %330
  br label %333

332:                                              ; preds = %261
  br label %333

333:                                              ; preds = %332, %323
  %334 = phi float [ %331, %323 ], [ 0.000000e+00, %332 ]
  br label %335

335:                                              ; preds = %333, %249
  %336 = phi float [ %260, %249 ], [ %334, %333 ]
  %337 = fpext float %336 to double
  br label %338

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

344:                                              ; preds = %217
  store i32 0, ptr %23, align 4, !tbaa !5
  br label %345

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

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

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

389:                                              ; preds = %382
  %390 = load ptr, ptr %16, align 8, !tbaa !9
  %391 = load i32, ptr %22, align 4, !tbaa !5
  %392 = sub nsw i32 %391, 1
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds float, ptr %390, i64 %393
  %395 = load float, ptr %394, align 4, !tbaa !16
  %396 = load ptr, ptr %13, align 8, !tbaa !9
  %397 = load i32, ptr %22, align 4, !tbaa !5
  %398 = sub nsw i32 %397, 1
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds float, ptr %396, i64 %399
  %401 = load float, ptr %400, align 4, !tbaa !16
  %402 = fsub float %395, %401
  %403 = fpext float %402 to double
  %404 = call double @llvm.fabs.f64(double %403)
  br label %513

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

412:                                              ; preds = %405
  %413 = load ptr, ptr %14, align 8, !tbaa !9
  %414 = load i32, ptr %22, align 4, !tbaa !5
  %415 = sub nsw i32 %414, 1
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds float, ptr %413, i64 %416
  %418 = load float, ptr %417, align 4, !tbaa !16
  %419 = load ptr, ptr %15, align 8, !tbaa !9
  %420 = load i32, ptr %22, align 4, !tbaa !5
  %421 = sub nsw i32 %420, 1
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds float, ptr %419, i64 %422
  %424 = load float, ptr %423, align 4, !tbaa !16
  %425 = fsub float %418, %424
  br label %510

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

433:                                              ; preds = %426
  %434 = load ptr, ptr %14, align 8, !tbaa !9
  %435 = load i32, ptr %22, align 4, !tbaa !5
  %436 = sub nsw i32 %435, 1
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds float, ptr %434, i64 %437
  %439 = load float, ptr %438, align 4, !tbaa !16
  %440 = load ptr, ptr %16, align 8, !tbaa !9
  %441 = load i32, ptr %22, align 4, !tbaa !5
  %442 = sub nsw i32 %441, 1
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds float, ptr %440, i64 %443
  %445 = load float, ptr %444, align 4, !tbaa !16
  %446 = load ptr, ptr %13, align 8, !tbaa !9
  %447 = load i32, ptr %22, align 4, !tbaa !5
  %448 = sub nsw i32 %447, 1
  %449 = sext i32 %448 to i64
  %450 = getelementptr inbounds float, ptr %446, i64 %449
  %451 = load float, ptr %450, align 4, !tbaa !16
  %452 = fcmp oge float %445, %451
  br i1 %452, label %453, label %460

453:                                              ; preds = %433
  %454 = load ptr, ptr %16, align 8, !tbaa !9
  %455 = load i32, ptr %22, align 4, !tbaa !5
  %456 = sub nsw i32 %455, 1
  %457 = sext i32 %456 to i64
  %458 = getelementptr inbounds float, ptr %454, i64 %457
  %459 = load float, ptr %458, align 4, !tbaa !16
  br label %467

460:                                              ; preds = %433
  %461 = load ptr, ptr %13, align 8, !tbaa !9
  %462 = load i32, ptr %22, align 4, !tbaa !5
  %463 = sub nsw i32 %462, 1
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds float, ptr %461, i64 %464
  %466 = load float, ptr %465, align 4, !tbaa !16
  br label %467

467:                                              ; preds = %460, %453
  %468 = phi float [ %459, %453 ], [ %466, %460 ]
  %469 = fsub float %439, %468
  %470 = load ptr, ptr %16, align 8, !tbaa !9
  %471 = load i32, ptr %22, align 4, !tbaa !5
  %472 = sub nsw i32 %471, 1
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds float, ptr %470, i64 %473
  %475 = load float, ptr %474, align 4, !tbaa !16
  %476 = load ptr, ptr %13, align 8, !tbaa !9
  %477 = load i32, ptr %22, align 4, !tbaa !5
  %478 = sub nsw i32 %477, 1
  %479 = sext i32 %478 to i64
  %480 = getelementptr inbounds float, ptr %476, i64 %479
  %481 = load float, ptr %480, align 4, !tbaa !16
  %482 = fcmp oge float %475, %481
  br i1 %482, label %483, label %490

483:                                              ; preds = %467
  %484 = load ptr, ptr %13, align 8, !tbaa !9
  %485 = load i32, ptr %22, align 4, !tbaa !5
  %486 = sub nsw i32 %485, 1
  %487 = sext i32 %486 to i64
  %488 = getelementptr inbounds float, ptr %484, i64 %487
  %489 = load float, ptr %488, align 4, !tbaa !16
  br label %497

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

497:                                              ; preds = %490, %483
  %498 = phi float [ %489, %483 ], [ %496, %490 ]
  %499 = load ptr, ptr %15, align 8, !tbaa !9
  %500 = load i32, ptr %22, align 4, !tbaa !5
  %501 = sub nsw i32 %500, 1
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds float, ptr %499, i64 %502
  %504 = load float, ptr %503, align 4, !tbaa !16
  %505 = fsub float %498, %504
  %506 = fadd float %469, %505
  br label %508

507:                                              ; preds = %426
  br label %508

508:                                              ; preds = %507, %497
  %509 = phi float [ %506, %497 ], [ 0.000000e+00, %507 ]
  br label %510

510:                                              ; preds = %508, %412
  %511 = phi float [ %425, %412 ], [ %509, %508 ]
  %512 = fpext float %511 to double
  br label %513

513:                                              ; preds = %510, %389
  %514 = phi double [ %404, %389 ], [ %512, %510 ]
  br label %515

515:                                              ; preds = %513, %373
  %516 = phi double [ %381, %373 ], [ %514, %513 ]
  %517 = fmul double %365, %516
  %518 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %519 = getelementptr inbounds %struct.TA_LibcPriv, ptr %518, i32 0, i32 8
  %520 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %519, i64 0, i64 0
  %521 = getelementptr inbounds %struct.TA_CandleSetting, ptr %520, i32 0, i32 1
  %522 = load i32, ptr %521, align 4, !tbaa !15
  %523 = icmp eq i32 %522, 2
  %524 = zext i1 %523 to i64
  %525 = select i1 %523, double 2.000000e+00, double 1.000000e+00
  %526 = fdiv double %517, %525
  %527 = fcmp ogt double %360, %526
  br i1 %527, label %528, label %864

528:                                              ; preds = %515
  %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
  %534 = load ptr, ptr %13, align 8, !tbaa !9
  %535 = load i32, ptr %22, align 4, !tbaa !5
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds float, ptr %534, i64 %536
  %538 = load float, ptr %537, align 4, !tbaa !16
  %539 = fsub float %533, %538
  %540 = fpext float %539 to double
  %541 = call double @llvm.fabs.f64(double %540)
  %542 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %543 = getelementptr inbounds %struct.TA_LibcPriv, ptr %542, i32 0, i32 8
  %544 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %543, i64 0, i64 3
  %545 = getelementptr inbounds %struct.TA_CandleSetting, ptr %544, i32 0, i32 3
  %546 = load double, ptr %545, align 8, !tbaa !21
  %547 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %548 = getelementptr inbounds %struct.TA_LibcPriv, ptr %547, i32 0, i32 8
  %549 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %548, i64 0, i64 3
  %550 = getelementptr inbounds %struct.TA_CandleSetting, ptr %549, i32 0, i32 2
  %551 = load i32, ptr %550, align 8, !tbaa !13
  %552 = sitofp i32 %551 to double
  %553 = fcmp une double %552, 0.000000e+00
  br i1 %553, label %554, label %563

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

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

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

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

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

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

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

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

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

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

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

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

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

674:                                              ; preds = %603
  br label %675

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

677:                                              ; preds = %675, %591
  %678 = phi float [ %602, %591 ], [ %676, %675 ]
  %679 = fpext float %678 to double
  br label %680

680:                                              ; preds = %677, %570
  %681 = phi double [ %583, %570 ], [ %679, %677 ]
  br label %682

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

695:                                              ; preds = %682
  %696 = load ptr, ptr %16, align 8, !tbaa !9
  %697 = load i32, ptr %22, align 4, !tbaa !5
  %698 = sub nsw i32 %697, 1
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds float, ptr %696, i64 %699
  %701 = load float, ptr %700, align 4, !tbaa !16
  %702 = load ptr, ptr %13, align 8, !tbaa !9
  %703 = load i32, ptr %22, align 4, !tbaa !5
  %704 = sub nsw i32 %703, 1
  %705 = sext i32 %704 to i64
  %706 = getelementptr inbounds float, ptr %702, i64 %705
  %707 = load float, ptr %706, align 4, !tbaa !16
  %708 = fcmp oge float %701, %707
  %709 = zext i1 %708 to i64
  %710 = select i1 %708, i32 1, i32 -1
  %711 = icmp eq i32 %710, 1
  br i1 %711, label %712, label %768

712:                                              ; preds = %695
  %713 = load ptr, ptr %13, align 8, !tbaa !9
  %714 = load i32, ptr %22, align 4, !tbaa !5
  %715 = sext i32 %714 to i64
  %716 = getelementptr inbounds float, ptr %713, i64 %715
  %717 = load float, ptr %716, align 4, !tbaa !16
  %718 = load ptr, ptr %16, align 8, !tbaa !9
  %719 = load i32, ptr %22, align 4, !tbaa !5
  %720 = sext i32 %719 to i64
  %721 = getelementptr inbounds float, ptr %718, i64 %720
  %722 = load float, ptr %721, align 4, !tbaa !16
  %723 = fcmp olt float %717, %722
  br i1 %723, label %724, label %730

724:                                              ; preds = %712
  %725 = load ptr, ptr %13, align 8, !tbaa !9
  %726 = load i32, ptr %22, align 4, !tbaa !5
  %727 = sext i32 %726 to i64
  %728 = getelementptr inbounds float, ptr %725, i64 %727
  %729 = load float, ptr %728, align 4, !tbaa !16
  br label %736

730:                                              ; preds = %712
  %731 = load ptr, ptr %16, align 8, !tbaa !9
  %732 = load i32, ptr %22, align 4, !tbaa !5
  %733 = sext i32 %732 to i64
  %734 = getelementptr inbounds float, ptr %731, i64 %733
  %735 = load float, ptr %734, align 4, !tbaa !16
  br label %736

736:                                              ; preds = %730, %724
  %737 = phi float [ %729, %724 ], [ %735, %730 ]
  %738 = load ptr, ptr %13, align 8, !tbaa !9
  %739 = load i32, ptr %22, align 4, !tbaa !5
  %740 = sub nsw i32 %739, 1
  %741 = sext i32 %740 to i64
  %742 = getelementptr inbounds float, ptr %738, i64 %741
  %743 = load float, ptr %742, align 4, !tbaa !16
  %744 = load ptr, ptr %16, align 8, !tbaa !9
  %745 = load i32, ptr %22, align 4, !tbaa !5
  %746 = sub nsw i32 %745, 1
  %747 = sext i32 %746 to i64
  %748 = getelementptr inbounds float, ptr %744, i64 %747
  %749 = load float, ptr %748, align 4, !tbaa !16
  %750 = fcmp ogt float %743, %749
  br i1 %750, label %751, label %758

751:                                              ; preds = %736
  %752 = load ptr, ptr %13, align 8, !tbaa !9
  %753 = load i32, ptr %22, align 4, !tbaa !5
  %754 = sub nsw i32 %753, 1
  %755 = sext i32 %754 to i64
  %756 = getelementptr inbounds float, ptr %752, i64 %755
  %757 = load float, ptr %756, align 4, !tbaa !16
  br label %765

758:                                              ; preds = %736
  %759 = load ptr, ptr %16, align 8, !tbaa !9
  %760 = load i32, ptr %22, align 4, !tbaa !5
  %761 = sub nsw i32 %760, 1
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds float, ptr %759, i64 %762
  %764 = load float, ptr %763, align 4, !tbaa !16
  br label %765

765:                                              ; preds = %758, %751
  %766 = phi float [ %757, %751 ], [ %764, %758 ]
  %767 = fcmp ogt float %737, %766
  br i1 %767, label %841, label %768

768:                                              ; preds = %765, %695
  %769 = load ptr, ptr %16, align 8, !tbaa !9
  %770 = load i32, ptr %22, align 4, !tbaa !5
  %771 = sub nsw i32 %770, 1
  %772 = sext i32 %771 to i64
  %773 = getelementptr inbounds float, ptr %769, i64 %772
  %774 = load float, ptr %773, align 4, !tbaa !16
  %775 = load ptr, ptr %13, align 8, !tbaa !9
  %776 = load i32, ptr %22, align 4, !tbaa !5
  %777 = sub nsw i32 %776, 1
  %778 = sext i32 %777 to i64
  %779 = getelementptr inbounds float, ptr %775, i64 %778
  %780 = load float, ptr %779, align 4, !tbaa !16
  %781 = fcmp oge float %774, %780
  %782 = zext i1 %781 to i64
  %783 = select i1 %781, i32 1, i32 -1
  %784 = icmp eq i32 %783, -1
  br i1 %784, label %785, label %864

785:                                              ; preds = %768
  %786 = load ptr, ptr %13, align 8, !tbaa !9
  %787 = load i32, ptr %22, align 4, !tbaa !5
  %788 = sext i32 %787 to i64
  %789 = getelementptr inbounds float, ptr %786, i64 %788
  %790 = load float, ptr %789, align 4, !tbaa !16
  %791 = load ptr, ptr %16, align 8, !tbaa !9
  %792 = load i32, ptr %22, align 4, !tbaa !5
  %793 = sext i32 %792 to i64
  %794 = getelementptr inbounds float, ptr %791, i64 %793
  %795 = load float, ptr %794, align 4, !tbaa !16
  %796 = fcmp ogt float %790, %795
  br i1 %796, label %797, label %803

797:                                              ; preds = %785
  %798 = load ptr, ptr %13, 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
  br label %809

803:                                              ; preds = %785
  %804 = load ptr, ptr %16, align 8, !tbaa !9
  %805 = load i32, ptr %22, align 4, !tbaa !5
  %806 = sext i32 %805 to i64
  %807 = getelementptr inbounds float, ptr %804, i64 %806
  %808 = load float, ptr %807, align 4, !tbaa !16
  br label %809

809:                                              ; preds = %803, %797
  %810 = phi float [ %802, %797 ], [ %808, %803 ]
  %811 = load ptr, ptr %13, align 8, !tbaa !9
  %812 = load i32, ptr %22, align 4, !tbaa !5
  %813 = sub nsw i32 %812, 1
  %814 = sext i32 %813 to i64
  %815 = getelementptr inbounds float, ptr %811, i64 %814
  %816 = load float, ptr %815, align 4, !tbaa !16
  %817 = load ptr, ptr %16, align 8, !tbaa !9
  %818 = load i32, ptr %22, align 4, !tbaa !5
  %819 = sub nsw i32 %818, 1
  %820 = sext i32 %819 to i64
  %821 = getelementptr inbounds float, ptr %817, i64 %820
  %822 = load float, ptr %821, align 4, !tbaa !16
  %823 = fcmp olt float %816, %822
  br i1 %823, label %824, label %831

824:                                              ; preds = %809
  %825 = load ptr, ptr %13, align 8, !tbaa !9
  %826 = load i32, ptr %22, align 4, !tbaa !5
  %827 = sub nsw i32 %826, 1
  %828 = sext i32 %827 to i64
  %829 = getelementptr inbounds float, ptr %825, i64 %828
  %830 = load float, ptr %829, align 4, !tbaa !16
  br label %838

831:                                              ; preds = %809
  %832 = load ptr, ptr %16, align 8, !tbaa !9
  %833 = load i32, ptr %22, align 4, !tbaa !5
  %834 = sub nsw i32 %833, 1
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds float, ptr %832, i64 %835
  %837 = load float, ptr %836, align 4, !tbaa !16
  br label %838

838:                                              ; preds = %831, %824
  %839 = phi float [ %830, %824 ], [ %837, %831 ]
  %840 = fcmp olt float %810, %839
  br i1 %840, label %841, label %864

841:                                              ; preds = %838, %765
  %842 = load ptr, ptr %16, align 8, !tbaa !9
  %843 = load i32, ptr %22, align 4, !tbaa !5
  %844 = sub nsw i32 %843, 1
  %845 = sext i32 %844 to i64
  %846 = getelementptr inbounds float, ptr %842, i64 %845
  %847 = load float, ptr %846, align 4, !tbaa !16
  %848 = load ptr, ptr %13, align 8, !tbaa !9
  %849 = load i32, ptr %22, align 4, !tbaa !5
  %850 = sub nsw i32 %849, 1
  %851 = sext i32 %850 to i64
  %852 = getelementptr inbounds float, ptr %848, i64 %851
  %853 = load float, ptr %852, align 4, !tbaa !16
  %854 = fcmp oge float %847, %853
  %855 = zext i1 %854 to i64
  %856 = select i1 %854, i32 1, i32 -1
  %857 = sub nsw i32 0, %856
  %858 = mul nsw i32 %857, 100
  %859 = load ptr, ptr %19, align 8, !tbaa !9
  %860 = load i32, ptr %23, align 4, !tbaa !5
  %861 = add nsw i32 %860, 1
  store i32 %861, ptr %23, align 4, !tbaa !5
  %862 = sext i32 %860 to i64
  %863 = getelementptr inbounds i32, ptr %859, i64 %862
  store i32 %858, ptr %863, align 4, !tbaa !5
  br label %870

864:                                              ; preds = %838, %768, %682, %515
  %865 = load ptr, ptr %19, align 8, !tbaa !9
  %866 = load i32, ptr %23, align 4, !tbaa !5
  %867 = add nsw i32 %866, 1
  store i32 %867, ptr %23, align 4, !tbaa !5
  %868 = sext i32 %866 to i64
  %869 = getelementptr inbounds i32, ptr %865, i64 %868
  store i32 0, ptr %869, align 4, !tbaa !5
  br label %870

870:                                              ; preds = %864, %841
  %871 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %872 = getelementptr inbounds %struct.TA_LibcPriv, ptr %871, i32 0, i32 8
  %873 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %872, i64 0, i64 0
  %874 = getelementptr inbounds %struct.TA_CandleSetting, ptr %873, i32 0, i32 1
  %875 = load i32, ptr %874, align 4, !tbaa !15
  %876 = icmp eq i32 %875, 0
  br i1 %876, label %877, label %893

877:                                              ; preds = %870
  %878 = load ptr, ptr %16, align 8, !tbaa !9
  %879 = load i32, ptr %22, align 4, !tbaa !5
  %880 = sub nsw i32 %879, 1
  %881 = sext i32 %880 to i64
  %882 = getelementptr inbounds float, ptr %878, i64 %881
  %883 = load float, ptr %882, align 4, !tbaa !16
  %884 = load ptr, ptr %13, align 8, !tbaa !9
  %885 = load i32, ptr %22, align 4, !tbaa !5
  %886 = sub nsw i32 %885, 1
  %887 = sext i32 %886 to i64
  %888 = getelementptr inbounds float, ptr %884, i64 %887
  %889 = load float, ptr %888, align 4, !tbaa !16
  %890 = fsub float %883, %889
  %891 = fpext float %890 to double
  %892 = call double @llvm.fabs.f64(double %891)
  br label %1001

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

900:                                              ; preds = %893
  %901 = load ptr, ptr %14, align 8, !tbaa !9
  %902 = load i32, ptr %22, align 4, !tbaa !5
  %903 = sub nsw i32 %902, 1
  %904 = sext i32 %903 to i64
  %905 = getelementptr inbounds float, ptr %901, i64 %904
  %906 = load float, ptr %905, align 4, !tbaa !16
  %907 = load ptr, ptr %15, align 8, !tbaa !9
  %908 = load i32, ptr %22, align 4, !tbaa !5
  %909 = sub nsw i32 %908, 1
  %910 = sext i32 %909 to i64
  %911 = getelementptr inbounds float, ptr %907, i64 %910
  %912 = load float, ptr %911, align 4, !tbaa !16
  %913 = fsub float %906, %912
  br label %998

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

921:                                              ; preds = %914
  %922 = load ptr, ptr %14, align 8, !tbaa !9
  %923 = load i32, ptr %22, align 4, !tbaa !5
  %924 = sub nsw i32 %923, 1
  %925 = sext i32 %924 to i64
  %926 = getelementptr inbounds float, ptr %922, i64 %925
  %927 = load float, ptr %926, align 4, !tbaa !16
  %928 = load ptr, ptr %16, align 8, !tbaa !9
  %929 = load i32, ptr %22, align 4, !tbaa !5
  %930 = sub nsw i32 %929, 1
  %931 = sext i32 %930 to i64
  %932 = getelementptr inbounds float, ptr %928, i64 %931
  %933 = load float, ptr %932, align 4, !tbaa !16
  %934 = load ptr, ptr %13, align 8, !tbaa !9
  %935 = load i32, ptr %22, align 4, !tbaa !5
  %936 = sub nsw i32 %935, 1
  %937 = sext i32 %936 to i64
  %938 = getelementptr inbounds float, ptr %934, i64 %937
  %939 = load float, ptr %938, align 4, !tbaa !16
  %940 = fcmp oge float %933, %939
  br i1 %940, label %941, label %948

941:                                              ; preds = %921
  %942 = load ptr, ptr %16, align 8, !tbaa !9
  %943 = load i32, ptr %22, align 4, !tbaa !5
  %944 = sub nsw i32 %943, 1
  %945 = sext i32 %944 to i64
  %946 = getelementptr inbounds float, ptr %942, i64 %945
  %947 = load float, ptr %946, align 4, !tbaa !16
  br label %955

948:                                              ; preds = %921
  %949 = load ptr, ptr %13, align 8, !tbaa !9
  %950 = load i32, ptr %22, align 4, !tbaa !5
  %951 = sub nsw i32 %950, 1
  %952 = sext i32 %951 to i64
  %953 = getelementptr inbounds float, ptr %949, i64 %952
  %954 = load float, ptr %953, align 4, !tbaa !16
  br label %955

955:                                              ; preds = %948, %941
  %956 = phi float [ %947, %941 ], [ %954, %948 ]
  %957 = fsub float %927, %956
  %958 = load ptr, ptr %16, align 8, !tbaa !9
  %959 = load i32, ptr %22, align 4, !tbaa !5
  %960 = sub nsw i32 %959, 1
  %961 = sext i32 %960 to i64
  %962 = getelementptr inbounds float, ptr %958, i64 %961
  %963 = load float, ptr %962, align 4, !tbaa !16
  %964 = load ptr, ptr %13, align 8, !tbaa !9
  %965 = load i32, ptr %22, align 4, !tbaa !5
  %966 = sub nsw i32 %965, 1
  %967 = sext i32 %966 to i64
  %968 = getelementptr inbounds float, ptr %964, i64 %967
  %969 = load float, ptr %968, align 4, !tbaa !16
  %970 = fcmp oge float %963, %969
  br i1 %970, label %971, label %978

971:                                              ; preds = %955
  %972 = load ptr, ptr %13, align 8, !tbaa !9
  %973 = load i32, ptr %22, align 4, !tbaa !5
  %974 = sub nsw i32 %973, 1
  %975 = sext i32 %974 to i64
  %976 = getelementptr inbounds float, ptr %972, i64 %975
  %977 = load float, ptr %976, align 4, !tbaa !16
  br label %985

978:                                              ; preds = %955
  %979 = load ptr, ptr %16, align 8, !tbaa !9
  %980 = load i32, ptr %22, align 4, !tbaa !5
  %981 = sub nsw i32 %980, 1
  %982 = sext i32 %981 to i64
  %983 = getelementptr inbounds float, ptr %979, i64 %982
  %984 = load float, ptr %983, align 4, !tbaa !16
  br label %985

985:                                              ; preds = %978, %971
  %986 = phi float [ %977, %971 ], [ %984, %978 ]
  %987 = load ptr, ptr %15, align 8, !tbaa !9
  %988 = load i32, ptr %22, align 4, !tbaa !5
  %989 = sub nsw i32 %988, 1
  %990 = sext i32 %989 to i64
  %991 = getelementptr inbounds float, ptr %987, i64 %990
  %992 = load float, ptr %991, align 4, !tbaa !16
  %993 = fsub float %986, %992
  %994 = fadd float %957, %993
  br label %996

995:                                              ; preds = %914
  br label %996

996:                                              ; preds = %995, %985
  %997 = phi float [ %994, %985 ], [ 0.000000e+00, %995 ]
  br label %998

998:                                              ; preds = %996, %900
  %999 = phi float [ %913, %900 ], [ %997, %996 ]
  %1000 = fpext float %999 to double
  br label %1001

1001:                                             ; preds = %998, %877
  %1002 = phi double [ %892, %877 ], [ %1000, %998 ]
  %1003 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1004 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1003, i32 0, i32 8
  %1005 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1004, i64 0, i64 0
  %1006 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1005, i32 0, i32 1
  %1007 = load i32, ptr %1006, align 4, !tbaa !15
  %1008 = icmp eq i32 %1007, 0
  br i1 %1008, label %1009, label %1023

1009:                                             ; preds = %1001
  %1010 = load ptr, ptr %16, align 8, !tbaa !9
  %1011 = load i32, ptr %25, align 4, !tbaa !5
  %1012 = sext i32 %1011 to i64
  %1013 = getelementptr inbounds float, ptr %1010, i64 %1012
  %1014 = load float, ptr %1013, align 4, !tbaa !16
  %1015 = load ptr, ptr %13, align 8, !tbaa !9
  %1016 = load i32, ptr %25, align 4, !tbaa !5
  %1017 = sext i32 %1016 to i64
  %1018 = getelementptr inbounds float, ptr %1015, i64 %1017
  %1019 = load float, ptr %1018, align 4, !tbaa !16
  %1020 = fsub float %1014, %1019
  %1021 = fpext float %1020 to double
  %1022 = call double @llvm.fabs.f64(double %1021)
  br label %1119

1023:                                             ; preds = %1001
  %1024 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1025 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1024, i32 0, i32 8
  %1026 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1025, i64 0, i64 0
  %1027 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1026, i32 0, i32 1
  %1028 = load i32, ptr %1027, align 4, !tbaa !15
  %1029 = icmp eq i32 %1028, 1
  br i1 %1029, label %1030, label %1042

1030:                                             ; preds = %1023
  %1031 = load ptr, ptr %14, align 8, !tbaa !9
  %1032 = load i32, ptr %25, align 4, !tbaa !5
  %1033 = sext i32 %1032 to i64
  %1034 = getelementptr inbounds float, ptr %1031, i64 %1033
  %1035 = load float, ptr %1034, align 4, !tbaa !16
  %1036 = load ptr, ptr %15, align 8, !tbaa !9
  %1037 = load i32, ptr %25, align 4, !tbaa !5
  %1038 = sext i32 %1037 to i64
  %1039 = getelementptr inbounds float, ptr %1036, i64 %1038
  %1040 = load float, ptr %1039, align 4, !tbaa !16
  %1041 = fsub float %1035, %1040
  br label %1116

1042:                                             ; preds = %1023
  %1043 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1044 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1043, i32 0, i32 8
  %1045 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1044, i64 0, i64 0
  %1046 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1045, i32 0, i32 1
  %1047 = load i32, ptr %1046, align 4, !tbaa !15
  %1048 = icmp eq i32 %1047, 2
  br i1 %1048, label %1049, label %1113

1049:                                             ; preds = %1042
  %1050 = load ptr, ptr %14, align 8, !tbaa !9
  %1051 = load i32, ptr %25, align 4, !tbaa !5
  %1052 = sext i32 %1051 to i64
  %1053 = getelementptr inbounds float, ptr %1050, i64 %1052
  %1054 = load float, ptr %1053, align 4, !tbaa !16
  %1055 = load ptr, ptr %16, align 8, !tbaa !9
  %1056 = load i32, ptr %25, align 4, !tbaa !5
  %1057 = sext i32 %1056 to i64
  %1058 = getelementptr inbounds float, ptr %1055, i64 %1057
  %1059 = load float, ptr %1058, align 4, !tbaa !16
  %1060 = load ptr, ptr %13, align 8, !tbaa !9
  %1061 = load i32, ptr %25, 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 = fcmp oge float %1059, %1064
  br i1 %1065, label %1066, label %1072

1066:                                             ; preds = %1049
  %1067 = load ptr, ptr %16, align 8, !tbaa !9
  %1068 = load i32, ptr %25, align 4, !tbaa !5
  %1069 = sext i32 %1068 to i64
  %1070 = getelementptr inbounds float, ptr %1067, i64 %1069
  %1071 = load float, ptr %1070, align 4, !tbaa !16
  br label %1078

1072:                                             ; preds = %1049
  %1073 = load ptr, ptr %13, align 8, !tbaa !9
  %1074 = load i32, ptr %25, align 4, !tbaa !5
  %1075 = sext i32 %1074 to i64
  %1076 = getelementptr inbounds float, ptr %1073, i64 %1075
  %1077 = load float, ptr %1076, align 4, !tbaa !16
  br label %1078

1078:                                             ; preds = %1072, %1066
  %1079 = phi float [ %1071, %1066 ], [ %1077, %1072 ]
  %1080 = fsub float %1054, %1079
  %1081 = load ptr, ptr %16, align 8, !tbaa !9
  %1082 = load i32, ptr %25, align 4, !tbaa !5
  %1083 = sext i32 %1082 to i64
  %1084 = getelementptr inbounds float, ptr %1081, i64 %1083
  %1085 = load float, ptr %1084, align 4, !tbaa !16
  %1086 = load ptr, ptr %13, align 8, !tbaa !9
  %1087 = load i32, ptr %25, align 4, !tbaa !5
  %1088 = sext i32 %1087 to i64
  %1089 = getelementptr inbounds float, ptr %1086, i64 %1088
  %1090 = load float, ptr %1089, align 4, !tbaa !16
  %1091 = fcmp oge float %1085, %1090
  br i1 %1091, label %1092, label %1098

1092:                                             ; preds = %1078
  %1093 = load ptr, ptr %13, align 8, !tbaa !9
  %1094 = load i32, ptr %25, align 4, !tbaa !5
  %1095 = sext i32 %1094 to i64
  %1096 = getelementptr inbounds float, ptr %1093, i64 %1095
  %1097 = load float, ptr %1096, align 4, !tbaa !16
  br label %1104

1098:                                             ; preds = %1078
  %1099 = load ptr, ptr %16, align 8, !tbaa !9
  %1100 = load i32, ptr %25, align 4, !tbaa !5
  %1101 = sext i32 %1100 to i64
  %1102 = getelementptr inbounds float, ptr %1099, i64 %1101
  %1103 = load float, ptr %1102, align 4, !tbaa !16
  br label %1104

1104:                                             ; preds = %1098, %1092
  %1105 = phi float [ %1097, %1092 ], [ %1103, %1098 ]
  %1106 = load ptr, ptr %15, align 8, !tbaa !9
  %1107 = load i32, ptr %25, align 4, !tbaa !5
  %1108 = sext i32 %1107 to i64
  %1109 = getelementptr inbounds float, ptr %1106, i64 %1108
  %1110 = load float, ptr %1109, align 4, !tbaa !16
  %1111 = fsub float %1105, %1110
  %1112 = fadd float %1080, %1111
  br label %1114

1113:                                             ; preds = %1042
  br label %1114

1114:                                             ; preds = %1113, %1104
  %1115 = phi float [ %1112, %1104 ], [ 0.000000e+00, %1113 ]
  br label %1116

1116:                                             ; preds = %1114, %1030
  %1117 = phi float [ %1041, %1030 ], [ %1115, %1114 ]
  %1118 = fpext float %1117 to double
  br label %1119

1119:                                             ; preds = %1116, %1009
  %1120 = phi double [ %1022, %1009 ], [ %1118, %1116 ]
  %1121 = fsub double %1002, %1120
  %1122 = load double, ptr %21, align 8, !tbaa !11
  %1123 = fadd double %1122, %1121
  store double %1123, ptr %21, align 8, !tbaa !11
  %1124 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1125 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1124, i32 0, i32 8
  %1126 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1125, i64 0, i64 3
  %1127 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1126, i32 0, i32 1
  %1128 = load i32, ptr %1127, align 4, !tbaa !15
  %1129 = icmp eq i32 %1128, 0
  br i1 %1129, label %1130, label %1144

1130:                                             ; preds = %1119
  %1131 = load ptr, ptr %16, align 8, !tbaa !9
  %1132 = load i32, ptr %22, align 4, !tbaa !5
  %1133 = sext i32 %1132 to i64
  %1134 = getelementptr inbounds float, ptr %1131, i64 %1133
  %1135 = load float, ptr %1134, align 4, !tbaa !16
  %1136 = load ptr, ptr %13, align 8, !tbaa !9
  %1137 = load i32, ptr %22, align 4, !tbaa !5
  %1138 = sext i32 %1137 to i64
  %1139 = getelementptr inbounds float, ptr %1136, i64 %1138
  %1140 = load float, ptr %1139, align 4, !tbaa !16
  %1141 = fsub float %1135, %1140
  %1142 = fpext float %1141 to double
  %1143 = call double @llvm.fabs.f64(double %1142)
  br label %1240

1144:                                             ; preds = %1119
  %1145 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1146 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1145, i32 0, i32 8
  %1147 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1146, i64 0, i64 3
  %1148 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1147, i32 0, i32 1
  %1149 = load i32, ptr %1148, align 4, !tbaa !15
  %1150 = icmp eq i32 %1149, 1
  br i1 %1150, label %1151, label %1163

1151:                                             ; preds = %1144
  %1152 = load ptr, ptr %14, align 8, !tbaa !9
  %1153 = load i32, ptr %22, align 4, !tbaa !5
  %1154 = sext i32 %1153 to i64
  %1155 = getelementptr inbounds float, ptr %1152, i64 %1154
  %1156 = load float, ptr %1155, align 4, !tbaa !16
  %1157 = load ptr, ptr %15, align 8, !tbaa !9
  %1158 = load i32, ptr %22, align 4, !tbaa !5
  %1159 = sext i32 %1158 to i64
  %1160 = getelementptr inbounds float, ptr %1157, i64 %1159
  %1161 = load float, ptr %1160, align 4, !tbaa !16
  %1162 = fsub float %1156, %1161
  br label %1237

1163:                                             ; preds = %1144
  %1164 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1165 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1164, i32 0, i32 8
  %1166 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1165, i64 0, i64 3
  %1167 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1166, i32 0, i32 1
  %1168 = load i32, ptr %1167, align 4, !tbaa !15
  %1169 = icmp eq i32 %1168, 2
  br i1 %1169, label %1170, label %1234

1170:                                             ; preds = %1163
  %1171 = load ptr, ptr %14, align 8, !tbaa !9
  %1172 = load i32, ptr %22, align 4, !tbaa !5
  %1173 = sext i32 %1172 to i64
  %1174 = getelementptr inbounds float, ptr %1171, i64 %1173
  %1175 = load float, ptr %1174, align 4, !tbaa !16
  %1176 = load ptr, ptr %16, align 8, !tbaa !9
  %1177 = load i32, ptr %22, align 4, !tbaa !5
  %1178 = sext i32 %1177 to i64
  %1179 = getelementptr inbounds float, ptr %1176, i64 %1178
  %1180 = load float, ptr %1179, align 4, !tbaa !16
  %1181 = load ptr, ptr %13, 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 = fcmp oge float %1180, %1185
  br i1 %1186, label %1187, label %1193

1187:                                             ; preds = %1170
  %1188 = load ptr, ptr %16, align 8, !tbaa !9
  %1189 = load i32, ptr %22, align 4, !tbaa !5
  %1190 = sext i32 %1189 to i64
  %1191 = getelementptr inbounds float, ptr %1188, i64 %1190
  %1192 = load float, ptr %1191, align 4, !tbaa !16
  br label %1199

1193:                                             ; preds = %1170
  %1194 = load ptr, ptr %13, align 8, !tbaa !9
  %1195 = load i32, ptr %22, align 4, !tbaa !5
  %1196 = sext i32 %1195 to i64
  %1197 = getelementptr inbounds float, ptr %1194, i64 %1196
  %1198 = load float, ptr %1197, align 4, !tbaa !16
  br label %1199

1199:                                             ; preds = %1193, %1187
  %1200 = phi float [ %1192, %1187 ], [ %1198, %1193 ]
  %1201 = fsub float %1175, %1200
  %1202 = load ptr, ptr %16, align 8, !tbaa !9
  %1203 = load i32, ptr %22, align 4, !tbaa !5
  %1204 = sext i32 %1203 to i64
  %1205 = getelementptr inbounds float, ptr %1202, i64 %1204
  %1206 = load float, ptr %1205, align 4, !tbaa !16
  %1207 = load ptr, ptr %13, align 8, !tbaa !9
  %1208 = load i32, ptr %22, align 4, !tbaa !5
  %1209 = sext i32 %1208 to i64
  %1210 = getelementptr inbounds float, ptr %1207, i64 %1209
  %1211 = load float, ptr %1210, align 4, !tbaa !16
  %1212 = fcmp oge float %1206, %1211
  br i1 %1212, label %1213, label %1219

1213:                                             ; preds = %1199
  %1214 = load ptr, ptr %13, align 8, !tbaa !9
  %1215 = load i32, ptr %22, align 4, !tbaa !5
  %1216 = sext i32 %1215 to i64
  %1217 = getelementptr inbounds float, ptr %1214, i64 %1216
  %1218 = load float, ptr %1217, align 4, !tbaa !16
  br label %1225

1219:                                             ; preds = %1199
  %1220 = load ptr, ptr %16, align 8, !tbaa !9
  %1221 = load i32, ptr %22, align 4, !tbaa !5
  %1222 = sext i32 %1221 to i64
  %1223 = getelementptr inbounds float, ptr %1220, i64 %1222
  %1224 = load float, ptr %1223, align 4, !tbaa !16
  br label %1225

1225:                                             ; preds = %1219, %1213
  %1226 = phi float [ %1218, %1213 ], [ %1224, %1219 ]
  %1227 = load ptr, ptr %15, align 8, !tbaa !9
  %1228 = load i32, ptr %22, align 4, !tbaa !5
  %1229 = sext i32 %1228 to i64
  %1230 = getelementptr inbounds float, ptr %1227, i64 %1229
  %1231 = load float, ptr %1230, align 4, !tbaa !16
  %1232 = fsub float %1226, %1231
  %1233 = fadd float %1201, %1232
  br label %1235

1234:                                             ; preds = %1163
  br label %1235

1235:                                             ; preds = %1234, %1225
  %1236 = phi float [ %1233, %1225 ], [ 0.000000e+00, %1234 ]
  br label %1237

1237:                                             ; preds = %1235, %1151
  %1238 = phi float [ %1162, %1151 ], [ %1236, %1235 ]
  %1239 = fpext float %1238 to double
  br label %1240

1240:                                             ; preds = %1237, %1130
  %1241 = phi double [ %1143, %1130 ], [ %1239, %1237 ]
  %1242 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1243 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1242, i32 0, i32 8
  %1244 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1243, i64 0, i64 3
  %1245 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1244, i32 0, i32 1
  %1246 = load i32, ptr %1245, align 4, !tbaa !15
  %1247 = icmp eq i32 %1246, 0
  br i1 %1247, label %1248, label %1262

1248:                                             ; preds = %1240
  %1249 = load ptr, ptr %16, align 8, !tbaa !9
  %1250 = load i32, ptr %24, align 4, !tbaa !5
  %1251 = sext i32 %1250 to i64
  %1252 = getelementptr inbounds float, ptr %1249, i64 %1251
  %1253 = load float, ptr %1252, align 4, !tbaa !16
  %1254 = load ptr, ptr %13, align 8, !tbaa !9
  %1255 = load i32, ptr %24, align 4, !tbaa !5
  %1256 = sext i32 %1255 to i64
  %1257 = getelementptr inbounds float, ptr %1254, i64 %1256
  %1258 = load float, ptr %1257, align 4, !tbaa !16
  %1259 = fsub float %1253, %1258
  %1260 = fpext float %1259 to double
  %1261 = call double @llvm.fabs.f64(double %1260)
  br label %1358

1262:                                             ; preds = %1240
  %1263 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1264 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1263, i32 0, i32 8
  %1265 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1264, i64 0, i64 3
  %1266 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1265, i32 0, i32 1
  %1267 = load i32, ptr %1266, align 4, !tbaa !15
  %1268 = icmp eq i32 %1267, 1
  br i1 %1268, label %1269, label %1281

1269:                                             ; preds = %1262
  %1270 = load ptr, ptr %14, align 8, !tbaa !9
  %1271 = load i32, ptr %24, align 4, !tbaa !5
  %1272 = sext i32 %1271 to i64
  %1273 = getelementptr inbounds float, ptr %1270, i64 %1272
  %1274 = load float, ptr %1273, align 4, !tbaa !16
  %1275 = load ptr, ptr %15, align 8, !tbaa !9
  %1276 = load i32, ptr %24, align 4, !tbaa !5
  %1277 = sext i32 %1276 to i64
  %1278 = getelementptr inbounds float, ptr %1275, i64 %1277
  %1279 = load float, ptr %1278, align 4, !tbaa !16
  %1280 = fsub float %1274, %1279
  br label %1355

1281:                                             ; preds = %1262
  %1282 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1283 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1282, i32 0, i32 8
  %1284 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1283, i64 0, i64 3
  %1285 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1284, i32 0, i32 1
  %1286 = load i32, ptr %1285, align 4, !tbaa !15
  %1287 = icmp eq i32 %1286, 2
  br i1 %1287, label %1288, label %1352

1288:                                             ; preds = %1281
  %1289 = load ptr, ptr %14, align 8, !tbaa !9
  %1290 = load i32, ptr %24, align 4, !tbaa !5
  %1291 = sext i32 %1290 to i64
  %1292 = getelementptr inbounds float, ptr %1289, i64 %1291
  %1293 = load float, ptr %1292, align 4, !tbaa !16
  %1294 = load ptr, ptr %16, align 8, !tbaa !9
  %1295 = load i32, ptr %24, align 4, !tbaa !5
  %1296 = sext i32 %1295 to i64
  %1297 = getelementptr inbounds float, ptr %1294, i64 %1296
  %1298 = load float, ptr %1297, align 4, !tbaa !16
  %1299 = load ptr, ptr %13, align 8, !tbaa !9
  %1300 = load i32, ptr %24, 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 = fcmp oge float %1298, %1303
  br i1 %1304, label %1305, label %1311

1305:                                             ; preds = %1288
  %1306 = load ptr, ptr %16, align 8, !tbaa !9
  %1307 = load i32, ptr %24, align 4, !tbaa !5
  %1308 = sext i32 %1307 to i64
  %1309 = getelementptr inbounds float, ptr %1306, i64 %1308
  %1310 = load float, ptr %1309, align 4, !tbaa !16
  br label %1317

1311:                                             ; preds = %1288
  %1312 = load ptr, ptr %13, align 8, !tbaa !9
  %1313 = load i32, ptr %24, align 4, !tbaa !5
  %1314 = sext i32 %1313 to i64
  %1315 = getelementptr inbounds float, ptr %1312, i64 %1314
  %1316 = load float, ptr %1315, align 4, !tbaa !16
  br label %1317

1317:                                             ; preds = %1311, %1305
  %1318 = phi float [ %1310, %1305 ], [ %1316, %1311 ]
  %1319 = fsub float %1293, %1318
  %1320 = load ptr, ptr %16, align 8, !tbaa !9
  %1321 = load i32, ptr %24, align 4, !tbaa !5
  %1322 = sext i32 %1321 to i64
  %1323 = getelementptr inbounds float, ptr %1320, i64 %1322
  %1324 = load float, ptr %1323, align 4, !tbaa !16
  %1325 = load ptr, ptr %13, align 8, !tbaa !9
  %1326 = load i32, ptr %24, align 4, !tbaa !5
  %1327 = sext i32 %1326 to i64
  %1328 = getelementptr inbounds float, ptr %1325, i64 %1327
  %1329 = load float, ptr %1328, align 4, !tbaa !16
  %1330 = fcmp oge float %1324, %1329
  br i1 %1330, label %1331, label %1337

1331:                                             ; preds = %1317
  %1332 = load ptr, ptr %13, align 8, !tbaa !9
  %1333 = load i32, ptr %24, align 4, !tbaa !5
  %1334 = sext i32 %1333 to i64
  %1335 = getelementptr inbounds float, ptr %1332, i64 %1334
  %1336 = load float, ptr %1335, align 4, !tbaa !16
  br label %1343

1337:                                             ; preds = %1317
  %1338 = load ptr, ptr %16, align 8, !tbaa !9
  %1339 = load i32, ptr %24, align 4, !tbaa !5
  %1340 = sext i32 %1339 to i64
  %1341 = getelementptr inbounds float, ptr %1338, i64 %1340
  %1342 = load float, ptr %1341, align 4, !tbaa !16
  br label %1343

1343:                                             ; preds = %1337, %1331
  %1344 = phi float [ %1336, %1331 ], [ %1342, %1337 ]
  %1345 = load ptr, ptr %15, align 8, !tbaa !9
  %1346 = load i32, ptr %24, align 4, !tbaa !5
  %1347 = sext i32 %1346 to i64
  %1348 = getelementptr inbounds float, ptr %1345, i64 %1347
  %1349 = load float, ptr %1348, align 4, !tbaa !16
  %1350 = fsub float %1344, %1349
  %1351 = fadd float %1319, %1350
  br label %1353

1352:                                             ; preds = %1281
  br label %1353

1353:                                             ; preds = %1352, %1343
  %1354 = phi float [ %1351, %1343 ], [ 0.000000e+00, %1352 ]
  br label %1355

1355:                                             ; preds = %1353, %1269
  %1356 = phi float [ %1280, %1269 ], [ %1354, %1353 ]
  %1357 = fpext float %1356 to double
  br label %1358

1358:                                             ; preds = %1355, %1248
  %1359 = phi double [ %1261, %1248 ], [ %1357, %1355 ]
  %1360 = fsub double %1241, %1359
  %1361 = load double, ptr %20, align 8, !tbaa !11
  %1362 = fadd double %1361, %1360
  store double %1362, ptr %20, align 8, !tbaa !11
  %1363 = load i32, ptr %22, align 4, !tbaa !5
  %1364 = add nsw i32 %1363, 1
  store i32 %1364, ptr %22, align 4, !tbaa !5
  %1365 = load i32, ptr %25, align 4, !tbaa !5
  %1366 = add nsw i32 %1365, 1
  store i32 %1366, ptr %25, align 4, !tbaa !5
  %1367 = load i32, ptr %24, align 4, !tbaa !5
  %1368 = add nsw i32 %1367, 1
  store i32 %1368, ptr %24, align 4, !tbaa !5
  br label %1369

1369:                                             ; preds = %1358
  %1370 = load i32, ptr %22, align 4, !tbaa !5
  %1371 = load i32, ptr %12, align 4, !tbaa !5
  %1372 = icmp sle i32 %1370, %1371
  br i1 %1372, label %345, label %1373, !llvm.loop !22

1373:                                             ; preds = %1369
  %1374 = load i32, ptr %23, align 4, !tbaa !5
  %1375 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 %1374, ptr %1375, align 4, !tbaa !5
  %1376 = load i32, ptr %11, align 4, !tbaa !5
  %1377 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 %1376, ptr %1377, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %27, align 4
  br label %1378

1378:                                             ; preds = %1373, %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
  %1379 = load i32, ptr %10, align 4
  ret i32 %1379
}

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

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

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

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

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

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

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

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

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

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

.lr.ph.split.us436:                               ; preds = %.lr.ph.split.us436.preheader, %.lr.ph.split.us436
  %indvars.iv461 = phi i64 [ %39, %.lr.ph.split.us436.preheader ], [ %indvars.iv.next462, %.lr.ph.split.us436 ]
  %.0331434.us438 = phi double [ 0.000000e+00, %.lr.ph.split.us436.preheader ], [ %58, %.lr.ph.split.us436 ]
  %52 = getelementptr inbounds float, ptr %3, i64 %indvars.iv461
  %53 = load float, ptr %52, align 4, !tbaa !15
  %54 = getelementptr inbounds float, ptr %4, i64 %indvars.iv461
  %55 = load float, ptr %54, align 4, !tbaa !15
  %56 = fsub float %53, %55
  %57 = fpext float %56 to double
  %58 = fadd double %.0331434.us438, %57
  %indvars.iv.next462 = add nsw i64 %indvars.iv461, 1
  %59 = icmp slt i64 %indvars.iv.next462, %40
  br i1 %59, label %.lr.ph.split.us436, label %.preheader433, !llvm.loop !17

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

.preheader433:                                    ; preds = %.lr.ph.split.us442, %.lr.ph.split.us436, %.lr.ph.split.us, %.lr.ph, %25
  %.0331.lcssa = phi double [ 0.000000e+00, %25 ], [ 0.000000e+00, %.lr.ph ], [ %50, %.lr.ph.split.us ], [ %58, %.lr.ph.split.us436 ], [ %74, %.lr.ph.split.us442 ]
  %76 = icmp sgt i32 %32, 0
  br i1 %76, label %.lr.ph450, label %.preheader433..preheader_crit_edge

.preheader433..preheader_crit_edge:               ; preds = %.preheader433
  %.pre486 = sext i32 %33 to i64
  br label %.preheader

.lr.ph450:                                        ; preds = %.preheader433
  %77 = getelementptr inbounds i8, ptr %27, i64 284
  %78 = load i32, ptr %77, align 4, !tbaa !14
  %79 = sext i32 %33 to i64
  %80 = zext nneg i32 %spec.select to i64
  br label %90

.preheader.loopexit:                              ; preds = %118
  %81 = trunc nsw i64 %indvars.iv.next468 to i32
  %sext = shl i64 %indvars.iv.next468, 32
  %.pre487 = ashr exact i64 %sext, 32
  br label %.preheader

.preheader:                                       ; preds = %.preheader433..preheader_crit_edge, %.preheader.loopexit
  %.pre-phi488 = phi i64 [ %.pre486, %.preheader433..preheader_crit_edge ], [ %.pre487, %.preheader.loopexit ]
  %.pre-phi = phi i64 [ %.pre486, %.preheader433..preheader_crit_edge ], [ %79, %.preheader.loopexit ]
  %.0333.lcssa = phi double [ 0.000000e+00, %.preheader433..preheader_crit_edge ], [ %120, %.preheader.loopexit ]
  %.1330.lcssa = phi i32 [ %33, %.preheader433..preheader_crit_edge ], [ %81, %.preheader.loopexit ]
  %82 = getelementptr inbounds i8, ptr %27, i64 224
  %83 = load double, ptr %82, align 8, !tbaa !19
  %84 = getelementptr inbounds i8, ptr %27, i64 212
  %85 = getelementptr inbounds i8, ptr %27, i64 284
  %86 = getelementptr inbounds i8, ptr %27, i64 296
  %87 = sext i32 %30 to i64
  %smax = tail call i32 @llvm.smax.i32(i32 %.1330.lcssa, i32 %1)
  %88 = add i32 %smax, 1
  %89 = sub i32 %88, %.1330.lcssa
  %wide.trip.count = zext i32 %89 to i64
  br label %122

90:                                               ; preds = %.lr.ph450, %118
  %indvars.iv467 = phi i64 [ %79, %.lr.ph450 ], [ %indvars.iv.next468, %118 ]
  %.0333448 = phi double [ 0.000000e+00, %.lr.ph450 ], [ %120, %118 ]
  switch i32 %78, 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.iv467
  %93 = load float, ptr %92, align 4, !tbaa !15
  %94 = getelementptr inbounds float, ptr %2, i64 %indvars.iv467
  %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.iv467
  %100 = load float, ptr %99, align 4, !tbaa !15
  %101 = getelementptr inbounds float, ptr %4, i64 %indvars.iv467
  %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.iv467
  %106 = load float, ptr %105, align 4, !tbaa !15
  %107 = getelementptr inbounds float, ptr %5, i64 %indvars.iv467
  %108 = load float, ptr %107, align 4, !tbaa !15
  %109 = getelementptr inbounds float, ptr %2, i64 %indvars.iv467
  %110 = load float, ptr %109, align 4, !tbaa !15
  %111 = fcmp ult float %108, %110
  %.404 = select i1 %111, float %110, float %108
  %112 = fsub float %106, %.404
  %113 = select i1 %111, float %108, float %110
  %114 = getelementptr inbounds float, ptr %4, i64 %indvars.iv467
  %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
  %.in401 = phi float [ %97, %91 ], [ %103, %98 ], [ %117, %104 ], [ 0.000000e+00, %90 ]
  %119 = fpext float %.in401 to double
  %120 = fadd double %.0333448, %119
  %indvars.iv.next468 = add nsw i64 %indvars.iv467, 1
  %121 = icmp slt i64 %indvars.iv.next468, %80
  br i1 %121, label %90, label %.preheader.loopexit, !llvm.loop !20

122:                                              ; preds = %.preheader, %323
  %indvars.iv476 = phi i64 [ %87, %.preheader ], [ %indvars.iv.next477, %323 ]
  %indvars.iv474 = phi i64 [ %.pre-phi, %.preheader ], [ %indvars.iv.next475, %323 ]
  %indvars.iv472 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next473, %323 ]
  %indvars.iv470 = phi i64 [ %.pre-phi488, %.preheader ], [ %indvars.iv.next471, %323 ]
  %.1334 = phi double [ %.0333.lcssa, %.preheader ], [ %327, %323 ]
  %.1332 = phi double [ %.0331.lcssa, %.preheader ], [ %270, %323 ]
  %123 = add nsw i64 %indvars.iv470, -1
  %124 = getelementptr inbounds float, ptr %5, i64 %123
  %125 = load float, ptr %124, align 4, !tbaa !15
  %126 = getelementptr inbounds float, ptr %2, i64 %123
  %127 = load float, ptr %126, align 4, !tbaa !15
  %128 = fsub float %125, %127
  %129 = tail call float @llvm.fabs.f32(float %128)
  %130 = fpext float %129 to double
  %131 = load i32, ptr %28, align 8, !tbaa !11
  %.not395 = icmp eq i32 %131, 0
  br i1 %.not395, label %135, label %132

132:                                              ; preds = %122
  %133 = sitofp i32 %131 to double
  %134 = fdiv double %.1332, %133
  %.pre = load i32, ptr %84, align 4, !tbaa !14
  br label %156

135:                                              ; preds = %122
  %136 = load i32, ptr %84, align 4, !tbaa !14
  switch i32 %136, label %153 [
    i32 0, label %.thread
    i32 1, label %137
    i32 2, label %143
  ]

137:                                              ; preds = %135
  %138 = getelementptr inbounds float, ptr %3, i64 %123
  %139 = load float, ptr %138, align 4, !tbaa !15
  %140 = getelementptr inbounds float, ptr %4, i64 %123
  %141 = load float, ptr %140, align 4, !tbaa !15
  %142 = fsub float %139, %141
  br label %153

143:                                              ; preds = %135
  %144 = getelementptr inbounds float, ptr %3, i64 %123
  %145 = load float, ptr %144, align 4, !tbaa !15
  %146 = fcmp ult float %125, %127
  %.405 = select i1 %146, float %127, float %125
  %147 = fsub float %145, %.405
  %148 = select i1 %146, float %125, float %127
  %149 = getelementptr inbounds float, ptr %4, i64 %123
  %150 = load float, ptr %149, align 4, !tbaa !15
  %151 = fsub float %148, %150
  %152 = fadd float %147, %151
  br label %153

153:                                              ; preds = %135, %143, %137
  %154 = phi float [ %142, %137 ], [ %152, %143 ], [ 0.000000e+00, %135 ]
  %155 = fpext float %154 to double
  br label %156

156:                                              ; preds = %153, %132
  %157 = phi i32 [ %.pre, %132 ], [ %136, %153 ]
  %158 = phi double [ %134, %132 ], [ %155, %153 ]
  %.fr = freeze i32 %157
  %159 = icmp eq i32 %.fr, 2
  br i1 %159, label %160, label %.thread

160:                                              ; preds = %156
  br label %.thread

.thread:                                          ; preds = %135, %156, %160
  %.pn = phi double [ %158, %160 ], [ %158, %156 ], [ %130, %135 ]
  %161 = phi double [ 2.000000e+00, %160 ], [ 1.000000e+00, %156 ], [ 1.000000e+00, %135 ]
  %162 = fmul double %83, %.pn
  %163 = fdiv double %162, %161
  %164 = fcmp olt double %163, %130
  br i1 %164, label %165, label %223

165:                                              ; preds = %.thread
  %166 = getelementptr inbounds float, ptr %5, i64 %indvars.iv470
  %167 = load float, ptr %166, align 4, !tbaa !15
  %168 = getelementptr inbounds float, ptr %2, i64 %indvars.iv470
  %169 = load float, ptr %168, align 4, !tbaa !15
  %170 = fsub float %167, %169
  %171 = tail call float @llvm.fabs.f32(float %170)
  %172 = fpext float %171 to double
  %173 = load double, ptr %86, align 8, !tbaa !19
  %174 = load i32, ptr %31, align 8, !tbaa !11
  %.not396 = icmp eq i32 %174, 0
  br i1 %.not396, label %178, label %175

175:                                              ; preds = %165
  %176 = sitofp i32 %174 to double
  %177 = fdiv double %.1334, %176
  %.pre485 = load i32, ptr %85, align 4, !tbaa !14
  br label %199

178:                                              ; preds = %165
  %179 = load i32, ptr %85, align 4, !tbaa !14
  switch i32 %179, label %196 [
    i32 0, label %.thread491
    i32 1, label %180
    i32 2, label %186
  ]

180:                                              ; preds = %178
  %181 = getelementptr inbounds float, ptr %3, i64 %indvars.iv470
  %182 = load float, ptr %181, align 4, !tbaa !15
  %183 = getelementptr inbounds float, ptr %4, i64 %indvars.iv470
  %184 = load float, ptr %183, align 4, !tbaa !15
  %185 = fsub float %182, %184
  br label %196

186:                                              ; preds = %178
  %187 = getelementptr inbounds float, ptr %3, i64 %indvars.iv470
  %188 = load float, ptr %187, align 4, !tbaa !15
  %189 = fcmp ult float %167, %169
  %.406 = select i1 %189, float %169, float %167
  %190 = fsub float %188, %.406
  %191 = select i1 %189, float %167, float %169
  %192 = getelementptr inbounds float, ptr %4, i64 %indvars.iv470
  %193 = load float, ptr %192, align 4, !tbaa !15
  %194 = fsub float %191, %193
  %195 = fadd float %190, %194
  br label %196

196:                                              ; preds = %178, %186, %180
  %197 = phi float [ %185, %180 ], [ %195, %186 ], [ 0.000000e+00, %178 ]
  %198 = fpext float %197 to double
  br label %199

199:                                              ; preds = %196, %175
  %200 = phi i32 [ %.pre485, %175 ], [ %179, %196 ]
  %201 = phi double [ %177, %175 ], [ %198, %196 ]
  %.fr499 = freeze i32 %200
  %202 = icmp eq i32 %.fr499, 2
  br i1 %202, label %203, label %.thread491

203:                                              ; preds = %199
  br label %.thread491

.thread491:                                       ; preds = %178, %199, %203
  %.pn500 = phi double [ %201, %203 ], [ %201, %199 ], [ %172, %178 ]
  %204 = phi double [ 2.000000e+00, %203 ], [ 1.000000e+00, %199 ], [ 1.000000e+00, %178 ]
  %205 = fmul double %173, %.pn500
  %206 = fdiv double %205, %204
  %207 = fcmp ult double %206, %172
  br i1 %207, label %223, label %208

208:                                              ; preds = %.thread491
  %209 = fcmp ult float %125, %127
  br i1 %209, label %215, label %210

210:                                              ; preds = %208
  %211 = fcmp olt float %169, %167
  %.407 = select i1 %211, float %169, float %167
  %212 = fcmp ogt float %127, %125
  %213 = select i1 %212, float %127, float %125
  %214 = fcmp ogt float %.407, %213
  br i1 %214, label %220, label %223

215:                                              ; preds = %208
  %216 = fcmp ogt float %169, %167
  %.408 = select i1 %216, float %169, float %167
  %217 = fcmp olt float %127, %125
  %218 = select i1 %217, float %127, float %125
  %219 = fcmp olt float %.408, %218
  br i1 %219, label %220, label %223

220:                                              ; preds = %215, %210
  %221 = fcmp oge float %125, %127
  %222 = select i1 %221, i32 -100, i32 100
  br label %223

223:                                              ; preds = %.thread, %.thread491, %215, %210, %220
  %.sink = phi i32 [ %222, %220 ], [ 0, %210 ], [ 0, %215 ], [ 0, %.thread491 ], [ 0, %.thread ]
  %224 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv472
  store i32 %.sink, ptr %224, align 4, !tbaa !5
  %indvars.iv.next473 = add nuw nsw i64 %indvars.iv472, 1
  %225 = load i32, ptr %84, align 4, !tbaa !14
  switch i32 %225, label %266 [
    i32 0, label %.thread414
    i32 1, label %.thread416
    i32 2, label %.thread418
  ]

.thread414:                                       ; preds = %223
  %226 = getelementptr inbounds float, ptr %5, i64 %indvars.iv476
  %227 = load float, ptr %226, align 4, !tbaa !15
  %228 = getelementptr inbounds float, ptr %2, i64 %indvars.iv476
  %229 = load float, ptr %228, align 4, !tbaa !15
  %230 = fsub float %227, %229
  %231 = tail call float @llvm.fabs.f32(float %230)
  br label %266

.thread416:                                       ; preds = %223
  %232 = getelementptr inbounds float, ptr %3, i64 %123
  %233 = load float, ptr %232, align 4, !tbaa !15
  %234 = getelementptr inbounds float, ptr %4, i64 %123
  %235 = load float, ptr %234, align 4, !tbaa !15
  %236 = fsub float %233, %235
  %237 = fpext float %236 to double
  %238 = getelementptr inbounds float, ptr %3, i64 %indvars.iv476
  %239 = load float, ptr %238, align 4, !tbaa !15
  %240 = getelementptr inbounds float, ptr %4, i64 %indvars.iv476
  %241 = load float, ptr %240, align 4, !tbaa !15
  %242 = fsub float %239, %241
  br label %266

.thread418:                                       ; preds = %223
  %243 = getelementptr inbounds float, ptr %3, i64 %123
  %244 = load float, ptr %243, align 4, !tbaa !15
  %245 = fcmp ult float %125, %127
  %.409 = select i1 %245, float %127, float %125
  %246 = fsub float %244, %.409
  %247 = select i1 %245, float %125, float %127
  %248 = getelementptr inbounds float, ptr %4, i64 %123
  %249 = load float, ptr %248, align 4, !tbaa !15
  %250 = fsub float %247, %249
  %251 = fadd float %246, %250
  %252 = fpext float %251 to double
  %253 = getelementptr inbounds float, ptr %3, i64 %indvars.iv476
  %254 = load float, ptr %253, align 4, !tbaa !15
  %255 = getelementptr inbounds float, ptr %5, i64 %indvars.iv476
  %256 = load float, ptr %255, align 4, !tbaa !15
  %257 = getelementptr inbounds float, ptr %2, i64 %indvars.iv476
  %258 = load float, ptr %257, align 4, !tbaa !15
  %259 = fcmp ult float %256, %258
  %.410 = select i1 %259, float %258, float %256
  %260 = fsub float %254, %.410
  %261 = select i1 %259, float %256, float %258
  %262 = getelementptr inbounds float, ptr %4, i64 %indvars.iv476
  %263 = load float, ptr %262, align 4, !tbaa !15
  %264 = fsub float %261, %263
  %265 = fadd float %260, %264
  br label %266

266:                                              ; preds = %223, %.thread416, %.thread418, %.thread414
  %267 = phi double [ %130, %.thread414 ], [ %237, %.thread416 ], [ %252, %.thread418 ], [ 0.000000e+00, %223 ]
  %.in397 = phi float [ %231, %.thread414 ], [ %242, %.thread416 ], [ %265, %.thread418 ], [ 0.000000e+00, %223 ]
  %268 = fpext float %.in397 to double
  %269 = fsub double %267, %268
  %270 = fadd double %.1332, %269
  %271 = load i32, ptr %85, align 4, !tbaa !14
  switch i32 %271, label %323 [
    i32 0, label %.thread420
    i32 1, label %.thread422
    i32 2, label %.thread424
  ]

.thread420:                                       ; preds = %266
  %272 = getelementptr inbounds float, ptr %5, i64 %indvars.iv470
  %273 = load float, ptr %272, align 4, !tbaa !15
  %274 = getelementptr inbounds float, ptr %2, i64 %indvars.iv470
  %275 = load float, ptr %274, align 4, !tbaa !15
  %276 = fsub float %273, %275
  %277 = tail call float @llvm.fabs.f32(float %276)
  %278 = fpext float %277 to double
  %279 = getelementptr inbounds float, ptr %5, i64 %indvars.iv474
  %280 = load float, ptr %279, align 4, !tbaa !15
  %281 = getelementptr inbounds float, ptr %2, i64 %indvars.iv474
  %282 = load float, ptr %281, align 4, !tbaa !15
  %283 = fsub float %280, %282
  %284 = tail call float @llvm.fabs.f32(float %283)
  br label %323

.thread422:                                       ; preds = %266
  %285 = getelementptr inbounds float, ptr %3, i64 %indvars.iv470
  %286 = load float, ptr %285, align 4, !tbaa !15
  %287 = getelementptr inbounds float, ptr %4, i64 %indvars.iv470
  %288 = load float, ptr %287, align 4, !tbaa !15
  %289 = fsub float %286, %288
  %290 = fpext float %289 to double
  %291 = getelementptr inbounds float, ptr %3, i64 %indvars.iv474
  %292 = load float, ptr %291, align 4, !tbaa !15
  %293 = getelementptr inbounds float, ptr %4, i64 %indvars.iv474
  %294 = load float, ptr %293, align 4, !tbaa !15
  %295 = fsub float %292, %294
  br label %323

.thread424:                                       ; preds = %266
  %296 = getelementptr inbounds float, ptr %3, i64 %indvars.iv470
  %297 = load float, ptr %296, align 4, !tbaa !15
  %298 = getelementptr inbounds float, ptr %5, i64 %indvars.iv470
  %299 = load float, ptr %298, align 4, !tbaa !15
  %300 = getelementptr inbounds float, ptr %2, i64 %indvars.iv470
  %301 = load float, ptr %300, align 4, !tbaa !15
  %302 = fcmp ult float %299, %301
  %.411 = select i1 %302, float %301, float %299
  %303 = fsub float %297, %.411
  %304 = select i1 %302, float %299, float %301
  %305 = getelementptr inbounds float, ptr %4, i64 %indvars.iv470
  %306 = load float, ptr %305, align 4, !tbaa !15
  %307 = fsub float %304, %306
  %308 = fadd float %303, %307
  %309 = fpext float %308 to double
  %310 = getelementptr inbounds float, ptr %3, i64 %indvars.iv474
  %311 = load float, ptr %310, align 4, !tbaa !15
  %312 = getelementptr inbounds float, ptr %5, i64 %indvars.iv474
  %313 = load float, ptr %312, align 4, !tbaa !15
  %314 = getelementptr inbounds float, ptr %2, i64 %indvars.iv474
  %315 = load float, ptr %314, align 4, !tbaa !15
  %316 = fcmp ult float %313, %315
  %.412 = select i1 %316, float %315, float %313
  %317 = fsub float %311, %.412
  %318 = select i1 %316, float %313, float %315
  %319 = getelementptr inbounds float, ptr %4, i64 %indvars.iv474
  %320 = load float, ptr %319, align 4, !tbaa !15
  %321 = fsub float %318, %320
  %322 = fadd float %317, %321
  br label %323

323:                                              ; preds = %266, %.thread422, %.thread424, %.thread420
  %324 = phi double [ %278, %.thread420 ], [ %290, %.thread422 ], [ %309, %.thread424 ], [ 0.000000e+00, %266 ]
  %.in399 = phi float [ %284, %.thread420 ], [ %295, %.thread422 ], [ %322, %.thread424 ], [ 0.000000e+00, %266 ]
  %325 = fpext float %.in399 to double
  %326 = fsub double %324, %325
  %327 = fadd double %.1334, %326
  %indvars.iv.next471 = add nuw nsw i64 %indvars.iv470, 1
  %indvars.iv.next477 = add nsw i64 %indvars.iv476, 1
  %indvars.iv.next475 = add nsw i64 %indvars.iv474, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next473, %wide.trip.count
  br i1 %exitcond.not, label %328, label %122, !llvm.loop !21

328:                                              ; preds = %323
  store i32 %89, ptr %7, align 4, !tbaa !5
  store i32 %spec.select, ptr %6, align 4, !tbaa !5
  br label %329

329:                                              ; preds = %13, %11, %9, %328, %24
  %.0 = phi i32 [ 0, %24 ], [ 0, %328 ], [ 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,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass