; LLVM IR from clangen/musikcube :: src/plugins/supereqdsp/supereq (Equ)

; 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.SuperEqState = type { ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, i32, i32, i32, i32 }

@_ZZ23equ_modifySamples_floatE3hm1 = external hidden global float, align 4

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z4rfftiiPf(i32 noundef, i32 noundef, ptr noundef) #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 willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

; Function Attrs: mustprogress uwtable
define dso_local i32 @equ_modifySamples_float(ptr noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3) #0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca float, align 4
  %14 = alloca float, align 4
  %15 = alloca float, align 4
  %16 = alloca float, align 4
  %17 = alloca float, align 4
  %18 = alloca float, align 4
  %19 = alloca float, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store i32 %2, ptr %7, align 4, !tbaa !9
  store i32 %3, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #3
  store float 1.000000e+00, ptr %13, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #3
  store float -1.000000e+00, ptr %14, align 4, !tbaa !11
  %20 = load ptr, ptr %5, align 8, !tbaa !5
  %21 = getelementptr inbounds %struct.SuperEqState, ptr %20, i32 0, i32 7
  %22 = load volatile i32, ptr %21, align 4, !tbaa !13
  %23 = icmp ne i32 %22, 0
  br i1 %23, label %24, label %48

24:                                               ; preds = %4
  %25 = load ptr, ptr %5, align 8, !tbaa !5
  %26 = getelementptr inbounds %struct.SuperEqState, ptr %25, i32 0, i32 7
  %27 = load volatile i32, ptr %26, align 4, !tbaa !13
  %28 = load ptr, ptr %5, align 8, !tbaa !5
  %29 = getelementptr inbounds %struct.SuperEqState, ptr %28, i32 0, i32 8
  store volatile i32 %27, ptr %29, align 8, !tbaa !15
  %30 = load ptr, ptr %5, align 8, !tbaa !5
  %31 = getelementptr inbounds %struct.SuperEqState, ptr %30, i32 0, i32 8
  %32 = load volatile i32, ptr %31, align 8, !tbaa !15
  %33 = icmp eq i32 %32, 1
  br i1 %33, label %34, label %38

34:                                               ; preds = %24
  %35 = load ptr, ptr %5, align 8, !tbaa !5
  %36 = getelementptr inbounds %struct.SuperEqState, ptr %35, i32 0, i32 1
  %37 = load ptr, ptr %36, align 8, !tbaa !16
  br label %42

38:                                               ; preds = %24
  %39 = load ptr, ptr %5, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.SuperEqState, ptr %39, i32 0, i32 2
  %41 = load ptr, ptr %40, align 8, !tbaa !17
  br label %42

42:                                               ; preds = %38, %34
  %43 = phi ptr [ %37, %34 ], [ %41, %38 ]
  %44 = load ptr, ptr %5, align 8, !tbaa !5
  %45 = getelementptr inbounds %struct.SuperEqState, ptr %44, i32 0, i32 0
  store ptr %43, ptr %45, align 8, !tbaa !18
  %46 = load ptr, ptr %5, align 8, !tbaa !5
  %47 = getelementptr inbounds %struct.SuperEqState, ptr %46, i32 0, i32 7
  store volatile i32 0, ptr %47, align 4, !tbaa !13
  br label %48

48:                                               ; preds = %42, %4
  store i32 0, ptr %10, align 4, !tbaa !9
  br label %49

49:                                               ; preds = %525, %48
  %50 = load ptr, ptr %5, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.SuperEqState, ptr %50, i32 0, i32 12
  %52 = load i32, ptr %51, align 8, !tbaa !19
  %53 = load i32, ptr %7, align 4, !tbaa !9
  %54 = add nsw i32 %52, %53
  %55 = load ptr, ptr %5, align 8, !tbaa !5
  %56 = getelementptr inbounds %struct.SuperEqState, ptr %55, i32 0, i32 9
  %57 = load i32, ptr %56, align 4, !tbaa !20
  %58 = icmp sge i32 %54, %57
  br i1 %58, label %59, label %526

59:                                               ; preds = %49
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %60

60:                                               ; preds = %128, %59
  %61 = load i32, ptr %9, align 4, !tbaa !9
  %62 = load ptr, ptr %5, align 8, !tbaa !5
  %63 = getelementptr inbounds %struct.SuperEqState, ptr %62, i32 0, i32 9
  %64 = load i32, ptr %63, align 4, !tbaa !20
  %65 = load ptr, ptr %5, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.SuperEqState, ptr %65, i32 0, i32 12
  %67 = load i32, ptr %66, align 8, !tbaa !19
  %68 = sub nsw i32 %64, %67
  %69 = load i32, ptr %8, align 4, !tbaa !9
  %70 = mul nsw i32 %68, %69
  %71 = icmp slt i32 %61, %70
  br i1 %71, label %72, label %131

72:                                               ; preds = %60
  %73 = load ptr, ptr %6, align 8, !tbaa !5
  %74 = load i32, ptr %9, align 4, !tbaa !9
  %75 = load i32, ptr %10, align 4, !tbaa !9
  %76 = load i32, ptr %8, align 4, !tbaa !9
  %77 = mul nsw i32 %75, %76
  %78 = add nsw i32 %74, %77
  %79 = sext i32 %78 to i64
  %80 = getelementptr inbounds float, ptr %73, i64 %79
  %81 = load float, ptr %80, align 4, !tbaa !11
  %82 = load ptr, ptr %5, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.SuperEqState, ptr %82, i32 0, i32 13
  %84 = load ptr, ptr %83, align 8, !tbaa !21
  %85 = load ptr, ptr %5, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct.SuperEqState, ptr %85, i32 0, i32 12
  %87 = load i32, ptr %86, align 8, !tbaa !19
  %88 = load i32, ptr %8, align 4, !tbaa !9
  %89 = mul nsw i32 %87, %88
  %90 = load i32, ptr %9, align 4, !tbaa !9
  %91 = add nsw i32 %89, %90
  %92 = sext i32 %91 to i64
  %93 = getelementptr inbounds float, ptr %84, i64 %92
  store float %81, ptr %93, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #3
  %94 = load ptr, ptr %5, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.SuperEqState, ptr %94, i32 0, i32 14
  %96 = load ptr, ptr %95, align 8, !tbaa !22
  %97 = load ptr, ptr %5, align 8, !tbaa !5
  %98 = getelementptr inbounds %struct.SuperEqState, ptr %97, i32 0, i32 12
  %99 = load i32, ptr %98, align 8, !tbaa !19
  %100 = load i32, ptr %8, align 4, !tbaa !9
  %101 = mul nsw i32 %99, %100
  %102 = load i32, ptr %9, align 4, !tbaa !9
  %103 = add nsw i32 %101, %102
  %104 = sext i32 %103 to i64
  %105 = getelementptr inbounds float, ptr %96, i64 %104
  %106 = load float, ptr %105, align 4, !tbaa !11
  store float %106, ptr %15, align 4, !tbaa !11
  %107 = load float, ptr %15, align 4, !tbaa !11
  %108 = load float, ptr %14, align 4, !tbaa !11
  %109 = fcmp olt float %107, %108
  br i1 %109, label %110, label %112

110:                                              ; preds = %72
  %111 = load float, ptr %14, align 4, !tbaa !11
  store float %111, ptr %15, align 4, !tbaa !11
  br label %112

112:                                              ; preds = %110, %72
  %113 = load float, ptr %13, align 4, !tbaa !11
  %114 = load float, ptr %15, align 4, !tbaa !11
  %115 = fcmp olt float %113, %114
  br i1 %115, label %116, label %118

116:                                              ; preds = %112
  %117 = load float, ptr %13, align 4, !tbaa !11
  store float %117, ptr %15, align 4, !tbaa !11
  br label %118

118:                                              ; preds = %116, %112
  %119 = load float, ptr %15, align 4, !tbaa !11
  %120 = load ptr, ptr %6, align 8, !tbaa !5
  %121 = load i32, ptr %9, align 4, !tbaa !9
  %122 = load i32, ptr %10, align 4, !tbaa !9
  %123 = load i32, ptr %8, align 4, !tbaa !9
  %124 = mul nsw i32 %122, %123
  %125 = add nsw i32 %121, %124
  %126 = sext i32 %125 to i64
  %127 = getelementptr inbounds float, ptr %120, i64 %126
  store float %119, ptr %127, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #3
  br label %128

128:                                              ; preds = %118
  %129 = load i32, ptr %9, align 4, !tbaa !9
  %130 = add nsw i32 %129, 1
  store i32 %130, ptr %9, align 4, !tbaa !9
  br label %60, !llvm.loop !23

131:                                              ; preds = %60
  %132 = load ptr, ptr %5, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.SuperEqState, ptr %132, i32 0, i32 9
  %134 = load i32, ptr %133, align 4, !tbaa !20
  %135 = load i32, ptr %8, align 4, !tbaa !9
  %136 = mul nsw i32 %134, %135
  store i32 %136, ptr %9, align 4, !tbaa !9
  br label %137

137:                                              ; preds = %165, %131
  %138 = load i32, ptr %9, align 4, !tbaa !9
  %139 = load ptr, ptr %5, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.SuperEqState, ptr %139, i32 0, i32 11
  %141 = load i32, ptr %140, align 4, !tbaa !25
  %142 = load i32, ptr %8, align 4, !tbaa !9
  %143 = mul nsw i32 %141, %142
  %144 = icmp slt i32 %138, %143
  br i1 %144, label %145, label %168

145:                                              ; preds = %137
  %146 = load ptr, ptr %5, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.SuperEqState, ptr %146, i32 0, i32 14
  %148 = load ptr, ptr %147, align 8, !tbaa !22
  %149 = load i32, ptr %9, align 4, !tbaa !9
  %150 = sext i32 %149 to i64
  %151 = getelementptr inbounds float, ptr %148, i64 %150
  %152 = load float, ptr %151, align 4, !tbaa !11
  %153 = load ptr, ptr %5, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.SuperEqState, ptr %153, i32 0, i32 14
  %155 = load ptr, ptr %154, align 8, !tbaa !22
  %156 = load i32, ptr %9, align 4, !tbaa !9
  %157 = load ptr, ptr %5, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.SuperEqState, ptr %157, i32 0, i32 9
  %159 = load i32, ptr %158, align 4, !tbaa !20
  %160 = load i32, ptr %8, align 4, !tbaa !9
  %161 = mul nsw i32 %159, %160
  %162 = sub nsw i32 %156, %161
  %163 = sext i32 %162 to i64
  %164 = getelementptr inbounds float, ptr %155, i64 %163
  store float %152, ptr %164, align 4, !tbaa !11
  br label %165

165:                                              ; preds = %145
  %166 = load i32, ptr %9, align 4, !tbaa !9
  %167 = add nsw i32 %166, 1
  store i32 %167, ptr %9, align 4, !tbaa !9
  br label %137, !llvm.loop !26

168:                                              ; preds = %137
  %169 = load ptr, ptr %5, align 8, !tbaa !5
  %170 = getelementptr inbounds %struct.SuperEqState, ptr %169, i32 0, i32 9
  %171 = load i32, ptr %170, align 4, !tbaa !20
  %172 = load ptr, ptr %5, align 8, !tbaa !5
  %173 = getelementptr inbounds %struct.SuperEqState, ptr %172, i32 0, i32 12
  %174 = load i32, ptr %173, align 8, !tbaa !19
  %175 = sub nsw i32 %171, %174
  %176 = load i32, ptr %10, align 4, !tbaa !9
  %177 = add nsw i32 %176, %175
  store i32 %177, ptr %10, align 4, !tbaa !9
  %178 = load ptr, ptr %5, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.SuperEqState, ptr %178, i32 0, i32 9
  %180 = load i32, ptr %179, align 4, !tbaa !20
  %181 = load ptr, ptr %5, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.SuperEqState, ptr %181, i32 0, i32 12
  %183 = load i32, ptr %182, align 8, !tbaa !19
  %184 = sub nsw i32 %180, %183
  %185 = load i32, ptr %7, align 4, !tbaa !9
  %186 = sub nsw i32 %185, %184
  store i32 %186, ptr %7, align 4, !tbaa !9
  %187 = load ptr, ptr %5, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.SuperEqState, ptr %187, i32 0, i32 12
  store i32 0, ptr %188, align 8, !tbaa !19
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %189

189:                                              ; preds = %522, %168
  %190 = load i32, ptr %11, align 4, !tbaa !9
  %191 = load i32, ptr %8, align 4, !tbaa !9
  %192 = icmp slt i32 %190, %191
  br i1 %192, label %193, label %525

193:                                              ; preds = %189
  %194 = load ptr, ptr %5, align 8, !tbaa !5
  %195 = getelementptr inbounds %struct.SuperEqState, ptr %194, i32 0, i32 0
  %196 = load ptr, ptr %195, align 8, !tbaa !18
  %197 = load i32, ptr %11, align 4, !tbaa !9
  %198 = load ptr, ptr %5, align 8, !tbaa !5
  %199 = getelementptr inbounds %struct.SuperEqState, ptr %198, i32 0, i32 11
  %200 = load i32, ptr %199, align 4, !tbaa !25
  %201 = mul nsw i32 %197, %200
  %202 = sext i32 %201 to i64
  %203 = getelementptr inbounds float, ptr %196, i64 %202
  store ptr %203, ptr %12, align 8, !tbaa !5
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %204

