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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

78:                                               ; preds = %200, %68
  %79 = load i32, ptr %21, align 4, !tbaa !5
  %80 = load i32, ptr %11, align 4, !tbaa !5
  %81 = sub nsw i32 %80, 2
  %82 = icmp slt i32 %79, %81
  br i1 %82, label %83, label %206

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

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

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

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

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

130:                                              ; preds = %123
  %131 = load ptr, ptr %14, align 8, !tbaa !9
  %132 = load i32, ptr %21, align 4, !tbaa !5
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds float, ptr %131, i64 %133
  %135 = load float, ptr %134, align 4, !tbaa !16
  %136 = load ptr, ptr %16, align 8, !tbaa !9
  %137 = load i32, ptr %21, align 4, !tbaa !5
  %138 = sext i32 %137 to i64
  %139 = getelementptr inbounds float, ptr %136, i64 %138
  %140 = load float, ptr %139, align 4, !tbaa !16
  %141 = load ptr, ptr %13, align 8, !tbaa !9
  %142 = load i32, ptr %21, align 4, !tbaa !5
  %143 = sext i32 %142 to i64
  %144 = getelementptr inbounds float, ptr %141, i64 %143
  %145 = load float, ptr %144, align 4, !tbaa !16
  %146 = fcmp oge float %140, %145
  br i1 %146, label %147, label %153

147:                                              ; preds = %130
  %148 = load ptr, ptr %16, align 8, !tbaa !9
  %149 = load i32, ptr %21, align 4, !tbaa !5
  %150 = sext i32 %149 to i64
  %151 = getelementptr inbounds float, ptr %148, i64 %150
  %152 = load float, ptr %151, align 4, !tbaa !16
  br label %159

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

159:                                              ; preds = %153, %147
  %160 = phi float [ %152, %147 ], [ %158, %153 ]
  %161 = fsub float %135, %160
  %162 = load ptr, ptr %16, align 8, !tbaa !9
  %163 = load i32, ptr %21, align 4, !tbaa !5
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds float, ptr %162, i64 %164
  %166 = load float, ptr %165, align 4, !tbaa !16
  %167 = load ptr, ptr %13, align 8, !tbaa !9
  %168 = load i32, ptr %21, align 4, !tbaa !5
  %169 = sext i32 %168 to i64
  %170 = getelementptr inbounds float, ptr %167, i64 %169
  %171 = load float, ptr %170, align 4, !tbaa !16
  %172 = fcmp oge float %166, %171
  br i1 %172, label %173, label %179

173:                                              ; preds = %159
  %174 = load ptr, ptr %13, align 8, !tbaa !9
  %175 = load i32, ptr %21, align 4, !tbaa !5
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds float, ptr %174, i64 %176
  %178 = load float, ptr %177, align 4, !tbaa !16
  br label %185

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

185:                                              ; preds = %179, %173
  %186 = phi float [ %178, %173 ], [ %184, %179 ]
  %187 = load ptr, ptr %15, align 8, !tbaa !9
  %188 = load i32, ptr %21, align 4, !tbaa !5
  %189 = sext i32 %188 to i64
  %190 = getelementptr inbounds float, ptr %187, i64 %189
  %191 = load float, ptr %190, align 4, !tbaa !16
  %192 = fsub float %186, %191
  %193 = fadd float %161, %192
  br label %195

194:                                              ; preds = %123
  br label %195

195:                                              ; preds = %194, %185
  %196 = phi float [ %193, %185 ], [ 0.000000e+00, %194 ]
  br label %197

197:                                              ; preds = %195, %111
  %198 = phi float [ %122, %111 ], [ %196, %195 ]
  %199 = fpext float %198 to double
  br label %200

200:                                              ; preds = %197, %90
  %201 = phi double [ %103, %90 ], [ %199, %197 ]
  %202 = load double, ptr %20, align 8, !tbaa !11
  %203 = fadd double %202, %201
  store double %203, ptr %20, align 8, !tbaa !11
  %204 = load i32, ptr %21, align 4, !tbaa !5
  %205 = add nsw i32 %204, 1
  store i32 %205, ptr %21, align 4, !tbaa !5
  br label %78, !llvm.loop !18

206:                                              ; preds = %78
  %207 = load i32, ptr %11, align 4, !tbaa !5
  store i32 %207, ptr %21, align 4, !tbaa !5
  store i32 0, ptr %22, align 4, !tbaa !5
  br label %208

208:                                              ; preds = %822, %206
  %209 = load ptr, ptr %16, align 8, !tbaa !9
  %210 = load i32, ptr %21, align 4, !tbaa !5
  %211 = sub nsw i32 %210, 2
  %212 = sext i32 %211 to i64
  %213 = getelementptr inbounds float, ptr %209, i64 %212
  %214 = load float, ptr %213, align 4, !tbaa !16
  %215 = load ptr, ptr %13, align 8, !tbaa !9
  %216 = load i32, ptr %21, align 4, !tbaa !5
  %217 = sub nsw i32 %216, 2
  %218 = sext i32 %217 to i64
  %219 = getelementptr inbounds float, ptr %215, i64 %218
  %220 = load float, ptr %219, align 4, !tbaa !16
  %221 = fcmp oge float %214, %220
  %222 = zext i1 %221 to i64
  %223 = select i1 %221, i32 1, i32 -1
  %224 = icmp eq i32 %223, 1
  br i1 %224, label %225, label %558

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

253:                                              ; preds = %225
  %254 = load double, ptr %20, align 8, !tbaa !11
  %255 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %256 = getelementptr inbounds %struct.TA_LibcPriv, ptr %255, i32 0, i32 8
  %257 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %256, i64 0, i64 0
  %258 = getelementptr inbounds %struct.TA_CandleSetting, ptr %257, i32 0, i32 2
  %259 = load i32, ptr %258, align 8, !tbaa !13
  %260 = sitofp i32 %259 to double
  %261 = fdiv double %254, %260
  br label %395

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

