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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @TA_CDLTASUKIGAP(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 %1245

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

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

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

54:                                               ; preds = %50
  %55 = call i32 @TA_CDLTASUKIGAP_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 %1245

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

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

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

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

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

110:                                              ; preds = %103
  %111 = load ptr, ptr %14, align 8, !tbaa !9
  %112 = load i32, ptr %21, align 4, !tbaa !5
  %113 = sub nsw i32 %112, 1
  %114 = sext i32 %113 to i64
  %115 = getelementptr inbounds double, ptr %111, i64 %114
  %116 = load double, ptr %115, align 8, !tbaa !11
  %117 = load ptr, ptr %15, align 8, !tbaa !9
  %118 = load i32, ptr %21, align 4, !tbaa !5
  %119 = sub nsw i32 %118, 1
  %120 = sext i32 %119 to i64
  %121 = getelementptr inbounds double, ptr %117, i64 %120
  %122 = load double, ptr %121, align 8, !tbaa !11
  %123 = fsub double %116, %122
  br label %208

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

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

151:                                              ; preds = %131
  %152 = load ptr, ptr %16, align 8, !tbaa !9
  %153 = load i32, ptr %21, align 4, !tbaa !5
  %154 = sub nsw i32 %153, 1
  %155 = sext i32 %154 to i64
  %156 = getelementptr inbounds double, ptr %152, i64 %155
  %157 = load double, ptr %156, align 8, !tbaa !11
  br label %165

158:                                              ; preds = %131
  %159 = load ptr, ptr %13, align 8, !tbaa !9
  %160 = load i32, ptr %21, align 4, !tbaa !5
  %161 = sub nsw i32 %160, 1
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds double, ptr %159, i64 %162
  %164 = load double, ptr %163, align 8, !tbaa !11
  br label %165

165:                                              ; preds = %158, %151
  %166 = phi double [ %157, %151 ], [ %164, %158 ]
  %167 = fsub double %137, %166
  %168 = load ptr, ptr %16, align 8, !tbaa !9
  %169 = load i32, ptr %21, align 4, !tbaa !5
  %170 = sub nsw i32 %169, 1
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds double, ptr %168, i64 %171
  %173 = load double, ptr %172, align 8, !tbaa !11
  %174 = load ptr, ptr %13, align 8, !tbaa !9
  %175 = load i32, ptr %21, align 4, !tbaa !5
  %176 = sub nsw i32 %175, 1
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds double, ptr %174, i64 %177
  %179 = load double, ptr %178, align 8, !tbaa !11
  %180 = fcmp oge double %173, %179
  br i1 %180, label %181, label %188

181:                                              ; preds = %165
  %182 = load ptr, ptr %13, align 8, !tbaa !9
  %183 = load i32, ptr %21, align 4, !tbaa !5
  %184 = sub nsw i32 %183, 1
  %185 = sext i32 %184 to i64
  %186 = getelementptr inbounds double, ptr %182, i64 %185
  %187 = load double, ptr %186, align 8, !tbaa !11
  br label %195

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

195:                                              ; preds = %188, %181
  %196 = phi double [ %187, %181 ], [ %194, %188 ]
  %197 = load ptr, ptr %15, align 8, !tbaa !9
  %198 = load i32, ptr %21, align 4, !tbaa !5
  %199 = sub nsw i32 %198, 1
  %200 = sext i32 %199 to i64
  %201 = getelementptr inbounds double, ptr %197, i64 %200
  %202 = load double, ptr %201, align 8, !tbaa !11
  %203 = fsub double %196, %202
  %204 = fadd double %167, %203
  br label %206

205:                                              ; preds = %124
  br label %206

206:                                              ; preds = %205, %195
  %207 = phi double [ %204, %195 ], [ 0.000000e+00, %205 ]
  br label %208

208:                                              ; preds = %206, %110
  %209 = phi double [ %123, %110 ], [ %207, %206 ]
  br label %210

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

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

218:                                              ; preds = %1236, %216
  %219 = load ptr, ptr %13, align 8, !tbaa !9
  %220 = load i32, ptr %21, align 4, !tbaa !5
  %221 = sub nsw i32 %220, 1
  %222 = sext i32 %221 to i64
  %223 = getelementptr inbounds double, ptr %219, i64 %222
  %224 = load double, ptr %223, align 8, !tbaa !11
  %225 = load ptr, ptr %16, align 8, !tbaa !9
  %226 = load i32, ptr %21, align 4, !tbaa !5
  %227 = sub nsw i32 %226, 1
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds double, ptr %225, i64 %228
  %230 = load double, ptr %229, align 8, !tbaa !11
  %231 = fcmp olt double %224, %230
  br i1 %231, label %232, label %239

232:                                              ; preds = %218
  %233 = load ptr, ptr %13, align 8, !tbaa !9
  %234 = load i32, ptr %21, align 4, !tbaa !5
  %235 = sub nsw i32 %234, 1
  %236 = sext i32 %235 to i64
  %237 = getelementptr inbounds double, ptr %233, i64 %236
  %238 = load double, ptr %237, align 8, !tbaa !11
  br label %246

239:                                              ; preds = %218
  %240 = load ptr, ptr %16, align 8, !tbaa !9
  %241 = load i32, ptr %21, align 4, !tbaa !5
  %242 = sub nsw i32 %241, 1
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds double, ptr %240, i64 %243
  %245 = load double, ptr %244, align 8, !tbaa !11
  br label %246

246:                                              ; preds = %239, %232
  %247 = phi double [ %238, %232 ], [ %245, %239 ]
  %248 = load ptr, ptr %13, align 8, !tbaa !9
  %249 = load i32, ptr %21, align 4, !tbaa !5
  %250 = sub nsw i32 %249, 2
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds double, ptr %248, i64 %251
  %253 = load double, ptr %252, align 8, !tbaa !11
  %254 = load ptr, ptr %16, align 8, !tbaa !9
  %255 = load i32, ptr %21, align 4, !tbaa !5
  %256 = sub nsw i32 %255, 2
  %257 = sext i32 %256 to i64
  %258 = getelementptr inbounds double, ptr %254, i64 %257
  %259 = load double, ptr %258, align 8, !tbaa !11
  %260 = fcmp ogt double %253, %259
  br i1 %260, label %261, label %268

261:                                              ; preds = %246
  %262 = load ptr, ptr %13, align 8, !tbaa !9
  %263 = load i32, ptr %21, align 4, !tbaa !5
  %264 = sub nsw i32 %263, 2
  %265 = sext i32 %264 to i64
  %266 = getelementptr inbounds double, ptr %262, i64 %265
  %267 = load double, ptr %266, align 8, !tbaa !11
  br label %275

268:                                              ; preds = %246
  %269 = load ptr, ptr %16, align 8, !tbaa !9
  %270 = load i32, ptr %21, align 4, !tbaa !5
  %271 = sub nsw i32 %270, 2
  %272 = sext i32 %271 to i64
  %273 = getelementptr inbounds double, ptr %269, i64 %272
  %274 = load double, ptr %273, align 8, !tbaa !11
  br label %275

275:                                              ; preds = %268, %261
  %276 = phi double [ %267, %261 ], [ %274, %268 ]
  %277 = fcmp ogt double %247, %276
  br i1 %277, label %278, label %579

278:                                              ; preds = %275
  %279 = load ptr, ptr %16, align 8, !tbaa !9
  %280 = load i32, ptr %21, align 4, !tbaa !5
  %281 = sub nsw i32 %280, 1
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds double, ptr %279, i64 %282
  %284 = load double, ptr %283, align 8, !tbaa !11
  %285 = load ptr, ptr %13, align 8, !tbaa !9
  %286 = load i32, ptr %21, align 4, !tbaa !5
  %287 = sub nsw i32 %286, 1
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds double, ptr %285, i64 %288
  %290 = load double, ptr %289, align 8, !tbaa !11
  %291 = fcmp oge double %284, %290
  %292 = zext i1 %291 to i64
  %293 = select i1 %291, i32 1, i32 -1
  %294 = icmp eq i32 %293, 1
  br i1 %294, label %295, label %579

295:                                              ; preds = %278
  %296 = load ptr, ptr %16, align 8, !tbaa !9
  %297 = load i32, ptr %21, align 4, !tbaa !5
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds double, ptr %296, i64 %298
  %300 = load double, ptr %299, align 8, !tbaa !11
  %301 = load ptr, ptr %13, align 8, !tbaa !9
  %302 = load i32, ptr %21, align 4, !tbaa !5
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds double, ptr %301, i64 %303
  %305 = load double, ptr %304, align 8, !tbaa !11
  %306 = fcmp oge double %300, %305
  %307 = zext i1 %306 to i64
  %308 = select i1 %306, i32 1, i32 -1
  %309 = icmp eq i32 %308, -1
  br i1 %309, label %310, label %579

310:                                              ; preds = %295
  %311 = load ptr, ptr %13, align 8, !tbaa !9
  %312 = load i32, ptr %21, align 4, !tbaa !5
  %313 = sext i32 %312 to i64
  %314 = getelementptr inbounds double, ptr %311, i64 %313
  %315 = load double, ptr %314, align 8, !tbaa !11
  %316 = load ptr, ptr %16, align 8, !tbaa !9
  %317 = load i32, ptr %21, align 4, !tbaa !5
  %318 = sub nsw i32 %317, 1
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds double, ptr %316, i64 %319
  %321 = load double, ptr %320, align 8, !tbaa !11
  %322 = fcmp olt double %315, %321
  br i1 %322, label %323, label %579

323:                                              ; preds = %310
  %324 = load ptr, ptr %13, align 8, !tbaa !9
  %325 = load i32, ptr %21, align 4, !tbaa !5
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds double, ptr %324, i64 %326
  %328 = load double, ptr %327, align 8, !tbaa !11
  %329 = load ptr, ptr %13, align 8, !tbaa !9
  %330 = load i32, ptr %21, align 4, !tbaa !5
  %331 = sub nsw i32 %330, 1
  %332 = sext i32 %331 to i64
  %333 = getelementptr inbounds double, ptr %329, i64 %332
  %334 = load double, ptr %333, align 8, !tbaa !11
  %335 = fcmp ogt double %328, %334
  br i1 %335, label %336, label %579

336:                                              ; preds = %323
  %337 = load ptr, ptr %16, align 8, !tbaa !9
  %338 = load i32, ptr %21, align 4, !tbaa !5
  %339 = sext i32 %338 to i64
  %340 = getelementptr inbounds double, ptr %337, i64 %339
  %341 = load double, ptr %340, align 8, !tbaa !11
  %342 = load ptr, ptr %13, align 8, !tbaa !9
  %343 = load i32, ptr %21, align 4, !tbaa !5
  %344 = sub nsw i32 %343, 1
  %345 = sext i32 %344 to i64
  %346 = getelementptr inbounds double, ptr %342, i64 %345
  %347 = load double, ptr %346, align 8, !tbaa !11
  %348 = fcmp olt double %341, %347
  br i1 %348, label %349, label %579

349:                                              ; preds = %336
  %350 = load ptr, ptr %16, align 8, !tbaa !9
  %351 = load i32, ptr %21, align 4, !tbaa !5
  %352 = sext i32 %351 to i64
  %353 = getelementptr inbounds double, ptr %350, i64 %352
  %354 = load double, ptr %353, align 8, !tbaa !11
  %355 = load ptr, ptr %16, align 8, !tbaa !9
  %356 = load i32, ptr %21, align 4, !tbaa !5
  %357 = sub nsw i32 %356, 2
  %358 = sext i32 %357 to i64
  %359 = getelementptr inbounds double, ptr %355, i64 %358
  %360 = load double, ptr %359, align 8, !tbaa !11
  %361 = load ptr, ptr %13, align 8, !tbaa !9
  %362 = load i32, ptr %21, align 4, !tbaa !5
  %363 = sub nsw i32 %362, 2
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds double, ptr %361, i64 %364
  %366 = load double, ptr %365, align 8, !tbaa !11
  %367 = fcmp ogt double %360, %366
  br i1 %367, label %368, label %375

368:                                              ; preds = %349
  %369 = load ptr, ptr %16, align 8, !tbaa !9
  %370 = load i32, ptr %21, align 4, !tbaa !5
  %371 = sub nsw i32 %370, 2
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds double, ptr %369, i64 %372
  %374 = load double, ptr %373, align 8, !tbaa !11
  br label %382

375:                                              ; preds = %349
  %376 = load ptr, ptr %13, align 8, !tbaa !9
  %377 = load i32, ptr %21, align 4, !tbaa !5
  %378 = sub nsw i32 %377, 2
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds double, ptr %376, i64 %379
  %381 = load double, ptr %380, align 8, !tbaa !11
  br label %382

382:                                              ; preds = %375, %368
  %383 = phi double [ %374, %368 ], [ %381, %375 ]
  %384 = fcmp ogt double %354, %383
  br i1 %384, label %385, label %579

385:                                              ; preds = %382
  %386 = load ptr, ptr %16, align 8, !tbaa !9
  %387 = load i32, ptr %21, align 4, !tbaa !5
  %388 = sub nsw i32 %387, 1
  %389 = sext i32 %388 to i64
  %390 = getelementptr inbounds double, ptr %386, i64 %389
  %391 = load double, ptr %390, align 8, !tbaa !11
  %392 = load ptr, ptr %13, align 8, !tbaa !9
  %393 = load i32, ptr %21, align 4, !tbaa !5
  %394 = sub nsw i32 %393, 1
  %395 = sext i32 %394 to i64
  %396 = getelementptr inbounds double, ptr %392, i64 %395
  %397 = load double, ptr %396, align 8, !tbaa !11
  %398 = fsub double %391, %397
  %399 = call double @llvm.fabs.f64(double %398)
  %400 = load ptr, ptr %16, align 8, !tbaa !9
  %401 = load i32, ptr %21, align 4, !tbaa !5
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds double, ptr %400, i64 %402
  %404 = load double, ptr %403, align 8, !tbaa !11
  %405 = load ptr, ptr %13, align 8, !tbaa !9
  %406 = load i32, ptr %21, align 4, !tbaa !5
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds double, ptr %405, i64 %407
  %409 = load double, ptr %408, align 8, !tbaa !11
  %410 = fsub double %404, %409
  %411 = call double @llvm.fabs.f64(double %410)
  %412 = fsub double %399, %411
  %413 = call double @llvm.fabs.f64(double %412)
  %414 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %415 = getelementptr inbounds %struct.TA_LibcPriv, ptr %414, i32 0, i32 8
  %416 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %415, i64 0, i64 8
  %417 = getelementptr inbounds %struct.TA_CandleSetting, ptr %416, i32 0, i32 3
  %418 = load double, ptr %417, align 8, !tbaa !18
  %419 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %420 = getelementptr inbounds %struct.TA_LibcPriv, ptr %419, i32 0, i32 8
  %421 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %420, i64 0, i64 8
  %422 = getelementptr inbounds %struct.TA_CandleSetting, ptr %421, i32 0, i32 2
  %423 = load i32, ptr %422, align 8, !tbaa !13
  %424 = sitofp i32 %423 to double
  %425 = fcmp une double %424, 0.000000e+00
  br i1 %425, label %426, label %435

426:                                              ; preds = %385
  %427 = load double, ptr %20, align 8, !tbaa !11
  %428 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %429 = getelementptr inbounds %struct.TA_LibcPriv, ptr %428, i32 0, i32 8
  %430 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %429, i64 0, i64 8
  %431 = getelementptr inbounds %struct.TA_CandleSetting, ptr %430, i32 0, i32 2
  %432 = load i32, ptr %431, align 8, !tbaa !13
  %433 = sitofp i32 %432 to double
  %434 = fdiv double %427, %433
  br label %566

435:                                              ; preds = %385
  %436 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %437 = getelementptr inbounds %struct.TA_LibcPriv, ptr %436, i32 0, i32 8
  %438 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %437, i64 0, i64 8
  %439 = getelementptr inbounds %struct.TA_CandleSetting, ptr %438, i32 0, i32 1
  %440 = load i32, ptr %439, align 4, !tbaa !15
  %441 = icmp eq i32 %440, 0
  br i1 %441, label %442, label %457

442:                                              ; preds = %435
  %443 = load ptr, ptr %16, align 8, !tbaa !9
  %444 = load i32, ptr %21, align 4, !tbaa !5
  %445 = sub nsw i32 %444, 1
  %446 = sext i32 %445 to i64
  %447 = getelementptr inbounds double, ptr %443, i64 %446
  %448 = load double, ptr %447, align 8, !tbaa !11
  %449 = load ptr, ptr %13, align 8, !tbaa !9
  %450 = load i32, ptr %21, align 4, !tbaa !5
  %451 = sub nsw i32 %450, 1
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds double, ptr %449, i64 %452
  %454 = load double, ptr %453, align 8, !tbaa !11
  %455 = fsub double %448, %454
  %456 = call double @llvm.fabs.f64(double %455)
  br label %564

457:                                              ; preds = %435
  %458 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %459 = getelementptr inbounds %struct.TA_LibcPriv, ptr %458, i32 0, i32 8
  %460 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %459, i64 0, i64 8
  %461 = getelementptr inbounds %struct.TA_CandleSetting, ptr %460, i32 0, i32 1
  %462 = load i32, ptr %461, align 4, !tbaa !15
  %463 = icmp eq i32 %462, 1
  br i1 %463, label %464, label %478

464:                                              ; preds = %457
  %465 = load ptr, ptr %14, align 8, !tbaa !9
  %466 = load i32, ptr %21, align 4, !tbaa !5
  %467 = sub nsw i32 %466, 1
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds double, ptr %465, i64 %468
  %470 = load double, ptr %469, align 8, !tbaa !11
  %471 = load ptr, ptr %15, align 8, !tbaa !9
  %472 = load i32, ptr %21, align 4, !tbaa !5
  %473 = sub nsw i32 %472, 1
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds double, ptr %471, i64 %474
  %476 = load double, ptr %475, align 8, !tbaa !11
  %477 = fsub double %470, %476
  br label %562

478:                                              ; preds = %457
  %479 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %480 = getelementptr inbounds %struct.TA_LibcPriv, ptr %479, i32 0, i32 8
  %481 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %480, i64 0, i64 8
  %482 = getelementptr inbounds %struct.TA_CandleSetting, ptr %481, i32 0, i32 1
  %483 = load i32, ptr %482, align 4, !tbaa !15
  %484 = icmp eq i32 %483, 2
  br i1 %484, label %485, label %559

485:                                              ; preds = %478
  %486 = load ptr, ptr %14, align 8, !tbaa !9
  %487 = load i32, ptr %21, align 4, !tbaa !5
  %488 = sub nsw i32 %487, 1
  %489 = sext i32 %488 to i64
  %490 = getelementptr inbounds double, ptr %486, i64 %489
  %491 = load double, ptr %490, align 8, !tbaa !11
  %492 = load ptr, ptr %16, align 8, !tbaa !9
  %493 = load i32, ptr %21, align 4, !tbaa !5
  %494 = sub nsw i32 %493, 1
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds double, ptr %492, i64 %495
  %497 = load double, ptr %496, align 8, !tbaa !11
  %498 = load ptr, ptr %13, align 8, !tbaa !9
  %499 = load i32, ptr %21, align 4, !tbaa !5
  %500 = sub nsw i32 %499, 1
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds double, ptr %498, i64 %501
  %503 = load double, ptr %502, align 8, !tbaa !11
  %504 = fcmp oge double %497, %503
  br i1 %504, label %505, label %512

505:                                              ; preds = %485
  %506 = load ptr, ptr %16, 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 double, ptr %506, i64 %509
  %511 = load double, ptr %510, align 8, !tbaa !11
  br label %519

512:                                              ; preds = %485
  %513 = load ptr, ptr %13, align 8, !tbaa !9
  %514 = load i32, ptr %21, align 4, !tbaa !5
  %515 = sub nsw i32 %514, 1
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds double, ptr %513, i64 %516
  %518 = load double, ptr %517, align 8, !tbaa !11
  br label %519

519:                                              ; preds = %512, %505
  %520 = phi double [ %511, %505 ], [ %518, %512 ]
  %521 = fsub double %491, %520
  %522 = load ptr, ptr %16, align 8, !tbaa !9
  %523 = load i32, ptr %21, align 4, !tbaa !5
  %524 = sub nsw i32 %523, 1
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds double, ptr %522, i64 %525
  %527 = load double, ptr %526, align 8, !tbaa !11
  %528 = load ptr, ptr %13, align 8, !tbaa !9
  %529 = load i32, ptr %21, align 4, !tbaa !5
  %530 = sub nsw i32 %529, 1
  %531 = sext i32 %530 to i64
  %532 = getelementptr inbounds double, ptr %528, i64 %531
  %533 = load double, ptr %532, align 8, !tbaa !11
  %534 = fcmp oge double %527, %533
  br i1 %534, label %535, label %542

535:                                              ; preds = %519
  %536 = load ptr, ptr %13, align 8, !tbaa !9
  %537 = load i32, ptr %21, align 4, !tbaa !5
  %538 = sub nsw i32 %537, 1
  %539 = sext i32 %538 to i64
  %540 = getelementptr inbounds double, ptr %536, i64 %539
  %541 = load double, ptr %540, align 8, !tbaa !11
  br label %549

542:                                              ; preds = %519
  %543 = load ptr, ptr %16, align 8, !tbaa !9
  %544 = load i32, ptr %21, align 4, !tbaa !5
  %545 = sub nsw i32 %544, 1
  %546 = sext i32 %545 to i64
  %547 = getelementptr inbounds double, ptr %543, i64 %546
  %548 = load double, ptr %547, align 8, !tbaa !11
  br label %549

549:                                              ; preds = %542, %535
  %550 = phi double [ %541, %535 ], [ %548, %542 ]
  %551 = load ptr, ptr %15, align 8, !tbaa !9
  %552 = load i32, ptr %21, align 4, !tbaa !5
  %553 = sub nsw i32 %552, 1
  %554 = sext i32 %553 to i64
  %555 = getelementptr inbounds double, ptr %551, i64 %554
  %556 = load double, ptr %555, align 8, !tbaa !11
  %557 = fsub double %550, %556
  %558 = fadd double %521, %557
  br label %560

559:                                              ; preds = %478
  br label %560

560:                                              ; preds = %559, %549
  %561 = phi double [ %558, %549 ], [ 0.000000e+00, %559 ]
  br label %562

562:                                              ; preds = %560, %464
  %563 = phi double [ %477, %464 ], [ %561, %560 ]
  br label %564

564:                                              ; preds = %562, %442
  %565 = phi double [ %456, %442 ], [ %563, %562 ]
  br label %566

566:                                              ; preds = %564, %426
  %567 = phi double [ %434, %426 ], [ %565, %564 ]
  %568 = fmul double %418, %567
  %569 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %570 = getelementptr inbounds %struct.TA_LibcPriv, ptr %569, i32 0, i32 8
  %571 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %570, i64 0, i64 8
  %572 = getelementptr inbounds %struct.TA_CandleSetting, ptr %571, i32 0, i32 1
  %573 = load i32, ptr %572, align 4, !tbaa !15
  %574 = icmp eq i32 %573, 2
  %575 = zext i1 %574 to i64
  %576 = select i1 %574, double 2.000000e+00, double 1.000000e+00
  %577 = fdiv double %568, %576
  %578 = fcmp olt double %413, %577
  br i1 %578, label %940, label %579

579:                                              ; preds = %566, %382, %336, %323, %310, %295, %278, %275
  %580 = load ptr, ptr %13, align 8, !tbaa !9
  %581 = load i32, ptr %21, align 4, !tbaa !5
  %582 = sub nsw i32 %581, 1
  %583 = sext i32 %582 to i64
  %584 = getelementptr inbounds double, ptr %580, i64 %583
  %585 = load double, ptr %584, align 8, !tbaa !11
  %586 = load ptr, ptr %16, align 8, !tbaa !9
  %587 = load i32, ptr %21, align 4, !tbaa !5
  %588 = sub nsw i32 %587, 1
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds double, ptr %586, i64 %589
  %591 = load double, ptr %590, align 8, !tbaa !11
  %592 = fcmp ogt double %585, %591
  br i1 %592, label %593, label %600

593:                                              ; preds = %579
  %594 = load ptr, ptr %13, align 8, !tbaa !9
  %595 = load i32, ptr %21, align 4, !tbaa !5
  %596 = sub nsw i32 %595, 1
  %597 = sext i32 %596 to i64
  %598 = getelementptr inbounds double, ptr %594, i64 %597
  %599 = load double, ptr %598, align 8, !tbaa !11
  br label %607

600:                                              ; preds = %579
  %601 = load ptr, ptr %16, align 8, !tbaa !9
  %602 = load i32, ptr %21, align 4, !tbaa !5
  %603 = sub nsw i32 %602, 1
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds double, ptr %601, i64 %604
  %606 = load double, ptr %605, align 8, !tbaa !11
  br label %607

607:                                              ; preds = %600, %593
  %608 = phi double [ %599, %593 ], [ %606, %600 ]
  %609 = load ptr, ptr %13, align 8, !tbaa !9
  %610 = load i32, ptr %21, align 4, !tbaa !5
  %611 = sub nsw i32 %610, 2
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds double, ptr %609, i64 %612
  %614 = load double, ptr %613, align 8, !tbaa !11
  %615 = load ptr, ptr %16, align 8, !tbaa !9
  %616 = load i32, ptr %21, align 4, !tbaa !5
  %617 = sub nsw i32 %616, 2
  %618 = sext i32 %617 to i64
  %619 = getelementptr inbounds double, ptr %615, i64 %618
  %620 = load double, ptr %619, align 8, !tbaa !11
  %621 = fcmp olt double %614, %620
  br i1 %621, label %622, label %629

622:                                              ; preds = %607
  %623 = load ptr, ptr %13, align 8, !tbaa !9
  %624 = load i32, ptr %21, align 4, !tbaa !5
  %625 = sub nsw i32 %624, 2
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds double, ptr %623, i64 %626
  %628 = load double, ptr %627, align 8, !tbaa !11
  br label %636

629:                                              ; preds = %607
  %630 = load ptr, ptr %16, align 8, !tbaa !9
  %631 = load i32, ptr %21, align 4, !tbaa !5
  %632 = sub nsw i32 %631, 2
  %633 = sext i32 %632 to i64
  %634 = getelementptr inbounds double, ptr %630, i64 %633
  %635 = load double, ptr %634, align 8, !tbaa !11
  br label %636

636:                                              ; preds = %629, %622
  %637 = phi double [ %628, %622 ], [ %635, %629 ]
  %638 = fcmp olt double %608, %637
  br i1 %638, label %639, label %962

639:                                              ; preds = %636
  %640 = load ptr, ptr %16, align 8, !tbaa !9
  %641 = load i32, ptr %21, align 4, !tbaa !5
  %642 = sub nsw i32 %641, 1
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds double, ptr %640, i64 %643
  %645 = load double, ptr %644, align 8, !tbaa !11
  %646 = load ptr, ptr %13, align 8, !tbaa !9
  %647 = load i32, ptr %21, align 4, !tbaa !5
  %648 = sub nsw i32 %647, 1
  %649 = sext i32 %648 to i64
  %650 = getelementptr inbounds double, ptr %646, i64 %649
  %651 = load double, ptr %650, align 8, !tbaa !11
  %652 = fcmp oge double %645, %651
  %653 = zext i1 %652 to i64
  %654 = select i1 %652, i32 1, i32 -1
  %655 = icmp eq i32 %654, -1
  br i1 %655, label %656, label %962

656:                                              ; preds = %639
  %657 = load ptr, ptr %16, align 8, !tbaa !9
  %658 = load i32, ptr %21, align 4, !tbaa !5
  %659 = sext i32 %658 to i64
  %660 = getelementptr inbounds double, ptr %657, i64 %659
  %661 = load double, ptr %660, align 8, !tbaa !11
  %662 = load ptr, ptr %13, align 8, !tbaa !9
  %663 = load i32, ptr %21, align 4, !tbaa !5
  %664 = sext i32 %663 to i64
  %665 = getelementptr inbounds double, ptr %662, i64 %664
  %666 = load double, ptr %665, align 8, !tbaa !11
  %667 = fcmp oge double %661, %666
  %668 = zext i1 %667 to i64
  %669 = select i1 %667, i32 1, i32 -1
  %670 = icmp eq i32 %669, 1
  br i1 %670, label %671, label %962

671:                                              ; preds = %656
  %672 = load ptr, ptr %13, align 8, !tbaa !9
  %673 = load i32, ptr %21, align 4, !tbaa !5
  %674 = sext i32 %673 to i64
  %675 = getelementptr inbounds double, ptr %672, i64 %674
  %676 = load double, ptr %675, align 8, !tbaa !11
  %677 = load ptr, ptr %13, align 8, !tbaa !9
  %678 = load i32, ptr %21, align 4, !tbaa !5
  %679 = sub nsw i32 %678, 1
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds double, ptr %677, i64 %680
  %682 = load double, ptr %681, align 8, !tbaa !11
  %683 = fcmp olt double %676, %682
  br i1 %683, label %684, label %962

684:                                              ; preds = %671
  %685 = load ptr, ptr %13, align 8, !tbaa !9
  %686 = load i32, ptr %21, align 4, !tbaa !5
  %687 = sext i32 %686 to i64
  %688 = getelementptr inbounds double, ptr %685, i64 %687
  %689 = load double, ptr %688, align 8, !tbaa !11
  %690 = load ptr, ptr %16, align 8, !tbaa !9
  %691 = load i32, ptr %21, align 4, !tbaa !5
  %692 = sub nsw i32 %691, 1
  %693 = sext i32 %692 to i64
  %694 = getelementptr inbounds double, ptr %690, i64 %693
  %695 = load double, ptr %694, align 8, !tbaa !11
  %696 = fcmp ogt double %689, %695
  br i1 %696, label %697, label %962

697:                                              ; preds = %684
  %698 = load ptr, ptr %16, align 8, !tbaa !9
  %699 = load i32, ptr %21, align 4, !tbaa !5
  %700 = sext i32 %699 to i64
  %701 = getelementptr inbounds double, ptr %698, i64 %700
  %702 = load double, ptr %701, align 8, !tbaa !11
  %703 = load ptr, ptr %13, align 8, !tbaa !9
  %704 = load i32, ptr %21, align 4, !tbaa !5
  %705 = sub nsw i32 %704, 1
  %706 = sext i32 %705 to i64
  %707 = getelementptr inbounds double, ptr %703, i64 %706
  %708 = load double, ptr %707, align 8, !tbaa !11
  %709 = fcmp ogt double %702, %708
  br i1 %709, label %710, label %962

710:                                              ; preds = %697
  %711 = load ptr, ptr %16, align 8, !tbaa !9
  %712 = load i32, ptr %21, align 4, !tbaa !5
  %713 = sext i32 %712 to i64
  %714 = getelementptr inbounds double, ptr %711, i64 %713
  %715 = load double, ptr %714, align 8, !tbaa !11
  %716 = load ptr, ptr %16, align 8, !tbaa !9
  %717 = load i32, ptr %21, align 4, !tbaa !5
  %718 = sub nsw i32 %717, 2
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds double, ptr %716, i64 %719
  %721 = load double, ptr %720, align 8, !tbaa !11
  %722 = load ptr, ptr %13, align 8, !tbaa !9
  %723 = load i32, ptr %21, align 4, !tbaa !5
  %724 = sub nsw i32 %723, 2
  %725 = sext i32 %724 to i64
  %726 = getelementptr inbounds double, ptr %722, i64 %725
  %727 = load double, ptr %726, align 8, !tbaa !11
  %728 = fcmp olt double %721, %727
  br i1 %728, label %729, label %736

729:                                              ; preds = %710
  %730 = load ptr, ptr %16, align 8, !tbaa !9
  %731 = load i32, ptr %21, align 4, !tbaa !5
  %732 = sub nsw i32 %731, 2
  %733 = sext i32 %732 to i64
  %734 = getelementptr inbounds double, ptr %730, i64 %733
  %735 = load double, ptr %734, align 8, !tbaa !11
  br label %743

736:                                              ; preds = %710
  %737 = load ptr, ptr %13, align 8, !tbaa !9
  %738 = load i32, ptr %21, align 4, !tbaa !5
  %739 = sub nsw i32 %738, 2
  %740 = sext i32 %739 to i64
  %741 = getelementptr inbounds double, ptr %737, i64 %740
  %742 = load double, ptr %741, align 8, !tbaa !11
  br label %743

743:                                              ; preds = %736, %729
  %744 = phi double [ %735, %729 ], [ %742, %736 ]
  %745 = fcmp olt double %715, %744
  br i1 %745, label %746, label %962

746:                                              ; preds = %743
  %747 = load ptr, ptr %16, align 8, !tbaa !9
  %748 = load i32, ptr %21, align 4, !tbaa !5
  %749 = sub nsw i32 %748, 1
  %750 = sext i32 %749 to i64
  %751 = getelementptr inbounds double, ptr %747, i64 %750
  %752 = load double, ptr %751, align 8, !tbaa !11
  %753 = load ptr, ptr %13, align 8, !tbaa !9
  %754 = load i32, ptr %21, align 4, !tbaa !5
  %755 = sub nsw i32 %754, 1
  %756 = sext i32 %755 to i64
  %757 = getelementptr inbounds double, ptr %753, i64 %756
  %758 = load double, ptr %757, align 8, !tbaa !11
  %759 = fsub double %752, %758
  %760 = call double @llvm.fabs.f64(double %759)
  %761 = load ptr, ptr %16, align 8, !tbaa !9
  %762 = load i32, ptr %21, align 4, !tbaa !5
  %763 = sext i32 %762 to i64
  %764 = getelementptr inbounds double, ptr %761, i64 %763
  %765 = load double, ptr %764, align 8, !tbaa !11
  %766 = load ptr, ptr %13, align 8, !tbaa !9
  %767 = load i32, ptr %21, align 4, !tbaa !5
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds double, ptr %766, i64 %768
  %770 = load double, ptr %769, align 8, !tbaa !11
  %771 = fsub double %765, %770
  %772 = call double @llvm.fabs.f64(double %771)
  %773 = fsub double %760, %772
  %774 = call double @llvm.fabs.f64(double %773)
  %775 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %776 = getelementptr inbounds %struct.TA_LibcPriv, ptr %775, i32 0, i32 8
  %777 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %776, i64 0, i64 8
  %778 = getelementptr inbounds %struct.TA_CandleSetting, ptr %777, i32 0, i32 3
  %779 = load double, ptr %778, align 8, !tbaa !18
  %780 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %781 = getelementptr inbounds %struct.TA_LibcPriv, ptr %780, i32 0, i32 8
  %782 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %781, i64 0, i64 8
  %783 = getelementptr inbounds %struct.TA_CandleSetting, ptr %782, i32 0, i32 2
  %784 = load i32, ptr %783, align 8, !tbaa !13
  %785 = sitofp i32 %784 to double
  %786 = fcmp une double %785, 0.000000e+00
  br i1 %786, label %787, label %796

787:                                              ; preds = %746
  %788 = load double, ptr %20, align 8, !tbaa !11
  %789 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %790 = getelementptr inbounds %struct.TA_LibcPriv, ptr %789, i32 0, i32 8
  %791 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %790, i64 0, i64 8
  %792 = getelementptr inbounds %struct.TA_CandleSetting, ptr %791, i32 0, i32 2
  %793 = load i32, ptr %792, align 8, !tbaa !13
  %794 = sitofp i32 %793 to double
  %795 = fdiv double %788, %794
  br label %927

796:                                              ; preds = %746
  %797 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %798 = getelementptr inbounds %struct.TA_LibcPriv, ptr %797, i32 0, i32 8
  %799 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %798, i64 0, i64 8
  %800 = getelementptr inbounds %struct.TA_CandleSetting, ptr %799, i32 0, i32 1
  %801 = load i32, ptr %800, align 4, !tbaa !15
  %802 = icmp eq i32 %801, 0
  br i1 %802, label %803, label %818

803:                                              ; preds = %796
  %804 = load ptr, ptr %16, align 8, !tbaa !9
  %805 = load i32, ptr %21, align 4, !tbaa !5
  %806 = sub nsw i32 %805, 1
  %807 = sext i32 %806 to i64
  %808 = getelementptr inbounds double, ptr %804, i64 %807
  %809 = load double, ptr %808, align 8, !tbaa !11
  %810 = load ptr, ptr %13, align 8, !tbaa !9
  %811 = load i32, ptr %21, align 4, !tbaa !5
  %812 = sub nsw i32 %811, 1
  %813 = sext i32 %812 to i64
  %814 = getelementptr inbounds double, ptr %810, i64 %813
  %815 = load double, ptr %814, align 8, !tbaa !11
  %816 = fsub double %809, %815
  %817 = call double @llvm.fabs.f64(double %816)
  br label %925

818:                                              ; preds = %796
  %819 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %820 = getelementptr inbounds %struct.TA_LibcPriv, ptr %819, i32 0, i32 8
  %821 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %820, i64 0, i64 8
  %822 = getelementptr inbounds %struct.TA_CandleSetting, ptr %821, i32 0, i32 1
  %823 = load i32, ptr %822, align 4, !tbaa !15
  %824 = icmp eq i32 %823, 1
  br i1 %824, label %825, label %839

825:                                              ; preds = %818
  %826 = load ptr, ptr %14, align 8, !tbaa !9
  %827 = load i32, ptr %21, align 4, !tbaa !5
  %828 = sub nsw i32 %827, 1
  %829 = sext i32 %828 to i64
  %830 = getelementptr inbounds double, ptr %826, i64 %829
  %831 = load double, ptr %830, align 8, !tbaa !11
  %832 = load ptr, ptr %15, align 8, !tbaa !9
  %833 = load i32, ptr %21, align 4, !tbaa !5
  %834 = sub nsw i32 %833, 1
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds double, ptr %832, i64 %835
  %837 = load double, ptr %836, align 8, !tbaa !11
  %838 = fsub double %831, %837
  br label %923

839:                                              ; preds = %818
  %840 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %841 = getelementptr inbounds %struct.TA_LibcPriv, ptr %840, i32 0, i32 8
  %842 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %841, i64 0, i64 8
  %843 = getelementptr inbounds %struct.TA_CandleSetting, ptr %842, i32 0, i32 1
  %844 = load i32, ptr %843, align 4, !tbaa !15
  %845 = icmp eq i32 %844, 2
  br i1 %845, label %846, label %920

846:                                              ; preds = %839
  %847 = load ptr, ptr %14, align 8, !tbaa !9
  %848 = load i32, ptr %21, align 4, !tbaa !5
  %849 = sub nsw i32 %848, 1
  %850 = sext i32 %849 to i64
  %851 = getelementptr inbounds double, ptr %847, i64 %850
  %852 = load double, ptr %851, align 8, !tbaa !11
  %853 = load ptr, ptr %16, align 8, !tbaa !9
  %854 = load i32, ptr %21, align 4, !tbaa !5
  %855 = sub nsw i32 %854, 1
  %856 = sext i32 %855 to i64
  %857 = getelementptr inbounds double, ptr %853, i64 %856
  %858 = load double, ptr %857, align 8, !tbaa !11
  %859 = load ptr, ptr %13, align 8, !tbaa !9
  %860 = load i32, ptr %21, align 4, !tbaa !5
  %861 = sub nsw i32 %860, 1
  %862 = sext i32 %861 to i64
  %863 = getelementptr inbounds double, ptr %859, i64 %862
  %864 = load double, ptr %863, align 8, !tbaa !11
  %865 = fcmp oge double %858, %864
  br i1 %865, label %866, label %873

866:                                              ; preds = %846
  %867 = load ptr, ptr %16, align 8, !tbaa !9
  %868 = load i32, ptr %21, align 4, !tbaa !5
  %869 = sub nsw i32 %868, 1
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds double, ptr %867, i64 %870
  %872 = load double, ptr %871, align 8, !tbaa !11
  br label %880

873:                                              ; preds = %846
  %874 = load ptr, ptr %13, align 8, !tbaa !9
  %875 = load i32, ptr %21, align 4, !tbaa !5
  %876 = sub nsw i32 %875, 1
  %877 = sext i32 %876 to i64
  %878 = getelementptr inbounds double, ptr %874, i64 %877
  %879 = load double, ptr %878, align 8, !tbaa !11
  br label %880

880:                                              ; preds = %873, %866
  %881 = phi double [ %872, %866 ], [ %879, %873 ]
  %882 = fsub double %852, %881
  %883 = load ptr, ptr %16, align 8, !tbaa !9
  %884 = load i32, ptr %21, align 4, !tbaa !5
  %885 = sub nsw i32 %884, 1
  %886 = sext i32 %885 to i64
  %887 = getelementptr inbounds double, ptr %883, i64 %886
  %888 = load double, ptr %887, align 8, !tbaa !11
  %889 = load ptr, ptr %13, align 8, !tbaa !9
  %890 = load i32, ptr %21, align 4, !tbaa !5
  %891 = sub nsw i32 %890, 1
  %892 = sext i32 %891 to i64
  %893 = getelementptr inbounds double, ptr %889, i64 %892
  %894 = load double, ptr %893, align 8, !tbaa !11
  %895 = fcmp oge double %888, %894
  br i1 %895, label %896, label %903

896:                                              ; preds = %880
  %897 = load ptr, ptr %13, align 8, !tbaa !9
  %898 = load i32, ptr %21, align 4, !tbaa !5
  %899 = sub nsw i32 %898, 1
  %900 = sext i32 %899 to i64
  %901 = getelementptr inbounds double, ptr %897, i64 %900
  %902 = load double, ptr %901, align 8, !tbaa !11
  br label %910

903:                                              ; preds = %880
  %904 = load ptr, ptr %16, align 8, !tbaa !9
  %905 = load i32, ptr %21, align 4, !tbaa !5
  %906 = sub nsw i32 %905, 1
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds double, ptr %904, i64 %907
  %909 = load double, ptr %908, align 8, !tbaa !11
  br label %910

910:                                              ; preds = %903, %896
  %911 = phi double [ %902, %896 ], [ %909, %903 ]
  %912 = load ptr, ptr %15, align 8, !tbaa !9
  %913 = load i32, ptr %21, align 4, !tbaa !5
  %914 = sub nsw i32 %913, 1
  %915 = sext i32 %914 to i64
  %916 = getelementptr inbounds double, ptr %912, i64 %915
  %917 = load double, ptr %916, align 8, !tbaa !11
  %918 = fsub double %911, %917
  %919 = fadd double %882, %918
  br label %921

920:                                              ; preds = %839
  br label %921

921:                                              ; preds = %920, %910
  %922 = phi double [ %919, %910 ], [ 0.000000e+00, %920 ]
  br label %923

923:                                              ; preds = %921, %825
  %924 = phi double [ %838, %825 ], [ %922, %921 ]
  br label %925

925:                                              ; preds = %923, %803
  %926 = phi double [ %817, %803 ], [ %924, %923 ]
  br label %927

927:                                              ; preds = %925, %787
  %928 = phi double [ %795, %787 ], [ %926, %925 ]
  %929 = fmul double %779, %928
  %930 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %931 = getelementptr inbounds %struct.TA_LibcPriv, ptr %930, i32 0, i32 8
  %932 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %931, i64 0, i64 8
  %933 = getelementptr inbounds %struct.TA_CandleSetting, ptr %932, i32 0, i32 1
  %934 = load i32, ptr %933, align 4, !tbaa !15
  %935 = icmp eq i32 %934, 2
  %936 = zext i1 %935 to i64
  %937 = select i1 %935, double 2.000000e+00, double 1.000000e+00
  %938 = fdiv double %929, %937
  %939 = fcmp olt double %774, %938
  br i1 %939, label %940, label %962

940:                                              ; preds = %927, %566
  %941 = load ptr, ptr %16, align 8, !tbaa !9
  %942 = load i32, ptr %21, align 4, !tbaa !5
  %943 = sub nsw i32 %942, 1
  %944 = sext i32 %943 to i64
  %945 = getelementptr inbounds double, ptr %941, i64 %944
  %946 = load double, ptr %945, align 8, !tbaa !11
  %947 = load ptr, ptr %13, align 8, !tbaa !9
  %948 = load i32, ptr %21, align 4, !tbaa !5
  %949 = sub nsw i32 %948, 1
  %950 = sext i32 %949 to i64
  %951 = getelementptr inbounds double, ptr %947, i64 %950
  %952 = load double, ptr %951, align 8, !tbaa !11
  %953 = fcmp oge double %946, %952
  %954 = zext i1 %953 to i64
  %955 = select i1 %953, i32 1, i32 -1
  %956 = mul nsw i32 %955, 100
  %957 = load ptr, ptr %19, align 8, !tbaa !9
  %958 = load i32, ptr %22, align 4, !tbaa !5
  %959 = add nsw i32 %958, 1
  store i32 %959, ptr %22, align 4, !tbaa !5
  %960 = sext i32 %958 to i64
  %961 = getelementptr inbounds i32, ptr %957, i64 %960
  store i32 %956, ptr %961, align 4, !tbaa !5
  br label %968

962:                                              ; preds = %927, %743, %697, %684, %671, %656, %639, %636
  %963 = load ptr, ptr %19, align 8, !tbaa !9
  %964 = load i32, ptr %22, align 4, !tbaa !5
  %965 = add nsw i32 %964, 1
  store i32 %965, ptr %22, align 4, !tbaa !5
  %966 = sext i32 %964 to i64
  %967 = getelementptr inbounds i32, ptr %963, i64 %966
  store i32 0, ptr %967, align 4, !tbaa !5
  br label %968

968:                                              ; preds = %962, %940
  %969 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %970 = getelementptr inbounds %struct.TA_LibcPriv, ptr %969, i32 0, i32 8
  %971 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %970, i64 0, i64 8
  %972 = getelementptr inbounds %struct.TA_CandleSetting, ptr %971, i32 0, i32 1
  %973 = load i32, ptr %972, align 4, !tbaa !15
  %974 = icmp eq i32 %973, 0
  br i1 %974, label %975, label %990

975:                                              ; preds = %968
  %976 = load ptr, ptr %16, align 8, !tbaa !9
  %977 = load i32, ptr %21, align 4, !tbaa !5
  %978 = sub nsw i32 %977, 1
  %979 = sext i32 %978 to i64
  %980 = getelementptr inbounds double, ptr %976, i64 %979
  %981 = load double, ptr %980, align 8, !tbaa !11
  %982 = load ptr, ptr %13, align 8, !tbaa !9
  %983 = load i32, ptr %21, align 4, !tbaa !5
  %984 = sub nsw i32 %983, 1
  %985 = sext i32 %984 to i64
  %986 = getelementptr inbounds double, ptr %982, i64 %985
  %987 = load double, ptr %986, align 8, !tbaa !11
  %988 = fsub double %981, %987
  %989 = call double @llvm.fabs.f64(double %988)
  br label %1097

990:                                              ; preds = %968
  %991 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %992 = getelementptr inbounds %struct.TA_LibcPriv, ptr %991, i32 0, i32 8
  %993 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %992, i64 0, i64 8
  %994 = getelementptr inbounds %struct.TA_CandleSetting, ptr %993, i32 0, i32 1
  %995 = load i32, ptr %994, align 4, !tbaa !15
  %996 = icmp eq i32 %995, 1
  br i1 %996, label %997, label %1011

997:                                              ; preds = %990
  %998 = load ptr, ptr %14, align 8, !tbaa !9
  %999 = load i32, ptr %21, align 4, !tbaa !5
  %1000 = sub nsw i32 %999, 1
  %1001 = sext i32 %1000 to i64
  %1002 = getelementptr inbounds double, ptr %998, i64 %1001
  %1003 = load double, ptr %1002, align 8, !tbaa !11
  %1004 = load ptr, ptr %15, align 8, !tbaa !9
  %1005 = load i32, ptr %21, align 4, !tbaa !5
  %1006 = sub nsw i32 %1005, 1
  %1007 = sext i32 %1006 to i64
  %1008 = getelementptr inbounds double, ptr %1004, i64 %1007
  %1009 = load double, ptr %1008, align 8, !tbaa !11
  %1010 = fsub double %1003, %1009
  br label %1095

1011:                                             ; preds = %990
  %1012 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1013 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1012, i32 0, i32 8
  %1014 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1013, i64 0, i64 8
  %1015 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1014, i32 0, i32 1
  %1016 = load i32, ptr %1015, align 4, !tbaa !15
  %1017 = icmp eq i32 %1016, 2
  br i1 %1017, label %1018, label %1092

1018:                                             ; preds = %1011
  %1019 = load ptr, ptr %14, align 8, !tbaa !9
  %1020 = load i32, ptr %21, align 4, !tbaa !5
  %1021 = sub nsw i32 %1020, 1
  %1022 = sext i32 %1021 to i64
  %1023 = getelementptr inbounds double, ptr %1019, i64 %1022
  %1024 = load double, ptr %1023, align 8, !tbaa !11
  %1025 = load ptr, ptr %16, align 8, !tbaa !9
  %1026 = load i32, ptr %21, align 4, !tbaa !5
  %1027 = sub nsw i32 %1026, 1
  %1028 = sext i32 %1027 to i64
  %1029 = getelementptr inbounds double, ptr %1025, i64 %1028
  %1030 = load double, ptr %1029, align 8, !tbaa !11
  %1031 = load ptr, ptr %13, align 8, !tbaa !9
  %1032 = load i32, ptr %21, align 4, !tbaa !5
  %1033 = sub nsw i32 %1032, 1
  %1034 = sext i32 %1033 to i64
  %1035 = getelementptr inbounds double, ptr %1031, i64 %1034
  %1036 = load double, ptr %1035, align 8, !tbaa !11
  %1037 = fcmp oge double %1030, %1036
  br i1 %1037, label %1038, label %1045

1038:                                             ; preds = %1018
  %1039 = load ptr, ptr %16, align 8, !tbaa !9
  %1040 = load i32, ptr %21, align 4, !tbaa !5
  %1041 = sub nsw i32 %1040, 1
  %1042 = sext i32 %1041 to i64
  %1043 = getelementptr inbounds double, ptr %1039, i64 %1042
  %1044 = load double, ptr %1043, align 8, !tbaa !11
  br label %1052

1045:                                             ; preds = %1018
  %1046 = load ptr, ptr %13, align 8, !tbaa !9
  %1047 = load i32, ptr %21, align 4, !tbaa !5
  %1048 = sub nsw i32 %1047, 1
  %1049 = sext i32 %1048 to i64
  %1050 = getelementptr inbounds double, ptr %1046, i64 %1049
  %1051 = load double, ptr %1050, align 8, !tbaa !11
  br label %1052

1052:                                             ; preds = %1045, %1038
  %1053 = phi double [ %1044, %1038 ], [ %1051, %1045 ]
  %1054 = fsub double %1024, %1053
  %1055 = load ptr, ptr %16, align 8, !tbaa !9
  %1056 = load i32, ptr %21, align 4, !tbaa !5
  %1057 = sub nsw i32 %1056, 1
  %1058 = sext i32 %1057 to i64
  %1059 = getelementptr inbounds double, ptr %1055, i64 %1058
  %1060 = load double, ptr %1059, align 8, !tbaa !11
  %1061 = load ptr, ptr %13, align 8, !tbaa !9
  %1062 = load i32, ptr %21, align 4, !tbaa !5
  %1063 = sub nsw i32 %1062, 1
  %1064 = sext i32 %1063 to i64
  %1065 = getelementptr inbounds double, ptr %1061, i64 %1064
  %1066 = load double, ptr %1065, align 8, !tbaa !11
  %1067 = fcmp oge double %1060, %1066
  br i1 %1067, label %1068, label %1075

1068:                                             ; preds = %1052
  %1069 = load ptr, ptr %13, align 8, !tbaa !9
  %1070 = load i32, ptr %21, align 4, !tbaa !5
  %1071 = sub nsw i32 %1070, 1
  %1072 = sext i32 %1071 to i64
  %1073 = getelementptr inbounds double, ptr %1069, i64 %1072
  %1074 = load double, ptr %1073, align 8, !tbaa !11
  br label %1082

1075:                                             ; preds = %1052
  %1076 = load ptr, ptr %16, align 8, !tbaa !9
  %1077 = load i32, ptr %21, align 4, !tbaa !5
  %1078 = sub nsw i32 %1077, 1
  %1079 = sext i32 %1078 to i64
  %1080 = getelementptr inbounds double, ptr %1076, i64 %1079
  %1081 = load double, ptr %1080, align 8, !tbaa !11
  br label %1082

1082:                                             ; preds = %1075, %1068
  %1083 = phi double [ %1074, %1068 ], [ %1081, %1075 ]
  %1084 = load ptr, ptr %15, align 8, !tbaa !9
  %1085 = load i32, ptr %21, align 4, !tbaa !5
  %1086 = sub nsw i32 %1085, 1
  %1087 = sext i32 %1086 to i64
  %1088 = getelementptr inbounds double, ptr %1084, i64 %1087
  %1089 = load double, ptr %1088, align 8, !tbaa !11
  %1090 = fsub double %1083, %1089
  %1091 = fadd double %1054, %1090
  br label %1093

1092:                                             ; preds = %1011
  br label %1093

1093:                                             ; preds = %1092, %1082
  %1094 = phi double [ %1091, %1082 ], [ 0.000000e+00, %1092 ]
  br label %1095

1095:                                             ; preds = %1093, %997
  %1096 = phi double [ %1010, %997 ], [ %1094, %1093 ]
  br label %1097

1097:                                             ; preds = %1095, %975
  %1098 = phi double [ %989, %975 ], [ %1096, %1095 ]
  %1099 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1100 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1099, i32 0, i32 8
  %1101 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1100, i64 0, i64 8
  %1102 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1101, i32 0, i32 1
  %1103 = load i32, ptr %1102, align 4, !tbaa !15
  %1104 = icmp eq i32 %1103, 0
  br i1 %1104, label %1105, label %1120

1105:                                             ; preds = %1097
  %1106 = load ptr, ptr %16, align 8, !tbaa !9
  %1107 = load i32, ptr %23, align 4, !tbaa !5
  %1108 = sub nsw i32 %1107, 1
  %1109 = sext i32 %1108 to i64
  %1110 = getelementptr inbounds double, ptr %1106, i64 %1109
  %1111 = load double, ptr %1110, align 8, !tbaa !11
  %1112 = load ptr, ptr %13, align 8, !tbaa !9
  %1113 = load i32, ptr %23, align 4, !tbaa !5
  %1114 = sub nsw i32 %1113, 1
  %1115 = sext i32 %1114 to i64
  %1116 = getelementptr inbounds double, ptr %1112, i64 %1115
  %1117 = load double, ptr %1116, align 8, !tbaa !11
  %1118 = fsub double %1111, %1117
  %1119 = call double @llvm.fabs.f64(double %1118)
  br label %1227

1120:                                             ; preds = %1097
  %1121 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1122 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1121, i32 0, i32 8
  %1123 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1122, i64 0, i64 8
  %1124 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1123, i32 0, i32 1
  %1125 = load i32, ptr %1124, align 4, !tbaa !15
  %1126 = icmp eq i32 %1125, 1
  br i1 %1126, label %1127, label %1141

1127:                                             ; preds = %1120
  %1128 = load ptr, ptr %14, align 8, !tbaa !9
  %1129 = load i32, ptr %23, align 4, !tbaa !5
  %1130 = sub nsw i32 %1129, 1
  %1131 = sext i32 %1130 to i64
  %1132 = getelementptr inbounds double, ptr %1128, i64 %1131
  %1133 = load double, ptr %1132, align 8, !tbaa !11
  %1134 = load ptr, ptr %15, align 8, !tbaa !9
  %1135 = load i32, ptr %23, align 4, !tbaa !5
  %1136 = sub nsw i32 %1135, 1
  %1137 = sext i32 %1136 to i64
  %1138 = getelementptr inbounds double, ptr %1134, i64 %1137
  %1139 = load double, ptr %1138, align 8, !tbaa !11
  %1140 = fsub double %1133, %1139
  br label %1225

1141:                                             ; preds = %1120
  %1142 = load ptr, ptr @TA_Globals, align 8, !tbaa !9
  %1143 = getelementptr inbounds %struct.TA_LibcPriv, ptr %1142, i32 0, i32 8
  %1144 = getelementptr inbounds [11 x %struct.TA_CandleSetting], ptr %1143, i64 0, i64 8
  %1145 = getelementptr inbounds %struct.TA_CandleSetting, ptr %1144, i32 0, i32 1
  %1146 = load i32, ptr %1145, align 4, !tbaa !15
  %1147 = icmp eq i32 %1146, 2
  br i1 %1147, label %1148, label %1222

1148:                                             ; preds = %1141
  %1149 = load ptr, ptr %14, align 8, !tbaa !9
  %1150 = load i32, ptr %23, align 4, !tbaa !5
  %1151 = sub nsw i32 %1150, 1
  %1152 = sext i32 %1151 to i64
  %1153 = getelementptr inbounds double, ptr %1149, i64 %1152
  %1154 = load double, ptr %1153, align 8, !tbaa !11
  %1155 = load ptr, ptr %16, align 8, !tbaa !9
  %1156 = load i32, ptr %23, align 4, !tbaa !5
  %1157 = sub nsw i32 %1156, 1
  %1158 = sext i32 %1157 to i64
  %1159 = getelementptr inbounds double, ptr %1155, i64 %1158
  %1160 = load double, ptr %1159, align 8, !tbaa !11
  %1161 = load ptr, ptr %13, align 8, !tbaa !9
  %1162 = load i32, ptr %23, align 4, !tbaa !5
  %1163 = sub nsw i32 %1162, 1
  %1164 = sext i32 %1163 to i64
  %1165 = getelementptr inbounds double, ptr %1161, i64 %1164
  %1166 = load double, ptr %1165, align 8, !tbaa !11
  %1167 = fcmp oge double %1160, %1166
  br i1 %1167, label %1168, label %1175

1168:                                             ; preds = %1148
  %1169 = load ptr, ptr %16, align 8, !tbaa !9
  %1170 = load i32, ptr %23, align 4, !tbaa !5
  %1171 = sub nsw i32 %1170, 1
  %1172 = sext i32 %1171 to i64
  %1173 = getelementptr inbounds double, ptr %1169, i64 %1172
  %1174 = load double, ptr %1173, align 8, !tbaa !11
  br label %1182

1175:                                             ; preds = %1148
  %1176 = load ptr, ptr %13, align 8, !tbaa !9
  %1177 = load i32, ptr %23, align 4, !tbaa !5
  %1178 = sub nsw i32 %1177, 1
  %1179 = sext i32 %1178 to i64
  %1180 = getelementptr inbounds double, ptr %1176, i64 %1179
  %1181 = load double, ptr %1180, align 8, !tbaa !11
  br label %1182

1182:                                             ; preds = %1175, %1168
  %1183 = phi double [ %1174, %1168 ], [ %1181, %1175 ]
  %1184 = fsub double %1154, %1183
  %1185 = load ptr, ptr %16, align 8, !tbaa !9
  %1186 = load i32, ptr %23, align 4, !tbaa !5
  %1187 = sub nsw i32 %1186, 1
  %1188 = sext i32 %1187 to i64
  %1189 = getelementptr inbounds double, ptr %1185, i64 %1188
  %1190 = load double, ptr %1189, align 8, !tbaa !11
  %1191 = load ptr, ptr %13, align 8, !tbaa !9
  %1192 = load i32, ptr %23, align 4, !tbaa !5
  %1193 = sub nsw i32 %1192, 1
  %1194 = sext i32 %1193 to i64
  %1195 = getelementptr inbounds double, ptr %1191, i64 %1194
  %1196 = load double, ptr %1195, align 8, !tbaa !11
  %1197 = fcmp oge double %1190, %1196
  br i1 %1197, label %1198, label %1205

1198:                                             ; preds = %1182
  %1199 = load ptr, ptr %13, align 8, !tbaa !9
  %1200 = load i32, ptr %23, align 4, !tbaa !5
  %1201 = sub nsw i32 %1200, 1
  %1202 = sext i32 %1201 to i64
  %1203 = getelementptr inbounds double, ptr %1199, i64 %1202
  %1204 = load double, ptr %1203, align 8, !tbaa !11
  br label %1212

1205:                                             ; preds = %1182
  %1206 = load ptr, ptr %16, align 8, !tbaa !9
  %1207 = load i32, ptr %23, align 4, !tbaa !5
  %1208 = sub nsw i32 %1207, 1
  %1209 = sext i32 %1208 to i64
  %1210 = getelementptr inbounds double, ptr %1206, i64 %1209
  %1211 = load double, ptr %1210, align 8, !tbaa !11
  br label %1212

1212:                                             ; preds = %1205, %1198
  %1213 = phi double [ %1204, %1198 ], [ %1211, %1205 ]
  %1214 = load ptr, ptr %15, align 8, !tbaa !9
  %1215 = load i32, ptr %23, align 4, !tbaa !5
  %1216 = sub nsw i32 %1215, 1
  %1217 = sext i32 %1216 to i64
  %1218 = getelementptr inbounds double, ptr %1214, i64 %1217
  %1219 = load double, ptr %1218, align 8, !tbaa !11
  %1220 = fsub double %1213, %1219
  %1221 = fadd double %1184, %1220
  br label %1223

1222:                                             ; preds = %1141
  br label %1223

1223:                                             ; preds = %1222, %1212
  %1224 = phi double [ %1221, %1212 ], [ 0.000000e+00, %1222 ]
  br label %1225

1225:                                             ; preds = %1223, %1127
  %1226 = phi double [ %1140, %1127 ], [ %1224, %1223 ]
  br label %1227

1227:                                             ; preds = %1225, %1105
  %1228 = phi double [ %1119, %1105 ], [ %1226, %1225 ]
  %1229 = fsub double %1098, %1228
  %1230 = load double, ptr %20, align 8, !tbaa !11
  %1231 = fadd double %1230, %1229
  store double %1231, ptr %20, align 8, !tbaa !11
  %1232 = load i32, ptr %21, align 4, !tbaa !5
  %1233 = add nsw i32 %1232, 1
  store i32 %1233, ptr %21, align 4, !tbaa !5
  %1234 = load i32, ptr %23, align 4, !tbaa !5
  %1235 = add nsw i32 %1234, 1
  store i32 %1235, ptr %23, align 4, !tbaa !5
  br label %1236

1236:                                             ; preds = %1227
  %1237 = load i32, ptr %21, align 4, !tbaa !5
  %1238 = load i32, ptr %12, align 4, !tbaa !5
  %1239 = icmp sle i32 %1237, %1238
  br i1 %1239, label %218, label %1240, !llvm.loop !19

1240:                                             ; preds = %1236
  %1241 = load i32, ptr %22, align 4, !tbaa !5
  %1242 = load ptr, ptr %18, align 8, !tbaa !9
  store i32 %1241, ptr %1242, align 4, !tbaa !5
  %1243 = load i32, ptr %11, align 4, !tbaa !5
  %1244 = load ptr, ptr %17, align 8, !tbaa !9
  store i32 %1243, ptr %1244, align 4, !tbaa !5
  store i32 0, ptr %10, align 4
  store i32 1, ptr %25, align 4
  br label %1245

1245:                                             ; preds = %1240, %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
  %1246 = load i32, ptr %10, align 4
  ret i32 %1246
}