204:                                              ; preds = %228, %193
  %205 = load i32, ptr %9, align 4, !tbaa !9
  %206 = load ptr, ptr %5, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.SuperEqState, ptr %206, i32 0, i32 9
  %208 = load i32, ptr %207, align 4, !tbaa !20
  %209 = icmp slt i32 %205, %208
  br i1 %209, label %210, label %231

210:                                              ; preds = %204
  %211 = load ptr, ptr %5, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.SuperEqState, ptr %211, i32 0, i32 13
  %213 = load ptr, ptr %212, align 8, !tbaa !21
  %214 = load i32, ptr %8, align 4, !tbaa !9
  %215 = load i32, ptr %9, align 4, !tbaa !9
  %216 = mul nsw i32 %214, %215
  %217 = load i32, ptr %11, align 4, !tbaa !9
  %218 = add nsw i32 %216, %217
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds float, ptr %213, i64 %219
  %221 = load float, ptr %220, align 4, !tbaa !11
  %222 = load ptr, ptr %5, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.SuperEqState, ptr %222, i32 0, i32 4
  %224 = load ptr, ptr %223, align 8, !tbaa !27
  %225 = load i32, ptr %9, align 4, !tbaa !9
  %226 = sext i32 %225 to i64
  %227 = getelementptr inbounds float, ptr %224, i64 %226
  store float %221, ptr %227, align 4, !tbaa !11
  br label %228

228:                                              ; preds = %210
  %229 = load i32, ptr %9, align 4, !tbaa !9
  %230 = add nsw i32 %229, 1
  store i32 %230, ptr %9, align 4, !tbaa !9
  br label %204, !llvm.loop !28

231:                                              ; preds = %204
  %232 = load ptr, ptr %5, align 8, !tbaa !5
  %233 = getelementptr inbounds %struct.SuperEqState, ptr %232, i32 0, i32 9
  %234 = load i32, ptr %233, align 4, !tbaa !20
  store i32 %234, ptr %9, align 4, !tbaa !9
  br label %235

235:                                              ; preds = %248, %231
  %236 = load i32, ptr %9, align 4, !tbaa !9
  %237 = load ptr, ptr %5, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.SuperEqState, ptr %237, i32 0, i32 11
  %239 = load i32, ptr %238, align 4, !tbaa !25
  %240 = icmp slt i32 %236, %239
  br i1 %240, label %241, label %251

241:                                              ; preds = %235
  %242 = load ptr, ptr %5, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.SuperEqState, ptr %242, i32 0, i32 4
  %244 = load ptr, ptr %243, align 8, !tbaa !27
  %245 = load i32, ptr %9, align 4, !tbaa !9
  %246 = sext i32 %245 to i64
  %247 = getelementptr inbounds float, ptr %244, i64 %246
  store float 0.000000e+00, ptr %247, align 4, !tbaa !11
  br label %248

248:                                              ; preds = %241
  %249 = load i32, ptr %9, align 4, !tbaa !9
  %250 = add nsw i32 %249, 1
  store i32 %250, ptr %9, align 4, !tbaa !9
  br label %235, !llvm.loop !29

251:                                              ; preds = %235
  %252 = load ptr, ptr %5, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.SuperEqState, ptr %252, i32 0, i32 17
  %254 = load i32, ptr %253, align 8, !tbaa !30
  %255 = icmp ne i32 %254, 0
  br i1 %255, label %256, label %389

256:                                              ; preds = %251
  %257 = load ptr, ptr %5, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.SuperEqState, ptr %257, i32 0, i32 18
  %259 = load i32, ptr %258, align 4, !tbaa !31
  %260 = load ptr, ptr %5, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.SuperEqState, ptr %260, i32 0, i32 4
  %262 = load ptr, ptr %261, align 8, !tbaa !27
  call void @_Z4rfftiiPf(i32 noundef %259, i32 noundef 1, ptr noundef %262)
  %263 = load ptr, ptr %12, align 8, !tbaa !5
  %264 = getelementptr inbounds float, ptr %263, i64 0
  %265 = load float, ptr %264, align 4, !tbaa !11
  %266 = load ptr, ptr %5, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.SuperEqState, ptr %266, i32 0, i32 4
  %268 = load ptr, ptr %267, align 8, !tbaa !27
  %269 = getelementptr inbounds float, ptr %268, i64 0
  %270 = load float, ptr %269, align 4, !tbaa !11
  %271 = fmul float %265, %270
  %272 = load ptr, ptr %5, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.SuperEqState, ptr %272, i32 0, i32 4
  %274 = load ptr, ptr %273, align 8, !tbaa !27
  %275 = getelementptr inbounds float, ptr %274, i64 0
  store float %271, ptr %275, align 4, !tbaa !11
  %276 = load ptr, ptr %12, align 8, !tbaa !5
  %277 = getelementptr inbounds float, ptr %276, i64 1
  %278 = load float, ptr %277, align 4, !tbaa !11
  %279 = load ptr, ptr %5, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.SuperEqState, ptr %279, i32 0, i32 4
  %281 = load ptr, ptr %280, align 8, !tbaa !27
  %282 = getelementptr inbounds float, ptr %281, i64 1
  %283 = load float, ptr %282, align 4, !tbaa !11
  %284 = fmul float %278, %283
  %285 = load ptr, ptr %5, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.SuperEqState, ptr %285, i32 0, i32 4
  %287 = load ptr, ptr %286, align 8, !tbaa !27
  %288 = getelementptr inbounds float, ptr %287, i64 1
  store float %284, ptr %288, align 4, !tbaa !11
  store i32 1, ptr %9, align 4, !tbaa !9
  br label %289

289:                                              ; preds = %379, %256
  %290 = load i32, ptr %9, align 4, !tbaa !9
  %291 = load ptr, ptr %5, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.SuperEqState, ptr %291, i32 0, i32 11
  %293 = load i32, ptr %292, align 4, !tbaa !25
  %294 = sdiv i32 %293, 2
  %295 = icmp slt i32 %290, %294
  br i1 %295, label %296, label %382

296:                                              ; preds = %289
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #3
  %297 = load ptr, ptr %12, align 8, !tbaa !5
  %298 = load i32, ptr %9, align 4, !tbaa !9
  %299 = mul nsw i32 %298, 2
  %300 = sext i32 %299 to i64
  %301 = getelementptr inbounds float, ptr %297, i64 %300
  %302 = load float, ptr %301, align 4, !tbaa !11
  %303 = load ptr, ptr %5, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct.SuperEqState, ptr %303, i32 0, i32 4
  %305 = load ptr, ptr %304, align 8, !tbaa !27
  %306 = load i32, ptr %9, align 4, !tbaa !9
  %307 = mul nsw i32 %306, 2
  %308 = sext i32 %307 to i64
  %309 = getelementptr inbounds float, ptr %305, i64 %308
  %310 = load float, ptr %309, align 4, !tbaa !11
  %311 = load ptr, ptr %12, align 8, !tbaa !5
  %312 = load i32, ptr %9, align 4, !tbaa !9
  %313 = mul nsw i32 %312, 2
  %314 = add nsw i32 %313, 1
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds float, ptr %311, i64 %315
  %317 = load float, ptr %316, align 4, !tbaa !11
  %318 = load ptr, ptr %5, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.SuperEqState, ptr %318, i32 0, i32 4
  %320 = load ptr, ptr %319, align 8, !tbaa !27
  %321 = load i32, ptr %9, align 4, !tbaa !9
  %322 = mul nsw i32 %321, 2
  %323 = add nsw i32 %322, 1
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds float, ptr %320, i64 %324
  %326 = load float, ptr %325, align 4, !tbaa !11
  %327 = fmul float %317, %326
  %328 = fneg float %327
  %329 = call float @llvm.fmuladd.f32(float %302, float %310, float %328)
  store float %329, ptr %16, align 4, !tbaa !11
  %330 = load ptr, ptr %12, align 8, !tbaa !5
  %331 = load i32, ptr %9, align 4, !tbaa !9
  %332 = mul nsw i32 %331, 2
  %333 = add nsw i32 %332, 1
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds float, ptr %330, i64 %334
  %336 = load float, ptr %335, align 4, !tbaa !11
  %337 = load ptr, ptr %5, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.SuperEqState, ptr %337, i32 0, i32 4
  %339 = load ptr, ptr %338, align 8, !tbaa !27
  %340 = load i32, ptr %9, align 4, !tbaa !9
  %341 = mul nsw i32 %340, 2
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds float, ptr %339, i64 %342
  %344 = load float, ptr %343, align 4, !tbaa !11
  %345 = load ptr, ptr %12, align 8, !tbaa !5
  %346 = load i32, ptr %9, align 4, !tbaa !9
  %347 = mul nsw i32 %346, 2
  %348 = sext i32 %347 to i64
  %349 = getelementptr inbounds float, ptr %345, i64 %348
  %350 = load float, ptr %349, align 4, !tbaa !11
  %351 = load ptr, ptr %5, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.SuperEqState, ptr %351, i32 0, i32 4
  %353 = load ptr, ptr %352, align 8, !tbaa !27
  %354 = load i32, ptr %9, align 4, !tbaa !9
  %355 = mul nsw i32 %354, 2
  %356 = add nsw i32 %355, 1
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds float, ptr %353, i64 %357
  %359 = load float, ptr %358, align 4, !tbaa !11
  %360 = fmul float %350, %359
  %361 = call float @llvm.fmuladd.f32(float %336, float %344, float %360)
  store float %361, ptr %17, align 4, !tbaa !11
  %362 = load float, ptr %16, align 4, !tbaa !11
  %363 = load ptr, ptr %5, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct.SuperEqState, ptr %363, i32 0, i32 4
  %365 = load ptr, ptr %364, align 8, !tbaa !27
  %366 = load i32, ptr %9, align 4, !tbaa !9
  %367 = mul nsw i32 %366, 2
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds float, ptr %365, i64 %368
  store float %362, ptr %369, align 4, !tbaa !11
  %370 = load float, ptr %17, align 4, !tbaa !11
  %371 = load ptr, ptr %5, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.SuperEqState, ptr %371, i32 0, i32 4
  %373 = load ptr, ptr %372, align 8, !tbaa !27
  %374 = load i32, ptr %9, align 4, !tbaa !9
  %375 = mul nsw i32 %374, 2
  %376 = add nsw i32 %375, 1
  %377 = sext i32 %376 to i64
  %378 = getelementptr inbounds float, ptr %373, i64 %377
  store float %370, ptr %378, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #3
  br label %379

379:                                              ; preds = %296
  %380 = load i32, ptr %9, align 4, !tbaa !9
  %381 = add nsw i32 %380, 1
  store i32 %381, ptr %9, align 4, !tbaa !9
  br label %289, !llvm.loop !32

382:                                              ; preds = %289
  %383 = load ptr, ptr %5, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.SuperEqState, ptr %383, i32 0, i32 18
  %385 = load i32, ptr %384, align 4, !tbaa !31
  %386 = load ptr, ptr %5, align 8, !tbaa !5
  %387 = getelementptr inbounds %struct.SuperEqState, ptr %386, i32 0, i32 4
  %388 = load ptr, ptr %387, align 8, !tbaa !27
  call void @_Z4rfftiiPf(i32 noundef %385, i32 noundef -1, ptr noundef %388)
  br label %449

389:                                              ; preds = %251
  %390 = load ptr, ptr %5, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.SuperEqState, ptr %390, i32 0, i32 9
  %392 = load i32, ptr %391, align 4, !tbaa !20
  %393 = sub nsw i32 %392, 1
  %394 = load ptr, ptr %5, align 8, !tbaa !5
  %395 = getelementptr inbounds %struct.SuperEqState, ptr %394, i32 0, i32 9
  %396 = load i32, ptr %395, align 4, !tbaa !20
  %397 = sdiv i32 %396, 2
  %398 = add nsw i32 %393, %397
  store i32 %398, ptr %9, align 4, !tbaa !9
  br label %399

399:                                              ; preds = %431, %389
  %400 = load i32, ptr %9, align 4, !tbaa !9
  %401 = load ptr, ptr %5, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.SuperEqState, ptr %401, i32 0, i32 9
  %403 = load i32, ptr %402, align 4, !tbaa !20
  %404 = sdiv i32 %403, 2
  %405 = icmp sge i32 %400, %404
  br i1 %405, label %406, label %434