269:                                              ; preds = %262
  %270 = load ptr, ptr %16, align 8, !tbaa !9
  %271 = load i32, ptr %21, align 4, !tbaa !5
  %272 = sub nsw i32 %271, 2
  %273 = sext i32 %272 to i64
  %274 = getelementptr inbounds float, ptr %270, i64 %273
  %275 = load float, ptr %274, align 4, !tbaa !16
  %276 = load ptr, ptr %13, align 8, !tbaa !9
  %277 = load i32, ptr %21, align 4, !tbaa !5
  %278 = sub nsw i32 %277, 2
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds float, ptr %276, i64 %279
  %281 = load float, ptr %280, align 4, !tbaa !16
  %282 = fsub float %275, %281
  %283 = fpext float %282 to double
  %284 = call double @llvm.fabs.f64(double %283)
  br label %393

285:                                              ; preds = %262
  %286 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %287 = getelementptr inbounds %struct.TA_LibcPriv, ptr %286, i32 0, i32 8
  %288 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %287, i64 0, i64 0
  %289 = getelementptr inbounds %struct.TA_CandleSetting, ptr %288, i32 0, i32 1
  %290 = load i32, ptr %289, align 4, !tbaa !15
  %291 = icmp eq i32 %290, 1
  br i1 %291, label %292, label %306

292:                                              ; preds = %285
  %293 = load ptr, ptr %14, align 8, !tbaa !9
  %294 = load i32, ptr %21, align 4, !tbaa !5
  %295 = sub nsw i32 %294, 2
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds float, ptr %293, i64 %296
  %298 = load float, ptr %297, align 4, !tbaa !16
  %299 = load ptr, ptr %15, align 8, !tbaa !9
  %300 = load i32, ptr %21, align 4, !tbaa !5
  %301 = sub nsw i32 %300, 2
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds float, ptr %299, i64 %302
  %304 = load float, ptr %303, align 4, !tbaa !16
  %305 = fsub float %298, %304
  br label %390

306:                                              ; preds = %285
  %307 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %308 = getelementptr inbounds %struct.TA_LibcPriv, ptr %307, i32 0, i32 8
  %309 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %308, i64 0, i64 0
  %310 = getelementptr inbounds %struct.TA_CandleSetting, ptr %309, i32 0, i32 1
  %311 = load i32, ptr %310, align 4, !tbaa !15
  %312 = icmp eq i32 %311, 2
  br i1 %312, label %313, label %387

313:                                              ; preds = %306
  %314 = load ptr, ptr %14, align 8, !tbaa !9
  %315 = load i32, ptr %21, align 4, !tbaa !5
  %316 = sub nsw i32 %315, 2
  %317 = sext i32 %316 to i64
  %318 = getelementptr inbounds float, ptr %314, i64 %317
  %319 = load float, ptr %318, align 4, !tbaa !16
  %320 = load ptr, ptr %16, align 8, !tbaa !9
  %321 = load i32, ptr %21, align 4, !tbaa !5
  %322 = sub nsw i32 %321, 2
  %323 = sext i32 %322 to i64
  %324 = getelementptr inbounds float, ptr %320, i64 %323
  %325 = load float, ptr %324, align 4, !tbaa !16
  %326 = load ptr, ptr %13, align 8, !tbaa !9
  %327 = load i32, ptr %21, align 4, !tbaa !5
  %328 = sub nsw i32 %327, 2
  %329 = sext i32 %328 to i64
  %330 = getelementptr inbounds float, ptr %326, i64 %329
  %331 = load float, ptr %330, align 4, !tbaa !16
  %332 = fcmp oge float %325, %331
  br i1 %332, label %333, label %340

333:                                              ; preds = %313
  %334 = load ptr, ptr %16, align 8, !tbaa !9
  %335 = load i32, ptr %21, align 4, !tbaa !5
  %336 = sub nsw i32 %335, 2
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds float, ptr %334, i64 %337
  %339 = load float, ptr %338, align 4, !tbaa !16
  br label %347

340:                                              ; preds = %313
  %341 = load ptr, ptr %13, align 8, !tbaa !9
  %342 = load i32, ptr %21, align 4, !tbaa !5
  %343 = sub nsw i32 %342, 2
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds float, ptr %341, i64 %344
  %346 = load float, ptr %345, align 4, !tbaa !16
  br label %347

347:                                              ; preds = %340, %333
  %348 = phi float [ %339, %333 ], [ %346, %340 ]
  %349 = fsub float %319, %348
  %350 = load ptr, ptr %16, align 8, !tbaa !9
  %351 = load i32, ptr %21, align 4, !tbaa !5
  %352 = sub nsw i32 %351, 2
  %353 = sext i32 %352 to i64
  %354 = getelementptr inbounds float, ptr %350, i64 %353
  %355 = load float, ptr %354, align 4, !tbaa !16
  %356 = load ptr, ptr %13, align 8, !tbaa !9
  %357 = load i32, ptr %21, align 4, !tbaa !5
  %358 = sub nsw i32 %357, 2
  %359 = sext i32 %358 to i64
  %360 = getelementptr inbounds float, ptr %356, i64 %359
  %361 = load float, ptr %360, align 4, !tbaa !16
  %362 = fcmp oge float %355, %361
  br i1 %362, label %363, label %370

363:                                              ; preds = %347
  %364 = load ptr, ptr %13, align 8, !tbaa !9
  %365 = load i32, ptr %21, align 4, !tbaa !5
  %366 = sub nsw i32 %365, 2
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds float, ptr %364, i64 %367
  %369 = load float, ptr %368, align 4, !tbaa !16
  br label %377