; 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

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


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

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

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

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

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

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

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

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

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

.lr.ph.split.us:                                  ; preds = %.lr.ph.split.us.preheader, %.lr.ph.split.us
  %indvars.iv410 = phi i64 [ %37, %.lr.ph.split.us.preheader ], [ %indvars.iv.next411, %.lr.ph.split.us ]
  %.0299389.us = phi double [ 0.000000e+00, %.lr.ph.split.us.preheader ], [ %46, %.lr.ph.split.us ]
  %39 = add nsw i64 %indvars.iv410, -1
  %40 = getelementptr inbounds double, ptr %5, i64 %39
  %41 = load double, ptr %40, align 8, !tbaa !15
  %42 = getelementptr inbounds double, ptr %2, i64 %39
  %43 = load double, ptr %42, align 8, !tbaa !15
  %44 = fsub double %41, %43
  %45 = tail call double @llvm.fabs.f64(double %44)
  %46 = fadd double %.0299389.us, %45
  %indvars.iv.next411 = add nsw i64 %indvars.iv410, 1
  %47 = icmp slt i64 %indvars.iv.next411, %38
  br i1 %47, label %.lr.ph.split.us, label %.preheader, !llvm.loop !16

.lr.ph.split.us391:                               ; preds = %.lr.ph.split.us391.preheader, %.lr.ph.split.us391
  %indvars.iv407 = phi i64 [ %35, %.lr.ph.split.us391.preheader ], [ %indvars.iv.next408, %.lr.ph.split.us391 ]
  %.0299389.us393 = phi double [ 0.000000e+00, %.lr.ph.split.us391.preheader ], [ %54, %.lr.ph.split.us391 ]
  %48 = add nsw i64 %indvars.iv407, -1
  %49 = getelementptr inbounds double, ptr %3, i64 %48
  %50 = load double, ptr %49, align 8, !tbaa !15
  %51 = getelementptr inbounds double, ptr %4, i64 %48
  %52 = load double, ptr %51, align 8, !tbaa !15
  %53 = fsub double %50, %52
  %54 = fadd double %.0299389.us393, %53
  %indvars.iv.next408 = add nsw i64 %indvars.iv407, 1
  %55 = icmp slt i64 %indvars.iv.next408, %36
  br i1 %55, label %.lr.ph.split.us391, label %.preheader, !llvm.loop !16

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