406:                                              ; preds = %399
  %407 = load ptr, ptr %5, align 8, !tbaa !5
  %408 = getelementptr inbounds %struct.SuperEqState, ptr %407, i32 0, i32 4
  %409 = load ptr, ptr %408, align 8, !tbaa !27
  %410 = load i32, ptr %9, align 4, !tbaa !9
  %411 = load ptr, ptr %5, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.SuperEqState, ptr %411, i32 0, i32 9
  %413 = load i32, ptr %412, align 4, !tbaa !20
  %414 = sdiv i32 %413, 2
  %415 = sub nsw i32 %410, %414
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds float, ptr %409, i64 %416
  %418 = load float, ptr %417, align 4, !tbaa !11
  %419 = load ptr, ptr %5, align 8, !tbaa !5
  %420 = getelementptr inbounds %struct.SuperEqState, ptr %419, i32 0, i32 11
  %421 = load i32, ptr %420, align 4, !tbaa !25
  %422 = sitofp i32 %421 to float
  %423 = fmul float %418, %422
  %424 = fdiv float %423, 2.000000e+00
  %425 = load ptr, ptr %5, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.SuperEqState, ptr %425, i32 0, i32 4
  %427 = load ptr, ptr %426, align 8, !tbaa !27
  %428 = load i32, ptr %9, align 4, !tbaa !9
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds float, ptr %427, i64 %429
  store float %424, ptr %430, align 4, !tbaa !11
  br label %431

431:                                              ; preds = %406
  %432 = load i32, ptr %9, align 4, !tbaa !9
  %433 = add nsw i32 %432, -1
  store i32 %433, ptr %9, align 4, !tbaa !9
  br label %399, !llvm.loop !33

434:                                              ; preds = %399
  br label %435

435:                                              ; preds = %445, %434
  %436 = load i32, ptr %9, align 4, !tbaa !9
  %437 = icmp sge i32 %436, 0
  br i1 %437, label %438, label %448

438:                                              ; preds = %435
  %439 = load ptr, ptr %5, align 8, !tbaa !5
  %440 = getelementptr inbounds %struct.SuperEqState, ptr %439, i32 0, i32 4
  %441 = load ptr, ptr %440, align 8, !tbaa !27
  %442 = load i32, ptr %9, align 4, !tbaa !9
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds float, ptr %441, i64 %443
  store float 0.000000e+00, ptr %444, align 4, !tbaa !11
  br label %445

445:                                              ; preds = %438
  %446 = load i32, ptr %9, align 4, !tbaa !9
  %447 = add nsw i32 %446, -1
  store i32 %447, ptr %9, align 4, !tbaa !9
  br label %435, !llvm.loop !34

448:                                              ; preds = %435
  br label %449

449:                                              ; preds = %448, %382
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %450

450:                                              ; preds = %481, %449
  %451 = load i32, ptr %9, align 4, !tbaa !9
  %452 = load ptr, ptr %5, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.SuperEqState, ptr %452, i32 0, i32 9
  %454 = load i32, ptr %453, align 4, !tbaa !20
  %455 = icmp slt i32 %451, %454
  br i1 %455, label %456, label %484

456:                                              ; preds = %450
  %457 = load ptr, ptr %5, align 8, !tbaa !5
  %458 = getelementptr inbounds %struct.SuperEqState, ptr %457, i32 0, i32 4
  %459 = load ptr, ptr %458, align 8, !tbaa !27
  %460 = load i32, ptr %9, align 4, !tbaa !9
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds float, ptr %459, i64 %461
  %463 = load float, ptr %462, align 4, !tbaa !11
  %464 = load ptr, ptr %5, align 8, !tbaa !5
  %465 = getelementptr inbounds %struct.SuperEqState, ptr %464, i32 0, i32 11
  %466 = load i32, ptr %465, align 4, !tbaa !25
  %467 = sitofp i32 %466 to float
  %468 = fdiv float %463, %467
  %469 = load ptr, ptr %5, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.SuperEqState, ptr %469, i32 0, i32 14
  %471 = load ptr, ptr %470, align 8, !tbaa !22
  %472 = load i32, ptr %9, align 4, !tbaa !9
  %473 = load i32, ptr %8, align 4, !tbaa !9
  %474 = mul nsw i32 %472, %473
  %475 = load i32, ptr %11, align 4, !tbaa !9
  %476 = add nsw i32 %474, %475
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds float, ptr %471, i64 %477
  %479 = load float, ptr %478, align 4, !tbaa !11
  %480 = call float @llvm.fmuladd.f32(float %468, float 2.000000e+00, float %479)
  store float %480, ptr %478, align 4, !tbaa !11
  br label %481

481:                                              ; preds = %456
  %482 = load i32, ptr %9, align 4, !tbaa !9
  %483 = add nsw i32 %482, 1
  store i32 %483, ptr %9, align 4, !tbaa !9
  br label %450, !llvm.loop !35

484:                                              ; preds = %450
  %485 = load ptr, ptr %5, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.SuperEqState, ptr %485, i32 0, i32 9
  %487 = load i32, ptr %486, align 4, !tbaa !20
  store i32 %487, ptr %9, align 4, !tbaa !9
  br label %488

488:                                              ; preds = %518, %484
  %489 = load i32, ptr %9, align 4, !tbaa !9
  %490 = load ptr, ptr %5, align 8, !tbaa !5
  %491 = getelementptr inbounds %struct.SuperEqState, ptr %490, i32 0, i32 11
  %492 = load i32, ptr %491, align 4, !tbaa !25
  %493 = icmp slt i32 %489, %492
  br i1 %493, label %494, label %521

494:                                              ; preds = %488
  %495 = load ptr, ptr %5, align 8, !tbaa !5
  %496 = getelementptr inbounds %struct.SuperEqState, ptr %495, i32 0, i32 4
  %497 = load ptr, ptr %496, align 8, !tbaa !27
  %498 = load i32, ptr %9, align 4, !tbaa !9
  %499 = sext i32 %498 to i64
  %500 = getelementptr inbounds float, ptr %497, i64 %499
  %501 = load float, ptr %500, align 4, !tbaa !11
  %502 = load ptr, ptr %5, align 8, !tbaa !5
  %503 = getelementptr inbounds %struct.SuperEqState, ptr %502, i32 0, i32 11
  %504 = load i32, ptr %503, align 4, !tbaa !25
  %505 = sitofp i32 %504 to float
  %506 = fdiv float %501, %505
  %507 = fmul float %506, 2.000000e+00
  %508 = load ptr, ptr %5, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.SuperEqState, ptr %508, i32 0, i32 14
  %510 = load ptr, ptr %509, align 8, !tbaa !22
  %511 = load i32, ptr %9, align 4, !tbaa !9
  %512 = load i32, ptr %8, align 4, !tbaa !9
  %513 = mul nsw i32 %511, %512
  %514 = load i32, ptr %11, align 4, !tbaa !9
  %515 = add nsw i32 %513, %514
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds float, ptr %510, i64 %516
  store float %507, ptr %517, align 4, !tbaa !11
  br label %518

518:                                              ; preds = %494
  %519 = load i32, ptr %9, align 4, !tbaa !9
  %520 = add nsw i32 %519, 1
  store i32 %520, ptr %9, align 4, !tbaa !9
  br label %488, !llvm.loop !36

521:                                              ; preds = %488
  br label %522

522:                                              ; preds = %521
  %523 = load i32, ptr %11, align 4, !tbaa !9
  %524 = add nsw i32 %523, 1
  store i32 %524, ptr %11, align 4, !tbaa !9
  br label %189, !llvm.loop !37

525:                                              ; preds = %189
  br label %49, !llvm.loop !38

526:                                              ; preds = %49
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %527

527:                                              ; preds = %624, %526
  %528 = load i32, ptr %9, align 4, !tbaa !9
  %529 = load i32, ptr %7, align 4, !tbaa !9
  %530 = load i32, ptr %8, align 4, !tbaa !9
  %531 = mul nsw i32 %529, %530
  %532 = icmp slt i32 %528, %531
  br i1 %532, label %533, label %627

533:                                              ; preds = %527
  %534 = load ptr, ptr %6, align 8, !tbaa !5
  %535 = load i32, ptr %9, align 4, !tbaa !9
  %536 = load i32, ptr %10, align 4, !tbaa !9
  %537 = load i32, ptr %8, align 4, !tbaa !9
  %538 = mul nsw i32 %536, %537
  %539 = add nsw i32 %535, %538
  %540 = sext i32 %539 to i64
  %541 = getelementptr inbounds float, ptr %534, i64 %540
  %542 = load float, ptr %541, align 4, !tbaa !11
  %543 = load ptr, ptr %5, align 8, !tbaa !5
  %544 = getelementptr inbounds %struct.SuperEqState, ptr %543, i32 0, i32 13
  %545 = load ptr, ptr %544, align 8, !tbaa !21
  %546 = load ptr, ptr %5, align 8, !tbaa !5
  %547 = getelementptr inbounds %struct.SuperEqState, ptr %546, i32 0, i32 12
  %548 = load i32, ptr %547, align 8, !tbaa !19
  %549 = load i32, ptr %8, align 4, !tbaa !9
  %550 = mul nsw i32 %548, %549
  %551 = load i32, ptr %9, align 4, !tbaa !9
  %552 = add nsw i32 %550, %551
  %553 = sext i32 %552 to i64
  %554 = getelementptr inbounds float, ptr %545, i64 %553
  store float %542, ptr %554, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #3
  %555 = load ptr, ptr %5, align 8, !tbaa !5
  %556 = getelementptr inbounds %struct.SuperEqState, ptr %555, i32 0, i32 14
  %557 = load ptr, ptr %556, align 8, !tbaa !22
  %558 = load ptr, ptr %5, align 8, !tbaa !5
  %559 = getelementptr inbounds %struct.SuperEqState, ptr %558, i32 0, i32 12
  %560 = load i32, ptr %559, align 8, !tbaa !19
  %561 = load i32, ptr %8, align 4, !tbaa !9
  %562 = mul nsw i32 %560, %561
  %563 = load i32, ptr %9, align 4, !tbaa !9
  %564 = add nsw i32 %562, %563
  %565 = sext i32 %564 to i64
  %566 = getelementptr inbounds float, ptr %557, i64 %565
  %567 = load float, ptr %566, align 4, !tbaa !11
  store float %567, ptr %18, align 4, !tbaa !11
  %568 = load ptr, ptr %5, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.SuperEqState, ptr %568, i32 0, i32 15
  %570 = load i32, ptr %569, align 8, !tbaa !39
  %571 = icmp ne i32 %570, 0
  br i1 %571, label %572, label %601

572:                                              ; preds = %533
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #3
  %573 = load float, ptr @_ZZ23equ_modifySamples_floatE3hm1, align 4, !tbaa !11
  %574 = load float, ptr %18, align 4, !tbaa !11
  %575 = fsub float %574, %573
  store float %575, ptr %18, align 4, !tbaa !11
  %576 = load float, ptr %18, align 4, !tbaa !11
  store float %576, ptr %19, align 4, !tbaa !11
  %577 = load float, ptr %18, align 4, !tbaa !11
  %578 = load float, ptr %14, align 4, !tbaa !11
  %579 = fcmp olt float %577, %578
  br i1 %579, label %580, label %582

580:                                              ; preds = %572
  %581 = load float, ptr %14, align 4, !tbaa !11
  store float %581, ptr %18, align 4, !tbaa !11
  br label %582

582:                                              ; preds = %580, %572
  %583 = load float, ptr %13, align 4, !tbaa !11
  %584 = load float, ptr %18, align 4, !tbaa !11
  %585 = fcmp olt float %583, %584
  br i1 %585, label %586, label %588

586:                                              ; preds = %582
  %587 = load float, ptr %13, align 4, !tbaa !11
  store float %587, ptr %18, align 4, !tbaa !11
  br label %588

588:                                              ; preds = %586, %582
  %589 = load float, ptr %18, align 4, !tbaa !11
  %590 = load float, ptr %19, align 4, !tbaa !11
  %591 = fsub float %589, %590
  store float %591, ptr @_ZZ23equ_modifySamples_floatE3hm1, align 4, !tbaa !11
  %592 = load float, ptr %18, align 4, !tbaa !11
  %593 = load ptr, ptr %6, align 8, !tbaa !5
  %594 = load i32, ptr %9, align 4, !tbaa !9
  %595 = load i32, ptr %10, align 4, !tbaa !9
  %596 = load i32, ptr %8, align 4, !tbaa !9
  %597 = mul nsw i32 %595, %596
  %598 = add nsw i32 %594, %597
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds float, ptr %593, i64 %599
  store float %592, ptr %600, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #3
  br label %623

601:                                              ; preds = %533
  %602 = load float, ptr %18, align 4, !tbaa !11
  %603 = load float, ptr %14, align 4, !tbaa !11
  %604 = fcmp olt float %602, %603
  br i1 %604, label %605, label %607

605:                                              ; preds = %601
  %606 = load float, ptr %14, align 4, !tbaa !11
  store float %606, ptr %18, align 4, !tbaa !11
  br label %607

607:                                              ; preds = %605, %601
  %608 = load float, ptr %13, align 4, !tbaa !11
  %609 = load float, ptr %18, align 4, !tbaa !11
  %610 = fcmp olt float %608, %609
  br i1 %610, label %611, label %613

611:                                              ; preds = %607
  %612 = load float, ptr %13, align 4, !tbaa !11
  store float %612, ptr %18, align 4, !tbaa !11
  br label %613