370:                                              ; preds = %347
  %371 = load ptr, ptr %16, align 8, !tbaa !9
  %372 = load i32, ptr %21, align 4, !tbaa !5
  %373 = sub nsw i32 %372, 2
  %374 = sext i32 %373 to i64
  %375 = getelementptr inbounds float, ptr %371, i64 %374
  %376 = load float, ptr %375, align 4, !tbaa !16
  br label %377

377:                                              ; preds = %370, %363
  %378 = phi float [ %369, %363 ], [ %376, %370 ]
  %379 = load ptr, ptr %15, align 8, !tbaa !9
  %380 = load i32, ptr %21, align 4, !tbaa !5
  %381 = sub nsw i32 %380, 2
  %382 = sext i32 %381 to i64
  %383 = getelementptr inbounds float, ptr %379, i64 %382
  %384 = load float, ptr %383, align 4, !tbaa !16
  %385 = fsub float %378, %384
  %386 = fadd float %349, %385
  br label %388

387:                                              ; preds = %306
  br label %388

388:                                              ; preds = %387, %377
  %389 = phi float [ %386, %377 ], [ 0.000000e+00, %387 ]
  br label %390

390:                                              ; preds = %388, %292
  %391 = phi float [ %305, %292 ], [ %389, %388 ]
  %392 = fpext float %391 to double
  br label %393

393:                                              ; preds = %390, %269
  %394 = phi double [ %284, %269 ], [ %392, %390 ]
  br label %395

395:                                              ; preds = %393, %253
  %396 = phi double [ %261, %253 ], [ %394, %393 ]
  %397 = fmul double %245, %396
  %398 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %399 = getelementptr inbounds %struct.TA_LibcPriv, ptr %398, i32 0, i32 8
  %400 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %399, i64 0, i64 0
  %401 = getelementptr inbounds %struct.TA_CandleSetting, ptr %400, i32 0, i32 1
  %402 = load i32, ptr %401, align 4, !tbaa !15
  %403 = icmp eq i32 %402, 2
  %404 = zext i1 %403 to i64
  %405 = select i1 %403, double 2.000000e+00, double 1.000000e+00
  %406 = fdiv double %397, %405
  %407 = fcmp ogt double %240, %406
  br i1 %407, label %408, label %558

408:                                              ; preds = %395
  %409 = load ptr, ptr %16, align 8, !tbaa !9
  %410 = load i32, ptr %21, align 4, !tbaa !5
  %411 = sub nsw i32 %410, 1
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds float, ptr %409, i64 %412
  %414 = load float, ptr %413, align 4, !tbaa !16
  %415 = load ptr, ptr %13, align 8, !tbaa !9
  %416 = load i32, ptr %21, align 4, !tbaa !5
  %417 = sub nsw i32 %416, 1
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds float, ptr %415, i64 %418
  %420 = load float, ptr %419, align 4, !tbaa !16
  %421 = fcmp oge float %414, %420
  %422 = zext i1 %421 to i64
  %423 = select i1 %421, i32 1, i32 -1
  %424 = icmp eq i32 %423, -1
  br i1 %424, label %425, label %558

425:                                              ; preds = %408
  %426 = load ptr, ptr %13, align 8, !tbaa !9
  %427 = load i32, ptr %21, align 4, !tbaa !5
  %428 = sub nsw i32 %427, 1
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds float, ptr %426, i64 %429
  %431 = load float, ptr %430, align 4, !tbaa !16
  %432 = load ptr, ptr %16, align 8, !tbaa !9
  %433 = load i32, ptr %21, align 4, !tbaa !5
  %434 = sub nsw i32 %433, 1
  %435 = sext i32 %434 to i64
  %436 = getelementptr inbounds float, ptr %432, i64 %435
  %437 = load float, ptr %436, align 4, !tbaa !16
  %438 = fcmp olt float %431, %437
  br i1 %438, label %439, label %446

439:                                              ; preds = %425
  %440 = load ptr, ptr %13, align 8, !tbaa !9
  %441 = load i32, ptr %21, 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
  br label %453

446:                                              ; preds = %425
  %447 = load ptr, ptr %16, align 8, !tbaa !9
  %448 = load i32, ptr %21, align 4, !tbaa !5
  %449 = sub nsw i32 %448, 1
  %450 = sext i32 %449 to i64
  %451 = getelementptr inbounds float, ptr %447, i64 %450
  %452 = load float, ptr %451, align 4, !tbaa !16
  br label %453

453:                                              ; preds = %446, %439
  %454 = phi float [ %445, %439 ], [ %452, %446 ]
  %455 = load ptr, ptr %13, align 8, !tbaa !9
  %456 = load i32, ptr %21, align 4, !tbaa !5
  %457 = sub nsw i32 %456, 2
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds float, ptr %455, i64 %458
  %460 = load float, ptr %459, align 4, !tbaa !16
  %461 = load ptr, ptr %16, align 8, !tbaa !9
  %462 = load i32, ptr %21, align 4, !tbaa !5
  %463 = sub nsw i32 %462, 2
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds float, ptr %461, i64 %464
  %466 = load float, ptr %465, align 4, !tbaa !16
  %467 = fcmp ogt float %460, %466
  br i1 %467, label %468, label %475

468:                                              ; preds = %453
  %469 = load ptr, ptr %13, align 8, !tbaa !9
  %470 = load i32, ptr %21, align 4, !tbaa !5
  %471 = sub nsw i32 %470, 2
  %472 = sext i32 %471 to i64
  %473 = getelementptr inbounds float, ptr %469, i64 %472
  %474 = load float, ptr %473, align 4, !tbaa !16
  br label %482

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