.preheader:                                       ; preds = %.lr.ph.split.us396, %.lr.ph.split.us391, %.lr.ph.split.us, %.lr.ph, %25
  %.0299.lcssa = phi double [ 0.000000e+00, %25 ], [ 0.000000e+00, %.lr.ph ], [ %46, %.lr.ph.split.us ], [ %54, %.lr.ph.split.us391 ], [ %70, %.lr.ph.split.us396 ]
  %72 = getelementptr inbounds i8, ptr %26, i64 404
  %73 = getelementptr inbounds i8, ptr %26, i64 416
  %74 = sext i32 %22 to i64
  %75 = zext nneg i32 %0 to i64
  %smax = tail call i64 @llvm.smax.i64(i64 %74, i64 %75)
  %76 = sext i32 %1 to i64
  %77 = sext i32 %29 to i64
  br label %78

78:                                               ; preds = %.preheader, %247
  %indvars.iv417 = phi i64 [ %77, %.preheader ], [ %indvars.iv.next418, %247 ]
  %indvars.iv415 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next416, %247 ]
  %indvars.iv413 = phi i64 [ %smax, %.preheader ], [ %indvars.iv.next414, %247 ]
  %.1300 = phi double [ %.0299.lcssa, %.preheader ], [ %251, %247 ]
  %79 = add nsw i64 %indvars.iv413, -1
  %80 = getelementptr inbounds double, ptr %2, i64 %79
  %81 = load double, ptr %80, align 8, !tbaa !15
  %82 = getelementptr inbounds double, ptr %5, i64 %79
  %83 = load double, ptr %82, align 8, !tbaa !15
  %84 = fcmp olt double %81, %83
  %.361 = select i1 %84, double %81, double %83
  %85 = add nsw i64 %indvars.iv413, -2
  %86 = getelementptr inbounds double, ptr %2, i64 %85
  %87 = load double, ptr %86, align 8, !tbaa !15
  %88 = getelementptr inbounds double, ptr %5, i64 %85
  %89 = load double, ptr %88, align 8, !tbaa !15
  %90 = fcmp ogt double %87, %89
  %91 = select i1 %90, double %87, double %89
  %92 = fcmp ule double %.361, %91
  %93 = fcmp ult double %83, %81
  %or.cond379 = or i1 %93, %92
  br i1 %or.cond379, label %139, label %94