613:                                              ; preds = %611, %607
  %614 = load float, ptr %18, align 4, !tbaa !11
  %615 = load ptr, ptr %6, align 8, !tbaa !5
  %616 = load i32, ptr %9, align 4, !tbaa !9
  %617 = load i32, ptr %10, align 4, !tbaa !9
  %618 = load i32, ptr %8, align 4, !tbaa !9
  %619 = mul nsw i32 %617, %618
  %620 = add nsw i32 %616, %619
  %621 = sext i32 %620 to i64
  %622 = getelementptr inbounds float, ptr %615, i64 %621
  store float %614, ptr %622, align 4, !tbaa !11
  br label %623

623:                                              ; preds = %613, %588
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #3
  br label %624

624:                                              ; preds = %623
  %625 = load i32, ptr %9, align 4, !tbaa !9
  %626 = add nsw i32 %625, 1
  store i32 %626, ptr %9, align 4, !tbaa !9
  br label %527, !llvm.loop !40

627:                                              ; preds = %527
  %628 = load i32, ptr %7, align 4, !tbaa !9
  %629 = load i32, ptr %10, align 4, !tbaa !9
  %630 = add nsw i32 %629, %628
  store i32 %630, ptr %10, align 4, !tbaa !9
  %631 = load i32, ptr %7, align 4, !tbaa !9
  %632 = load ptr, ptr %5, align 8, !tbaa !5
  %633 = getelementptr inbounds %struct.SuperEqState, ptr %632, i32 0, i32 12
  %634 = load i32, ptr %633, align 8, !tbaa !19
  %635 = add nsw i32 %634, %631
  store i32 %635, ptr %633, align 8, !tbaa !19
  %636 = load i32, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #3
  ret i32 %636
}

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

attributes #0 = { mustprogress 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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = !{!14, !10, i64 52}
!14 = !{!"_ZTS12SuperEqState", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !6, i64 80, !6, i64 88, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108}
!15 = !{!14, !10, i64 56}
!16 = !{!14, !6, i64 8}
!17 = !{!14, !6, i64 16}
!18 = !{!14, !6, i64 0}
!19 = !{!14, !10, i64 72}
!20 = !{!14, !10, i64 60}
!21 = !{!14, !6, i64 80}
!22 = !{!14, !6, i64 88}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = !{!14, !10, i64 68}
!26 = distinct !{!26, !24}
!27 = !{!14, !6, i64 32}
!28 = distinct !{!28, !24}
!29 = distinct !{!29, !24}
!30 = !{!14, !10, i64 104}
!31 = !{!14, !10, i64 108}
!32 = distinct !{!32, !24}
!33 = distinct !{!33, !24}
!34 = distinct !{!34, !24}
!35 = distinct !{!35, !24}
!36 = distinct !{!36, !24}
!37 = distinct !{!37, !24}
!38 = distinct !{!38, !24}
!39 = !{!14, !10, i64 96}
!40 = distinct !{!40, !24}


; 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"