482:                                              ; preds = %475, %468
  %483 = phi float [ %474, %468 ], [ %481, %475 ]
  %484 = fcmp ogt float %454, %483
  br i1 %484, label %485, label %558

485:                                              ; preds = %482
  %486 = load ptr, ptr %16, align 8, !tbaa !9
  %487 = load i32, ptr %21, align 4, !tbaa !5
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds float, ptr %486, i64 %488
  %490 = load float, ptr %489, align 4, !tbaa !16
  %491 = load ptr, ptr %13, align 8, !tbaa !9
  %492 = load i32, ptr %21, align 4, !tbaa !5
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds float, ptr %491, i64 %493
  %495 = load float, ptr %494, align 4, !tbaa !16
  %496 = fcmp oge float %490, %495
  %497 = zext i1 %496 to i64
  %498 = select i1 %496, i32 1, i32 -1
  %499 = icmp eq i32 %498, -1
  br i1 %499, label %500, label %558

500:                                              ; preds = %485
  %501 = load ptr, ptr %13, align 8, !tbaa !9
  %502 = load i32, ptr %21, align 4, !tbaa !5
  %503 = sext i32 %502 to i64
  %504 = getelementptr inbounds float, ptr %501, i64 %503
  %505 = load float, ptr %504, align 4, !tbaa !16
  %506 = load ptr, ptr %13, align 8, !tbaa !9
  %507 = load i32, ptr %21, align 4, !tbaa !5
  %508 = sub nsw i32 %507, 1
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds float, ptr %506, i64 %509
  %511 = load float, ptr %510, align 4, !tbaa !16
  %512 = fcmp olt float %505, %511
  br i1 %512, label %513, label %558

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

526:                                              ; preds = %513
  %527 = load ptr, ptr %16, align 8, !tbaa !9
  %528 = load i32, ptr %21, align 4, !tbaa !5
  %529 = sext i32 %528 to i64
  %530 = getelementptr inbounds float, ptr %527, i64 %529
  %531 = load float, ptr %530, align 4, !tbaa !16
  %532 = load ptr, ptr %13, align 8, !tbaa !9
  %533 = load i32, ptr %21, align 4, !tbaa !5
  %534 = sub nsw i32 %533, 2
  %535 = sext i32 %534 to i64
  %536 = getelementptr inbounds float, ptr %532, i64 %535
  %537 = load float, ptr %536, align 4, !tbaa !16
  %538 = fcmp ogt float %531, %537
  br i1 %538, label %539, label %558

539:                                              ; preds = %526
  %540 = load ptr, ptr %16, align 8, !tbaa !9
  %541 = load i32, ptr %21, align 4, !tbaa !5
  %542 = sext i32 %541 to i64
  %543 = getelementptr inbounds float, ptr %540, i64 %542
  %544 = load float, ptr %543, align 4, !tbaa !16
  %545 = load ptr, ptr %16, align 8, !tbaa !9
  %546 = load i32, ptr %21, align 4, !tbaa !5
  %547 = sub nsw i32 %546, 2
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds float, ptr %545, i64 %548
  %550 = load float, ptr %549, align 4, !tbaa !16
  %551 = fcmp olt float %544, %550
  br i1 %551, label %552, label %558

552:                                              ; preds = %539
  %553 = load ptr, ptr %19, align 8, !tbaa !9
  %554 = load i32, ptr %22, align 4, !tbaa !5
  %555 = add nsw i32 %554, 1
  store i32 %555, ptr %22, align 4, !tbaa !5
  %556 = sext i32 %554 to i64
  %557 = getelementptr inbounds i32, ptr %553, i64 %556
  store i32 -100, ptr %557, align 4, !tbaa !5
  br label %564

558:                                              ; preds = %539, %526, %513, %500, %485, %482, %408, %395, %208
  %559 = load ptr, ptr %19, align 8, !tbaa !9
  %560 = load i32, ptr %22, align 4, !tbaa !5
  %561 = add nsw i32 %560, 1
  store i32 %561, ptr %22, align 4, !tbaa !5
  %562 = sext i32 %560 to i64
  %563 = getelementptr inbounds i32, ptr %559, i64 %562
  store i32 0, ptr %563, align 4, !tbaa !5
  br label %564

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

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

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

594:                                              ; preds = %587
  %595 = load ptr, ptr %14, align 8, !tbaa !9
  %596 = load i32, ptr %21, align 4, !tbaa !5
  %597 = sub nsw i32 %596, 2
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds float, ptr %595, i64 %598
  %600 = load float, ptr %599, align 4, !tbaa !16
  %601 = load ptr, ptr %15, align 8, !tbaa !9
  %602 = load i32, ptr %21, align 4, !tbaa !5
  %603 = sub nsw i32 %602, 2
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds float, ptr %601, i64 %604
  %606 = load float, ptr %605, align 4, !tbaa !16
  %607 = fsub float %600, %606
  br label %692

608:                                              ; preds = %587
  %609 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %610 = getelementptr inbounds %struct.TA_LibcPriv, ptr %609, i32 0, i32 8
  %611 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %610, i64 0, i64 0
  %612 = getelementptr inbounds %struct.TA_CandleSetting, ptr %611, i32 0, i32 1
  %613 = load i32, ptr %612, align 4, !tbaa !15
  %614 = icmp eq i32 %613, 2
  br i1 %614, label %615, label %689