94:                                               ; preds = %78
  %95 = getelementptr inbounds double, ptr %5, i64 %indvars.iv413
  %96 = load double, ptr %95, align 8, !tbaa !15
  %97 = getelementptr inbounds double, ptr %2, i64 %indvars.iv413
  %98 = load double, ptr %97, align 8, !tbaa !15
  %99 = fcmp ult double %96, %98
  %100 = fcmp olt double %98, %83
  %or.cond362 = and i1 %99, %100
  %101 = fcmp ogt double %98, %81
  %or.cond363 = and i1 %101, %or.cond362
  %102 = fcmp olt double %96, %81
  %or.cond364 = and i1 %102, %or.cond363
  br i1 %or.cond364, label %103, label %139

103:                                              ; preds = %94
  %104 = fcmp ogt double %89, %87
  %.365 = select i1 %104, double %89, double %87
  %105 = fcmp ogt double %96, %.365
  br i1 %105, label %106, label %139

106:                                              ; preds = %103
  %107 = fsub double %83, %81
  %108 = tail call double @llvm.fabs.f64(double %107)
  %109 = fsub double %96, %98
  %110 = tail call double @llvm.fabs.f64(double %109)
  %111 = fsub double %108, %110
  %112 = tail call double @llvm.fabs.f64(double %111)
  %113 = load double, ptr %73, align 8, !tbaa !18
  %114 = load i32, ptr %27, align 8, !tbaa !11
  %.not357 = icmp eq i32 %114, 0
  br i1 %.not357, label %115, label %130