@_ZZ23equ_modifySamples_floatE3hm1 = external hidden local_unnamed_addr global float, align 4

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z4rfftiiPf(i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
define dso_local i32 @equ_modifySamples_float(ptr noundef %0, ptr nocapture noundef %1, i32 noundef %2, i32 noundef %3) local_unnamed_addr #0 {
  %5 = getelementptr inbounds i8, ptr %0, i64 52
  %6 = load volatile i32, ptr %5, align 4, !tbaa !5
  %.not = icmp eq i32 %6, 0
  br i1 %.not, label %13, label %7

7:                                                ; preds = %4
  %8 = load volatile i32, ptr %5, align 4, !tbaa !5
  %9 = getelementptr inbounds i8, ptr %0, i64 56
  store volatile i32 %8, ptr %9, align 8, !tbaa !11
  %10 = load volatile i32, ptr %9, align 8, !tbaa !11
  %11 = icmp eq i32 %10, 1
  %.in.v = select i1 %11, i64 8, i64 16
  %.in = getelementptr inbounds i8, ptr %0, i64 %.in.v
  %12 = load ptr, ptr %.in, align 8, !tbaa !12
  store ptr %12, ptr %0, align 8, !tbaa !13
  store volatile i32 0, ptr %5, align 4, !tbaa !5
  br label %13

13:                                               ; preds = %7, %4
  %14 = getelementptr inbounds i8, ptr %0, i64 72
  %15 = getelementptr inbounds i8, ptr %0, i64 60
  %16 = load i32, ptr %14, align 8, !tbaa !14
  %17 = add nsw i32 %16, %2
  %18 = load i32, ptr %15, align 4, !tbaa !15
  %.not215263 = icmp slt i32 %17, %18
  br i1 %.not215263, label %.preheader, label %.preheader223.lr.ph

.preheader223.lr.ph:                              ; preds = %13
  %19 = getelementptr inbounds i8, ptr %0, i64 80
  %20 = getelementptr inbounds i8, ptr %0, i64 88
  %21 = getelementptr inbounds i8, ptr %0, i64 68
  %22 = icmp sgt i32 %3, 0
  %23 = getelementptr inbounds i8, ptr %0, i64 32
  %24 = getelementptr inbounds i8, ptr %0, i64 104
  %25 = getelementptr inbounds i8, ptr %0, i64 108
  %26 = zext i32 %3 to i64
  %27 = sext i32 %3 to i64
  %ident.check421.not = icmp eq i32 %3, 1
  %ident.check355.not = icmp eq i32 %3, 1
  %ident.check.not = icmp eq i32 %3, 1
  br label %.preheader223

.loopexit222.loopexit:                            ; preds = %._crit_edge259
  %.pre331 = load i32, ptr %14, align 8, !tbaa !14
  br label %.loopexit222

.loopexit222:                                     ; preds = %.loopexit222.loopexit, %._crit_edge234
  %28 = phi i32 [ %263, %.loopexit222.loopexit ], [ %31, %._crit_edge234 ]
  %29 = phi i32 [ %.pre331, %.loopexit222.loopexit ], [ 0, %._crit_edge234 ]
  %30 = add nsw i32 %29, %132
  %.not215 = icmp slt i32 %30, %28
  br i1 %.not215, label %.preheader, label %.preheader223, !llvm.loop !16

.preheader223:                                    ; preds = %.preheader223.lr.ph, %.loopexit222
  %31 = phi i32 [ %18, %.preheader223.lr.ph ], [ %28, %.loopexit222 ]
  %32 = phi i32 [ %16, %.preheader223.lr.ph ], [ %29, %.loopexit222 ]
  %.0265 = phi i32 [ %2, %.preheader223.lr.ph ], [ %132, %.loopexit222 ]
  %.0203264 = phi i32 [ 0, %.preheader223.lr.ph ], [ %131, %.loopexit222 ]
  %33 = sub nsw i32 %31, %32
  %34 = mul nsw i32 %33, %3
  %35 = icmp sgt i32 %34, 0
  br i1 %35, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader223
  %36 = mul nsw i32 %.0203264, %3
  %37 = load ptr, ptr %19, align 8, !tbaa !18
  %38 = mul nsw i32 %32, %3
  %39 = load ptr, ptr %20, align 8, !tbaa !19
  %40 = sext i32 %36 to i64
  %41 = sext i32 %38 to i64
  %wide.trip.count = zext nneg i32 %34 to i64
  %invariant.gep = getelementptr float, ptr %1, i64 %40
  %min.iters.check472 = icmp ult i32 %34, 8
  br i1 %min.iters.check472, label %scalar.ph471.preheader, label %vector.memcheck454

scalar.ph471.preheader:                           ; preds = %middle.block470, %vector.memcheck454, %.lr.ph
  %indvars.iv.ph = phi i64 [ 0, %vector.memcheck454 ], [ 0, %.lr.ph ], [ %n.vec475, %middle.block470 ]
  br label %scalar.ph471

vector.memcheck454:                               ; preds = %.lr.ph
  %42 = shl nsw i64 %41, 2
  %scevgep455 = getelementptr i8, ptr %37, i64 %42
  %43 = add nsw i64 %41, %wide.trip.count
  %44 = shl nsw i64 %43, 2
  %scevgep456 = getelementptr i8, ptr %37, i64 %44
  %45 = add nsw i64 %40, %wide.trip.count
  %46 = shl nsw i64 %45, 2
  %scevgep457 = getelementptr i8, ptr %1, i64 %46
  %scevgep458 = getelementptr i8, ptr %39, i64 %42
  %scevgep459 = getelementptr i8, ptr %39, i64 %44
  %bound0460 = icmp ult ptr %scevgep455, %scevgep457
  %bound1461 = icmp ult ptr %invariant.gep, %scevgep456
  %found.conflict462 = and i1 %bound0460, %bound1461
  %bound0463 = icmp ult ptr %scevgep455, %scevgep459
  %bound1464 = icmp ult ptr %scevgep458, %scevgep456
  %found.conflict465 = and i1 %bound0463, %bound1464
  %conflict.rdx = or i1 %found.conflict462, %found.conflict465
  %bound0466 = icmp ult ptr %invariant.gep, %scevgep459
  %bound1467 = icmp ult ptr %scevgep458, %scevgep457
  %found.conflict468 = and i1 %bound0466, %bound1467
  %conflict.rdx469 = or i1 %conflict.rdx, %found.conflict468
  br i1 %conflict.rdx469, label %scalar.ph471.preheader, label %vector.ph473

vector.ph473:                                     ; preds = %vector.memcheck454
  %n.vec475 = and i64 %wide.trip.count, 2147483644
  br label %vector.body477

vector.body477:                                   ; preds = %vector.body477, %vector.ph473
  %index478 = phi i64 [ 0, %vector.ph473 ], [ %index.next481, %vector.body477 ]
  %47 = getelementptr float, ptr %invariant.gep, i64 %index478
  %wide.load479 = load <4 x float>, ptr %47, align 4, !tbaa !20, !alias.scope !22, !noalias !25
  %48 = add nsw i64 %index478, %41
  %49 = getelementptr inbounds float, ptr %37, i64 %48
  store <4 x float> %wide.load479, ptr %49, align 4, !tbaa !20, !alias.scope !27, !noalias !29
  %50 = getelementptr inbounds float, ptr %39, i64 %48
  %wide.load480 = load <4 x float>, ptr %50, align 4, !tbaa !20, !alias.scope !25
  %51 = fcmp olt <4 x float> %wide.load480, <float -1.000000e+00, float -1.000000e+00, float -1.000000e+00, float -1.000000e+00>
  %52 = select <4 x i1> %51, <4 x float> <float -1.000000e+00, float -1.000000e+00, float -1.000000e+00, float -1.000000e+00>, <4 x float> %wide.load480
  %53 = fcmp ogt <4 x float> %52, <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>
  %54 = select <4 x i1> %53, <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, <4 x float> %52
  store <4 x float> %54, ptr %47, align 4, !tbaa !20, !alias.scope !22, !noalias !25
  %index.next481 = add nuw i64 %index478, 4
  %55 = icmp eq i64 %index.next481, %n.vec475
  br i1 %55, label %middle.block470, label %vector.body477, !llvm.loop !30

middle.block470:                                  ; preds = %vector.body477
  %cmp.n482 = icmp eq i64 %n.vec475, %wide.trip.count
  br i1 %cmp.n482, label %._crit_edge, label %scalar.ph471.preheader

.preheader:                                       ; preds = %.loopexit222, %13
  %.0203.lcssa = phi i32 [ 0, %13 ], [ %131, %.loopexit222 ]
  %.0.lcssa = phi i32 [ %2, %13 ], [ %132, %.loopexit222 ]
  %.lcssa228 = phi i32 [ %16, %13 ], [ %29, %.loopexit222 ]
  %.lcssa227 = phi i32 [ %17, %13 ], [ %30, %.loopexit222 ]
  %56 = mul nsw i32 %.0.lcssa, %3
  %57 = icmp sgt i32 %56, 0
  br i1 %57, label %.lr.ph271, label %._crit_edge272

.lr.ph271:                                        ; preds = %.preheader
  %58 = mul i32 %.0203.lcssa, %3
  %59 = getelementptr inbounds i8, ptr %0, i64 80
  %60 = load ptr, ptr %59, align 8, !tbaa !18
  %61 = mul i32 %.lcssa228, %3
  %62 = getelementptr inbounds i8, ptr %0, i64 88
  %63 = load ptr, ptr %62, align 8, !tbaa !19
  %64 = getelementptr inbounds i8, ptr %0, i64 96
  %65 = load i32, ptr %64, align 8, !tbaa !33
  %.not216 = icmp eq i32 %65, 0
  %66 = sext i32 %58 to i64
  %67 = sext i32 %61 to i64
  %wide.trip.count328 = zext nneg i32 %56 to i64
  %invariant.gep347 = getelementptr float, ptr %1, i64 %66
  br i1 %.not216, label %.lr.ph271.split.us.preheader, label %.lr.ph271.split

.lr.ph271.split.us.preheader:                     ; preds = %.lr.ph271
  %min.iters.check502 = icmp ult i32 %56, 16
  br i1 %min.iters.check502, label %.lr.ph271.split.us.preheader516, label %vector.memcheck483

vector.memcheck483:                               ; preds = %.lr.ph271.split.us.preheader
  %68 = shl nsw i64 %67, 2
  %scevgep484 = getelementptr i8, ptr %60, i64 %68
  %69 = add nsw i64 %67, %wide.trip.count328
  %70 = shl nsw i64 %69, 2
  %scevgep485 = getelementptr i8, ptr %60, i64 %70
  %71 = add nsw i64 %66, %wide.trip.count328
  %72 = shl nsw i64 %71, 2
  %scevgep486 = getelementptr i8, ptr %1, i64 %72
  %scevgep487 = getelementptr i8, ptr %63, i64 %68
  %scevgep488 = getelementptr i8, ptr %63, i64 %70
  %bound0489 = icmp ult ptr %scevgep484, %scevgep486
  %bound1490 = icmp ult ptr %invariant.gep347, %scevgep485
  %found.conflict491 = and i1 %bound0489, %bound1490
  %bound0492 = icmp ult ptr %scevgep484, %scevgep488
  %bound1493 = icmp ult ptr %scevgep487, %scevgep485
  %found.conflict494 = and i1 %bound0492, %bound1493
  %conflict.rdx495 = or i1 %found.conflict491, %found.conflict494
  %bound0496 = icmp ult ptr %invariant.gep347, %scevgep488
  %bound1497 = icmp ult ptr %scevgep487, %scevgep486
  %found.conflict498 = and i1 %bound0496, %bound1497
  %conflict.rdx499 = or i1 %conflict.rdx495, %found.conflict498
  br i1 %conflict.rdx499, label %.lr.ph271.split.us.preheader516, label %vector.ph503

vector.ph503:                                     ; preds = %vector.memcheck483
  %n.vec505 = and i64 %wide.trip.count328, 2147483644
  br label %vector.body507

vector.body507:                                   ; preds = %vector.body507, %vector.ph503
  %index508 = phi i64 [ 0, %vector.ph503 ], [ %index.next511, %vector.body507 ]
  %73 = getelementptr float, ptr %invariant.gep347, i64 %index508
  %wide.load509 = load <4 x float>, ptr %73, align 4, !tbaa !20, !alias.scope !34, !noalias !37
  %74 = add nsw i64 %index508, %67
  %75 = getelementptr inbounds float, ptr %60, i64 %74
  store <4 x float> %wide.load509, ptr %75, align 4, !tbaa !20, !alias.scope !39, !noalias !41
  %76 = getelementptr inbounds float, ptr %63, i64 %74
  %wide.load510 = load <4 x float>, ptr %76, align 4, !tbaa !20, !alias.scope !37
  %77 = fcmp olt <4 x float> %wide.load510, <float -1.000000e+00, float -1.000000e+00, float -1.000000e+00, float -1.000000e+00>
  %78 = select <4 x i1> %77, <4 x float> <float -1.000000e+00, float -1.000000e+00, float -1.000000e+00, float -1.000000e+00>, <4 x float> %wide.load510
  %79 = fcmp ogt <4 x float> %78, <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>
  %80 = select <4 x i1> %79, <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, <4 x float> %78
  store <4 x float> %80, ptr %73, align 4, !tbaa !20, !alias.scope !34, !noalias !37
  %index.next511 = add nuw i64 %index508, 4
  %81 = icmp eq i64 %index.next511, %n.vec505
  br i1 %81, label %middle.block500, label %vector.body507, !llvm.loop !42

middle.block500:                                  ; preds = %vector.body507
  %cmp.n512 = icmp eq i64 %n.vec505, %wide.trip.count328
  br i1 %cmp.n512, label %._crit_edge272, label %.lr.ph271.split.us.preheader516

.lr.ph271.split.us.preheader516:                  ; preds = %middle.block500, %vector.memcheck483, %.lr.ph271.split.us.preheader
  %indvars.iv325.ph = phi i64 [ 0, %vector.memcheck483 ], [ 0, %.lr.ph271.split.us.preheader ], [ %n.vec505, %middle.block500 ]
  br label %.lr.ph271.split.us

.lr.ph271.split.us:                               ; preds = %.lr.ph271.split.us.preheader516, %.lr.ph271.split.us
  %indvars.iv325 = phi i64 [ %indvars.iv.next326, %.lr.ph271.split.us ], [ %indvars.iv325.ph, %.lr.ph271.split.us.preheader516 ]
  %gep348 = getelementptr float, ptr %invariant.gep347, i64 %indvars.iv325
  %82 = load float, ptr %gep348, align 4, !tbaa !20
  %83 = add nsw i64 %indvars.iv325, %67
  %84 = getelementptr inbounds float, ptr %60, i64 %83
  store float %82, ptr %84, align 4, !tbaa !20
  %85 = getelementptr inbounds float, ptr %63, i64 %83
  %86 = load float, ptr %85, align 4, !tbaa !20
  %87 = fcmp olt float %86, -1.000000e+00
  %.2.us = select i1 %87, float -1.000000e+00, float %86
  %88 = fcmp ogt float %.2.us, 1.000000e+00
  %.3.us = select i1 %88, float 1.000000e+00, float %.2.us
  store float %.3.us, ptr %gep348, align 4, !tbaa !20
  %indvars.iv.next326 = add nuw nsw i64 %indvars.iv325, 1
  %exitcond329.not = icmp eq i64 %indvars.iv.next326, %wide.trip.count328
  br i1 %exitcond329.not, label %._crit_edge272, label %.lr.ph271.split.us, !llvm.loop !43

scalar.ph471:                                     ; preds = %scalar.ph471.preheader, %scalar.ph471
  %indvars.iv = phi i64 [ %indvars.iv.next, %scalar.ph471 ], [ %indvars.iv.ph, %scalar.ph471.preheader ]
  %gep = getelementptr float, ptr %invariant.gep, i64 %indvars.iv
  %89 = load float, ptr %gep, align 4, !tbaa !20
  %90 = add nsw i64 %indvars.iv, %41
  %91 = getelementptr inbounds float, ptr %37, i64 %90
  store float %89, ptr %91, align 4, !tbaa !20
  %92 = getelementptr inbounds float, ptr %39, i64 %90
  %93 = load float, ptr %92, align 4, !tbaa !20
  %94 = fcmp olt float %93, -1.000000e+00
  %.0204 = select i1 %94, float -1.000000e+00, float %93
  %95 = fcmp ogt float %.0204, 1.000000e+00
  %.1205 = select i1 %95, float 1.000000e+00, float %.0204
  store float %.1205, ptr %gep, align 4, !tbaa !20
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %scalar.ph471, !llvm.loop !44

._crit_edge:                                      ; preds = %scalar.ph471, %middle.block470, %.preheader223
  %96 = mul nsw i32 %31, %3
  %97 = load i32, ptr %21, align 4, !tbaa !45
  %98 = mul nsw i32 %97, %3
  %99 = icmp slt i32 %96, %98
  br i1 %99, label %.lr.ph233, label %._crit_edge234

.lr.ph233:                                        ; preds = %._crit_edge
  %100 = load ptr, ptr %20, align 8, !tbaa !19
  %101 = sext i32 %96 to i64
  %wide.trip.count282 = sext i32 %98 to i64
  %102 = sub nsw i64 %wide.trip.count282, %101
  %min.iters.check441 = icmp ult i64 %102, 8
  %103 = mul nsw i64 %101, -4
  %diff.check438 = icmp ult i64 %103, 32
  %or.cond = select i1 %min.iters.check441, i1 true, i1 %diff.check438
  br i1 %or.cond, label %scalar.ph440.preheader, label %vector.ph442

vector.ph442:                                     ; preds = %.lr.ph233
  %n.vec444 = and i64 %102, -8
  %ind.end445 = add nsw i64 %n.vec444, %101
  %invariant.gep538 = getelementptr float, ptr %100, i64 %101
  br label %vector.body447

vector.body447:                                   ; preds = %vector.body447, %vector.ph442
  %index448 = phi i64 [ 0, %vector.ph442 ], [ %index.next452, %vector.body447 ]
  %gep539 = getelementptr float, ptr %invariant.gep538, i64 %index448
  %104 = getelementptr inbounds i8, ptr %gep539, i64 16
  %wide.load450 = load <4 x float>, ptr %gep539, align 4, !tbaa !20
  %wide.load451 = load <4 x float>, ptr %104, align 4, !tbaa !20
  %105 = getelementptr inbounds float, ptr %100, i64 %index448
  %106 = getelementptr inbounds i8, ptr %105, i64 16
  store <4 x float> %wide.load450, ptr %105, align 4, !tbaa !20
  store <4 x float> %wide.load451, ptr %106, align 4, !tbaa !20
  %index.next452 = add nuw i64 %index448, 8
  %107 = icmp eq i64 %index.next452, %n.vec444
  br i1 %107, label %middle.block439, label %vector.body447, !llvm.loop !46

middle.block439:                                  ; preds = %vector.body447
  %cmp.n453 = icmp eq i64 %102, %n.vec444
  br i1 %cmp.n453, label %._crit_edge234, label %scalar.ph440.preheader

scalar.ph440.preheader:                           ; preds = %middle.block439, %.lr.ph233
  %indvars.iv279.ph = phi i64 [ %101, %.lr.ph233 ], [ %ind.end445, %middle.block439 ]
  %108 = sub nsw i64 %wide.trip.count282, %indvars.iv279.ph
  %xtraiter = and i64 %108, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %scalar.ph440.prol.loopexit, label %scalar.ph440.prol

scalar.ph440.prol:                                ; preds = %scalar.ph440.preheader, %scalar.ph440.prol
  %indvars.iv279.prol = phi i64 [ %indvars.iv.next280.prol, %scalar.ph440.prol ], [ %indvars.iv279.ph, %scalar.ph440.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph440.prol ], [ 0, %scalar.ph440.preheader ]
  %109 = getelementptr inbounds float, ptr %100, i64 %indvars.iv279.prol
  %110 = load float, ptr %109, align 4, !tbaa !20
  %111 = sub nsw i64 %indvars.iv279.prol, %101
  %112 = getelementptr inbounds float, ptr %100, i64 %111
  store float %110, ptr %112, align 4, !tbaa !20
  %indvars.iv.next280.prol = add nsw i64 %indvars.iv279.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %scalar.ph440.prol.loopexit, label %scalar.ph440.prol, !llvm.loop !47

scalar.ph440.prol.loopexit:                       ; preds = %scalar.ph440.prol, %scalar.ph440.preheader
  %indvars.iv279.unr = phi i64 [ %indvars.iv279.ph, %scalar.ph440.preheader ], [ %indvars.iv.next280.prol, %scalar.ph440.prol ]
  %113 = sub nsw i64 %indvars.iv279.ph, %wide.trip.count282
  %114 = icmp ugt i64 %113, -4
  br i1 %114, label %._crit_edge234, label %scalar.ph440

scalar.ph440:                                     ; preds = %scalar.ph440.prol.loopexit, %scalar.ph440
  %indvars.iv279 = phi i64 [ %indvars.iv.next280.3, %scalar.ph440 ], [ %indvars.iv279.unr, %scalar.ph440.prol.loopexit ]
  %115 = getelementptr inbounds float, ptr %100, i64 %indvars.iv279
  %116 = load float, ptr %115, align 4, !tbaa !20
  %117 = sub nsw i64 %indvars.iv279, %101
  %118 = getelementptr inbounds float, ptr %100, i64 %117
  store float %116, ptr %118, align 4, !tbaa !20
  %indvars.iv.next280 = add nsw i64 %indvars.iv279, 1
  %119 = getelementptr inbounds float, ptr %100, i64 %indvars.iv.next280
  %120 = load float, ptr %119, align 4, !tbaa !20
  %121 = sub nsw i64 %indvars.iv.next280, %101
  %122 = getelementptr inbounds float, ptr %100, i64 %121
  store float %120, ptr %122, align 4, !tbaa !20
  %indvars.iv.next280.1 = add nsw i64 %indvars.iv279, 2
  %123 = getelementptr inbounds float, ptr %100, i64 %indvars.iv.next280.1
  %124 = load float, ptr %123, align 4, !tbaa !20
  %125 = sub nsw i64 %indvars.iv.next280.1, %101
  %126 = getelementptr inbounds float, ptr %100, i64 %125
  store float %124, ptr %126, align 4, !tbaa !20
  %indvars.iv.next280.2 = add nsw i64 %indvars.iv279, 3
  %127 = getelementptr inbounds float, ptr %100, i64 %indvars.iv.next280.2
  %128 = load float, ptr %127, align 4, !tbaa !20
  %129 = sub nsw i64 %indvars.iv.next280.2, %101
  %130 = getelementptr inbounds float, ptr %100, i64 %129
  store float %128, ptr %130, align 4, !tbaa !20
  %indvars.iv.next280.3 = add nsw i64 %indvars.iv279, 4
  %exitcond283.not.3 = icmp eq i64 %indvars.iv.next280.3, %wide.trip.count282
  br i1 %exitcond283.not.3, label %._crit_edge234, label %scalar.ph440, !llvm.loop !49

._crit_edge234:                                   ; preds = %scalar.ph440.prol.loopexit, %scalar.ph440, %middle.block439, %._crit_edge
  %131 = add nsw i32 %33, %.0203264
  %132 = sub nsw i32 %.0265, %33
  store i32 0, ptr %14, align 8, !tbaa !14
  br i1 %22, label %.lr.ph262, label %.loopexit222

.lr.ph262:                                        ; preds = %._crit_edge234, %._crit_edge259
  %.pre330332 = phi i32 [ %.pre330, %._crit_edge259 ], [ %97, %._crit_edge234 ]
  %133 = phi i32 [ %263, %._crit_edge259 ], [ %31, %._crit_edge234 ]
  %134 = phi i32 [ %264, %._crit_edge259 ], [ %31, %._crit_edge234 ]
  %indvars.iv313 = phi i64 [ %indvars.iv.next314, %._crit_edge259 ], [ 0, %._crit_edge234 ]
  %135 = shl nuw nsw i64 %indvars.iv313, 2
  %136 = shl nuw nsw i64 %indvars.iv313, 2
  %137 = load ptr, ptr %0, align 8, !tbaa !13
  %138 = sext i32 %.pre330332 to i64
  %139 = mul nsw i64 %indvars.iv313, %138
  %140 = getelementptr inbounds float, ptr %137, i64 %139
  %141 = icmp sgt i32 %134, 0
  br i1 %141, label %.lr.ph237, label %.preheader221

.lr.ph237:                                        ; preds = %.lr.ph262
  %142 = load ptr, ptr %19, align 8, !tbaa !18
  %143 = load ptr, ptr %23, align 8, !tbaa !50
  %wide.trip.count287 = zext nneg i32 %134 to i64
  %invariant.gep339 = getelementptr inbounds float, ptr %142, i64 %indvars.iv313
  %min.iters.check426 = icmp ugt i32 %134, 7
  %or.cond513 = and i1 %min.iters.check426, %ident.check421.not
  br i1 %or.cond513, label %vector.memcheck422, label %scalar.ph425.preheader

scalar.ph425.preheader:                           ; preds = %middle.block424, %vector.memcheck422, %.lr.ph237
  %indvars.iv284.ph = phi i64 [ 0, %vector.memcheck422 ], [ 0, %.lr.ph237 ], [ %n.vec429, %middle.block424 ]
  %xtraiter524 = and i64 %wide.trip.count287, 3
  %lcmp.mod525.not = icmp eq i64 %xtraiter524, 0
  br i1 %lcmp.mod525.not, label %scalar.ph425.prol.loopexit, label %scalar.ph425.prol

scalar.ph425.prol:                                ; preds = %scalar.ph425.preheader, %scalar.ph425.prol
  %indvars.iv284.prol = phi i64 [ %indvars.iv.next285.prol, %scalar.ph425.prol ], [ %indvars.iv284.ph, %scalar.ph425.preheader ]
  %prol.iter526 = phi i64 [ %prol.iter526.next, %scalar.ph425.prol ], [ 0, %scalar.ph425.preheader ]
  %144 = mul nuw nsw i64 %indvars.iv284.prol, %26
  %gep340.prol = getelementptr inbounds float, ptr %invariant.gep339, i64 %144
  %145 = load float, ptr %gep340.prol, align 4, !tbaa !20
  %146 = getelementptr inbounds float, ptr %143, i64 %indvars.iv284.prol
  store float %145, ptr %146, align 4, !tbaa !20
  %indvars.iv.next285.prol = add nuw nsw i64 %indvars.iv284.prol, 1
  %prol.iter526.next = add i64 %prol.iter526, 1
  %prol.iter526.cmp.not = icmp eq i64 %prol.iter526.next, %xtraiter524
  br i1 %prol.iter526.cmp.not, label %scalar.ph425.prol.loopexit, label %scalar.ph425.prol, !llvm.loop !51

scalar.ph425.prol.loopexit:                       ; preds = %scalar.ph425.prol, %scalar.ph425.preheader
  %indvars.iv284.unr = phi i64 [ %indvars.iv284.ph, %scalar.ph425.preheader ], [ %indvars.iv.next285.prol, %scalar.ph425.prol ]
  %147 = sub nsw i64 %indvars.iv284.ph, %wide.trip.count287
  %148 = icmp ugt i64 %147, -4
  br i1 %148, label %.preheader221, label %scalar.ph425

vector.memcheck422:                               ; preds = %.lr.ph237
  %149 = ptrtoint ptr %143 to i64
  %150 = ptrtoint ptr %142 to i64
  %151 = shl i64 %indvars.iv313, 2
  %152 = add i64 %151, %150
  %153 = sub i64 %149, %152
  %diff.check423 = icmp ult i64 %153, 32
  br i1 %diff.check423, label %scalar.ph425.preheader, label %vector.ph427

vector.ph427:                                     ; preds = %vector.memcheck422
  %n.vec429 = and i64 %wide.trip.count287, 2147483640
  br label %vector.body431

vector.body431:                                   ; preds = %vector.body431, %vector.ph427
  %index432 = phi i64 [ 0, %vector.ph427 ], [ %index.next435, %vector.body431 ]
  %154 = getelementptr inbounds float, ptr %invariant.gep339, i64 %index432
  %155 = getelementptr inbounds i8, ptr %154, i64 16
  %wide.load433 = load <4 x float>, ptr %154, align 4, !tbaa !20
  %wide.load434 = load <4 x float>, ptr %155, align 4, !tbaa !20
  %156 = getelementptr inbounds float, ptr %143, i64 %index432
  %157 = getelementptr inbounds i8, ptr %156, i64 16
  store <4 x float> %wide.load433, ptr %156, align 4, !tbaa !20
  store <4 x float> %wide.load434, ptr %157, align 4, !tbaa !20
  %index.next435 = add nuw i64 %index432, 8
  %158 = icmp eq i64 %index.next435, %n.vec429
  br i1 %158, label %middle.block424, label %vector.body431, !llvm.loop !52

middle.block424:                                  ; preds = %vector.body431
  %cmp.n436 = icmp eq i64 %n.vec429, %wide.trip.count287
  br i1 %cmp.n436, label %.preheader221, label %scalar.ph425.preheader

.preheader221:                                    ; preds = %scalar.ph425.prol.loopexit, %scalar.ph425, %middle.block424, %.lr.ph262
  %159 = icmp slt i32 %134, %.pre330332
  br i1 %159, label %.lr.ph240, label %._crit_edge241

.lr.ph240:                                        ; preds = %.preheader221
  %160 = load ptr, ptr %23, align 8, !tbaa !50
  %161 = sext i32 %134 to i64
  %162 = shl nsw i64 %161, 2
  %scevgep = getelementptr i8, ptr %160, i64 %162
  %163 = xor i32 %134, -1
  %164 = add i32 %.pre330332, %163
  %165 = zext i32 %164 to i64
  %166 = shl nuw nsw i64 %165, 2
  %167 = add nuw nsw i64 %166, 4
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep, i8 0, i64 %167, i1 false), !tbaa !20
  br label %._crit_edge241