615:                                              ; preds = %608
  %616 = load ptr, ptr %14, align 8, !tbaa !9
  %617 = load i32, ptr %21, align 4, !tbaa !5
  %618 = sub nsw i32 %617, 2
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds float, ptr %616, i64 %619
  %621 = load float, ptr %620, align 4, !tbaa !16
  %622 = load ptr, ptr %16, align 8, !tbaa !9
  %623 = load i32, ptr %21, align 4, !tbaa !5
  %624 = sub nsw i32 %623, 2
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds float, ptr %622, i64 %625
  %627 = load float, ptr %626, align 4, !tbaa !16
  %628 = load ptr, ptr %13, align 8, !tbaa !9
  %629 = load i32, ptr %21, align 4, !tbaa !5
  %630 = sub nsw i32 %629, 2
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds float, ptr %628, i64 %631
  %633 = load float, ptr %632, align 4, !tbaa !16
  %634 = fcmp oge float %627, %633
  br i1 %634, label %635, label %642

635:                                              ; preds = %615
  %636 = load ptr, ptr %16, align 8, !tbaa !9
  %637 = load i32, ptr %21, align 4, !tbaa !5
  %638 = sub nsw i32 %637, 2
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds float, ptr %636, i64 %639
  %641 = load float, ptr %640, align 4, !tbaa !16
  br label %649

642:                                              ; preds = %615
  %643 = load ptr, ptr %13, align 8, !tbaa !9
  %644 = load i32, ptr %21, align 4, !tbaa !5
  %645 = sub nsw i32 %644, 2
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds float, ptr %643, i64 %646
  %648 = load float, ptr %647, align 4, !tbaa !16
  br label %649

649:                                              ; preds = %642, %635
  %650 = phi float [ %641, %635 ], [ %648, %642 ]
  %651 = fsub float %621, %650
  %652 = load ptr, ptr %16, align 8, !tbaa !9
  %653 = load i32, ptr %21, align 4, !tbaa !5
  %654 = sub nsw i32 %653, 2
  %655 = sext i32 %654 to i64
  %656 = getelementptr inbounds float, ptr %652, i64 %655
  %657 = load float, ptr %656, align 4, !tbaa !16
  %658 = load ptr, ptr %13, align 8, !tbaa !9
  %659 = load i32, ptr %21, align 4, !tbaa !5
  %660 = sub nsw i32 %659, 2
  %661 = sext i32 %660 to i64
  %662 = getelementptr inbounds float, ptr %658, i64 %661
  %663 = load float, ptr %662, align 4, !tbaa !16
  %664 = fcmp oge float %657, %663
  br i1 %664, label %665, label %672

665:                                              ; preds = %649
  %666 = load ptr, ptr %13, align 8, !tbaa !9
  %667 = load i32, ptr %21, align 4, !tbaa !5
  %668 = sub nsw i32 %667, 2
  %669 = sext i32 %668 to i64
  %670 = getelementptr inbounds float, ptr %666, i64 %669
  %671 = load float, ptr %670, align 4, !tbaa !16
  br label %679

672:                                              ; preds = %649
  %673 = load ptr, ptr %16, align 8, !tbaa !9
  %674 = load i32, ptr %21, align 4, !tbaa !5
  %675 = sub nsw i32 %674, 2
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds float, ptr %673, i64 %676
  %678 = load float, ptr %677, align 4, !tbaa !16
  br label %679

679:                                              ; preds = %672, %665
  %680 = phi float [ %671, %665 ], [ %678, %672 ]
  %681 = load ptr, ptr %15, align 8, !tbaa !9
  %682 = load i32, ptr %21, align 4, !tbaa !5
  %683 = sub nsw i32 %682, 2
  %684 = sext i32 %683 to i64
  %685 = getelementptr inbounds float, ptr %681, i64 %684
  %686 = load float, ptr %685, align 4, !tbaa !16
  %687 = fsub float %680, %686
  %688 = fadd float %651, %687
  br label %690

689:                                              ; preds = %608
  br label %690

690:                                              ; preds = %689, %679
  %691 = phi float [ %688, %679 ], [ 0.000000e+00, %689 ]
  br label %692

692:                                              ; preds = %690, %594
  %693 = phi float [ %607, %594 ], [ %691, %690 ]
  %694 = fpext float %693 to double
  br label %695

695:                                              ; preds = %692, %571
  %696 = phi double [ %586, %571 ], [ %694, %692 ]
  %697 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %698 = getelementptr inbounds %struct.TA_LibcPriv, ptr %697, i32 0, i32 8
  %699 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %698, i64 0, i64 0
  %700 = getelementptr inbounds %struct.TA_CandleSetting, ptr %699, i32 0, i32 1
  %701 = load i32, ptr %700, align 4, !tbaa !15
  %702 = icmp eq i32 %701, 0
  br i1 %702, label %703, label %717

703:                                              ; preds = %695
  %704 = load ptr, ptr %16, align 8, !tbaa !9
  %705 = load i32, ptr %23, align 4, !tbaa !5
  %706 = sext i32 %705 to i64
  %707 = getelementptr inbounds float, ptr %704, i64 %706
  %708 = load float, ptr %707, align 4, !tbaa !16
  %709 = load ptr, ptr %13, align 8, !tbaa !9
  %710 = load i32, ptr %23, align 4, !tbaa !5
  %711 = sext i32 %710 to i64
  %712 = getelementptr inbounds float, ptr %709, i64 %711
  %713 = load float, ptr %712, align 4, !tbaa !16
  %714 = fsub float %708, %713
  %715 = fpext float %714 to double
  %716 = call double @llvm.fabs.f64(double %715)
  br label %813

717:                                              ; preds = %695
  %718 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %719 = getelementptr inbounds %struct.TA_LibcPriv, ptr %718, i32 0, i32 8
  %720 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %719, i64 0, i64 0
  %721 = getelementptr inbounds %struct.TA_CandleSetting, ptr %720, i32 0, i32 1
  %722 = load i32, ptr %721, align 4, !tbaa !15
  %723 = icmp eq i32 %722, 1
  br i1 %723, label %724, label %736