115:                                              ; preds = %106
  %116 = load i32, ptr %72, align 4, !tbaa !14
  switch i32 %116, label %.fold.split [
    i32 0, label %.thread424
    i32 1, label %117
    i32 2, label %.thread426
  ]

117:                                              ; preds = %115
  %118 = getelementptr inbounds double, ptr %3, i64 %79
  %119 = load double, ptr %118, align 8, !tbaa !15
  %120 = getelementptr inbounds double, ptr %4, i64 %79
  %121 = load double, ptr %120, align 8, !tbaa !15
  %122 = fsub double %119, %121
  br label %.thread424

.thread426:                                       ; preds = %115
  %123 = getelementptr inbounds double, ptr %3, i64 %79
  %124 = load double, ptr %123, align 8, !tbaa !15
  %125 = fsub double %124, %83
  %126 = getelementptr inbounds double, ptr %4, i64 %79
  %127 = load double, ptr %126, align 8, !tbaa !15
  %128 = fsub double %81, %127
  %129 = fadd double %125, %128
  br label %.thread424

.fold.split:                                      ; preds = %115
  br label %.thread424

130:                                              ; preds = %106
  %131 = sitofp i32 %114 to double
  %132 = fdiv double %.1300, %131
  %.pre = load i32, ptr %72, align 4, !tbaa !14
  %.pre.fr = freeze i32 %.pre
  %133 = icmp eq i32 %.pre.fr, 2
  br i1 %133, label %134, label %.thread424