scalar.ph425:                                     ; preds = %scalar.ph425.prol.loopexit, %scalar.ph425
  %indvars.iv284 = phi i64 [ %indvars.iv.next285.3, %scalar.ph425 ], [ %indvars.iv284.unr, %scalar.ph425.prol.loopexit ]
  %168 = mul nuw nsw i64 %indvars.iv284, %26
  %gep340 = getelementptr inbounds float, ptr %invariant.gep339, i64 %168
  %169 = load float, ptr %gep340, align 4, !tbaa !20
  %170 = getelementptr inbounds float, ptr %143, i64 %indvars.iv284
  store float %169, ptr %170, align 4, !tbaa !20
  %indvars.iv.next285 = add nuw nsw i64 %indvars.iv284, 1
  %171 = mul nuw nsw i64 %indvars.iv.next285, %26
  %gep340.1 = getelementptr inbounds float, ptr %invariant.gep339, i64 %171
  %172 = load float, ptr %gep340.1, align 4, !tbaa !20
  %173 = getelementptr inbounds float, ptr %143, i64 %indvars.iv.next285
  store float %172, ptr %173, align 4, !tbaa !20
  %indvars.iv.next285.1 = add nuw nsw i64 %indvars.iv284, 2
  %174 = mul nuw nsw i64 %indvars.iv.next285.1, %26
  %gep340.2 = getelementptr inbounds float, ptr %invariant.gep339, i64 %174
  %175 = load float, ptr %gep340.2, align 4, !tbaa !20
  %176 = getelementptr inbounds float, ptr %143, i64 %indvars.iv.next285.1
  store float %175, ptr %176, align 4, !tbaa !20
  %indvars.iv.next285.2 = add nuw nsw i64 %indvars.iv284, 3
  %177 = mul nuw nsw i64 %indvars.iv.next285.2, %26
  %gep340.3 = getelementptr inbounds float, ptr %invariant.gep339, i64 %177
  %178 = load float, ptr %gep340.3, align 4, !tbaa !20
  %179 = getelementptr inbounds float, ptr %143, i64 %indvars.iv.next285.2
  store float %178, ptr %179, align 4, !tbaa !20
  %indvars.iv.next285.3 = add nuw nsw i64 %indvars.iv284, 4
  %exitcond288.not.3 = icmp eq i64 %indvars.iv.next285.3, %wide.trip.count287
  br i1 %exitcond288.not.3, label %.preheader221, label %scalar.ph425, !llvm.loop !53

._crit_edge241:                                   ; preds = %.lr.ph240, %.preheader221
  %180 = load i32, ptr %24, align 8, !tbaa !54
  %.not217 = icmp eq i32 %180, 0
  br i1 %.not217, label %229, label %181

181:                                              ; preds = %._crit_edge241
  %182 = load i32, ptr %25, align 4, !tbaa !55
  %183 = load ptr, ptr %23, align 8, !tbaa !50
  tail call void @_Z4rfftiiPf(i32 noundef %182, i32 noundef 1, ptr noundef %183)
  %184 = load float, ptr %140, align 4, !tbaa !20
  %185 = load ptr, ptr %23, align 8, !tbaa !50
  %186 = load float, ptr %185, align 4, !tbaa !20
  %187 = fmul float %184, %186
  store float %187, ptr %185, align 4, !tbaa !20
  %188 = getelementptr inbounds i8, ptr %140, i64 4
  %189 = load float, ptr %188, align 4, !tbaa !20
  %190 = getelementptr inbounds i8, ptr %185, i64 4
  %191 = load float, ptr %190, align 4, !tbaa !20
  %192 = fmul float %189, %191
  store float %192, ptr %190, align 4, !tbaa !20
  %193 = load i32, ptr %21, align 4, !tbaa !45
  %194 = icmp sgt i32 %193, 3
  br i1 %194, label %.lr.ph244.preheader, label %._crit_edge245

.lr.ph244.preheader:                              ; preds = %181
  %195 = lshr i32 %193, 1
  %wide.trip.count295 = zext nneg i32 %195 to i64
  %196 = add nsw i64 %wide.trip.count295, -1
  %min.iters.check405 = icmp ult i64 %196, 4
  br i1 %min.iters.check405, label %.lr.ph244.preheader518, label %vector.memcheck394

vector.memcheck394:                               ; preds = %.lr.ph244.preheader
  %scevgep395 = getelementptr i8, ptr %185, i64 8
  %197 = shl nuw nsw i64 %wide.trip.count295, 3
  %scevgep396 = getelementptr i8, ptr %185, i64 %197
  %scevgep397 = getelementptr i8, ptr %137, i64 8
  %198 = mul i64 %135, %138
  %scevgep398 = getelementptr i8, ptr %scevgep397, i64 %198
  %199 = getelementptr i8, ptr %137, i64 %198
  %scevgep399 = getelementptr i8, ptr %199, i64 %197
  %bound0400 = icmp ult ptr %scevgep395, %scevgep399
  %bound1401 = icmp ult ptr %scevgep398, %scevgep396
  %found.conflict402 = and i1 %bound0400, %bound1401
  br i1 %found.conflict402, label %.lr.ph244.preheader518, label %vector.ph406

vector.ph406:                                     ; preds = %vector.memcheck394
  %n.vec408 = and i64 %196, -4
  %ind.end409 = or disjoint i64 %n.vec408, 1
  %invariant.gep540 = getelementptr i8, ptr %185, i64 -4
  br label %vector.body411

vector.body411:                                   ; preds = %vector.body411, %vector.ph406
  %index412 = phi i64 [ 0, %vector.ph406 ], [ %index.next418, %vector.body411 ]
  %offset.idx413 = shl i64 %index412, 1
  %200 = or disjoint i64 %offset.idx413, 2
  %201 = getelementptr inbounds float, ptr %140, i64 %200
  %wide.vec = load <8 x float>, ptr %201, align 4, !tbaa !20
  %strided.vec = shufflevector <8 x float> %wide.vec, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec414 = shufflevector <8 x float> %wide.vec, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %202 = getelementptr inbounds float, ptr %185, i64 %200
  %wide.vec415 = load <8 x float>, ptr %202, align 4, !tbaa !20
  %strided.vec416 = shufflevector <8 x float> %wide.vec415, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec417 = shufflevector <8 x float> %wide.vec415, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %203 = or disjoint i64 %offset.idx413, 3
  %204 = fneg <4 x float> %strided.vec414
  %205 = fmul <4 x float> %strided.vec417, %204
  %206 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %strided.vec, <4 x float> %strided.vec416, <4 x float> %205)
  %207 = fmul <4 x float> %strided.vec, %strided.vec417
  %208 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %strided.vec414, <4 x float> %strided.vec416, <4 x float> %207)
  %gep541 = getelementptr float, ptr %invariant.gep540, i64 %203
  %interleaved.vec = shufflevector <4 x float> %206, <4 x float> %208, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec, ptr %gep541, align 4, !tbaa !20
  %index.next418 = add nuw i64 %index412, 4
  %209 = icmp eq i64 %index.next418, %n.vec408
  br i1 %209, label %middle.block403, label %vector.body411, !llvm.loop !56