724:                                              ; preds = %717
  %725 = load ptr, ptr %14, align 8, !tbaa !9
  %726 = load i32, ptr %23, 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
  %730 = load ptr, ptr %15, align 8, !tbaa !9
  %731 = load i32, ptr %23, align 4, !tbaa !5
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds float, ptr %730, i64 %732
  %734 = load float, ptr %733, align 4, !tbaa !16
  %735 = fsub float %729, %734
  br label %810

736:                                              ; preds = %717
  %737 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %738 = getelementptr inbounds %struct.TA_LibcPriv, ptr %737, i32 0, i32 8
  %739 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %738, i64 0, i64 0
  %740 = getelementptr inbounds %struct.TA_CandleSetting, ptr %739, i32 0, i32 1
  %741 = load i32, ptr %740, align 4, !tbaa !15
  %742 = icmp eq i32 %741, 2
  br i1 %742, label %743, label %807

743:                                              ; preds = %736
  %744 = load ptr, ptr %14, align 8, !tbaa !9
  %745 = load i32, ptr %23, align 4, !tbaa !5
  %746 = sext i32 %745 to i64
  %747 = getelementptr inbounds float, ptr %744, i64 %746
  %748 = load float, ptr %747, align 4, !tbaa !16
  %749 = load ptr, ptr %16, align 8, !tbaa !9
  %750 = load i32, ptr %23, align 4, !tbaa !5
  %751 = sext i32 %750 to i64
  %752 = getelementptr inbounds float, ptr %749, i64 %751
  %753 = load float, ptr %752, align 4, !tbaa !16
  %754 = load ptr, ptr %13, align 8, !tbaa !9
  %755 = load i32, ptr %23, align 4, !tbaa !5
  %756 = sext i32 %755 to i64
  %757 = getelementptr inbounds float, ptr %754, i64 %756
  %758 = load float, ptr %757, align 4, !tbaa !16
  %759 = fcmp oge float %753, %758
  br i1 %759, label %760, label %766

760:                                              ; preds = %743
  %761 = load ptr, ptr %16, align 8, !tbaa !9
  %762 = load i32, ptr %23, align 4, !tbaa !5
  %763 = sext i32 %762 to i64
  %764 = getelementptr inbounds float, ptr %761, i64 %763
  %765 = load float, ptr %764, align 4, !tbaa !16
  br label %772

766:                                              ; preds = %743
  %767 = load ptr, ptr %13, align 8, !tbaa !9
  %768 = load i32, ptr %23, align 4, !tbaa !5
  %769 = sext i32 %768 to i64
  %770 = getelementptr inbounds float, ptr %767, i64 %769
  %771 = load float, ptr %770, align 4, !tbaa !16
  br label %772

772:                                              ; preds = %766, %760
  %773 = phi float [ %765, %760 ], [ %771, %766 ]
  %774 = fsub float %748, %773
  %775 = load ptr, ptr %16, align 8, !tbaa !9
  %776 = load i32, ptr %23, align 4, !tbaa !5
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds float, ptr %775, i64 %777
  %779 = load float, ptr %778, align 4, !tbaa !16
  %780 = load ptr, ptr %13, align 8, !tbaa !9
  %781 = load i32, ptr %23, align 4, !tbaa !5
  %782 = sext i32 %781 to i64
  %783 = getelementptr inbounds float, ptr %780, i64 %782
  %784 = load float, ptr %783, align 4, !tbaa !16
  %785 = fcmp oge float %779, %784
  br i1 %785, label %786, label %792

786:                                              ; preds = %772
  %787 = load ptr, ptr %13, align 8, !tbaa !9
  %788 = load i32, ptr %23, align 4, !tbaa !5
  %789 = sext i32 %788 to i64
  %790 = getelementptr inbounds float, ptr %787, i64 %789
  %791 = load float, ptr %790, align 4, !tbaa !16
  br label %798

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

798:                                              ; preds = %792, %786
  %799 = phi float [ %791, %786 ], [ %797, %792 ]
  %800 = load ptr, ptr %15, align 8, !tbaa !9
  %801 = load i32, ptr %23, align 4, !tbaa !5
  %802 = sext i32 %801 to i64
  %803 = getelementptr inbounds float, ptr %800, i64 %802
  %804 = load float, ptr %803, align 4, !tbaa !16
  %805 = fsub float %799, %804
  %806 = fadd float %774, %805
  br label %808

807:                                              ; preds = %736
  br label %808

808:                                              ; preds = %807, %798
  %809 = phi float [ %806, %798 ], [ 0.000000e+00, %807 ]
  br label %810

810:                                              ; preds = %808, %724
  %811 = phi float [ %735, %724 ], [ %809, %808 ]
  %812 = fpext float %811 to double
  br label %813

813:                                              ; preds = %810, %703
  %814 = phi double [ %716, %703 ], [ %812, %810 ]
  %815 = fsub double %696, %814
  %816 = load double, ptr %20, align 8, !tbaa !11
  %817 = fadd double %816, %815
  store double %817, ptr %20, align 8, !tbaa !11
  %818 = load i32, ptr %21, align 4, !tbaa !5
  %819 = add nsw i32 %818, 1
  store i32 %819, ptr %21, align 4, !tbaa !5
  %820 = load i32, ptr %23, align 4, !tbaa !5
  %821 = add nsw i32 %820, 1
  store i32 %821, ptr %23, align 4, !tbaa !5
  br label %822

822:                                              ; preds = %813
  %823 = load i32, ptr %21, align 4, !tbaa !5
  %824 = load i32, ptr %12, align 4, !tbaa !5
  %825 = icmp sle i32 %823, %824
  br i1 %825, label %208, label %826, !llvm.loop !21