134:                                              ; preds = %130
  br label %.thread424

.thread424:                                       ; preds = %.fold.split, %115, %117, %.thread426, %130, %134
  %.pn = phi double [ %132, %130 ], [ %129, %.thread426 ], [ %132, %134 ], [ 0.000000e+00, %.fold.split ], [ %108, %115 ], [ %122, %117 ]
  %135 = phi double [ 1.000000e+00, %130 ], [ 2.000000e+00, %.thread426 ], [ 2.000000e+00, %134 ], [ 1.000000e+00, %.fold.split ], [ 1.000000e+00, %115 ], [ 1.000000e+00, %117 ]
  %136 = fmul double %113, %.pn
  %137 = fdiv double %136, %135
  %138 = fcmp olt double %112, %137
  br i1 %138, label %187, label %139

139:                                              ; preds = %.thread424, %103, %94, %78
  %140 = fcmp ogt double %81, %83
  %.367 = select i1 %140, double %81, double %83
  %141 = fcmp olt double %87, %89
  %142 = select i1 %141, double %87, double %89
  %143 = fcmp olt double %.367, %142
  %or.cond380 = and i1 %93, %143
  br i1 %or.cond380, label %144, label %190

144:                                              ; preds = %139
  %145 = getelementptr inbounds double, ptr %5, i64 %indvars.iv413
  %146 = load double, ptr %145, align 8, !tbaa !15
  %147 = getelementptr inbounds double, ptr %2, i64 %indvars.iv413
  %148 = load double, ptr %147, align 8, !tbaa !15
  %149 = fcmp oge double %146, %148
  %150 = fcmp olt double %148, %81
  %or.cond368 = and i1 %149, %150
  %151 = fcmp ogt double %148, %83
  %or.cond369 = and i1 %151, %or.cond368
  %152 = fcmp ogt double %146, %81
  %or.cond370 = and i1 %152, %or.cond369
  %.371 = select i1 %90, double %89, double %87
  %153 = fcmp olt double %146, %.371
  %or.cond381 = and i1 %153, %or.cond370
  br i1 %or.cond381, label %154, label %190