middle.block403:                                  ; preds = %vector.body411
  %cmp.n419 = icmp eq i64 %196, %n.vec408
  br i1 %cmp.n419, label %._crit_edge245, label %.lr.ph244.preheader518

.lr.ph244.preheader518:                           ; preds = %middle.block403, %vector.memcheck394, %.lr.ph244.preheader
  %indvars.iv292.ph = phi i64 [ 1, %vector.memcheck394 ], [ 1, %.lr.ph244.preheader ], [ %ind.end409, %middle.block403 ]
  br label %.lr.ph244

.lr.ph244:                                        ; preds = %.lr.ph244.preheader518, %.lr.ph244
  %indvars.iv292 = phi i64 [ %indvars.iv.next293, %.lr.ph244 ], [ %indvars.iv292.ph, %.lr.ph244.preheader518 ]
  %210 = shl nuw nsw i64 %indvars.iv292, 1
  %211 = getelementptr inbounds float, ptr %140, i64 %210
  %212 = getelementptr inbounds float, ptr %185, i64 %210
  %213 = load float, ptr %212, align 4, !tbaa !20
  %214 = or disjoint i64 %210, 1
  %215 = getelementptr inbounds float, ptr %185, i64 %214
  %216 = load float, ptr %215, align 4, !tbaa !20
  %217 = load <2 x float>, ptr %211, align 4, !tbaa !20
  %218 = extractelement <2 x float> %217, i64 1
  %219 = fneg float %218
  %220 = insertelement <2 x float> poison, float %216, i64 0
  %221 = shufflevector <2 x float> %220, <2 x float> poison, <2 x i32> zeroinitializer
  %222 = shufflevector <2 x float> %217, <2 x float> poison, <2 x i32> <i32 poison, i32 0>
  %223 = insertelement <2 x float> %222, float %219, i64 0
  %224 = fmul <2 x float> %221, %223
  %225 = insertelement <2 x float> poison, float %213, i64 0
  %226 = shufflevector <2 x float> %225, <2 x float> poison, <2 x i32> zeroinitializer
  %227 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %217, <2 x float> %226, <2 x float> %224)
  store <2 x float> %227, ptr %212, align 4, !tbaa !20
  %indvars.iv.next293 = add nuw nsw i64 %indvars.iv292, 1
  %exitcond296.not = icmp eq i64 %indvars.iv.next293, %wide.trip.count295
  br i1 %exitcond296.not, label %._crit_edge245, label %.lr.ph244, !llvm.loop !57

._crit_edge245:                                   ; preds = %.lr.ph244, %middle.block403, %181
  %228 = load i32, ptr %25, align 4, !tbaa !55
  tail call void @_Z4rfftiiPf(i32 noundef %228, i32 noundef -1, ptr noundef nonnull %185)
  %.pre = load i32, ptr %15, align 4, !tbaa !15
  %.pre330.pre = load i32, ptr %21, align 4, !tbaa !45
  br label %.loopexit

229:                                              ; preds = %._crit_edge241
  %230 = add i32 %134, -1
  %231 = sdiv i32 %134, 2
  %232 = add i32 %230, %231
  %.not218246 = icmp slt i32 %134, 1
  br i1 %.not218246, label %.preheader220, label %.lr.ph249

.lr.ph249:                                        ; preds = %229
  %233 = load ptr, ptr %23, align 8, !tbaa !50
  %234 = sitofp i32 %.pre330332 to float
  %235 = sext i32 %232 to i64
  %236 = zext nneg i32 %231 to i64
  %237 = add nsw i64 %235, 1
  %smin = tail call i64 @llvm.smin.i64(i64 %235, i64 %236)
  %238 = sub i64 %237, %smin
  %min.iters.check376 = icmp ult i64 %238, 8
  br i1 %min.iters.check376, label %scalar.ph375.preheader, label %vector.ph377

scalar.ph375.preheader:                           ; preds = %middle.block374, %.lr.ph249
  %indvars.iv297.ph = phi i64 [ %235, %.lr.ph249 ], [ %ind.end380, %middle.block374 ]
  br label %scalar.ph375

vector.ph377:                                     ; preds = %.lr.ph249
  %n.vec379 = and i64 %238, -8
  %ind.end380 = sub i64 %235, %n.vec379
  %broadcast.splatinsert388 = insertelement <4 x float> poison, float %234, i64 0
  %239 = shufflevector <4 x float> %broadcast.splatinsert388, <4 x float> poison, <4 x i32> zeroinitializer
  %240 = shufflevector <4 x float> %broadcast.splatinsert388, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body382

vector.body382:                                   ; preds = %vector.body382, %vector.ph377
  %index383 = phi i64 [ 0, %vector.ph377 ], [ %index.next392, %vector.body382 ]
  %offset.idx384 = sub i64 %235, %index383
  %241 = sub nsw i64 %offset.idx384, %236
  %242 = getelementptr inbounds float, ptr %233, i64 %241
  %243 = getelementptr inbounds i8, ptr %242, i64 -12
  %244 = getelementptr inbounds i8, ptr %242, i64 -28
  %wide.load385 = load <4 x float>, ptr %243, align 4, !tbaa !20
  %wide.load386 = load <4 x float>, ptr %244, align 4, !tbaa !20
  %245 = getelementptr inbounds float, ptr %233, i64 %offset.idx384
  %246 = getelementptr inbounds i8, ptr %245, i64 -12
  %247 = getelementptr inbounds i8, ptr %245, i64 -28
  %248 = fmul <4 x float> %wide.load385, %239
  %reverse390 = fmul <4 x float> %248, <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>
  store <4 x float> %reverse390, ptr %246, align 4, !tbaa !20
  %249 = fmul <4 x float> %wide.load386, %240
  %reverse391 = fmul <4 x float> %249, <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>
  store <4 x float> %reverse391, ptr %247, align 4, !tbaa !20
  %index.next392 = add nuw i64 %index383, 8
  %250 = icmp eq i64 %index.next392, %n.vec379
  br i1 %250, label %middle.block374, label %vector.body382, !llvm.loop !58

middle.block374:                                  ; preds = %vector.body382
  %cmp.n393 = icmp eq i64 %238, %n.vec379
  br i1 %cmp.n393, label %.preheader220.loopexit, label %scalar.ph375.preheader

.preheader220.loopexit:                           ; preds = %scalar.ph375, %middle.block374
  %indvars.iv.next298.lcssa = phi i64 [ %ind.end380, %middle.block374 ], [ %indvars.iv.next298, %scalar.ph375 ]
  %251 = trunc nsw i64 %indvars.iv.next298.lcssa to i32
  br label %.preheader220

.preheader220:                                    ; preds = %.preheader220.loopexit, %229
  %.5.lcssa = phi i32 [ %232, %229 ], [ %251, %.preheader220.loopexit ]
  %252 = icmp sgt i32 %.5.lcssa, -1
  br i1 %252, label %.lr.ph252, label %.loopexit

.lr.ph252:                                        ; preds = %.preheader220
  %253 = load ptr, ptr %23, align 8, !tbaa !50
  %254 = add nuw i32 %.5.lcssa, 1
  %255 = zext i32 %254 to i64
  %256 = shl nuw nsw i64 %255, 2
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %253, i8 0, i64 %256, i1 false), !tbaa !20
  br label %.loopexit

scalar.ph375:                                     ; preds = %scalar.ph375.preheader, %scalar.ph375
  %indvars.iv297 = phi i64 [ %indvars.iv.next298, %scalar.ph375 ], [ %indvars.iv297.ph, %scalar.ph375.preheader ]
  %257 = sub nsw i64 %indvars.iv297, %236
  %258 = getelementptr inbounds float, ptr %233, i64 %257
  %259 = load float, ptr %258, align 4, !tbaa !20
  %260 = fmul float %259, %234
  %261 = fmul float %260, 5.000000e-01
  %262 = getelementptr inbounds float, ptr %233, i64 %indvars.iv297
  store float %261, ptr %262, align 4, !tbaa !20
  %indvars.iv.next298 = add nsw i64 %indvars.iv297, -1
  %.not218.not = icmp sgt i64 %indvars.iv297, %236
  br i1 %.not218.not, label %scalar.ph375, label %.preheader220.loopexit, !llvm.loop !59

.loopexit:                                        ; preds = %.lr.ph252, %.preheader220, %._crit_edge245
  %.pre330 = phi i32 [ %.pre330332, %.lr.ph252 ], [ %.pre330332, %.preheader220 ], [ %.pre330.pre, %._crit_edge245 ]
  %263 = phi i32 [ %133, %.lr.ph252 ], [ %133, %.preheader220 ], [ %.pre, %._crit_edge245 ]
  %264 = phi i32 [ %134, %.lr.ph252 ], [ %134, %.preheader220 ], [ %.pre, %._crit_edge245 ]
  %265 = icmp sgt i32 %264, 0
  br i1 %265, label %.lr.ph255, label %.preheader219

.lr.ph255:                                        ; preds = %.loopexit
  %266 = load ptr, ptr %23, align 8, !tbaa !50
  %267 = sitofp i32 %.pre330 to float
  %268 = load ptr, ptr %20, align 8, !tbaa !19
  %wide.trip.count306 = zext nneg i32 %264 to i64
  %invariant.gep341 = getelementptr inbounds float, ptr %268, i64 %indvars.iv313
  %min.iters.check361 = icmp ugt i32 %264, 3
  %or.cond514 = and i1 %min.iters.check361, %ident.check355.not
  br i1 %or.cond514, label %vector.memcheck356, label %scalar.ph360.preheader

scalar.ph360.preheader:                           ; preds = %middle.block359, %vector.memcheck356, %.lr.ph255
  %indvars.iv303.ph = phi i64 [ 0, %vector.memcheck356 ], [ 0, %.lr.ph255 ], [ %n.vec364, %middle.block359 ]
  %xtraiter527 = and i64 %wide.trip.count306, 1
  %lcmp.mod528.not = icmp eq i64 %xtraiter527, 0
  br i1 %lcmp.mod528.not, label %scalar.ph360.prol.loopexit, label %scalar.ph360.prol

scalar.ph360.prol:                                ; preds = %scalar.ph360.preheader
  %269 = getelementptr inbounds float, ptr %266, i64 %indvars.iv303.ph
  %270 = load float, ptr %269, align 4, !tbaa !20
  %271 = fdiv float %270, %267
  %272 = mul nuw nsw i64 %indvars.iv303.ph, %26
  %gep342.prol = getelementptr inbounds float, ptr %invariant.gep341, i64 %272
  %273 = load float, ptr %gep342.prol, align 4, !tbaa !20
  %274 = tail call float @llvm.fmuladd.f32(float %271, float 2.000000e+00, float %273)
  store float %274, ptr %gep342.prol, align 4, !tbaa !20
  %indvars.iv.next304.prol = or disjoint i64 %indvars.iv303.ph, 1
  br label %scalar.ph360.prol.loopexit

scalar.ph360.prol.loopexit:                       ; preds = %scalar.ph360.prol, %scalar.ph360.preheader
  %indvars.iv303.unr = phi i64 [ %indvars.iv303.ph, %scalar.ph360.preheader ], [ %indvars.iv.next304.prol, %scalar.ph360.prol ]
  %275 = add nsw i64 %wide.trip.count306, -1
  %276 = icmp eq i64 %indvars.iv303.ph, %275
  br i1 %276, label %.preheader219, label %scalar.ph360

vector.memcheck356:                               ; preds = %.lr.ph255
  %277 = shl nuw nsw i64 %wide.trip.count306, 2
  %278 = add nuw i64 %indvars.iv313, %wide.trip.count306
  %279 = shl i64 %278, 2
  %scevgep357 = getelementptr i8, ptr %268, i64 %279
  %scevgep358 = getelementptr i8, ptr %266, i64 %277
  %bound0 = icmp ult ptr %invariant.gep341, %scevgep358
  %bound1 = icmp ult ptr %266, %scevgep357
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %scalar.ph360.preheader, label %vector.ph362

vector.ph362:                                     ; preds = %vector.memcheck356
  %n.vec364 = and i64 %wide.trip.count306, 2147483644
  %broadcast.splatinsert369 = insertelement <4 x float> poison, float %267, i64 0
  %broadcast.splat370 = shufflevector <4 x float> %broadcast.splatinsert369, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body366

vector.body366:                                   ; preds = %vector.body366, %vector.ph362
  %index367 = phi i64 [ 0, %vector.ph362 ], [ %index.next372, %vector.body366 ]
  %280 = getelementptr inbounds float, ptr %266, i64 %index367
  %wide.load368 = load <4 x float>, ptr %280, align 4, !tbaa !20, !alias.scope !60
  %281 = fdiv <4 x float> %wide.load368, %broadcast.splat370
  %282 = getelementptr inbounds float, ptr %invariant.gep341, i64 %index367
  %wide.load371 = load <4 x float>, ptr %282, align 4, !tbaa !20, !alias.scope !63, !noalias !60
  %283 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %281, <4 x float> <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>, <4 x float> %wide.load371)
  store <4 x float> %283, ptr %282, align 4, !tbaa !20, !alias.scope !63, !noalias !60
  %index.next372 = add nuw i64 %index367, 4
  %284 = icmp eq i64 %index.next372, %n.vec364
  br i1 %284, label %middle.block359, label %vector.body366, !llvm.loop !65

middle.block359:                                  ; preds = %vector.body366
  %cmp.n373 = icmp eq i64 %n.vec364, %wide.trip.count306
  br i1 %cmp.n373, label %.preheader219, label %scalar.ph360.preheader

.preheader219:                                    ; preds = %scalar.ph360.prol.loopexit, %scalar.ph360, %middle.block359, %.loopexit
  %285 = icmp slt i32 %264, %.pre330
  br i1 %285, label %.lr.ph258, label %._crit_edge259

.lr.ph258:                                        ; preds = %.preheader219
  %286 = load ptr, ptr %23, align 8, !tbaa !50
  %287 = sitofp i32 %.pre330 to float
  %288 = load ptr, ptr %20, align 8, !tbaa !19
  %289 = sext i32 %264 to i64
  %wide.trip.count311 = sext i32 %.pre330 to i64
  %invariant.gep343 = getelementptr float, ptr %288, i64 %indvars.iv313
  %290 = sub nsw i64 %wide.trip.count311, %289
  %min.iters.check = icmp ugt i64 %290, 3
  %or.cond515 = and i1 %min.iters.check, %ident.check.not
  br i1 %or.cond515, label %vector.memcheck, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph258
  %indvars.iv308.ph = phi i64 [ %289, %vector.memcheck ], [ %289, %.lr.ph258 ], [ %ind.end, %middle.block ]
  %291 = sub nsw i64 %wide.trip.count311, %indvars.iv308.ph
  %xtraiter530 = and i64 %291, 1
  %lcmp.mod531.not = icmp eq i64 %xtraiter530, 0
  br i1 %lcmp.mod531.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %292 = getelementptr inbounds float, ptr %286, i64 %indvars.iv308.ph
  %293 = load float, ptr %292, align 4, !tbaa !20
  %294 = fdiv float %293, %287
  %295 = fmul float %294, 2.000000e+00
  %296 = mul nsw i64 %indvars.iv308.ph, %27
  %gep344.prol = getelementptr float, ptr %invariant.gep343, i64 %296
  store float %295, ptr %gep344.prol, align 4, !tbaa !20
  %indvars.iv.next309.prol = add nsw i64 %indvars.iv308.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv308.unr = phi i64 [ %indvars.iv308.ph, %scalar.ph.preheader ], [ %indvars.iv.next309.prol, %scalar.ph.prol ]
  %297 = add nsw i64 %wide.trip.count311, -1
  %298 = icmp eq i64 %indvars.iv308.ph, %297
  br i1 %298, label %._crit_edge259, label %scalar.ph

vector.memcheck:                                  ; preds = %.lr.ph258
  %299 = ptrtoint ptr %288 to i64
  %300 = ptrtoint ptr %286 to i64
  %301 = add i64 %136, %299
  %302 = sub i64 %301, %300
  %diff.check = icmp ult i64 %302, 16
  br i1 %diff.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %290, -4
  %ind.end = add nsw i64 %n.vec, %289
  %broadcast.splatinsert = insertelement <4 x float> poison, float %287, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = add i64 %index, %289
  %303 = getelementptr inbounds float, ptr %286, i64 %offset.idx
  %wide.load = load <4 x float>, ptr %303, align 4, !tbaa !20
  %304 = fdiv <4 x float> %wide.load, %broadcast.splat
  %305 = fmul <4 x float> %304, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  %306 = getelementptr float, ptr %invariant.gep343, i64 %offset.idx
  store <4 x float> %305, ptr %306, align 4, !tbaa !20
  %index.next = add nuw i64 %index, 4
  %307 = icmp eq i64 %index.next, %n.vec
  br i1 %307, label %middle.block, label %vector.body, !llvm.loop !66

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %290, %n.vec
  br i1 %cmp.n, label %._crit_edge259, label %scalar.ph.preheader

scalar.ph360:                                     ; preds = %scalar.ph360.prol.loopexit, %scalar.ph360
  %indvars.iv303 = phi i64 [ %indvars.iv.next304.1, %scalar.ph360 ], [ %indvars.iv303.unr, %scalar.ph360.prol.loopexit ]
  %308 = getelementptr inbounds float, ptr %266, i64 %indvars.iv303
  %309 = load float, ptr %308, align 4, !tbaa !20
  %310 = fdiv float %309, %267
  %311 = mul nuw nsw i64 %indvars.iv303, %26
  %gep342 = getelementptr inbounds float, ptr %invariant.gep341, i64 %311
  %312 = load float, ptr %gep342, align 4, !tbaa !20
  %313 = tail call float @llvm.fmuladd.f32(float %310, float 2.000000e+00, float %312)
  store float %313, ptr %gep342, align 4, !tbaa !20
  %indvars.iv.next304 = add nuw nsw i64 %indvars.iv303, 1
  %314 = getelementptr inbounds float, ptr %266, i64 %indvars.iv.next304
  %315 = load float, ptr %314, align 4, !tbaa !20
  %316 = fdiv float %315, %267
  %317 = mul nuw nsw i64 %indvars.iv.next304, %26
  %gep342.1 = getelementptr inbounds float, ptr %invariant.gep341, i64 %317
  %318 = load float, ptr %gep342.1, align 4, !tbaa !20
  %319 = tail call float @llvm.fmuladd.f32(float %316, float 2.000000e+00, float %318)
  store float %319, ptr %gep342.1, align 4, !tbaa !20
  %indvars.iv.next304.1 = add nuw nsw i64 %indvars.iv303, 2
  %exitcond307.not.1 = icmp eq i64 %indvars.iv.next304.1, %wide.trip.count306
  br i1 %exitcond307.not.1, label %.preheader219, label %scalar.ph360, !llvm.loop !67

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %indvars.iv308 = phi i64 [ %indvars.iv.next309.1, %scalar.ph ], [ %indvars.iv308.unr, %scalar.ph.prol.loopexit ]
  %320 = getelementptr inbounds float, ptr %286, i64 %indvars.iv308
  %321 = load float, ptr %320, align 4, !tbaa !20
  %322 = fdiv float %321, %287
  %323 = fmul float %322, 2.000000e+00
  %324 = mul nsw i64 %indvars.iv308, %27
  %gep344 = getelementptr float, ptr %invariant.gep343, i64 %324
  store float %323, ptr %gep344, align 4, !tbaa !20
  %indvars.iv.next309 = add nsw i64 %indvars.iv308, 1
  %325 = getelementptr inbounds float, ptr %286, i64 %indvars.iv.next309
  %326 = load float, ptr %325, align 4, !tbaa !20
  %327 = fdiv float %326, %287
  %328 = fmul float %327, 2.000000e+00
  %329 = mul nsw i64 %indvars.iv.next309, %27
  %gep344.1 = getelementptr float, ptr %invariant.gep343, i64 %329
  store float %328, ptr %gep344.1, align 4, !tbaa !20
  %indvars.iv.next309.1 = add nsw i64 %indvars.iv308, 2
  %exitcond312.not.1 = icmp eq i64 %indvars.iv.next309.1, %wide.trip.count311
  br i1 %exitcond312.not.1, label %._crit_edge259, label %scalar.ph, !llvm.loop !68

._crit_edge259:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block, %.preheader219
  %indvars.iv.next314 = add nuw nsw i64 %indvars.iv313, 1
  %exitcond317.not = icmp eq i64 %indvars.iv.next314, %26
  br i1 %exitcond317.not, label %.loopexit222.loopexit, label %.lr.ph262, !llvm.loop !69

.lr.ph271.split:                                  ; preds = %.lr.ph271, %.lr.ph271.split
  %indvars.iv319 = phi i64 [ %indvars.iv.next320, %.lr.ph271.split ], [ 0, %.lr.ph271 ]
  %gep346 = getelementptr float, ptr %invariant.gep347, i64 %indvars.iv319
  %330 = load float, ptr %gep346, align 4, !tbaa !20
  %331 = add nsw i64 %indvars.iv319, %67
  %332 = getelementptr inbounds float, ptr %60, i64 %331
  store float %330, ptr %332, align 4, !tbaa !20
  %333 = getelementptr inbounds float, ptr %63, i64 %331
  %334 = load float, ptr %333, align 4, !tbaa !20
  %335 = load float, ptr @_ZZ23equ_modifySamples_floatE3hm1, align 4, !tbaa !20
  %336 = fsub float %334, %335
  %337 = fcmp olt float %336, -1.000000e+00
  %.0198 = select i1 %337, float -1.000000e+00, float %336
  %338 = fcmp ogt float %.0198, 1.000000e+00
  %.1 = select i1 %338, float 1.000000e+00, float %.0198
  %339 = fsub float %.1, %336
  store float %339, ptr @_ZZ23equ_modifySamples_floatE3hm1, align 4, !tbaa !20
  store float %.1, ptr %gep346, align 4, !tbaa !20
  %indvars.iv.next320 = add nuw nsw i64 %indvars.iv319, 1
  %exitcond323.not = icmp eq i64 %indvars.iv.next320, %wide.trip.count328
  br i1 %exitcond323.not, label %._crit_edge272, label %.lr.ph271.split, !llvm.loop !70

._crit_edge272:                                   ; preds = %.lr.ph271.split, %.lr.ph271.split.us, %middle.block500, %.preheader
  %340 = add nsw i32 %.0.lcssa, %.0203.lcssa
  store i32 %.lcssa227, ptr %14, align 8, !tbaa !14
  ret i32 %340
}

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <4 x float> @llvm.fmuladd.v4f32(<4 x float>, <4 x float>, <4 x float>) #3

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x float> @llvm.fmuladd.v2f32(<2 x float>, <2 x float>, <2 x float>) #3

attributes #0 = { mustprogress 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 nounwind willreturn memory(argmem: write) }
attributes #3 = { 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, !10, i64 52}
!6 = !{!"_ZTS12SuperEqState", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !7, i64 80, !7, i64 88, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!6, !10, i64 56}
!12 = !{!7, !7, i64 0}
!13 = !{!6, !7, i64 0}
!14 = !{!6, !10, i64 72}
!15 = !{!6, !10, i64 60}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = !{!6, !7, i64 80}
!19 = !{!6, !7, i64 88}
!20 = !{!21, !21, i64 0}
!21 = !{!"float", !8, i64 0}
!22 = !{!23}
!23 = distinct !{!23, !24}
!24 = distinct !{!24, !"LVerDomain"}
!25 = !{!26}
!26 = distinct !{!26, !24}
!27 = !{!28}
!28 = distinct !{!28, !24}
!29 = !{!23, !26}
!30 = distinct !{!30, !17, !31, !32}
!31 = !{!"llvm.loop.isvectorized", i32 1}
!32 = !{!"llvm.loop.unroll.runtime.disable"}
!33 = !{!6, !10, i64 96}
!34 = !{!35}
!35 = distinct !{!35, !36}
!36 = distinct !{!36, !"LVerDomain"}
!37 = !{!38}
!38 = distinct !{!38, !36}
!39 = !{!40}
!40 = distinct !{!40, !36}
!41 = !{!35, !38}
!42 = distinct !{!42, !17, !31, !32}
!43 = distinct !{!43, !17, !31}
!44 = distinct !{!44, !17, !31}
!45 = !{!6, !10, i64 68}
!46 = distinct !{!46, !17, !31, !32}
!47 = distinct !{!47, !48}
!48 = !{!"llvm.loop.unroll.disable"}
!49 = distinct !{!49, !17, !31}
!50 = !{!6, !7, i64 32}
!51 = distinct !{!51, !48}
!52 = distinct !{!52, !17, !31, !32}
!53 = distinct !{!53, !17, !31}
!54 = !{!6, !10, i64 104}
!55 = !{!6, !10, i64 108}
!56 = distinct !{!56, !17, !31, !32}
!57 = distinct !{!57, !17, !31}
!58 = distinct !{!58, !17, !31, !32}
!59 = distinct !{!59, !17, !32, !31}
!60 = !{!61}
!61 = distinct !{!61, !62}
!62 = distinct !{!62, !"LVerDomain"}
!63 = !{!64}
!64 = distinct !{!64, !62}
!65 = distinct !{!65, !17, !31, !32}
!66 = distinct !{!66, !17, !31, !32}
!67 = distinct !{!67, !17, !31}
!68 = distinct !{!68, !17, !31}
!69 = distinct !{!69, !17}
!70 = distinct !{!70, !17}


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