826:                                              ; preds = %822
  %827 = load i32, ptr %22, align 4, !tbaa !5
  %828 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 %827, ptr %828, align 4, !tbaa !5
  %829 = load i32, ptr %11, align 4, !tbaa !5
  %830 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 %829, ptr %830, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %25, align 4
  br label %831

831:                                              ; preds = %826, %65, %53, %49, %36, %28
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  %832 = load i32, ptr %10, align 4
  ret i32 %832
}

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !6, i64 8}
!14 = !{!"", !6, i64 0, !6, i64 4, !6, i64 8, !12, i64 16}
!15 = !{!14, !6, i64 4}
!16 = !{!17, !17, i64 0}
!17 = !{!"float", !7, i64 0}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.mustprogress"}
!20 = !{!14, !12, i64 16}
!21 = distinct !{!21, !19}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@TA_Globals = external local_unnamed_addr global ptr, align 8

; Function Attrs: nounwind uwtable
declare dso_local i32 @TA_CDL2CROWS_Lookback() local_unnamed_addr #0

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

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

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

25:                                               ; preds = %21
  %26 = add nsw i32 %spec.select, -2
  %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 = icmp sgt i32 %29, 0
  br i1 %31, label %.lr.ph, label %.preheader

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

.lr.ph.split.us278.preheader:                     ; preds = %.lr.ph
  %34 = sext i32 %30 to i64
  %35 = sext i32 %26 to i64
  br label %.lr.ph.split.us278

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

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

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

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

.preheader:                                       ; preds = %.lr.ph.split.us278, %.lr.ph.split.us272, %.lr.ph.split.us, %.lr.ph, %25
  %.0206.lcssa = phi double [ 0.000000e+00, %25 ], [ 0.000000e+00, %.lr.ph ], [ %47, %.lr.ph.split.us ], [ %55, %.lr.ph.split.us272 ], [ %71, %.lr.ph.split.us278 ]
  %73 = getelementptr inbounds i8, ptr %27, i64 212
  %74 = getelementptr inbounds i8, ptr %27, i64 224
  %75 = sext i32 %22 to i64
  %76 = zext nneg i32 %0 to i64
  %smax = tail call i64 @llvm.smax.i64(i64 %75, i64 %76)
  %77 = sext i32 %1 to i64
  %78 = sext i32 %30 to i64
  br label %79

79:                                               ; preds = %.preheader, %191
  %indvars.iv300 = phi i64 [ %78, %.preheader ], [ %indvars.iv.next301, %191 ]
  %indvars.iv298 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next299, %191 ]
  %indvars.iv296 = phi i64 [ %smax, %.preheader ], [ %indvars.iv.next297, %191 ]
  %.1207 = phi double [ %.0206.lcssa, %.preheader ], [ %195, %191 ]
  %80 = add nsw i64 %indvars.iv296, -2
  %81 = getelementptr inbounds float, ptr %5, i64 %80
  %82 = load float, ptr %81, align 4, !tbaa !15
  %83 = getelementptr inbounds float, ptr %2, i64 %80
  %84 = load float, ptr %83, align 4, !tbaa !15
  %85 = fcmp ult float %82, %84
  br i1 %85, label %145, label %86

86:                                               ; preds = %79
  %87 = fsub float %82, %84
  %88 = tail call float @llvm.fabs.f32(float %87)
  %89 = fpext float %88 to double
  %90 = load double, ptr %74, align 8, !tbaa !19
  %91 = load i32, ptr %28, align 8, !tbaa !11
  %.not245 = icmp eq i32 %91, 0
  br i1 %.not245, label %95, label %92

92:                                               ; preds = %86
  %93 = sitofp i32 %91 to double
  %94 = fdiv double %.1207, %93
  %.pre = load i32, ptr %73, align 4, !tbaa !14
  br label %114

95:                                               ; preds = %86
  %96 = load i32, ptr %73, align 4, !tbaa !14
  switch i32 %96, label %111 [
    i32 0, label %.thread305
    i32 1, label %97
    i32 2, label %103
  ]

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

103:                                              ; preds = %95
  %104 = getelementptr inbounds float, ptr %3, i64 %80
  %105 = load float, ptr %104, align 4, !tbaa !15
  %106 = fsub float %105, %82
  %107 = getelementptr inbounds float, ptr %4, i64 %80
  %108 = load float, ptr %107, align 4, !tbaa !15
  %109 = fsub float %84, %108
  %110 = fadd float %106, %109
  br label %111

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

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

118:                                              ; preds = %114
  br label %.thread305

.thread305:                                       ; preds = %95, %114, %118
  %.pn = phi double [ %116, %118 ], [ %116, %114 ], [ %89, %95 ]
  %119 = phi double [ 2.000000e+00, %118 ], [ 1.000000e+00, %114 ], [ 1.000000e+00, %95 ]
  %120 = fmul double %90, %.pn
  %121 = fdiv double %120, %119
  %122 = fcmp olt double %121, %89
  br i1 %122, label %123, label %145

123:                                              ; preds = %.thread305
  %124 = add nsw i64 %indvars.iv296, -1
  %125 = getelementptr inbounds float, ptr %5, i64 %124
  %126 = load float, ptr %125, align 4, !tbaa !15
  %127 = getelementptr inbounds float, ptr %2, i64 %124
  %128 = load float, ptr %127, align 4, !tbaa !15
  %129 = fcmp ult float %126, %128
  br i1 %129, label %130, label %145

130:                                              ; preds = %123
  %131 = fcmp olt float %128, %126
  %.250 = select i1 %131, float %128, float %126
  %132 = fcmp ogt float %84, %82
  %133 = select i1 %132, float %84, float %82
  %134 = fcmp ogt float %.250, %133
  br i1 %134, label %135, label %145