154:                                              ; preds = %144
  %155 = fsub double %83, %81
  %156 = tail call double @llvm.fabs.f64(double %155)
  %157 = fsub double %146, %148
  %158 = tail call double @llvm.fabs.f64(double %157)
  %159 = fsub double %156, %158
  %160 = tail call double @llvm.fabs.f64(double %159)
  %161 = load double, ptr %73, align 8, !tbaa !18
  %162 = load i32, ptr %27, align 8, !tbaa !11
  %.not358 = icmp eq i32 %162, 0
  br i1 %.not358, label %163, label %178

163:                                              ; preds = %154
  %164 = load i32, ptr %72, align 4, !tbaa !14
  switch i32 %164, label %.fold.split372 [
    i32 0, label %.thread431
    i32 1, label %165
    i32 2, label %.thread433
  ]

165:                                              ; preds = %163
  %166 = getelementptr inbounds double, ptr %3, i64 %79
  %167 = load double, ptr %166, align 8, !tbaa !15
  %168 = getelementptr inbounds double, ptr %4, i64 %79
  %169 = load double, ptr %168, align 8, !tbaa !15
  %170 = fsub double %167, %169
  br label %.thread431

.thread433:                                       ; preds = %163
  %171 = getelementptr inbounds double, ptr %3, i64 %79
  %172 = load double, ptr %171, align 8, !tbaa !15
  %173 = fsub double %172, %81
  %174 = getelementptr inbounds double, ptr %4, i64 %79
  %175 = load double, ptr %174, align 8, !tbaa !15
  %176 = fsub double %83, %175
  %177 = fadd double %173, %176
  br label %.thread431

.fold.split372:                                   ; preds = %163
  br label %.thread431

178:                                              ; preds = %154
  %179 = sitofp i32 %162 to double
  %180 = fdiv double %.1300, %179
  %.pre422 = load i32, ptr %72, align 4, !tbaa !14
  %.pre422.fr = freeze i32 %.pre422
  %181 = icmp eq i32 %.pre422.fr, 2
  br i1 %181, label %182, label %.thread431

182:                                              ; preds = %178
  br label %.thread431

.thread431:                                       ; preds = %.fold.split372, %163, %165, %.thread433, %178, %182
  %.pn440 = phi double [ %180, %178 ], [ %177, %.thread433 ], [ %180, %182 ], [ 0.000000e+00, %.fold.split372 ], [ %156, %163 ], [ %170, %165 ]
  %183 = phi double [ 1.000000e+00, %178 ], [ 2.000000e+00, %.thread433 ], [ 2.000000e+00, %182 ], [ 1.000000e+00, %.fold.split372 ], [ 1.000000e+00, %163 ], [ 1.000000e+00, %165 ]
  %184 = fmul double %161, %.pn440
  %185 = fdiv double %184, %183
  %186 = fcmp olt double %160, %185
  br i1 %186, label %187, label %190

187:                                              ; preds = %.thread431, %.thread424
  %188 = fcmp oge double %83, %81
  %189 = select i1 %188, i32 100, i32 -100
  br label %190

190:                                              ; preds = %139, %144, %.thread431, %187
  %.sink = phi i32 [ %189, %187 ], [ 0, %.thread431 ], [ 0, %144 ], [ 0, %139 ]
  %191 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv415
  store i32 %.sink, ptr %191, align 4, !tbaa !5
  %indvars.iv.next416 = add nuw nsw i64 %indvars.iv415, 1
  %192 = load i32, ptr %72, align 4, !tbaa !14
  switch i32 %192, label %247 [
    i32 0, label %.thread
    i32 1, label %.thread377
    i32 2, label %.thread378
  ]

.thread:                                          ; preds = %190
  %193 = add nsw i64 %indvars.iv417, -1
  %194 = getelementptr inbounds double, ptr %5, i64 %193
  %195 = load double, ptr %194, align 8, !tbaa !15
  %196 = getelementptr inbounds double, ptr %2, i64 %193
  %197 = load double, ptr %196, align 8, !tbaa !15
  %198 = insertelement <2 x double> poison, double %83, i64 0
  %199 = insertelement <2 x double> %198, double %195, i64 1
  %200 = insertelement <2 x double> poison, double %81, i64 0
  %201 = insertelement <2 x double> %200, double %197, i64 1
  %202 = fsub <2 x double> %199, %201
  %203 = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %202)
  br label %247

.thread377:                                       ; preds = %190
  %204 = getelementptr inbounds double, ptr %3, i64 %79
  %205 = load double, ptr %204, align 8, !tbaa !15
  %206 = getelementptr inbounds double, ptr %4, i64 %79
  %207 = load double, ptr %206, align 8, !tbaa !15
  %208 = add nsw i64 %indvars.iv417, -1
  %209 = getelementptr inbounds double, ptr %3, i64 %208
  %210 = load double, ptr %209, align 8, !tbaa !15
  %211 = getelementptr inbounds double, ptr %4, i64 %208
  %212 = load double, ptr %211, align 8, !tbaa !15
  %213 = insertelement <2 x double> poison, double %205, i64 0
  %214 = insertelement <2 x double> %213, double %210, i64 1
  %215 = insertelement <2 x double> poison, double %207, i64 0
  %216 = insertelement <2 x double> %215, double %212, i64 1
  %217 = fsub <2 x double> %214, %216
  br label %247

.thread378:                                       ; preds = %190
  %218 = getelementptr inbounds double, ptr %3, i64 %79
  %219 = load double, ptr %218, align 8, !tbaa !15
  %220 = getelementptr inbounds double, ptr %4, i64 %79
  %221 = load double, ptr %220, align 8, !tbaa !15
  %222 = add nsw i64 %indvars.iv417, -1
  %223 = getelementptr inbounds double, ptr %3, i64 %222
  %224 = load double, ptr %223, align 8, !tbaa !15
  %225 = getelementptr inbounds double, ptr %5, i64 %222
  %226 = load double, ptr %225, align 8, !tbaa !15
  %227 = getelementptr inbounds double, ptr %2, i64 %222
  %228 = load double, ptr %227, align 8, !tbaa !15
  %229 = fcmp ult double %226, %228
  %230 = getelementptr inbounds double, ptr %4, i64 %222
  %231 = load double, ptr %230, align 8, !tbaa !15
  %232 = insertelement <2 x i1> poison, i1 %93, i64 0
  %233 = insertelement <2 x i1> %232, i1 %229, i64 1
  %234 = insertelement <2 x double> poison, double %81, i64 0
  %235 = insertelement <2 x double> %234, double %228, i64 1
  %236 = insertelement <2 x double> poison, double %83, i64 0
  %237 = insertelement <2 x double> %236, double %226, i64 1
  %238 = select <2 x i1> %233, <2 x double> %235, <2 x double> %237
  %239 = insertelement <2 x double> poison, double %219, i64 0
  %240 = insertelement <2 x double> %239, double %224, i64 1
  %241 = fsub <2 x double> %240, %238
  %242 = select <2 x i1> %233, <2 x double> %237, <2 x double> %235
  %243 = insertelement <2 x double> poison, double %221, i64 0
  %244 = insertelement <2 x double> %243, double %231, i64 1
  %245 = fsub <2 x double> %242, %244
  %246 = fadd <2 x double> %241, %245
  br label %247

247:                                              ; preds = %190, %.thread377, %.thread378, %.thread
  %248 = phi <2 x double> [ %203, %.thread ], [ %217, %.thread377 ], [ %246, %.thread378 ], [ zeroinitializer, %190 ]
  %shift = shufflevector <2 x double> %248, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %249 = fsub <2 x double> %248, %shift
  %250 = extractelement <2 x double> %249, i64 0
  %251 = fadd double %.1300, %250
  %indvars.iv.next414 = add nuw nsw i64 %indvars.iv413, 1
  %indvars.iv.next418 = add nsw i64 %indvars.iv417, 1
  %.not359.not = icmp slt i64 %indvars.iv413, %76
  br i1 %.not359.not, label %78, label %252, !llvm.loop !19

252:                                              ; preds = %247
  %253 = trunc nuw i64 %indvars.iv.next416 to i32
  store i32 %253, ptr %7, align 4, !tbaa !5
  store i32 %spec.select, ptr %6, align 4, !tbaa !5
  br label %254

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

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

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

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

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

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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #2 = { 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 = !{!13, !13, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = !{!12, !13, i64 16}
!19 = distinct !{!19, !17}


; 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,VectorCombinePass