135:                                              ; preds = %130
  %136 = getelementptr inbounds float, ptr %5, i64 %indvars.iv296
  %137 = load float, ptr %136, align 4, !tbaa !15
  %138 = getelementptr inbounds float, ptr %2, i64 %indvars.iv296
  %139 = load float, ptr %138, align 4, !tbaa !15
  %140 = fcmp ult float %137, %139
  %141 = fcmp olt float %139, %128
  %or.cond259 = and i1 %140, %141
  %142 = fcmp ogt float %139, %126
  %or.cond260 = and i1 %142, %or.cond259
  %143 = fcmp ogt float %137, %84
  %or.cond261 = and i1 %143, %or.cond260
  %144 = fcmp olt float %137, %82
  %or.cond262 = and i1 %144, %or.cond261
  br i1 %or.cond262, label %146, label %145

145:                                              ; preds = %135, %130, %123, %.thread305, %79
  br label %146

146:                                              ; preds = %135, %145
  %.sink = phi i32 [ 0, %145 ], [ -100, %135 ]
  %147 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv298
  store i32 %.sink, ptr %147, align 4, !tbaa !5
  %indvars.iv.next299 = add nuw nsw i64 %indvars.iv298, 1
  %148 = load i32, ptr %73, align 4, !tbaa !14
  switch i32 %148, label %191 [
    i32 0, label %.thread
    i32 1, label %.thread255
    i32 2, label %.thread257
  ]

.thread:                                          ; preds = %146
  %149 = fsub float %82, %84
  %150 = tail call float @llvm.fabs.f32(float %149)
  %151 = fpext float %150 to double
  %152 = getelementptr inbounds float, ptr %5, i64 %indvars.iv300
  %153 = load float, ptr %152, align 4, !tbaa !15
  %154 = getelementptr inbounds float, ptr %2, i64 %indvars.iv300
  %155 = load float, ptr %154, align 4, !tbaa !15
  %156 = fsub float %153, %155
  %157 = tail call float @llvm.fabs.f32(float %156)
  br label %191

.thread255:                                       ; preds = %146
  %158 = getelementptr inbounds float, ptr %3, i64 %80
  %159 = load float, ptr %158, align 4, !tbaa !15
  %160 = getelementptr inbounds float, ptr %4, i64 %80
  %161 = load float, ptr %160, align 4, !tbaa !15
  %162 = fsub float %159, %161
  %163 = fpext float %162 to double
  %164 = getelementptr inbounds float, ptr %3, i64 %indvars.iv300
  %165 = load float, ptr %164, align 4, !tbaa !15
  %166 = getelementptr inbounds float, ptr %4, i64 %indvars.iv300
  %167 = load float, ptr %166, align 4, !tbaa !15
  %168 = fsub float %165, %167
  br label %191

.thread257:                                       ; preds = %146
  %169 = getelementptr inbounds float, ptr %3, i64 %80
  %170 = load float, ptr %169, align 4, !tbaa !15
  %.251 = select i1 %85, float %84, float %82
  %171 = fsub float %170, %.251
  %172 = select i1 %85, float %82, float %84
  %173 = getelementptr inbounds float, ptr %4, i64 %80
  %174 = load float, ptr %173, align 4, !tbaa !15
  %175 = fsub float %172, %174
  %176 = fadd float %171, %175
  %177 = fpext float %176 to double
  %178 = getelementptr inbounds float, ptr %3, i64 %indvars.iv300
  %179 = load float, ptr %178, align 4, !tbaa !15
  %180 = getelementptr inbounds float, ptr %5, i64 %indvars.iv300
  %181 = load float, ptr %180, align 4, !tbaa !15
  %182 = getelementptr inbounds float, ptr %2, i64 %indvars.iv300
  %183 = load float, ptr %182, align 4, !tbaa !15
  %184 = fcmp ult float %181, %183
  %.252 = select i1 %184, float %183, float %181
  %185 = fsub float %179, %.252
  %186 = select i1 %184, float %181, float %183
  %187 = getelementptr inbounds float, ptr %4, i64 %indvars.iv300
  %188 = load float, ptr %187, align 4, !tbaa !15
  %189 = fsub float %186, %188
  %190 = fadd float %185, %189
  br label %191

191:                                              ; preds = %146, %.thread255, %.thread257, %.thread
  %192 = phi double [ %151, %.thread ], [ %163, %.thread255 ], [ %177, %.thread257 ], [ 0.000000e+00, %146 ]
  %.in246 = phi float [ %157, %.thread ], [ %168, %.thread255 ], [ %190, %.thread257 ], [ 0.000000e+00, %146 ]
  %193 = fpext float %.in246 to double
  %194 = fsub double %192, %193
  %195 = fadd double %.1207, %194
  %indvars.iv.next297 = add nuw nsw i64 %indvars.iv296, 1
  %indvars.iv.next301 = add nsw i64 %indvars.iv300, 1
  %.not247.not = icmp slt i64 %indvars.iv296, %77
  br i1 %.not247.not, label %79, label %196, !llvm.loop !20

196:                                              ; preds = %191
  %197 = trunc nuw i64 %indvars.iv.next299 to i32
  store i32 %197, ptr %7, align 4, !tbaa !5
  store i32 %spec.select, ptr %6, align 4, !tbaa !5
  br label %198

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

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

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !6, i64 8}
!12 = !{!"", !6, i64 0, !6, i64 4, !6, i64 8, !13, i64 16}
!13 = !{!"double", !7, i64 0}
!14 = !{!12, !6, i64 4}
!15 = !{!16, !16, i64 0}
!16 = !{!"float", !7, i64 0}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = !{!12, !13, i64 16}
!20 = distinct !{!20, !18}


; Effective O3 passes: ConstraintEliminationPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass