; LLVM IR from VoidRune/Audio-engine :: src/minivorbis.ll (vp_couple_quantize_normalize)

; 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.vorbis_look_psy = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, i64, i64, i32, i32, i64, float }
%struct.vorbis_info_psy = type { i32, float, float, [3 x float], float, float, float, [17 x float], i32, float, float, float, i32, i32, i32, [3 x [17 x float]], [40 x float], float, i32, i32, i32, double }
%struct.vorbis_info_psy_global = type { i32, [7 x float], [7 x float], float, float, float, [15 x i32], [2 x [15 x i32]], [15 x i32], [15 x i32], [2 x [15 x i32]] }
%struct.vorbis_info_mapping0 = type { i32, [256 x i32], [16 x i32], [16 x i32], i32, [256 x i32], [256 x i32] }

@stereo_threshholds = external hidden constant [9 x double], align 16
@stereo_threshholds_limited = external hidden constant [9 x double], align 16
@_FLOOR1_fromdB_LOOKUP = external hidden global [256 x float], align 16

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

; Function Attrs: nounwind uwtable
define dso_local void @_vp_couple_quantize_normalize(i32 noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, i32 noundef %7, i32 noundef %8) #3 {
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca float, align 4
  %24 = alloca float, align 4
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca ptr, align 8
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  store i32 %0, ptr %10, align 4, !tbaa !5
  store ptr %1, ptr %11, align 8, !tbaa !9
  store ptr %2, ptr %12, align 8, !tbaa !9
  store ptr %3, ptr %13, align 8, !tbaa !9
  store ptr %4, ptr %14, align 8, !tbaa !9
  store ptr %5, ptr %15, align 8, !tbaa !9
  store ptr %6, ptr %16, align 8, !tbaa !9
  store i32 %7, ptr %17, align 4, !tbaa !5
  store i32 %8, ptr %18, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  %51 = load ptr, ptr %12, align 8, !tbaa !9
  %52 = getelementptr inbounds %struct.vorbis_look_psy, ptr %51, i32 0, i32 0
  %53 = load i32, ptr %52, align 8, !tbaa !11
  store i32 %53, ptr %20, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  %54 = load ptr, ptr %12, align 8, !tbaa !9
  %55 = getelementptr inbounds %struct.vorbis_look_psy, ptr %54, i32 0, i32 1
  %56 = load ptr, ptr %55, align 8, !tbaa !15
  %57 = getelementptr inbounds %struct.vorbis_info_psy, ptr %56, i32 0, i32 18
  %58 = load i32, ptr %57, align 4, !tbaa !16
  %59 = icmp ne i32 %58, 0
  br i1 %59, label %60, label %66

60:                                               ; preds = %9
  %61 = load ptr, ptr %12, align 8, !tbaa !9
  %62 = getelementptr inbounds %struct.vorbis_look_psy, ptr %61, i32 0, i32 1
  %63 = load ptr, ptr %62, align 8, !tbaa !15
  %64 = getelementptr inbounds %struct.vorbis_info_psy, ptr %63, i32 0, i32 20
  %65 = load i32, ptr %64, align 4, !tbaa !19
  br label %67

66:                                               ; preds = %9
  br label %67

67:                                               ; preds = %66, %60
  %68 = phi i32 [ %65, %60 ], [ 16, %66 ]
  store i32 %68, ptr %21, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  %69 = load ptr, ptr %11, align 8, !tbaa !9
  %70 = getelementptr inbounds %struct.vorbis_info_psy_global, ptr %69, i32 0, i32 7
  %71 = load ptr, ptr %12, align 8, !tbaa !9
  %72 = getelementptr inbounds %struct.vorbis_look_psy, ptr %71, i32 0, i32 1
  %73 = load ptr, ptr %72, align 8, !tbaa !15
  %74 = getelementptr inbounds %struct.vorbis_info_psy, ptr %73, i32 0, i32 0
  %75 = load i32, ptr %74, align 8, !tbaa !20
  %76 = sext i32 %75 to i64
  %77 = getelementptr inbounds [2 x [15 x i32]], ptr %70, i64 0, i64 %76
  %78 = load i32, ptr %10, align 4, !tbaa !5
  %79 = sext i32 %78 to i64
  %80 = getelementptr inbounds [15 x i32], ptr %77, i64 0, i64 %79
  %81 = load i32, ptr %80, align 4, !tbaa !5
  store i32 %81, ptr %22, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #5
  %82 = load ptr, ptr %11, align 8, !tbaa !9
  %83 = getelementptr inbounds %struct.vorbis_info_psy_global, ptr %82, i32 0, i32 8
  %84 = load i32, ptr %10, align 4, !tbaa !5
  %85 = sext i32 %84 to i64
  %86 = getelementptr inbounds [15 x i32], ptr %83, i64 0, i64 %85
  %87 = load i32, ptr %86, align 4, !tbaa !5
  %88 = sext i32 %87 to i64
  %89 = getelementptr inbounds [9 x double], ptr @stereo_threshholds, i64 0, i64 %88
  %90 = load double, ptr %89, align 8, !tbaa !21
  %91 = fptrunc double %90 to float
  store float %91, ptr %23, align 4, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #5
  %92 = load ptr, ptr %11, align 8, !tbaa !9
  %93 = getelementptr inbounds %struct.vorbis_info_psy_global, ptr %92, i32 0, i32 9
  %94 = load i32, ptr %10, align 4, !tbaa !5
  %95 = sext i32 %94 to i64
  %96 = getelementptr inbounds [15 x i32], ptr %93, i64 0, i64 %95
  %97 = load i32, ptr %96, align 4, !tbaa !5
  %98 = sext i32 %97 to i64
  %99 = getelementptr inbounds [9 x double], ptr @stereo_threshholds, i64 0, i64 %98
  %100 = load double, ptr %99, align 8, !tbaa !21
  %101 = fptrunc double %100 to float
  store float %101, ptr %24, align 4, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  %102 = load i32, ptr %18, align 4, !tbaa !5
  %103 = sext i32 %102 to i64
  %104 = mul i64 %103, 8
  %105 = alloca i8, i64 %104, align 16
  store ptr %105, ptr %25, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  %106 = load i32, ptr %18, align 4, !tbaa !5
  %107 = sext i32 %106 to i64
  %108 = mul i64 %107, 8
  %109 = alloca i8, i64 %108, align 16
  store ptr %109, ptr %26, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #5
  %110 = load i32, ptr %18, align 4, !tbaa !5
  %111 = sext i32 %110 to i64
  %112 = mul i64 %111, 8
  %113 = alloca i8, i64 %112, align 16
  store ptr %113, ptr %27, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #5
  %114 = load i32, ptr %18, align 4, !tbaa !5
  %115 = sext i32 %114 to i64
  %116 = mul i64 %115, 8
  %117 = alloca i8, i64 %116, align 16
  store ptr %117, ptr %28, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #5
  %118 = load i32, ptr %18, align 4, !tbaa !5
  %119 = sext i32 %118 to i64
  %120 = mul i64 %119, 4
  %121 = alloca i8, i64 %120, align 16
  store ptr %121, ptr %29, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  %122 = load i32, ptr %18, align 4, !tbaa !5
  %123 = load ptr, ptr %13, align 8, !tbaa !9
  %124 = getelementptr inbounds %struct.vorbis_info_mapping0, ptr %123, i32 0, i32 4
  %125 = load i32, ptr %124, align 4, !tbaa !23
  %126 = add nsw i32 %122, %125
  %127 = sext i32 %126 to i64
  %128 = mul i64 %127, 4
  %129 = alloca i8, i64 %128, align 16
  store ptr %129, ptr %30, align 8, !tbaa !9
  %130 = load i32, ptr %20, align 4, !tbaa !5
  %131 = icmp sgt i32 %130, 1000
  br i1 %131, label %132, label %143

132:                                              ; preds = %67
  %133 = load ptr, ptr %11, align 8, !tbaa !9
  %134 = getelementptr inbounds %struct.vorbis_info_psy_global, ptr %133, i32 0, i32 9
  %135 = load i32, ptr %10, align 4, !tbaa !5
  %136 = sext i32 %135 to i64
  %137 = getelementptr inbounds [15 x i32], ptr %134, i64 0, i64 %136
  %138 = load i32, ptr %137, align 4, !tbaa !5
  %139 = sext i32 %138 to i64
  %140 = getelementptr inbounds [9 x double], ptr @stereo_threshholds_limited, i64 0, i64 %139
  %141 = load double, ptr %140, align 8, !tbaa !21
  %142 = fptrunc double %141 to float
  store float %142, ptr %24, align 4, !tbaa !22
  br label %143

143:                                              ; preds = %132, %67
  %144 = load i32, ptr %18, align 4, !tbaa !5
  %145 = load i32, ptr %21, align 4, !tbaa !5
  %146 = mul nsw i32 %144, %145
  %147 = sext i32 %146 to i64
  %148 = mul i64 %147, 4
  %149 = alloca i8, i64 %148, align 16
  %150 = load ptr, ptr %25, align 8, !tbaa !9
  %151 = getelementptr inbounds ptr, ptr %150, i64 0
  store ptr %149, ptr %151, align 8, !tbaa !9
  %152 = load i32, ptr %18, align 4, !tbaa !5
  %153 = load i32, ptr %21, align 4, !tbaa !5
  %154 = mul nsw i32 %152, %153
  %155 = sext i32 %154 to i64
  %156 = mul i64 %155, 4
  %157 = alloca i8, i64 %156, align 16
  %158 = load ptr, ptr %26, align 8, !tbaa !9
  %159 = getelementptr inbounds ptr, ptr %158, i64 0
  store ptr %157, ptr %159, align 8, !tbaa !9
  %160 = load i32, ptr %18, align 4, !tbaa !5
  %161 = load i32, ptr %21, align 4, !tbaa !5
  %162 = mul nsw i32 %160, %161
  %163 = sext i32 %162 to i64
  %164 = mul i64 %163, 4
  %165 = alloca i8, i64 %164, align 16
  %166 = load ptr, ptr %27, align 8, !tbaa !9
  %167 = getelementptr inbounds ptr, ptr %166, i64 0
  store ptr %165, ptr %167, align 8, !tbaa !9
  %168 = load i32, ptr %18, align 4, !tbaa !5
  %169 = load i32, ptr %21, align 4, !tbaa !5
  %170 = mul nsw i32 %168, %169
  %171 = sext i32 %170 to i64
  %172 = mul i64 %171, 4
  %173 = alloca i8, i64 %172, align 16
  %174 = load ptr, ptr %28, align 8, !tbaa !9
  %175 = getelementptr inbounds ptr, ptr %174, i64 0
  store ptr %173, ptr %175, align 8, !tbaa !9
  store i32 1, ptr %19, align 4, !tbaa !5
  br label %176

176:                                              ; preds = %229, %143
  %177 = load i32, ptr %19, align 4, !tbaa !5
  %178 = load i32, ptr %18, align 4, !tbaa !5
  %179 = icmp slt i32 %177, %178
  br i1 %179, label %180, label %232

180:                                              ; preds = %176
  %181 = load ptr, ptr %25, align 8, !tbaa !9
  %182 = getelementptr inbounds ptr, ptr %181, i64 0
  %183 = load ptr, ptr %182, align 8, !tbaa !9
  %184 = load i32, ptr %21, align 4, !tbaa !5
  %185 = load i32, ptr %19, align 4, !tbaa !5
  %186 = mul nsw i32 %184, %185
  %187 = sext i32 %186 to i64
  %188 = getelementptr inbounds float, ptr %183, i64 %187
  %189 = load ptr, ptr %25, align 8, !tbaa !9
  %190 = load i32, ptr %19, align 4, !tbaa !5
  %191 = sext i32 %190 to i64
  %192 = getelementptr inbounds ptr, ptr %189, i64 %191
  store ptr %188, ptr %192, align 8, !tbaa !9
  %193 = load ptr, ptr %26, align 8, !tbaa !9
  %194 = getelementptr inbounds ptr, ptr %193, i64 0
  %195 = load ptr, ptr %194, align 8, !tbaa !9
  %196 = load i32, ptr %21, align 4, !tbaa !5
  %197 = load i32, ptr %19, align 4, !tbaa !5
  %198 = mul nsw i32 %196, %197
  %199 = sext i32 %198 to i64
  %200 = getelementptr inbounds float, ptr %195, i64 %199
  %201 = load ptr, ptr %26, align 8, !tbaa !9
  %202 = load i32, ptr %19, align 4, !tbaa !5
  %203 = sext i32 %202 to i64
  %204 = getelementptr inbounds ptr, ptr %201, i64 %203
  store ptr %200, ptr %204, align 8, !tbaa !9
  %205 = load ptr, ptr %27, align 8, !tbaa !9
  %206 = getelementptr inbounds ptr, ptr %205, i64 0
  %207 = load ptr, ptr %206, align 8, !tbaa !9
  %208 = load i32, ptr %21, align 4, !tbaa !5
  %209 = load i32, ptr %19, align 4, !tbaa !5
  %210 = mul nsw i32 %208, %209
  %211 = sext i32 %210 to i64
  %212 = getelementptr inbounds float, ptr %207, i64 %211
  %213 = load ptr, ptr %27, align 8, !tbaa !9
  %214 = load i32, ptr %19, align 4, !tbaa !5
  %215 = sext i32 %214 to i64
  %216 = getelementptr inbounds ptr, ptr %213, i64 %215
  store ptr %212, ptr %216, align 8, !tbaa !9
  %217 = load ptr, ptr %28, align 8, !tbaa !9
  %218 = getelementptr inbounds ptr, ptr %217, i64 0
  %219 = load ptr, ptr %218, align 8, !tbaa !9
  %220 = load i32, ptr %21, align 4, !tbaa !5
  %221 = load i32, ptr %19, align 4, !tbaa !5
  %222 = mul nsw i32 %220, %221
  %223 = sext i32 %222 to i64
  %224 = getelementptr inbounds i32, ptr %219, i64 %223
  %225 = load ptr, ptr %28, align 8, !tbaa !9
  %226 = load i32, ptr %19, align 4, !tbaa !5
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds ptr, ptr %225, i64 %227
  store ptr %224, ptr %228, align 8, !tbaa !9
  br label %229

229:                                              ; preds = %180
  %230 = load i32, ptr %19, align 4, !tbaa !5
  %231 = add nsw i32 %230, 1
  store i32 %231, ptr %19, align 4, !tbaa !5
  br label %176, !llvm.loop !25

232:                                              ; preds = %176
  store i32 0, ptr %19, align 4, !tbaa !5
  br label %233

233:                                              ; preds = %246, %232
  %234 = load i32, ptr %19, align 4, !tbaa !5
  %235 = load i32, ptr %18, align 4, !tbaa !5
  %236 = load ptr, ptr %13, align 8, !tbaa !9
  %237 = getelementptr inbounds %struct.vorbis_info_mapping0, ptr %236, i32 0, i32 4
  %238 = load i32, ptr %237, align 4, !tbaa !23
  %239 = add nsw i32 %235, %238
  %240 = icmp slt i32 %234, %239
  br i1 %240, label %241, label %249

241:                                              ; preds = %233
  %242 = load ptr, ptr %30, align 8, !tbaa !9
  %243 = load i32, ptr %19, align 4, !tbaa !5
  %244 = sext i32 %243 to i64
  %245 = getelementptr inbounds float, ptr %242, i64 %244
  store float 0.000000e+00, ptr %245, align 4, !tbaa !22
  br label %246

246:                                              ; preds = %241
  %247 = load i32, ptr %19, align 4, !tbaa !5
  %248 = add nsw i32 %247, 1
  store i32 %248, ptr %19, align 4, !tbaa !5
  br label %233, !llvm.loop !27

249:                                              ; preds = %233
  store i32 0, ptr %19, align 4, !tbaa !5
  br label %250

250:                                              ; preds = %961, %249
  %251 = load i32, ptr %19, align 4, !tbaa !5
  %252 = load i32, ptr %20, align 4, !tbaa !5
  %253 = icmp slt i32 %251, %252
  br i1 %253, label %254, label %965

254:                                              ; preds = %250
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #5
  %255 = load i32, ptr %21, align 4, !tbaa !5
  %256 = load i32, ptr %20, align 4, !tbaa !5
  %257 = load i32, ptr %19, align 4, !tbaa !5
  %258 = sub nsw i32 %256, %257
  %259 = icmp sgt i32 %255, %258
  br i1 %259, label %260, label %264

260:                                              ; preds = %254
  %261 = load i32, ptr %20, align 4, !tbaa !5
  %262 = load i32, ptr %19, align 4, !tbaa !5
  %263 = sub nsw i32 %261, %262
  br label %266

264:                                              ; preds = %254
  %265 = load i32, ptr %21, align 4, !tbaa !5
  br label %266

266:                                              ; preds = %264, %260
  %267 = phi i32 [ %263, %260 ], [ %265, %264 ]
  store i32 %267, ptr %33, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #5
  store i32 0, ptr %35, align 4, !tbaa !5
  %268 = load ptr, ptr %29, align 8, !tbaa !9
  %269 = load ptr, ptr %16, align 8, !tbaa !9
  %270 = load i32, ptr %18, align 4, !tbaa !5
  %271 = sext i32 %270 to i64
  %272 = mul i64 4, %271
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %268, ptr align 4 %269, i64 %272, i1 false)
  %273 = load ptr, ptr %28, align 8, !tbaa !9
  %274 = getelementptr inbounds ptr, ptr %273, i64 0
  %275 = load ptr, ptr %274, align 8, !tbaa !9
  %276 = load i32, ptr %18, align 4, !tbaa !5
  %277 = load i32, ptr %21, align 4, !tbaa !5
  %278 = mul nsw i32 %276, %277
  %279 = sext i32 %278 to i64
  %280 = mul i64 %279, 4
  call void @llvm.memset.p0.i64(ptr align 4 %275, i8 0, i64 %280, i1 false)
  store i32 0, ptr %31, align 4, !tbaa !5
  br label %281

281:                                              ; preds = %523, %266
  %282 = load i32, ptr %31, align 4, !tbaa !5
  %283 = load i32, ptr %18, align 4, !tbaa !5
  %284 = icmp slt i32 %282, %283
  br i1 %284, label %285, label %526

285:                                              ; preds = %281
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #5
  %286 = load ptr, ptr %15, align 8, !tbaa !9
  %287 = load i32, ptr %31, align 4, !tbaa !5
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds ptr, ptr %286, i64 %288
  %290 = load ptr, ptr %289, align 8, !tbaa !9
  %291 = load i32, ptr %19, align 4, !tbaa !5
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds i32, ptr %290, i64 %292
  store ptr %293, ptr %36, align 8, !tbaa !9
  %294 = load ptr, ptr %29, align 8, !tbaa !9
  %295 = load i32, ptr %31, align 4, !tbaa !5
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds i32, ptr %294, i64 %296
  %298 = load i32, ptr %297, align 4, !tbaa !5
  %299 = icmp ne i32 %298, 0
  br i1 %299, label %300, label %470

300:                                              ; preds = %285
  store i32 0, ptr %32, align 4, !tbaa !5
  br label %301

301:                                              ; preds = %322, %300
  %302 = load i32, ptr %32, align 4, !tbaa !5
  %303 = load i32, ptr %33, align 4, !tbaa !5
  %304 = icmp slt i32 %302, %303
  br i1 %304, label %305, label %325

305:                                              ; preds = %301
  %306 = load ptr, ptr %36, align 8, !tbaa !9
  %307 = load i32, ptr %32, align 4, !tbaa !5
  %308 = sext i32 %307 to i64
  %309 = getelementptr inbounds i32, ptr %306, i64 %308
  %310 = load i32, ptr %309, align 4, !tbaa !5
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds [256 x float], ptr @_FLOOR1_fromdB_LOOKUP, i64 0, i64 %311
  %313 = load float, ptr %312, align 4, !tbaa !22
  %314 = load ptr, ptr %27, align 8, !tbaa !9
  %315 = load i32, ptr %31, align 4, !tbaa !5
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds ptr, ptr %314, i64 %316
  %318 = load ptr, ptr %317, align 8, !tbaa !9
  %319 = load i32, ptr %32, align 4, !tbaa !5
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds float, ptr %318, i64 %320
  store float %313, ptr %321, align 4, !tbaa !22
  br label %322

322:                                              ; preds = %305
  %323 = load i32, ptr %32, align 4, !tbaa !5
  %324 = add nsw i32 %323, 1
  store i32 %324, ptr %32, align 4, !tbaa !5
  br label %301, !llvm.loop !28

325:                                              ; preds = %301
  %326 = load i32, ptr %22, align 4, !tbaa !5
  %327 = load float, ptr %23, align 4, !tbaa !22
  %328 = load float, ptr %24, align 4, !tbaa !22
  %329 = load ptr, ptr %14, align 8, !tbaa !9
  %330 = load i32, ptr %31, align 4, !tbaa !5
  %331 = sext i32 %330 to i64
  %332 = getelementptr inbounds ptr, ptr %329, i64 %331
  %333 = load ptr, ptr %332, align 8, !tbaa !9
  %334 = load i32, ptr %19, align 4, !tbaa !5
  %335 = sext i32 %334 to i64
  %336 = getelementptr inbounds float, ptr %333, i64 %335
  %337 = load ptr, ptr %27, align 8, !tbaa !9
  %338 = load i32, ptr %31, align 4, !tbaa !5
  %339 = sext i32 %338 to i64
  %340 = getelementptr inbounds ptr, ptr %337, i64 %339
  %341 = load ptr, ptr %340, align 8, !tbaa !9
  %342 = load ptr, ptr %28, align 8, !tbaa !9
  %343 = load i32, ptr %31, align 4, !tbaa !5
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds ptr, ptr %342, i64 %344
  %346 = load ptr, ptr %345, align 8, !tbaa !9
  %347 = load i32, ptr %19, align 4, !tbaa !5
  %348 = load i32, ptr %33, align 4, !tbaa !5
  call void @flag_lossless(i32 noundef %326, float noundef %327, float noundef %328, ptr noundef %336, ptr noundef %341, ptr noundef %346, i32 noundef %347, i32 noundef %348)
  store i32 0, ptr %32, align 4, !tbaa !5
  br label %349

349:                                              ; preds = %436, %325
  %350 = load i32, ptr %32, align 4, !tbaa !5
  %351 = load i32, ptr %33, align 4, !tbaa !5
  %352 = icmp slt i32 %350, %351
  br i1 %352, label %353, label %439

353:                                              ; preds = %349
  %354 = load ptr, ptr %14, align 8, !tbaa !9
  %355 = load i32, ptr %31, align 4, !tbaa !5
  %356 = sext i32 %355 to i64
  %357 = getelementptr inbounds ptr, ptr %354, i64 %356
  %358 = load ptr, ptr %357, align 8, !tbaa !9
  %359 = load i32, ptr %19, align 4, !tbaa !5
  %360 = load i32, ptr %32, align 4, !tbaa !5
  %361 = add nsw i32 %359, %360
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds float, ptr %358, i64 %362
  %364 = load float, ptr %363, align 4, !tbaa !22
  %365 = load ptr, ptr %14, align 8, !tbaa !9
  %366 = load i32, ptr %31, align 4, !tbaa !5
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds ptr, ptr %365, i64 %367
  %369 = load ptr, ptr %368, align 8, !tbaa !9
  %370 = load i32, ptr %19, align 4, !tbaa !5
  %371 = load i32, ptr %32, align 4, !tbaa !5
  %372 = add nsw i32 %370, %371
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds float, ptr %369, i64 %373
  %375 = load float, ptr %374, align 4, !tbaa !22
  %376 = fmul float %364, %375
  %377 = load ptr, ptr %25, align 8, !tbaa !9
  %378 = load i32, ptr %31, align 4, !tbaa !5
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds ptr, ptr %377, i64 %379
  %381 = load ptr, ptr %380, align 8, !tbaa !9
  %382 = load i32, ptr %32, align 4, !tbaa !5
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds float, ptr %381, i64 %383
  store float %376, ptr %384, align 4, !tbaa !22
  %385 = load ptr, ptr %26, align 8, !tbaa !9
  %386 = load i32, ptr %31, align 4, !tbaa !5
  %387 = sext i32 %386 to i64
  %388 = getelementptr inbounds ptr, ptr %385, i64 %387
  %389 = load ptr, ptr %388, align 8, !tbaa !9
  %390 = load i32, ptr %32, align 4, !tbaa !5
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds float, ptr %389, i64 %391
  store float %376, ptr %392, align 4, !tbaa !22
  %393 = load ptr, ptr %14, align 8, !tbaa !9
  %394 = load i32, ptr %31, align 4, !tbaa !5
  %395 = sext i32 %394 to i64
  %396 = getelementptr inbounds ptr, ptr %393, i64 %395
  %397 = load ptr, ptr %396, align 8, !tbaa !9
  %398 = load i32, ptr %19, align 4, !tbaa !5
  %399 = load i32, ptr %32, align 4, !tbaa !5
  %400 = add nsw i32 %398, %399
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds float, ptr %397, i64 %401
  %403 = load float, ptr %402, align 4, !tbaa !22
  %404 = fcmp olt float %403, 0.000000e+00
  br i1 %404, label %405, label %416

405:                                              ; preds = %353
  %406 = load ptr, ptr %25, align 8, !tbaa !9
  %407 = load i32, ptr %31, align 4, !tbaa !5
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds ptr, ptr %406, i64 %408
  %410 = load ptr, ptr %409, align 8, !tbaa !9
  %411 = load i32, ptr %32, align 4, !tbaa !5
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds float, ptr %410, i64 %412
  %414 = load float, ptr %413, align 4, !tbaa !22
  %415 = fmul float %414, -1.000000e+00
  store float %415, ptr %413, align 4, !tbaa !22
  br label %416

416:                                              ; preds = %405, %353
  %417 = load ptr, ptr %27, align 8, !tbaa !9
  %418 = load i32, ptr %31, align 4, !tbaa !5
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds ptr, ptr %417, i64 %419
  %421 = load ptr, ptr %420, align 8, !tbaa !9
  %422 = load i32, ptr %32, align 4, !tbaa !5
  %423 = sext i32 %422 to i64
  %424 = getelementptr inbounds float, ptr %421, i64 %423
  %425 = load float, ptr %424, align 4, !tbaa !22
  %426 = load ptr, ptr %27, align 8, !tbaa !9
  %427 = load i32, ptr %31, align 4, !tbaa !5
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds ptr, ptr %426, i64 %428
  %430 = load ptr, ptr %429, align 8, !tbaa !9
  %431 = load i32, ptr %32, align 4, !tbaa !5
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds float, ptr %430, i64 %432
  %434 = load float, ptr %433, align 4, !tbaa !22
  %435 = fmul float %434, %425
  store float %435, ptr %433, align 4, !tbaa !22
  br label %436

436:                                              ; preds = %416
  %437 = load i32, ptr %32, align 4, !tbaa !5
  %438 = add nsw i32 %437, 1
  store i32 %438, ptr %32, align 4, !tbaa !5
  br label %349, !llvm.loop !29

439:                                              ; preds = %349
  %440 = load ptr, ptr %12, align 8, !tbaa !9
  %441 = load i32, ptr %22, align 4, !tbaa !5
  %442 = load ptr, ptr %25, align 8, !tbaa !9
  %443 = load i32, ptr %31, align 4, !tbaa !5
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds ptr, ptr %442, i64 %444
  %446 = load ptr, ptr %445, align 8, !tbaa !9
  %447 = load ptr, ptr %26, align 8, !tbaa !9
  %448 = load i32, ptr %31, align 4, !tbaa !5
  %449 = sext i32 %448 to i64
  %450 = getelementptr inbounds ptr, ptr %447, i64 %449
  %451 = load ptr, ptr %450, align 8, !tbaa !9
  %452 = load ptr, ptr %27, align 8, !tbaa !9
  %453 = load i32, ptr %31, align 4, !tbaa !5
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds ptr, ptr %452, i64 %454
  %456 = load ptr, ptr %455, align 8, !tbaa !9
  %457 = load ptr, ptr %30, align 8, !tbaa !9
  %458 = load i32, ptr %35, align 4, !tbaa !5
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds float, ptr %457, i64 %459
  %461 = load float, ptr %460, align 4, !tbaa !22
  %462 = load i32, ptr %19, align 4, !tbaa !5
  %463 = load i32, ptr %33, align 4, !tbaa !5
  %464 = load ptr, ptr %36, align 8, !tbaa !9
  %465 = call float @noise_normalize(ptr noundef %440, i32 noundef %441, ptr noundef %446, ptr noundef %451, ptr noundef %456, ptr noundef null, float noundef %461, i32 noundef %462, i32 noundef %463, ptr noundef %464)
  %466 = load ptr, ptr %30, align 8, !tbaa !9
  %467 = load i32, ptr %35, align 4, !tbaa !5
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds float, ptr %466, i64 %468
  store float %465, ptr %469, align 4, !tbaa !22
  br label %520

470:                                              ; preds = %285
  store i32 0, ptr %32, align 4, !tbaa !5
  br label %471

471:                                              ; preds = %512, %470
  %472 = load i32, ptr %32, align 4, !tbaa !5
  %473 = load i32, ptr %33, align 4, !tbaa !5
  %474 = icmp slt i32 %472, %473
  br i1 %474, label %475, label %515

475:                                              ; preds = %471
  %476 = load ptr, ptr %27, align 8, !tbaa !9
  %477 = load i32, ptr %31, align 4, !tbaa !5
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds ptr, ptr %476, i64 %478
  %480 = load ptr, ptr %479, align 8, !tbaa !9
  %481 = load i32, ptr %32, align 4, !tbaa !5
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds float, ptr %480, i64 %482
  store float 0x3DDB7CDFE0000000, ptr %483, align 4, !tbaa !22
  %484 = load ptr, ptr %25, align 8, !tbaa !9
  %485 = load i32, ptr %31, align 4, !tbaa !5
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds ptr, ptr %484, i64 %486
  %488 = load ptr, ptr %487, align 8, !tbaa !9
  %489 = load i32, ptr %32, align 4, !tbaa !5
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds float, ptr %488, i64 %490
  store float 0.000000e+00, ptr %491, align 4, !tbaa !22
  %492 = load ptr, ptr %26, align 8, !tbaa !9
  %493 = load i32, ptr %31, align 4, !tbaa !5
  %494 = sext i32 %493 to i64
  %495 = getelementptr inbounds ptr, ptr %492, i64 %494
  %496 = load ptr, ptr %495, align 8, !tbaa !9
  %497 = load i32, ptr %32, align 4, !tbaa !5
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds float, ptr %496, i64 %498
  store float 0.000000e+00, ptr %499, align 4, !tbaa !22
  %500 = load ptr, ptr %28, align 8, !tbaa !9
  %501 = load i32, ptr %31, align 4, !tbaa !5
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds ptr, ptr %500, i64 %502
  %504 = load ptr, ptr %503, align 8, !tbaa !9
  %505 = load i32, ptr %32, align 4, !tbaa !5
  %506 = sext i32 %505 to i64
  %507 = getelementptr inbounds i32, ptr %504, i64 %506
  store i32 0, ptr %507, align 4, !tbaa !5
  %508 = load ptr, ptr %36, align 8, !tbaa !9
  %509 = load i32, ptr %32, align 4, !tbaa !5
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds i32, ptr %508, i64 %510
  store i32 0, ptr %511, align 4, !tbaa !5
  br label %512

512:                                              ; preds = %475
  %513 = load i32, ptr %32, align 4, !tbaa !5
  %514 = add nsw i32 %513, 1
  store i32 %514, ptr %32, align 4, !tbaa !5
  br label %471, !llvm.loop !30

515:                                              ; preds = %471
  %516 = load ptr, ptr %30, align 8, !tbaa !9
  %517 = load i32, ptr %35, align 4, !tbaa !5
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds float, ptr %516, i64 %518
  store float 0.000000e+00, ptr %519, align 4, !tbaa !22
  br label %520

520:                                              ; preds = %515, %439
  %521 = load i32, ptr %35, align 4, !tbaa !5
  %522 = add nsw i32 %521, 1
  store i32 %522, ptr %35, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  br label %523

523:                                              ; preds = %520
  %524 = load i32, ptr %31, align 4, !tbaa !5
  %525 = add nsw i32 %524, 1
  store i32 %525, ptr %31, align 4, !tbaa !5
  br label %281, !llvm.loop !31

526:                                              ; preds = %281
  store i32 0, ptr %34, align 4, !tbaa !5
  br label %527

527:                                              ; preds = %957, %526
  %528 = load i32, ptr %34, align 4, !tbaa !5
  %529 = load ptr, ptr %13, align 8, !tbaa !9
  %530 = getelementptr inbounds %struct.vorbis_info_mapping0, ptr %529, i32 0, i32 4
  %531 = load i32, ptr %530, align 4, !tbaa !23
  %532 = icmp slt i32 %528, %531
  br i1 %532, label %533, label %960

533:                                              ; preds = %527
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #5
  %534 = load ptr, ptr %13, align 8, !tbaa !9
  %535 = getelementptr inbounds %struct.vorbis_info_mapping0, ptr %534, i32 0, i32 5
  %536 = load i32, ptr %34, align 4, !tbaa !5
  %537 = sext i32 %536 to i64
  %538 = getelementptr inbounds [256 x i32], ptr %535, i64 0, i64 %537
  %539 = load i32, ptr %538, align 4, !tbaa !5
  store i32 %539, ptr %37, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #5
  %540 = load ptr, ptr %13, align 8, !tbaa !9
  %541 = getelementptr inbounds %struct.vorbis_info_mapping0, ptr %540, i32 0, i32 6
  %542 = load i32, ptr %34, align 4, !tbaa !5
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds [256 x i32], ptr %541, i64 0, i64 %543
  %545 = load i32, ptr %544, align 4, !tbaa !5
  store i32 %545, ptr %38, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #5
  %546 = load ptr, ptr %15, align 8, !tbaa !9
  %547 = load i32, ptr %37, align 4, !tbaa !5
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds ptr, ptr %546, i64 %548
  %550 = load ptr, ptr %549, align 8, !tbaa !9
  %551 = load i32, ptr %19, align 4, !tbaa !5
  %552 = sext i32 %551 to i64
  %553 = getelementptr inbounds i32, ptr %550, i64 %552
  store ptr %553, ptr %39, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #5
  %554 = load ptr, ptr %15, align 8, !tbaa !9
  %555 = load i32, ptr %38, align 4, !tbaa !5
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds ptr, ptr %554, i64 %556
  %558 = load ptr, ptr %557, align 8, !tbaa !9
  %559 = load i32, ptr %19, align 4, !tbaa !5
  %560 = sext i32 %559 to i64
  %561 = getelementptr inbounds i32, ptr %558, i64 %560
  store ptr %561, ptr %40, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #5
  %562 = load ptr, ptr %25, align 8, !tbaa !9
  %563 = load i32, ptr %37, align 4, !tbaa !5
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds ptr, ptr %562, i64 %564
  %566 = load ptr, ptr %565, align 8, !tbaa !9
  store ptr %566, ptr %41, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #5
  %567 = load ptr, ptr %25, align 8, !tbaa !9
  %568 = load i32, ptr %38, align 4, !tbaa !5
  %569 = sext i32 %568 to i64
  %570 = getelementptr inbounds ptr, ptr %567, i64 %569
  %571 = load ptr, ptr %570, align 8, !tbaa !9
  store ptr %571, ptr %42, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #5
  %572 = load ptr, ptr %26, align 8, !tbaa !9
  %573 = load i32, ptr %37, align 4, !tbaa !5
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds ptr, ptr %572, i64 %574
  %576 = load ptr, ptr %575, align 8, !tbaa !9
  store ptr %576, ptr %43, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #5
  %577 = load ptr, ptr %26, align 8, !tbaa !9
  %578 = load i32, ptr %38, align 4, !tbaa !5
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds ptr, ptr %577, i64 %579
  %581 = load ptr, ptr %580, align 8, !tbaa !9
  store ptr %581, ptr %44, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #5
  %582 = load ptr, ptr %27, align 8, !tbaa !9
  %583 = load i32, ptr %37, align 4, !tbaa !5
  %584 = sext i32 %583 to i64
  %585 = getelementptr inbounds ptr, ptr %582, i64 %584
  %586 = load ptr, ptr %585, align 8, !tbaa !9
  store ptr %586, ptr %45, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #5
  %587 = load ptr, ptr %27, align 8, !tbaa !9
  %588 = load i32, ptr %38, align 4, !tbaa !5
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds ptr, ptr %587, i64 %589
  %591 = load ptr, ptr %590, align 8, !tbaa !9
  store ptr %591, ptr %46, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #5
  %592 = load ptr, ptr %28, align 8, !tbaa !9
  %593 = load i32, ptr %37, align 4, !tbaa !5
  %594 = sext i32 %593 to i64
  %595 = getelementptr inbounds ptr, ptr %592, i64 %594
  %596 = load ptr, ptr %595, align 8, !tbaa !9
  store ptr %596, ptr %47, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #5
  %597 = load ptr, ptr %28, align 8, !tbaa !9
  %598 = load i32, ptr %38, align 4, !tbaa !5
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds ptr, ptr %597, i64 %599
  %601 = load ptr, ptr %600, align 8, !tbaa !9
  store ptr %601, ptr %48, align 8, !tbaa !9
  %602 = load ptr, ptr %29, align 8, !tbaa !9
  %603 = load i32, ptr %37, align 4, !tbaa !5
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds i32, ptr %602, i64 %604
  %606 = load i32, ptr %605, align 4, !tbaa !5
  %607 = icmp ne i32 %606, 0
  br i1 %607, label %615, label %608

608:                                              ; preds = %533
  %609 = load ptr, ptr %29, align 8, !tbaa !9
  %610 = load i32, ptr %38, align 4, !tbaa !5
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds i32, ptr %609, i64 %611
  %613 = load i32, ptr %612, align 4, !tbaa !5
  %614 = icmp ne i32 %613, 0
  br i1 %614, label %615, label %956

615:                                              ; preds = %608, %533
  %616 = load ptr, ptr %29, align 8, !tbaa !9
  %617 = load i32, ptr %38, align 4, !tbaa !5
  %618 = sext i32 %617 to i64
  %619 = getelementptr inbounds i32, ptr %616, i64 %618
  store i32 1, ptr %619, align 4, !tbaa !5
  %620 = load ptr, ptr %29, align 8, !tbaa !9
  %621 = load i32, ptr %37, align 4, !tbaa !5
  %622 = sext i32 %621 to i64
  %623 = getelementptr inbounds i32, ptr %620, i64 %622
  store i32 1, ptr %623, align 4, !tbaa !5
  store i32 0, ptr %32, align 4, !tbaa !5
  br label %624

624:                                              ; preds = %915, %615
  %625 = load i32, ptr %32, align 4, !tbaa !5
  %626 = load i32, ptr %33, align 4, !tbaa !5
  %627 = icmp slt i32 %625, %626
  br i1 %627, label %628, label %918

628:                                              ; preds = %624
  %629 = load i32, ptr %32, align 4, !tbaa !5
  %630 = load i32, ptr %17, align 4, !tbaa !5
  %631 = load i32, ptr %19, align 4, !tbaa !5
  %632 = sub nsw i32 %630, %631
  %633 = icmp slt i32 %629, %632
  br i1 %633, label %634, label %895

634:                                              ; preds = %628
  %635 = load ptr, ptr %47, align 8, !tbaa !9
  %636 = load i32, ptr %32, align 4, !tbaa !5
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds i32, ptr %635, i64 %637
  %639 = load i32, ptr %638, align 4, !tbaa !5
  %640 = icmp ne i32 %639, 0
  br i1 %640, label %648, label %641

641:                                              ; preds = %634
  %642 = load ptr, ptr %48, align 8, !tbaa !9
  %643 = load i32, ptr %32, align 4, !tbaa !5
  %644 = sext i32 %643 to i64
  %645 = getelementptr inbounds i32, ptr %642, i64 %644
  %646 = load i32, ptr %645, align 4, !tbaa !5
  %647 = icmp ne i32 %646, 0
  br i1 %647, label %648, label %782

648:                                              ; preds = %641, %634
  %649 = load ptr, ptr %41, align 8, !tbaa !9
  %650 = load i32, ptr %32, align 4, !tbaa !5
  %651 = sext i32 %650 to i64
  %652 = getelementptr inbounds float, ptr %649, i64 %651
  %653 = load float, ptr %652, align 4, !tbaa !22
  %654 = fpext float %653 to double
  %655 = call double @llvm.fabs.f64(double %654)
  %656 = load ptr, ptr %42, align 8, !tbaa !9
  %657 = load i32, ptr %32, align 4, !tbaa !5
  %658 = sext i32 %657 to i64
  %659 = getelementptr inbounds float, ptr %656, i64 %658
  %660 = load float, ptr %659, align 4, !tbaa !22
  %661 = fpext float %660 to double
  %662 = call double @llvm.fabs.f64(double %661)
  %663 = fadd double %655, %662
  %664 = fptrunc double %663 to float
  %665 = load ptr, ptr %41, align 8, !tbaa !9
  %666 = load i32, ptr %32, align 4, !tbaa !5
  %667 = sext i32 %666 to i64
  %668 = getelementptr inbounds float, ptr %665, i64 %667
  store float %664, ptr %668, align 4, !tbaa !22
  %669 = load ptr, ptr %43, align 8, !tbaa !9
  %670 = load i32, ptr %32, align 4, !tbaa !5
  %671 = sext i32 %670 to i64
  %672 = getelementptr inbounds float, ptr %669, i64 %671
  %673 = load float, ptr %672, align 4, !tbaa !22
  %674 = load ptr, ptr %44, align 8, !tbaa !9
  %675 = load i32, ptr %32, align 4, !tbaa !5
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds float, ptr %674, i64 %676
  %678 = load float, ptr %677, align 4, !tbaa !22
  %679 = fadd float %673, %678
  %680 = load ptr, ptr %43, align 8, !tbaa !9
  %681 = load i32, ptr %32, align 4, !tbaa !5
  %682 = sext i32 %681 to i64
  %683 = getelementptr inbounds float, ptr %680, i64 %682
  store float %679, ptr %683, align 4, !tbaa !22
  %684 = load ptr, ptr %48, align 8, !tbaa !9
  %685 = load i32, ptr %32, align 4, !tbaa !5
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds i32, ptr %684, i64 %686
  store i32 1, ptr %687, align 4, !tbaa !5
  %688 = load ptr, ptr %47, align 8, !tbaa !9
  %689 = load i32, ptr %32, align 4, !tbaa !5
  %690 = sext i32 %689 to i64
  %691 = getelementptr inbounds i32, ptr %688, i64 %690
  store i32 1, ptr %691, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #5
  %692 = load ptr, ptr %39, align 8, !tbaa !9
  %693 = load i32, ptr %32, align 4, !tbaa !5
  %694 = sext i32 %693 to i64
  %695 = getelementptr inbounds i32, ptr %692, i64 %694
  %696 = load i32, ptr %695, align 4, !tbaa !5
  store i32 %696, ptr %49, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #5
  %697 = load ptr, ptr %40, align 8, !tbaa !9
  %698 = load i32, ptr %32, align 4, !tbaa !5
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds i32, ptr %697, i64 %699
  %701 = load i32, ptr %700, align 4, !tbaa !5
  store i32 %701, ptr %50, align 4, !tbaa !5
  %702 = load i32, ptr %49, align 4, !tbaa !5
  %703 = call i32 @llvm.abs.i32(i32 %702, i1 true)
  %704 = load i32, ptr %50, align 4, !tbaa !5
  %705 = call i32 @llvm.abs.i32(i32 %704, i1 true)
  %706 = icmp sgt i32 %703, %705
  br i1 %706, label %707, label %724

707:                                              ; preds = %648
  %708 = load i32, ptr %49, align 4, !tbaa !5
  %709 = icmp sgt i32 %708, 0
  br i1 %709, label %710, label %714

710:                                              ; preds = %707
  %711 = load i32, ptr %49, align 4, !tbaa !5
  %712 = load i32, ptr %50, align 4, !tbaa !5
  %713 = sub nsw i32 %711, %712
  br label %718

714:                                              ; preds = %707
  %715 = load i32, ptr %50, align 4, !tbaa !5
  %716 = load i32, ptr %49, align 4, !tbaa !5
  %717 = sub nsw i32 %715, %716
  br label %718

718:                                              ; preds = %714, %710
  %719 = phi i32 [ %713, %710 ], [ %717, %714 ]
  %720 = load ptr, ptr %40, align 8, !tbaa !9
  %721 = load i32, ptr %32, align 4, !tbaa !5
  %722 = sext i32 %721 to i64
  %723 = getelementptr inbounds i32, ptr %720, i64 %722
  store i32 %719, ptr %723, align 4, !tbaa !5
  br label %746

724:                                              ; preds = %648
  %725 = load i32, ptr %50, align 4, !tbaa !5
  %726 = icmp sgt i32 %725, 0
  br i1 %726, label %727, label %731

727:                                              ; preds = %724
  %728 = load i32, ptr %49, align 4, !tbaa !5
  %729 = load i32, ptr %50, align 4, !tbaa !5
  %730 = sub nsw i32 %728, %729
  br label %735

731:                                              ; preds = %724
  %732 = load i32, ptr %50, align 4, !tbaa !5
  %733 = load i32, ptr %49, align 4, !tbaa !5
  %734 = sub nsw i32 %732, %733
  br label %735

735:                                              ; preds = %731, %727
  %736 = phi i32 [ %730, %727 ], [ %734, %731 ]
  %737 = load ptr, ptr %40, align 8, !tbaa !9
  %738 = load i32, ptr %32, align 4, !tbaa !5
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds i32, ptr %737, i64 %739
  store i32 %736, ptr %740, align 4, !tbaa !5
  %741 = load i32, ptr %50, align 4, !tbaa !5
  %742 = load ptr, ptr %39, align 8, !tbaa !9
  %743 = load i32, ptr %32, align 4, !tbaa !5
  %744 = sext i32 %743 to i64
  %745 = getelementptr inbounds i32, ptr %742, i64 %744
  store i32 %741, ptr %745, align 4, !tbaa !5
  br label %746

746:                                              ; preds = %735, %718
  %747 = load ptr, ptr %40, align 8, !tbaa !9
  %748 = load i32, ptr %32, align 4, !tbaa !5
  %749 = sext i32 %748 to i64
  %750 = getelementptr inbounds i32, ptr %747, i64 %749
  %751 = load i32, ptr %750, align 4, !tbaa !5
  %752 = load ptr, ptr %39, align 8, !tbaa !9
  %753 = load i32, ptr %32, align 4, !tbaa !5
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds i32, ptr %752, i64 %754
  %756 = load i32, ptr %755, align 4, !tbaa !5
  %757 = call i32 @llvm.abs.i32(i32 %756, i1 true)
  %758 = mul nsw i32 %757, 2
  %759 = icmp sge i32 %751, %758
  br i1 %759, label %760, label %781

760:                                              ; preds = %746
  %761 = load ptr, ptr %40, align 8, !tbaa !9
  %762 = load i32, ptr %32, align 4, !tbaa !5
  %763 = sext i32 %762 to i64
  %764 = getelementptr inbounds i32, ptr %761, i64 %763
  %765 = load i32, ptr %764, align 4, !tbaa !5
  %766 = sub nsw i32 0, %765
  %767 = load ptr, ptr %40, align 8, !tbaa !9
  %768 = load i32, ptr %32, align 4, !tbaa !5
  %769 = sext i32 %768 to i64
  %770 = getelementptr inbounds i32, ptr %767, i64 %769
  store i32 %766, ptr %770, align 4, !tbaa !5
  %771 = load ptr, ptr %39, align 8, !tbaa !9
  %772 = load i32, ptr %32, align 4, !tbaa !5
  %773 = sext i32 %772 to i64
  %774 = getelementptr inbounds i32, ptr %771, i64 %773
  %775 = load i32, ptr %774, align 4, !tbaa !5
  %776 = sub nsw i32 0, %775
  %777 = load ptr, ptr %39, align 8, !tbaa !9
  %778 = load i32, ptr %32, align 4, !tbaa !5
  %779 = sext i32 %778 to i64
  %780 = getelementptr inbounds i32, ptr %777, i64 %779
  store i32 %776, ptr %780, align 4, !tbaa !5
  br label %781

781:                                              ; preds = %760, %746
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  br label %894

782:                                              ; preds = %641
  %783 = load i32, ptr %32, align 4, !tbaa !5
  %784 = load i32, ptr %22, align 4, !tbaa !5
  %785 = load i32, ptr %19, align 4, !tbaa !5
  %786 = sub nsw i32 %784, %785
  %787 = icmp slt i32 %783, %786
  br i1 %787, label %788, label %812

788:                                              ; preds = %782
  %789 = load ptr, ptr %42, align 8, !tbaa !9
  %790 = load i32, ptr %32, align 4, !tbaa !5
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds float, ptr %789, i64 %791
  %793 = load float, ptr %792, align 4, !tbaa !22
  %794 = load ptr, ptr %41, align 8, !tbaa !9
  %795 = load i32, ptr %32, align 4, !tbaa !5
  %796 = sext i32 %795 to i64
  %797 = getelementptr inbounds float, ptr %794, i64 %796
  %798 = load float, ptr %797, align 4, !tbaa !22
  %799 = fadd float %798, %793
  store float %799, ptr %797, align 4, !tbaa !22
  %800 = load ptr, ptr %41, align 8, !tbaa !9
  %801 = load i32, ptr %32, align 4, !tbaa !5
  %802 = sext i32 %801 to i64
  %803 = getelementptr inbounds float, ptr %800, i64 %802
  %804 = load float, ptr %803, align 4, !tbaa !22
  %805 = fpext float %804 to double
  %806 = call double @llvm.fabs.f64(double %805)
  %807 = fptrunc double %806 to float
  %808 = load ptr, ptr %43, align 8, !tbaa !9
  %809 = load i32, ptr %32, align 4, !tbaa !5
  %810 = sext i32 %809 to i64
  %811 = getelementptr inbounds float, ptr %808, i64 %810
  store float %807, ptr %811, align 4, !tbaa !22
  br label %877

812:                                              ; preds = %782
  %813 = load ptr, ptr %41, align 8, !tbaa !9
  %814 = load i32, ptr %32, align 4, !tbaa !5
  %815 = sext i32 %814 to i64
  %816 = getelementptr inbounds float, ptr %813, i64 %815
  %817 = load float, ptr %816, align 4, !tbaa !22
  %818 = load ptr, ptr %42, align 8, !tbaa !9
  %819 = load i32, ptr %32, align 4, !tbaa !5
  %820 = sext i32 %819 to i64
  %821 = getelementptr inbounds float, ptr %818, i64 %820
  %822 = load float, ptr %821, align 4, !tbaa !22
  %823 = fadd float %817, %822
  %824 = fcmp olt float %823, 0.000000e+00
  br i1 %824, label %825, label %851

825:                                              ; preds = %812
  %826 = load ptr, ptr %41, align 8, !tbaa !9
  %827 = load i32, ptr %32, align 4, !tbaa !5
  %828 = sext i32 %827 to i64
  %829 = getelementptr inbounds float, ptr %826, i64 %828
  %830 = load float, ptr %829, align 4, !tbaa !22
  %831 = fpext float %830 to double
  %832 = call double @llvm.fabs.f64(double %831)
  %833 = load ptr, ptr %42, align 8, !tbaa !9
  %834 = load i32, ptr %32, align 4, !tbaa !5
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds float, ptr %833, i64 %835
  %837 = load float, ptr %836, align 4, !tbaa !22
  %838 = fpext float %837 to double
  %839 = call double @llvm.fabs.f64(double %838)
  %840 = fadd double %832, %839
  %841 = fptrunc double %840 to float
  %842 = load ptr, ptr %43, align 8, !tbaa !9
  %843 = load i32, ptr %32, align 4, !tbaa !5
  %844 = sext i32 %843 to i64
  %845 = getelementptr inbounds float, ptr %842, i64 %844
  store float %841, ptr %845, align 4, !tbaa !22
  %846 = fneg float %841
  %847 = load ptr, ptr %41, align 8, !tbaa !9
  %848 = load i32, ptr %32, align 4, !tbaa !5
  %849 = sext i32 %848 to i64
  %850 = getelementptr inbounds float, ptr %847, i64 %849
  store float %846, ptr %850, align 4, !tbaa !22
  br label %876

851:                                              ; preds = %812
  %852 = load ptr, ptr %41, align 8, !tbaa !9
  %853 = load i32, ptr %32, align 4, !tbaa !5
  %854 = sext i32 %853 to i64
  %855 = getelementptr inbounds float, ptr %852, i64 %854
  %856 = load float, ptr %855, align 4, !tbaa !22
  %857 = fpext float %856 to double
  %858 = call double @llvm.fabs.f64(double %857)
  %859 = load ptr, ptr %42, align 8, !tbaa !9
  %860 = load i32, ptr %32, align 4, !tbaa !5
  %861 = sext i32 %860 to i64
  %862 = getelementptr inbounds float, ptr %859, i64 %861
  %863 = load float, ptr %862, align 4, !tbaa !22
  %864 = fpext float %863 to double
  %865 = call double @llvm.fabs.f64(double %864)
  %866 = fadd double %858, %865
  %867 = fptrunc double %866 to float
  %868 = load ptr, ptr %43, align 8, !tbaa !9
  %869 = load i32, ptr %32, align 4, !tbaa !5
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds float, ptr %868, i64 %870
  store float %867, ptr %871, align 4, !tbaa !22
  %872 = load ptr, ptr %41, align 8, !tbaa !9
  %873 = load i32, ptr %32, align 4, !tbaa !5
  %874 = sext i32 %873 to i64
  %875 = getelementptr inbounds float, ptr %872, i64 %874
  store float %867, ptr %875, align 4, !tbaa !22
  br label %876

876:                                              ; preds = %851, %825
  br label %877

877:                                              ; preds = %876, %788
  %878 = load ptr, ptr %44, align 8, !tbaa !9
  %879 = load i32, ptr %32, align 4, !tbaa !5
  %880 = sext i32 %879 to i64
  %881 = getelementptr inbounds float, ptr %878, i64 %880
  store float 0.000000e+00, ptr %881, align 4, !tbaa !22
  %882 = load ptr, ptr %42, align 8, !tbaa !9
  %883 = load i32, ptr %32, align 4, !tbaa !5
  %884 = sext i32 %883 to i64
  %885 = getelementptr inbounds float, ptr %882, i64 %884
  store float 0.000000e+00, ptr %885, align 4, !tbaa !22
  %886 = load ptr, ptr %48, align 8, !tbaa !9
  %887 = load i32, ptr %32, align 4, !tbaa !5
  %888 = sext i32 %887 to i64
  %889 = getelementptr inbounds i32, ptr %886, i64 %888
  store i32 1, ptr %889, align 4, !tbaa !5
  %890 = load ptr, ptr %40, align 8, !tbaa !9
  %891 = load i32, ptr %32, align 4, !tbaa !5
  %892 = sext i32 %891 to i64
  %893 = getelementptr inbounds i32, ptr %890, i64 %892
  store i32 0, ptr %893, align 4, !tbaa !5
  br label %894

894:                                              ; preds = %877, %781
  br label %895

895:                                              ; preds = %894, %628
  %896 = load ptr, ptr %45, align 8, !tbaa !9
  %897 = load i32, ptr %32, align 4, !tbaa !5
  %898 = sext i32 %897 to i64
  %899 = getelementptr inbounds float, ptr %896, i64 %898
  %900 = load float, ptr %899, align 4, !tbaa !22
  %901 = load ptr, ptr %46, align 8, !tbaa !9
  %902 = load i32, ptr %32, align 4, !tbaa !5
  %903 = sext i32 %902 to i64
  %904 = getelementptr inbounds float, ptr %901, i64 %903
  %905 = load float, ptr %904, align 4, !tbaa !22
  %906 = fadd float %900, %905
  %907 = load ptr, ptr %46, align 8, !tbaa !9
  %908 = load i32, ptr %32, align 4, !tbaa !5
  %909 = sext i32 %908 to i64
  %910 = getelementptr inbounds float, ptr %907, i64 %909
  store float %906, ptr %910, align 4, !tbaa !22
  %911 = load ptr, ptr %45, align 8, !tbaa !9
  %912 = load i32, ptr %32, align 4, !tbaa !5
  %913 = sext i32 %912 to i64
  %914 = getelementptr inbounds float, ptr %911, i64 %913
  store float %906, ptr %914, align 4, !tbaa !22
  br label %915

915:                                              ; preds = %895
  %916 = load i32, ptr %32, align 4, !tbaa !5
  %917 = add nsw i32 %916, 1
  store i32 %917, ptr %32, align 4, !tbaa !5
  br label %624, !llvm.loop !32

918:                                              ; preds = %624
  %919 = load ptr, ptr %12, align 8, !tbaa !9
  %920 = load i32, ptr %22, align 4, !tbaa !5
  %921 = load ptr, ptr %25, align 8, !tbaa !9
  %922 = load i32, ptr %37, align 4, !tbaa !5
  %923 = sext i32 %922 to i64
  %924 = getelementptr inbounds ptr, ptr %921, i64 %923
  %925 = load ptr, ptr %924, align 8, !tbaa !9
  %926 = load ptr, ptr %26, align 8, !tbaa !9
  %927 = load i32, ptr %37, align 4, !tbaa !5
  %928 = sext i32 %927 to i64
  %929 = getelementptr inbounds ptr, ptr %926, i64 %928
  %930 = load ptr, ptr %929, align 8, !tbaa !9
  %931 = load ptr, ptr %27, align 8, !tbaa !9
  %932 = load i32, ptr %37, align 4, !tbaa !5
  %933 = sext i32 %932 to i64
  %934 = getelementptr inbounds ptr, ptr %931, i64 %933
  %935 = load ptr, ptr %934, align 8, !tbaa !9
  %936 = load ptr, ptr %28, align 8, !tbaa !9
  %937 = load i32, ptr %37, align 4, !tbaa !5
  %938 = sext i32 %937 to i64
  %939 = getelementptr inbounds ptr, ptr %936, i64 %938
  %940 = load ptr, ptr %939, align 8, !tbaa !9
  %941 = load ptr, ptr %30, align 8, !tbaa !9
  %942 = load i32, ptr %35, align 4, !tbaa !5
  %943 = sext i32 %942 to i64
  %944 = getelementptr inbounds float, ptr %941, i64 %943
  %945 = load float, ptr %944, align 4, !tbaa !22
  %946 = load i32, ptr %19, align 4, !tbaa !5
  %947 = load i32, ptr %33, align 4, !tbaa !5
  %948 = load ptr, ptr %39, align 8, !tbaa !9
  %949 = call float @noise_normalize(ptr noundef %919, i32 noundef %920, ptr noundef %925, ptr noundef %930, ptr noundef %935, ptr noundef %940, float noundef %945, i32 noundef %946, i32 noundef %947, ptr noundef %948)
  %950 = load ptr, ptr %30, align 8, !tbaa !9
  %951 = load i32, ptr %35, align 4, !tbaa !5
  %952 = sext i32 %951 to i64
  %953 = getelementptr inbounds float, ptr %950, i64 %952
  store float %949, ptr %953, align 4, !tbaa !22
  %954 = load i32, ptr %35, align 4, !tbaa !5
  %955 = add nsw i32 %954, 1
  store i32 %955, ptr %35, align 4, !tbaa !5
  br label %956

956:                                              ; preds = %918, %608
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  br label %957

957:                                              ; preds = %956
  %958 = load i32, ptr %34, align 4, !tbaa !5
  %959 = add nsw i32 %958, 1
  store i32 %959, ptr %34, align 4, !tbaa !5
  br label %527, !llvm.loop !33

960:                                              ; preds = %527
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  br label %961

961:                                              ; preds = %960
  %962 = load i32, ptr %21, align 4, !tbaa !5
  %963 = load i32, ptr %19, align 4, !tbaa !5
  %964 = add nsw i32 %963, %962
  store i32 %964, ptr %19, align 4, !tbaa !5
  br label %250, !llvm.loop !34

965:                                              ; preds = %250
  store i32 0, ptr %19, align 4, !tbaa !5
  br label %966

966:                                              ; preds = %1016, %965
  %967 = load i32, ptr %19, align 4, !tbaa !5
  %968 = load ptr, ptr %13, align 8, !tbaa !9
  %969 = getelementptr inbounds %struct.vorbis_info_mapping0, ptr %968, i32 0, i32 4
  %970 = load i32, ptr %969, align 4, !tbaa !23
  %971 = icmp slt i32 %967, %970
  br i1 %971, label %972, label %1019

972:                                              ; preds = %966
  %973 = load ptr, ptr %16, align 8, !tbaa !9
  %974 = load ptr, ptr %13, align 8, !tbaa !9
  %975 = getelementptr inbounds %struct.vorbis_info_mapping0, ptr %974, i32 0, i32 5
  %976 = load i32, ptr %19, align 4, !tbaa !5
  %977 = sext i32 %976 to i64
  %978 = getelementptr inbounds [256 x i32], ptr %975, i64 0, i64 %977
  %979 = load i32, ptr %978, align 4, !tbaa !5
  %980 = sext i32 %979 to i64
  %981 = getelementptr inbounds i32, ptr %973, i64 %980
  %982 = load i32, ptr %981, align 4, !tbaa !5
  %983 = icmp ne i32 %982, 0
  br i1 %983, label %996, label %984

984:                                              ; preds = %972
  %985 = load ptr, ptr %16, align 8, !tbaa !9
  %986 = load ptr, ptr %13, align 8, !tbaa !9
  %987 = getelementptr inbounds %struct.vorbis_info_mapping0, ptr %986, i32 0, i32 6
  %988 = load i32, ptr %19, align 4, !tbaa !5
  %989 = sext i32 %988 to i64
  %990 = getelementptr inbounds [256 x i32], ptr %987, i64 0, i64 %989
  %991 = load i32, ptr %990, align 4, !tbaa !5
  %992 = sext i32 %991 to i64
  %993 = getelementptr inbounds i32, ptr %985, i64 %992
  %994 = load i32, ptr %993, align 4, !tbaa !5
  %995 = icmp ne i32 %994, 0
  br i1 %995, label %996, label %1015

996:                                              ; preds = %984, %972
  %997 = load ptr, ptr %16, align 8, !tbaa !9
  %998 = load ptr, ptr %13, align 8, !tbaa !9
  %999 = getelementptr inbounds %struct.vorbis_info_mapping0, ptr %998, i32 0, i32 5
  %1000 = load i32, ptr %19, align 4, !tbaa !5
  %1001 = sext i32 %1000 to i64
  %1002 = getelementptr inbounds [256 x i32], ptr %999, i64 0, i64 %1001
  %1003 = load i32, ptr %1002, align 4, !tbaa !5
  %1004 = sext i32 %1003 to i64
  %1005 = getelementptr inbounds i32, ptr %997, i64 %1004
  store i32 1, ptr %1005, align 4, !tbaa !5
  %1006 = load ptr, ptr %16, align 8, !tbaa !9
  %1007 = load ptr, ptr %13, align 8, !tbaa !9
  %1008 = getelementptr inbounds %struct.vorbis_info_mapping0, ptr %1007, i32 0, i32 6
  %1009 = load i32, ptr %19, align 4, !tbaa !5
  %1010 = sext i32 %1009 to i64
  %1011 = getelementptr inbounds [256 x i32], ptr %1008, i64 0, i64 %1010
  %1012 = load i32, ptr %1011, align 4, !tbaa !5
  %1013 = sext i32 %1012 to i64
  %1014 = getelementptr inbounds i32, ptr %1006, i64 %1013
  store i32 1, ptr %1014, align 4, !tbaa !5
  br label %1015

1015:                                             ; preds = %996, %984
  br label %1016

1016:                                             ; preds = %1015
  %1017 = load i32, ptr %19, align 4, !tbaa !5
  %1018 = add nsw i32 %1017, 1
  store i32 %1018, ptr %19, align 4, !tbaa !5
  br label %966, !llvm.loop !35

1019:                                             ; preds = %966
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  ret void
}

; Function Attrs: nounwind uwtable
declare hidden void @flag_lossless(i32 noundef, float noundef, float noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #3

; Function Attrs: nounwind uwtable
declare hidden float @noise_normalize(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, float noundef, i32 noundef, i32 noundef, ptr noundef) #3

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.abs.i32(i32, i1 immarg) #4

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !6, i64 0}
!12 = !{!"", !6, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !13, i64 56, !13, i64 64, !6, i64 72, !6, i64 76, !13, i64 80, !14, i64 88}
!13 = !{!"long", !7, i64 0}
!14 = !{!"float", !7, i64 0}
!15 = !{!12, !10, i64 8}
!16 = !{!17, !6, i64 500}
!17 = !{!"vorbis_info_psy", !6, i64 0, !14, i64 4, !14, i64 8, !7, i64 12, !14, i64 24, !14, i64 28, !14, i64 32, !7, i64 36, !6, i64 104, !14, i64 108, !14, i64 112, !14, i64 116, !6, i64 120, !6, i64 124, !6, i64 128, !7, i64 132, !7, i64 336, !14, i64 496, !6, i64 500, !6, i64 504, !6, i64 508, !18, i64 512}
!18 = !{!"double", !7, i64 0}
!19 = !{!17, !6, i64 508}
!20 = !{!17, !6, i64 0}
!21 = !{!18, !18, i64 0}
!22 = !{!14, !14, i64 0}
!23 = !{!24, !6, i64 1156}
!24 = !{!"vorbis_info_mapping0", !6, i64 0, !7, i64 4, !7, i64 1028, !7, i64 1092, !6, i64 1156, !7, i64 1160, !7, i64 2184}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = distinct !{!27, !26}
!28 = distinct !{!28, !26}
!29 = distinct !{!29, !26}
!30 = distinct !{!30, !26}
!31 = distinct !{!31, !26}
!32 = distinct !{!32, !26}
!33 = distinct !{!33, !26}
!34 = distinct !{!34, !26}
!35 = distinct !{!35, !26}


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

@stereo_threshholds = external hidden local_unnamed_addr constant [9 x double], align 16
@stereo_threshholds_limited = external hidden local_unnamed_addr constant [9 x double], align 16
@_FLOOR1_fromdB_LOOKUP = external hidden local_unnamed_addr global [256 x float], align 16

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1

; Function Attrs: nounwind uwtable
define dso_local void @_vp_couple_quantize_normalize(i32 noundef %0, ptr nocapture noundef readonly %1, ptr noundef %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %4, ptr nocapture noundef readonly %5, ptr nocapture noundef %6, i32 noundef %7, i32 noundef %8) local_unnamed_addr #2 {
  %10 = load i32, ptr %2, align 8, !tbaa !5
  %11 = getelementptr inbounds i8, ptr %2, i64 8
  %12 = load ptr, ptr %11, align 8, !tbaa !13
  %13 = getelementptr inbounds i8, ptr %12, i64 500
  %14 = load i32, ptr %13, align 4, !tbaa !14
  %.not = icmp eq i32 %14, 0
  br i1 %.not, label %18, label %15

15:                                               ; preds = %9
  %16 = getelementptr inbounds i8, ptr %12, i64 508
  %17 = load i32, ptr %16, align 4, !tbaa !17
  br label %18

18:                                               ; preds = %9, %15
  %19 = phi i32 [ %17, %15 ], [ 16, %9 ]
  %20 = getelementptr inbounds i8, ptr %1, i64 132
  %21 = load i32, ptr %12, align 8, !tbaa !18
  %22 = sext i32 %21 to i64
  %23 = sext i32 %0 to i64
  %24 = getelementptr inbounds [2 x [15 x i32]], ptr %20, i64 0, i64 %22, i64 %23
  %25 = load i32, ptr %24, align 4, !tbaa !19
  %26 = getelementptr inbounds i8, ptr %1, i64 252
  %27 = getelementptr inbounds [15 x i32], ptr %26, i64 0, i64 %23
  %28 = load i32, ptr %27, align 4, !tbaa !19
  %29 = sext i32 %28 to i64
  %30 = getelementptr inbounds [9 x double], ptr @stereo_threshholds, i64 0, i64 %29
  %31 = load double, ptr %30, align 8, !tbaa !20
  %32 = fptrunc double %31 to float
  %33 = getelementptr inbounds i8, ptr %1, i64 312
  %34 = getelementptr inbounds [15 x i32], ptr %33, i64 0, i64 %23
  %35 = load i32, ptr %34, align 4, !tbaa !19
  %36 = sext i32 %35 to i64
  %37 = sext i32 %8 to i64
  %38 = shl nsw i64 %37, 3
  %39 = alloca i8, i64 %38, align 16
  %40 = alloca i8, i64 %38, align 16
  %41 = alloca i8, i64 %38, align 16
  %42 = alloca i8, i64 %38, align 16
  %43 = shl nsw i64 %37, 2
  %44 = alloca i8, i64 %43, align 16
  %45 = getelementptr inbounds i8, ptr %3, i64 1156
  %46 = load i32, ptr %45, align 4, !tbaa !21
  %47 = add i32 %46, %8
  %48 = sext i32 %47 to i64
  %49 = shl nsw i64 %48, 2
  %50 = alloca i8, i64 %49, align 16
  %51 = icmp sgt i32 %10, 1000
  %spec.select = select i1 %51, ptr @stereo_threshholds_limited, ptr @stereo_threshholds
  %.0347.in.in = getelementptr inbounds [9 x double], ptr %spec.select, i64 0, i64 %36
  %.0347.in = load double, ptr %.0347.in.in, align 8, !tbaa !20
  %.0347 = fptrunc double %.0347.in to float
  %52 = mul nsw i32 %19, %8
  %53 = sext i32 %52 to i64
  %54 = shl nsw i64 %53, 2
  %55 = alloca i8, i64 %54, align 16
  store ptr %55, ptr %39, align 16, !tbaa !23
  %56 = alloca i8, i64 %54, align 16
  store ptr %56, ptr %40, align 16, !tbaa !23
  %57 = alloca i8, i64 %54, align 16
  store ptr %57, ptr %41, align 16, !tbaa !23
  %58 = alloca i8, i64 %54, align 16
  store ptr %58, ptr %42, align 16, !tbaa !23
  %59 = icmp sgt i32 %8, 1
  br i1 %59, label %.lr.ph.preheader, label %.preheader378

.lr.ph.preheader:                                 ; preds = %18
  %60 = sext i32 %19 to i64
  %wide.trip.count = zext nneg i32 %8 to i64
  %61 = add nsw i64 %wide.trip.count, -1
  %min.iters.check = icmp ult i32 %8, 5
  br i1 %min.iters.check, label %.lr.ph.preheader515, label %vector.ph

.lr.ph.preheader515:                              ; preds = %middle.block, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ 1, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %61, -4
  %ind.end = or disjoint i64 %n.vec, 1
  %broadcast.splatinsert = insertelement <2 x i64> poison, i64 %60, i64 0
  %broadcast.splat = shufflevector <2 x i64> %broadcast.splatinsert, <2 x i64> poison, <2 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.ind = phi <2 x i64> [ <i64 1, i64 2>, %vector.ph ], [ %vec.ind.next, %vector.body ]
  %step.add = add <2 x i64> %vec.ind, <i64 2, i64 2>
  %offset.idx = or disjoint i64 %index, 1
  %62 = mul nsw <2 x i64> %vec.ind, %broadcast.splat
  %63 = mul nsw <2 x i64> %step.add, %broadcast.splat
  %64 = getelementptr inbounds float, ptr %55, <2 x i64> %62
  %65 = getelementptr inbounds float, ptr %55, <2 x i64> %63
  %66 = getelementptr inbounds ptr, ptr %39, i64 %offset.idx
  %67 = getelementptr inbounds i8, ptr %66, i64 16
  store <2 x ptr> %64, ptr %66, align 8, !tbaa !23
  store <2 x ptr> %65, ptr %67, align 8, !tbaa !23
  %68 = getelementptr inbounds float, ptr %56, <2 x i64> %62
  %69 = getelementptr inbounds float, ptr %56, <2 x i64> %63
  %70 = getelementptr inbounds ptr, ptr %40, i64 %offset.idx
  %71 = getelementptr inbounds i8, ptr %70, i64 16
  store <2 x ptr> %68, ptr %70, align 8, !tbaa !23
  store <2 x ptr> %69, ptr %71, align 8, !tbaa !23
  %72 = getelementptr inbounds float, ptr %57, <2 x i64> %62
  %73 = getelementptr inbounds float, ptr %57, <2 x i64> %63
  %74 = getelementptr inbounds ptr, ptr %41, i64 %offset.idx
  %75 = getelementptr inbounds i8, ptr %74, i64 16
  store <2 x ptr> %72, ptr %74, align 8, !tbaa !23
  store <2 x ptr> %73, ptr %75, align 8, !tbaa !23
  %76 = getelementptr inbounds i32, ptr %58, <2 x i64> %62
  %77 = getelementptr inbounds i32, ptr %58, <2 x i64> %63
  %78 = getelementptr inbounds ptr, ptr %42, i64 %offset.idx
  %79 = getelementptr inbounds i8, ptr %78, i64 16
  store <2 x ptr> %76, ptr %78, align 8, !tbaa !23
  store <2 x ptr> %77, ptr %79, align 8, !tbaa !23
  %index.next = add nuw i64 %index, 4
  %vec.ind.next = add <2 x i64> %vec.ind, <i64 4, i64 4>
  %80 = icmp eq i64 %index.next, %n.vec
  br i1 %80, label %middle.block, label %vector.body, !llvm.loop !24

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %61, %n.vec
  br i1 %cmp.n, label %.preheader378, label %.lr.ph.preheader515

.preheader378:                                    ; preds = %.lr.ph, %middle.block, %18
  %81 = icmp sgt i32 %47, 0
  br i1 %81, label %.lr.ph381.preheader, label %.preheader377

.lr.ph381.preheader:                              ; preds = %.preheader378
  %82 = add nsw i32 %47, -1
  %83 = zext nneg i32 %82 to i64
  %84 = shl nuw nsw i64 %83, 2
  %85 = add nuw nsw i64 %84, 4
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1) %50, i8 0, i64 %85, i1 false), !tbaa !28
  br label %.preheader377

.lr.ph:                                           ; preds = %.lr.ph.preheader515, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %indvars.iv.ph, %.lr.ph.preheader515 ]
  %86 = mul nsw i64 %indvars.iv, %60
  %87 = getelementptr inbounds float, ptr %55, i64 %86
  %88 = getelementptr inbounds ptr, ptr %39, i64 %indvars.iv
  store ptr %87, ptr %88, align 8, !tbaa !23
  %89 = getelementptr inbounds float, ptr %56, i64 %86
  %90 = getelementptr inbounds ptr, ptr %40, i64 %indvars.iv
  store ptr %89, ptr %90, align 8, !tbaa !23
  %91 = getelementptr inbounds float, ptr %57, i64 %86
  %92 = getelementptr inbounds ptr, ptr %41, i64 %indvars.iv
  store ptr %91, ptr %92, align 8, !tbaa !23
  %93 = getelementptr inbounds i32, ptr %58, i64 %86
  %94 = getelementptr inbounds ptr, ptr %42, i64 %indvars.iv
  store ptr %93, ptr %94, align 8, !tbaa !23
  %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 %.preheader378, label %.lr.ph, !llvm.loop !29

.preheader377:                                    ; preds = %.lr.ph381.preheader, %.preheader378
  %95 = icmp sgt i32 %10, 0
  br i1 %95, label %.lr.ph404, label %.preheader

.lr.ph404:                                        ; preds = %.preheader377
  %96 = icmp sgt i32 %8, 0
  %97 = getelementptr inbounds i8, ptr %3, i64 1160
  %98 = getelementptr inbounds i8, ptr %3, i64 2184
  %99 = sext i32 %19 to i64
  %100 = zext nneg i32 %10 to i64
  %101 = sext i32 %7 to i64
  %102 = sext i32 %25 to i64
  %wide.trip.count426 = zext nneg i32 %8 to i64
  %103 = shl nsw i64 %99, 2
  %104 = sub i32 0, %19
  %105 = shl nsw i64 %99, 2
  br label %110

.preheader:                                       ; preds = %._crit_edge402, %.preheader377
  %106 = phi i32 [ %46, %.preheader377 ], [ %411, %._crit_edge402 ]
  %107 = icmp sgt i32 %106, 0
  br i1 %107, label %.lr.ph406, label %._crit_edge407

.lr.ph406:                                        ; preds = %.preheader
  %108 = getelementptr inbounds i8, ptr %3, i64 1160
  %109 = getelementptr inbounds i8, ptr %3, i64 2184
  br label %414

110:                                              ; preds = %.lr.ph404, %._crit_edge402
  %indvar = phi i64 [ 0, %.lr.ph404 ], [ %indvar.next, %._crit_edge402 ]
  %111 = phi i32 [ %46, %.lr.ph404 ], [ %411, %._crit_edge402 ]
  %112 = phi i32 [ %46, %.lr.ph404 ], [ %412, %._crit_edge402 ]
  %indvars.iv434 = phi i64 [ 0, %.lr.ph404 ], [ %indvars.iv.next435, %._crit_edge402 ]
  %113 = trunc i64 %indvar to i32
  %114 = mul i32 %113, %104
  %115 = add i32 %114, %10
  %116 = call i32 @llvm.smin.i32(i32 %19, i32 %115)
  %smin516 = sext i32 %116 to i64
  %117 = add nsw i64 %smin516, -1
  %118 = trunc i64 %indvar to i32
  %119 = mul i32 %118, %104
  %120 = add i32 %119, %10
  %121 = call i32 @llvm.smin.i32(i32 %19, i32 %120)
  %smin494 = sext i32 %121 to i64
  %122 = trunc i64 %indvar to i32
  %123 = mul i32 %122, %104
  %124 = add i32 %123, %10
  %125 = call i32 @llvm.smin.i32(i32 %19, i32 %124)
  %smin470 = sext i32 %125 to i64
  %126 = shl nsw i64 %smin470, 2
  %127 = mul i64 %105, %indvar
  %128 = trunc i64 %indvar to i32
  %129 = mul i32 %128, %104
  %130 = add i32 %129, %10
  %131 = call i32 @llvm.smin.i32(i32 %19, i32 %130)
  %smin = sext i32 %131 to i64
  %132 = mul i64 %103, %indvar
  %133 = trunc i64 %indvars.iv434 to i32
  %134 = sub i32 %10, %133
  %135 = call i32 @llvm.smin.i32(i32 %19, i32 %134)
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %44, ptr align 4 %6, i64 %43, i1 false)
  call void @llvm.memset.p0.i64(ptr nonnull align 16 %58, i8 0, i64 %54, i1 false)
  br i1 %96, label %.lr.ph394, label %.preheader376

.lr.ph394:                                        ; preds = %110
  %136 = icmp sgt i32 %135, 0
  %137 = sext i32 %135 to i64
  %138 = trunc nsw i64 %indvars.iv434 to i32
  %139 = trunc nsw i64 %indvars.iv434 to i32
  %xtraiter = and i64 %smin516, 3
  %140 = icmp ult i64 %117, 3
  %unroll_iter = and i64 %smin516, -4
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  %min.iters.check497 = icmp ult i32 %121, 8
  %n.vec500 = and i64 %smin494, -4
  %cmp.n513 = icmp eq i64 %n.vec500, %smin494
  %min.iters.check460 = icmp ult i32 %131, 8
  %n.vec463 = and i64 %smin, -8
  %cmp.n468 = icmp eq i64 %n.vec463, %smin
  br label %149

.preheader376.loopexit:                           ; preds = %286
  %.pre444 = load i32, ptr %45, align 4, !tbaa !21
  br label %.preheader376

.preheader376:                                    ; preds = %.preheader376.loopexit, %110
  %141 = phi i32 [ %111, %110 ], [ %.pre444, %.preheader376.loopexit ]
  %142 = phi i32 [ %112, %110 ], [ %.pre444, %.preheader376.loopexit ]
  %.0354.lcssa = phi i32 [ 0, %110 ], [ %8, %.preheader376.loopexit ]
  %143 = icmp sgt i32 %142, 0
  br i1 %143, label %.lr.ph401, label %._crit_edge402

.lr.ph401:                                        ; preds = %.preheader376
  %144 = icmp sgt i32 %135, 0
  %145 = sub nsw i64 %101, %indvars.iv434
  %146 = sub nsw i64 %102, %indvars.iv434
  %147 = sext i32 %135 to i64
  %148 = trunc nsw i64 %indvars.iv434 to i32
  br label %287

149:                                              ; preds = %.lr.ph394, %286
  %indvars.iv421 = phi i64 [ 0, %.lr.ph394 ], [ %indvars.iv.next422, %286 ]
  %150 = getelementptr inbounds ptr, ptr %5, i64 %indvars.iv421
  %151 = load ptr, ptr %150, align 8, !tbaa !23
  %152 = ptrtoint ptr %151 to i64
  %153 = getelementptr i32, ptr %151, i64 %indvars.iv434
  %154 = getelementptr inbounds i32, ptr %44, i64 %indvars.iv421
  %155 = load i32, ptr %154, align 4, !tbaa !19
  %.not373 = icmp eq i32 %155, 0
  br i1 %.not373, label %.preheader374, label %.preheader375

.preheader375:                                    ; preds = %149
  %156 = getelementptr inbounds ptr, ptr %41, i64 %indvars.iv421
  %157 = load ptr, ptr %156, align 8, !tbaa !23
  br i1 %136, label %.lr.ph383.preheader, label %._crit_edge.thread

.lr.ph383.preheader:                              ; preds = %.preheader375
  br i1 %140, label %._crit_edge.unr-lcssa, label %.lr.ph383

._crit_edge.thread:                               ; preds = %.preheader375
  %158 = getelementptr inbounds ptr, ptr %4, i64 %indvars.iv421
  %159 = load ptr, ptr %158, align 8, !tbaa !23
  %160 = getelementptr inbounds float, ptr %159, i64 %indvars.iv434
  %161 = getelementptr inbounds ptr, ptr %42, i64 %indvars.iv421
  %162 = load ptr, ptr %161, align 8, !tbaa !23
  call void @flag_lossless(i32 noundef %25, float noundef %32, float noundef %.0347, ptr noundef %160, ptr noundef %157, ptr noundef %162, i32 noundef %138, i32 noundef %135)
  br label %._crit_edge.._crit_edge387_crit_edge

.preheader374:                                    ; preds = %149
  br i1 %136, label %.lr.ph389, label %._crit_edge390

.lr.ph389:                                        ; preds = %.preheader374
  %163 = getelementptr inbounds ptr, ptr %41, i64 %indvars.iv421
  %164 = load ptr, ptr %163, align 8, !tbaa !23
  %165 = getelementptr inbounds ptr, ptr %39, i64 %indvars.iv421
  %166 = load ptr, ptr %165, align 8, !tbaa !23
  %167 = getelementptr inbounds ptr, ptr %40, i64 %indvars.iv421
  %168 = load ptr, ptr %167, align 8, !tbaa !23
  %169 = getelementptr inbounds ptr, ptr %42, i64 %indvars.iv421
  %170 = load ptr, ptr %169, align 8, !tbaa !23
  br i1 %min.iters.check460, label %scalar.ph459.preheader, label %vector.memcheck

scalar.ph459.preheader:                           ; preds = %middle.block458, %vector.memcheck, %.lr.ph389
  %indvars.iv418.ph = phi i64 [ 0, %vector.memcheck ], [ 0, %.lr.ph389 ], [ %n.vec463, %middle.block458 ]
  br label %scalar.ph459

vector.memcheck:                                  ; preds = %.lr.ph389
  %171 = ptrtoint ptr %170 to i64
  %172 = ptrtoint ptr %168 to i64
  %173 = ptrtoint ptr %166 to i64
  %174 = ptrtoint ptr %164 to i64
  %175 = sub i64 %173, %174
  %diff.check = icmp ult i64 %175, 32
  %176 = sub i64 %172, %174
  %diff.check453 = icmp ult i64 %176, 32
  %conflict.rdx = or i1 %diff.check, %diff.check453
  %177 = sub i64 %172, %173
  %diff.check454 = icmp ult i64 %177, 32
  %conflict.rdx455 = or i1 %conflict.rdx, %diff.check454
  %178 = add i64 %132, %152
  %179 = sub i64 %178, %171
  %diff.check456 = icmp ult i64 %179, 32
  %conflict.rdx457 = or i1 %conflict.rdx455, %diff.check456
  br i1 %conflict.rdx457, label %scalar.ph459.preheader, label %vector.body465

vector.body465:                                   ; preds = %vector.memcheck, %vector.body465
  %index466 = phi i64 [ %index.next467, %vector.body465 ], [ 0, %vector.memcheck ]
  %180 = getelementptr inbounds float, ptr %164, i64 %index466
  %181 = getelementptr inbounds i8, ptr %180, i64 16
  store <4 x float> <float 0x3DDB7CDFE0000000, float 0x3DDB7CDFE0000000, float 0x3DDB7CDFE0000000, float 0x3DDB7CDFE0000000>, ptr %180, align 4, !tbaa !28
  store <4 x float> <float 0x3DDB7CDFE0000000, float 0x3DDB7CDFE0000000, float 0x3DDB7CDFE0000000, float 0x3DDB7CDFE0000000>, ptr %181, align 4, !tbaa !28
  %182 = getelementptr inbounds float, ptr %166, i64 %index466
  %183 = getelementptr inbounds i8, ptr %182, i64 16
  store <4 x float> zeroinitializer, ptr %182, align 4, !tbaa !28
  store <4 x float> zeroinitializer, ptr %183, align 4, !tbaa !28
  %184 = getelementptr inbounds float, ptr %168, i64 %index466
  %185 = getelementptr inbounds i8, ptr %184, i64 16
  store <4 x float> zeroinitializer, ptr %184, align 4, !tbaa !28
  store <4 x float> zeroinitializer, ptr %185, align 4, !tbaa !28
  %186 = getelementptr inbounds i32, ptr %170, i64 %index466
  %187 = getelementptr inbounds i8, ptr %186, i64 16
  store <4 x i32> zeroinitializer, ptr %186, align 4, !tbaa !19
  store <4 x i32> zeroinitializer, ptr %187, align 4, !tbaa !19
  %188 = getelementptr inbounds i32, ptr %153, i64 %index466
  %189 = getelementptr inbounds i8, ptr %188, i64 16
  store <4 x i32> zeroinitializer, ptr %188, align 4, !tbaa !19
  store <4 x i32> zeroinitializer, ptr %189, align 4, !tbaa !19
  %index.next467 = add nuw i64 %index466, 8
  %190 = icmp eq i64 %index.next467, %n.vec463
  br i1 %190, label %middle.block458, label %vector.body465, !llvm.loop !30

middle.block458:                                  ; preds = %vector.body465
  br i1 %cmp.n468, label %._crit_edge390, label %scalar.ph459.preheader

.lr.ph383:                                        ; preds = %.lr.ph383.preheader, %.lr.ph383
  %indvars.iv412 = phi i64 [ %indvars.iv.next413.3, %.lr.ph383 ], [ 0, %.lr.ph383.preheader ]
  %niter = phi i64 [ %niter.next.3, %.lr.ph383 ], [ 0, %.lr.ph383.preheader ]
  %191 = getelementptr inbounds i32, ptr %153, i64 %indvars.iv412
  %192 = load i32, ptr %191, align 4, !tbaa !19
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds [256 x float], ptr @_FLOOR1_fromdB_LOOKUP, i64 0, i64 %193
  %195 = load float, ptr %194, align 4, !tbaa !28
  %196 = getelementptr inbounds float, ptr %157, i64 %indvars.iv412
  store float %195, ptr %196, align 4, !tbaa !28
  %indvars.iv.next413 = or disjoint i64 %indvars.iv412, 1
  %197 = getelementptr inbounds i32, ptr %153, i64 %indvars.iv.next413
  %198 = load i32, ptr %197, align 4, !tbaa !19
  %199 = sext i32 %198 to i64
  %200 = getelementptr inbounds [256 x float], ptr @_FLOOR1_fromdB_LOOKUP, i64 0, i64 %199
  %201 = load float, ptr %200, align 4, !tbaa !28
  %202 = getelementptr inbounds float, ptr %157, i64 %indvars.iv.next413
  store float %201, ptr %202, align 4, !tbaa !28
  %indvars.iv.next413.1 = or disjoint i64 %indvars.iv412, 2
  %203 = getelementptr inbounds i32, ptr %153, i64 %indvars.iv.next413.1
  %204 = load i32, ptr %203, align 4, !tbaa !19
  %205 = sext i32 %204 to i64
  %206 = getelementptr inbounds [256 x float], ptr @_FLOOR1_fromdB_LOOKUP, i64 0, i64 %205
  %207 = load float, ptr %206, align 4, !tbaa !28
  %208 = getelementptr inbounds float, ptr %157, i64 %indvars.iv.next413.1
  store float %207, ptr %208, align 4, !tbaa !28
  %indvars.iv.next413.2 = or disjoint i64 %indvars.iv412, 3
  %209 = getelementptr inbounds i32, ptr %153, i64 %indvars.iv.next413.2
  %210 = load i32, ptr %209, align 4, !tbaa !19
  %211 = sext i32 %210 to i64
  %212 = getelementptr inbounds [256 x float], ptr @_FLOOR1_fromdB_LOOKUP, i64 0, i64 %211
  %213 = load float, ptr %212, align 4, !tbaa !28
  %214 = getelementptr inbounds float, ptr %157, i64 %indvars.iv.next413.2
  store float %213, ptr %214, align 4, !tbaa !28
  %indvars.iv.next413.3 = add nuw nsw i64 %indvars.iv412, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3.not = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3.not, label %._crit_edge.unr-lcssa, label %.lr.ph383, !llvm.loop !31

._crit_edge.unr-lcssa:                            ; preds = %.lr.ph383, %.lr.ph383.preheader
  %indvars.iv412.unr = phi i64 [ 0, %.lr.ph383.preheader ], [ %indvars.iv.next413.3, %.lr.ph383 ]
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph383.epil

.lr.ph383.epil:                                   ; preds = %._crit_edge.unr-lcssa, %.lr.ph383.epil
  %indvars.iv412.epil = phi i64 [ %indvars.iv.next413.epil, %.lr.ph383.epil ], [ %indvars.iv412.unr, %._crit_edge.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph383.epil ], [ 0, %._crit_edge.unr-lcssa ]
  %215 = getelementptr inbounds i32, ptr %153, i64 %indvars.iv412.epil
  %216 = load i32, ptr %215, align 4, !tbaa !19
  %217 = sext i32 %216 to i64
  %218 = getelementptr inbounds [256 x float], ptr @_FLOOR1_fromdB_LOOKUP, i64 0, i64 %217
  %219 = load float, ptr %218, align 4, !tbaa !28
  %220 = getelementptr inbounds float, ptr %157, i64 %indvars.iv412.epil
  store float %219, ptr %220, align 4, !tbaa !28
  %indvars.iv.next413.epil = add nuw nsw i64 %indvars.iv412.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge, label %.lr.ph383.epil, !llvm.loop !32

._crit_edge:                                      ; preds = %.lr.ph383.epil, %._crit_edge.unr-lcssa
  %221 = getelementptr inbounds ptr, ptr %4, i64 %indvars.iv421
  %222 = load ptr, ptr %221, align 8, !tbaa !23
  %223 = getelementptr inbounds float, ptr %222, i64 %indvars.iv434
  %224 = getelementptr inbounds ptr, ptr %42, i64 %indvars.iv421
  %225 = load ptr, ptr %224, align 8, !tbaa !23
  call void @flag_lossless(i32 noundef %25, float noundef %32, float noundef %.0347, ptr noundef %223, ptr noundef nonnull %157, ptr noundef %225, i32 noundef %139, i32 noundef %135)
  br i1 %136, label %.lr.ph386, label %._crit_edge.._crit_edge387_crit_edge

._crit_edge.._crit_edge387_crit_edge:             ; preds = %._crit_edge.thread, %._crit_edge
  %226 = phi i32 [ %138, %._crit_edge.thread ], [ %139, %._crit_edge ]
  %.phi.trans.insert440 = getelementptr inbounds ptr, ptr %39, i64 %indvars.iv421
  %.pre441 = load ptr, ptr %.phi.trans.insert440, align 8, !tbaa !23
  %.phi.trans.insert442 = getelementptr inbounds ptr, ptr %40, i64 %indvars.iv421
  %.pre443 = load ptr, ptr %.phi.trans.insert442, align 8, !tbaa !23
  br label %._crit_edge387

.lr.ph386:                                        ; preds = %._crit_edge
  %227 = load ptr, ptr %221, align 8, !tbaa !23
  %228 = getelementptr inbounds ptr, ptr %39, i64 %indvars.iv421
  %229 = load ptr, ptr %228, align 8, !tbaa !23
  %230 = getelementptr inbounds ptr, ptr %40, i64 %indvars.iv421
  %231 = load ptr, ptr %230, align 8, !tbaa !23
  %invariant.gep = getelementptr float, ptr %227, i64 %indvars.iv434
  br i1 %min.iters.check497, label %scalar.ph496.preheader, label %vector.memcheck469

vector.memcheck469:                               ; preds = %.lr.ph386
  %scevgep = getelementptr i8, ptr %229, i64 %126
  %scevgep471 = getelementptr i8, ptr %231, i64 %126
  %scevgep472 = getelementptr i8, ptr %157, i64 %126
  %232 = getelementptr i8, ptr %227, i64 %127
  %scevgep473 = getelementptr i8, ptr %232, i64 %126
  %bound0 = icmp ult ptr %229, %scevgep471
  %bound1 = icmp ult ptr %231, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  %bound0474 = icmp ult ptr %229, %scevgep472
  %bound1475 = icmp ult ptr %157, %scevgep
  %found.conflict476 = and i1 %bound0474, %bound1475
  %conflict.rdx477 = or i1 %found.conflict, %found.conflict476
  %bound0478 = icmp ult ptr %229, %scevgep473
  %bound1479 = icmp ult ptr %invariant.gep, %scevgep
  %found.conflict480 = and i1 %bound0478, %bound1479
  %conflict.rdx481 = or i1 %conflict.rdx477, %found.conflict480
  %bound0482 = icmp ult ptr %231, %scevgep472
  %bound1483 = icmp ult ptr %157, %scevgep471
  %found.conflict484 = and i1 %bound0482, %bound1483
  %conflict.rdx485 = or i1 %conflict.rdx481, %found.conflict484
  %bound0486 = icmp ult ptr %231, %scevgep473
  %bound1487 = icmp ult ptr %invariant.gep, %scevgep471
  %found.conflict488 = and i1 %bound0486, %bound1487
  %conflict.rdx489 = or i1 %conflict.rdx485, %found.conflict488
  %bound0490 = icmp ult ptr %157, %scevgep473
  %bound1491 = icmp ult ptr %invariant.gep, %scevgep472
  %found.conflict492 = and i1 %bound0490, %bound1491
  %conflict.rdx493 = or i1 %conflict.rdx489, %found.conflict492
  br i1 %conflict.rdx493, label %scalar.ph496.preheader, label %vector.body502

vector.body502:                                   ; preds = %vector.memcheck469, %pred.store.continue510
  %index503 = phi i64 [ %index.next512, %pred.store.continue510 ], [ 0, %vector.memcheck469 ]
  %233 = or disjoint i64 %index503, 1
  %234 = or disjoint i64 %index503, 2
  %235 = or disjoint i64 %index503, 3
  %236 = getelementptr float, ptr %invariant.gep, i64 %index503
  %wide.load = load <4 x float>, ptr %236, align 4, !tbaa !28, !alias.scope !34
  %237 = fmul <4 x float> %wide.load, %wide.load
  %238 = getelementptr inbounds float, ptr %229, i64 %index503
  %239 = getelementptr inbounds float, ptr %229, i64 %233
  %240 = getelementptr inbounds float, ptr %229, i64 %234
  %241 = getelementptr inbounds float, ptr %229, i64 %235
  store <4 x float> %237, ptr %238, align 4, !tbaa !28, !alias.scope !37, !noalias !39
  %242 = getelementptr inbounds float, ptr %231, i64 %index503
  store <4 x float> %237, ptr %242, align 4, !tbaa !28, !alias.scope !42, !noalias !43
  %wide.load504 = load <4 x float>, ptr %236, align 4, !tbaa !28, !alias.scope !34
  %243 = fcmp olt <4 x float> %wide.load504, zeroinitializer
  %244 = load float, ptr %239, align 4, !tbaa !28, !alias.scope !37, !noalias !39
  %245 = load float, ptr %240, align 4, !tbaa !28, !alias.scope !37, !noalias !39
  %246 = load float, ptr %241, align 4, !tbaa !28, !alias.scope !37, !noalias !39
  %247 = extractelement <4 x i1> %243, i64 0
  br i1 %247, label %pred.store.if, label %pred.store.continue

pred.store.if:                                    ; preds = %vector.body502
  %248 = load float, ptr %238, align 4, !tbaa !28, !alias.scope !37, !noalias !39
  %249 = fneg float %248
  store float %249, ptr %238, align 4, !tbaa !28, !alias.scope !37, !noalias !39
  br label %pred.store.continue

pred.store.continue:                              ; preds = %pred.store.if, %vector.body502
  %250 = extractelement <4 x i1> %243, i64 1
  br i1 %250, label %pred.store.if505, label %pred.store.continue506

pred.store.if505:                                 ; preds = %pred.store.continue
  %251 = fneg float %244
  store float %251, ptr %239, align 4, !tbaa !28, !alias.scope !37, !noalias !39
  br label %pred.store.continue506

pred.store.continue506:                           ; preds = %pred.store.if505, %pred.store.continue
  %252 = extractelement <4 x i1> %243, i64 2
  br i1 %252, label %pred.store.if507, label %pred.store.continue508

pred.store.if507:                                 ; preds = %pred.store.continue506
  %253 = fneg float %245
  store float %253, ptr %240, align 4, !tbaa !28, !alias.scope !37, !noalias !39
  br label %pred.store.continue508

pred.store.continue508:                           ; preds = %pred.store.if507, %pred.store.continue506
  %254 = extractelement <4 x i1> %243, i64 3
  br i1 %254, label %pred.store.if509, label %pred.store.continue510

pred.store.if509:                                 ; preds = %pred.store.continue508
  %255 = fneg float %246
  store float %255, ptr %241, align 4, !tbaa !28, !alias.scope !37, !noalias !39
  br label %pred.store.continue510

pred.store.continue510:                           ; preds = %pred.store.if509, %pred.store.continue508
  %256 = getelementptr inbounds float, ptr %157, i64 %index503
  %wide.load511 = load <4 x float>, ptr %256, align 4, !tbaa !28, !alias.scope !44, !noalias !34
  %257 = fmul <4 x float> %wide.load511, %wide.load511
  store <4 x float> %257, ptr %256, align 4, !tbaa !28, !alias.scope !44, !noalias !34
  %index.next512 = add nuw i64 %index503, 4
  %258 = icmp eq i64 %index.next512, %n.vec500
  br i1 %258, label %middle.block495, label %vector.body502, !llvm.loop !45

middle.block495:                                  ; preds = %pred.store.continue510
  br i1 %cmp.n513, label %._crit_edge387, label %scalar.ph496.preheader

scalar.ph496.preheader:                           ; preds = %middle.block495, %vector.memcheck469, %.lr.ph386
  %indvars.iv415.ph = phi i64 [ 0, %vector.memcheck469 ], [ 0, %.lr.ph386 ], [ %n.vec500, %middle.block495 ]
  br label %scalar.ph496

scalar.ph496:                                     ; preds = %scalar.ph496.preheader, %268
  %indvars.iv415 = phi i64 [ %indvars.iv.next416, %268 ], [ %indvars.iv415.ph, %scalar.ph496.preheader ]
  %gep = getelementptr float, ptr %invariant.gep, i64 %indvars.iv415
  %259 = load float, ptr %gep, align 4, !tbaa !28
  %260 = fmul float %259, %259
  %261 = getelementptr inbounds float, ptr %229, i64 %indvars.iv415
  store float %260, ptr %261, align 4, !tbaa !28
  %262 = getelementptr inbounds float, ptr %231, i64 %indvars.iv415
  store float %260, ptr %262, align 4, !tbaa !28
  %263 = load float, ptr %gep, align 4, !tbaa !28
  %264 = fcmp olt float %263, 0.000000e+00
  br i1 %264, label %265, label %268

265:                                              ; preds = %scalar.ph496
  %266 = load float, ptr %261, align 4, !tbaa !28
  %267 = fneg float %266
  store float %267, ptr %261, align 4, !tbaa !28
  br label %268

268:                                              ; preds = %265, %scalar.ph496
  %269 = getelementptr inbounds float, ptr %157, i64 %indvars.iv415
  %270 = load float, ptr %269, align 4, !tbaa !28
  %271 = fmul float %270, %270
  store float %271, ptr %269, align 4, !tbaa !28
  %indvars.iv.next416 = add nuw nsw i64 %indvars.iv415, 1
  %272 = icmp slt i64 %indvars.iv.next416, %137
  br i1 %272, label %scalar.ph496, label %._crit_edge387, !llvm.loop !46

._crit_edge387:                                   ; preds = %268, %middle.block495, %._crit_edge.._crit_edge387_crit_edge
  %273 = phi i32 [ %226, %._crit_edge.._crit_edge387_crit_edge ], [ %139, %middle.block495 ], [ %139, %268 ]
  %274 = phi ptr [ %.pre443, %._crit_edge.._crit_edge387_crit_edge ], [ %231, %middle.block495 ], [ %231, %268 ]
  %275 = phi ptr [ %.pre441, %._crit_edge.._crit_edge387_crit_edge ], [ %229, %middle.block495 ], [ %229, %268 ]
  %276 = getelementptr inbounds float, ptr %50, i64 %indvars.iv421
  %277 = load float, ptr %276, align 4, !tbaa !28
  %278 = call float @noise_normalize(ptr noundef nonnull %2, i32 noundef %25, ptr noundef %275, ptr noundef %274, ptr noundef %157, ptr noundef null, float noundef %277, i32 noundef %273, i32 noundef %135, ptr noundef %153)
  store float %278, ptr %276, align 4, !tbaa !28
  br label %286

scalar.ph459:                                     ; preds = %scalar.ph459.preheader, %scalar.ph459
  %indvars.iv418 = phi i64 [ %indvars.iv.next419, %scalar.ph459 ], [ %indvars.iv418.ph, %scalar.ph459.preheader ]
  %279 = getelementptr inbounds float, ptr %164, i64 %indvars.iv418
  store float 0x3DDB7CDFE0000000, ptr %279, align 4, !tbaa !28
  %280 = getelementptr inbounds float, ptr %166, i64 %indvars.iv418
  store float 0.000000e+00, ptr %280, align 4, !tbaa !28
  %281 = getelementptr inbounds float, ptr %168, i64 %indvars.iv418
  store float 0.000000e+00, ptr %281, align 4, !tbaa !28
  %282 = getelementptr inbounds i32, ptr %170, i64 %indvars.iv418
  store i32 0, ptr %282, align 4, !tbaa !19
  %283 = getelementptr inbounds i32, ptr %153, i64 %indvars.iv418
  store i32 0, ptr %283, align 4, !tbaa !19
  %indvars.iv.next419 = add nuw nsw i64 %indvars.iv418, 1
  %284 = icmp slt i64 %indvars.iv.next419, %137
  br i1 %284, label %scalar.ph459, label %._crit_edge390, !llvm.loop !47

._crit_edge390:                                   ; preds = %scalar.ph459, %middle.block458, %.preheader374
  %285 = getelementptr inbounds float, ptr %50, i64 %indvars.iv421
  store float 0.000000e+00, ptr %285, align 4, !tbaa !28
  br label %286

286:                                              ; preds = %._crit_edge390, %._crit_edge387
  %indvars.iv.next422 = add nuw nsw i64 %indvars.iv421, 1
  %exitcond427.not = icmp eq i64 %indvars.iv.next422, %wide.trip.count426
  br i1 %exitcond427.not, label %.preheader376.loopexit, label %149, !llvm.loop !48

287:                                              ; preds = %.lr.ph401, %407
  %288 = phi i32 [ %141, %.lr.ph401 ], [ %408, %407 ]
  %indvars.iv431 = phi i64 [ 0, %.lr.ph401 ], [ %indvars.iv.next432, %407 ]
  %.1355399 = phi i32 [ %.0354.lcssa, %.lr.ph401 ], [ %.2356, %407 ]
  %289 = getelementptr inbounds [256 x i32], ptr %97, i64 0, i64 %indvars.iv431
  %290 = load i32, ptr %289, align 4, !tbaa !19
  %291 = getelementptr inbounds [256 x i32], ptr %98, i64 0, i64 %indvars.iv431
  %292 = load i32, ptr %291, align 4, !tbaa !19
  %293 = sext i32 %290 to i64
  %294 = getelementptr inbounds ptr, ptr %5, i64 %293
  %295 = load ptr, ptr %294, align 8, !tbaa !23
  %296 = getelementptr inbounds i32, ptr %295, i64 %indvars.iv434
  %297 = sext i32 %292 to i64
  %298 = getelementptr inbounds ptr, ptr %5, i64 %297
  %299 = load ptr, ptr %298, align 8, !tbaa !23
  %300 = getelementptr inbounds i32, ptr %299, i64 %indvars.iv434
  %301 = getelementptr inbounds ptr, ptr %39, i64 %293
  %302 = load ptr, ptr %301, align 8, !tbaa !23
  %303 = getelementptr inbounds ptr, ptr %39, i64 %297
  %304 = load ptr, ptr %303, align 8, !tbaa !23
  %305 = getelementptr inbounds ptr, ptr %40, i64 %293
  %306 = load ptr, ptr %305, align 8, !tbaa !23
  %307 = getelementptr inbounds ptr, ptr %40, i64 %297
  %308 = load ptr, ptr %307, align 8, !tbaa !23
  %309 = getelementptr inbounds ptr, ptr %41, i64 %293
  %310 = load ptr, ptr %309, align 8, !tbaa !23
  %311 = getelementptr inbounds ptr, ptr %41, i64 %297
  %312 = load ptr, ptr %311, align 8, !tbaa !23
  %313 = getelementptr inbounds ptr, ptr %42, i64 %293
  %314 = load ptr, ptr %313, align 8, !tbaa !23
  %315 = getelementptr inbounds ptr, ptr %42, i64 %297
  %316 = load ptr, ptr %315, align 8, !tbaa !23
  %317 = getelementptr inbounds i32, ptr %44, i64 %293
  %318 = load i32, ptr %317, align 4, !tbaa !19
  %.not368 = icmp eq i32 %318, 0
  br i1 %.not368, label %319, label %322

319:                                              ; preds = %287
  %320 = getelementptr inbounds i32, ptr %44, i64 %297
  %321 = load i32, ptr %320, align 4, !tbaa !19
  %.not369 = icmp eq i32 %321, 0
  br i1 %.not369, label %407, label %322

322:                                              ; preds = %319, %287
  %323 = getelementptr inbounds i32, ptr %44, i64 %297
  store i32 1, ptr %323, align 4, !tbaa !19
  store i32 1, ptr %317, align 4, !tbaa !19
  br i1 %144, label %.lr.ph397, label %._crit_edge398

.lr.ph397:                                        ; preds = %322, %395
  %indvars.iv428 = phi i64 [ %indvars.iv.next429, %395 ], [ 0, %322 ]
  %324 = icmp slt i64 %indvars.iv428, %145
  br i1 %324, label %325, label %395

325:                                              ; preds = %.lr.ph397
  %326 = getelementptr inbounds i32, ptr %314, i64 %indvars.iv428
  %327 = load i32, ptr %326, align 4, !tbaa !19
  %.not370 = icmp eq i32 %327, 0
  br i1 %.not370, label %328, label %331

328:                                              ; preds = %325
  %329 = getelementptr inbounds i32, ptr %316, i64 %indvars.iv428
  %330 = load i32, ptr %329, align 4, !tbaa !19
  %.not371 = icmp eq i32 %330, 0
  br i1 %.not371, label %367, label %331

331:                                              ; preds = %328, %325
  %332 = getelementptr inbounds float, ptr %302, i64 %indvars.iv428
  %333 = load float, ptr %332, align 4, !tbaa !28
  %334 = call float @llvm.fabs.f32(float %333)
  %335 = getelementptr inbounds float, ptr %304, i64 %indvars.iv428
  %336 = load float, ptr %335, align 4, !tbaa !28
  %337 = call float @llvm.fabs.f32(float %336)
  %338 = fadd float %334, %337
  store float %338, ptr %332, align 4, !tbaa !28
  %339 = getelementptr inbounds float, ptr %306, i64 %indvars.iv428
  %340 = load float, ptr %339, align 4, !tbaa !28
  %341 = getelementptr inbounds float, ptr %308, i64 %indvars.iv428
  %342 = load float, ptr %341, align 4, !tbaa !28
  %343 = fadd float %340, %342
  store float %343, ptr %339, align 4, !tbaa !28
  %344 = getelementptr inbounds i32, ptr %316, i64 %indvars.iv428
  store i32 1, ptr %344, align 4, !tbaa !19
  store i32 1, ptr %326, align 4, !tbaa !19
  %345 = getelementptr inbounds i32, ptr %296, i64 %indvars.iv428
  %346 = load i32, ptr %345, align 4, !tbaa !19
  %347 = getelementptr inbounds i32, ptr %300, i64 %indvars.iv428
  %348 = load i32, ptr %347, align 4, !tbaa !19
  %349 = call i32 @llvm.abs.i32(i32 %346, i1 true)
  %350 = call i32 @llvm.abs.i32(i32 %348, i1 true)
  %351 = icmp ugt i32 %349, %350
  %352 = sub nsw i32 %346, %348
  %353 = sub nsw i32 %348, %346
  br i1 %351, label %354, label %357

354:                                              ; preds = %331
  %355 = icmp sgt i32 %346, 0
  %356 = select i1 %355, i32 %352, i32 %353
  store i32 %356, ptr %347, align 4, !tbaa !19
  %.pre446 = load i32, ptr %345, align 4, !tbaa !19
  %.pre449 = call i32 @llvm.abs.i32(i32 %.pre446, i1 true)
  br label %360

357:                                              ; preds = %331
  %358 = icmp sgt i32 %348, 0
  %359 = select i1 %358, i32 %352, i32 %353
  store i32 %359, ptr %347, align 4, !tbaa !19
  store i32 %348, ptr %345, align 4, !tbaa !19
  %.pre445 = load i32, ptr %347, align 4, !tbaa !19
  br label %360

360:                                              ; preds = %357, %354
  %.pre-phi = phi i32 [ %350, %357 ], [ %.pre449, %354 ]
  %361 = phi i32 [ %.pre445, %357 ], [ %356, %354 ]
  %362 = shl nuw nsw i32 %.pre-phi, 1
  %.not372 = icmp slt i32 %361, %362
  br i1 %.not372, label %395, label %363

363:                                              ; preds = %360
  %364 = sub nsw i32 0, %361
  store i32 %364, ptr %347, align 4, !tbaa !19
  %365 = load i32, ptr %345, align 4, !tbaa !19
  %366 = sub nsw i32 0, %365
  store i32 %366, ptr %345, align 4, !tbaa !19
  br label %395

367:                                              ; preds = %328
  %368 = icmp slt i64 %indvars.iv428, %146
  br i1 %368, label %369, label %377

369:                                              ; preds = %367
  %370 = getelementptr inbounds float, ptr %304, i64 %indvars.iv428
  %371 = load float, ptr %370, align 4, !tbaa !28
  %372 = getelementptr inbounds float, ptr %302, i64 %indvars.iv428
  %373 = load float, ptr %372, align 4, !tbaa !28
  %374 = fadd float %371, %373
  store float %374, ptr %372, align 4, !tbaa !28
  %375 = call float @llvm.fabs.f32(float %374)
  %376 = getelementptr inbounds float, ptr %306, i64 %indvars.iv428
  store float %375, ptr %376, align 4, !tbaa !28
  br label %391

377:                                              ; preds = %367
  %378 = getelementptr inbounds float, ptr %302, i64 %indvars.iv428
  %379 = load float, ptr %378, align 4, !tbaa !28
  %380 = getelementptr inbounds float, ptr %304, i64 %indvars.iv428
  %381 = load float, ptr %380, align 4, !tbaa !28
  %382 = fadd float %379, %381
  %383 = fcmp olt float %382, 0.000000e+00
  %384 = call float @llvm.fabs.f32(float %379)
  %385 = call float @llvm.fabs.f32(float %381)
  %386 = fadd float %384, %385
  %387 = getelementptr inbounds float, ptr %306, i64 %indvars.iv428
  store float %386, ptr %387, align 4, !tbaa !28
  br i1 %383, label %388, label %390

388:                                              ; preds = %377
  %389 = fneg float %386
  store float %389, ptr %378, align 4, !tbaa !28
  br label %391

390:                                              ; preds = %377
  store float %386, ptr %378, align 4, !tbaa !28
  br label %391

391:                                              ; preds = %388, %390, %369
  %392 = getelementptr inbounds float, ptr %308, i64 %indvars.iv428
  store float 0.000000e+00, ptr %392, align 4, !tbaa !28
  %393 = getelementptr inbounds float, ptr %304, i64 %indvars.iv428
  store float 0.000000e+00, ptr %393, align 4, !tbaa !28
  store i32 1, ptr %329, align 4, !tbaa !19
  %394 = getelementptr inbounds i32, ptr %300, i64 %indvars.iv428
  store i32 0, ptr %394, align 4, !tbaa !19
  br label %395

395:                                              ; preds = %360, %363, %391, %.lr.ph397
  %396 = getelementptr inbounds float, ptr %310, i64 %indvars.iv428
  %397 = load float, ptr %396, align 4, !tbaa !28
  %398 = getelementptr inbounds float, ptr %312, i64 %indvars.iv428
  %399 = load float, ptr %398, align 4, !tbaa !28
  %400 = fadd float %397, %399
  store float %400, ptr %398, align 4, !tbaa !28
  store float %400, ptr %396, align 4, !tbaa !28
  %indvars.iv.next429 = add nuw nsw i64 %indvars.iv428, 1
  %401 = icmp slt i64 %indvars.iv.next429, %147
  br i1 %401, label %.lr.ph397, label %._crit_edge398, !llvm.loop !49

._crit_edge398:                                   ; preds = %395, %322
  %402 = sext i32 %.1355399 to i64
  %403 = getelementptr inbounds float, ptr %50, i64 %402
  %404 = load float, ptr %403, align 4, !tbaa !28
  %405 = call float @noise_normalize(ptr noundef nonnull %2, i32 noundef %25, ptr noundef %302, ptr noundef %306, ptr noundef %310, ptr noundef %314, float noundef %404, i32 noundef %148, i32 noundef %135, ptr noundef %296)
  store float %405, ptr %403, align 4, !tbaa !28
  %406 = add nsw i32 %.1355399, 1
  %.pre447 = load i32, ptr %45, align 4, !tbaa !21
  br label %407

407:                                              ; preds = %._crit_edge398, %319
  %408 = phi i32 [ %.pre447, %._crit_edge398 ], [ %288, %319 ]
  %.2356 = phi i32 [ %406, %._crit_edge398 ], [ %.1355399, %319 ]
  %indvars.iv.next432 = add nuw nsw i64 %indvars.iv431, 1
  %409 = sext i32 %408 to i64
  %410 = icmp slt i64 %indvars.iv.next432, %409
  br i1 %410, label %287, label %._crit_edge402, !llvm.loop !50

._crit_edge402:                                   ; preds = %407, %.preheader376
  %411 = phi i32 [ %141, %.preheader376 ], [ %408, %407 ]
  %412 = phi i32 [ %142, %.preheader376 ], [ %408, %407 ]
  %indvars.iv.next435 = add nsw i64 %indvars.iv434, %99
  %413 = icmp slt i64 %indvars.iv.next435, %100
  %indvar.next = add i64 %indvar, 1
  br i1 %413, label %110, label %.preheader, !llvm.loop !51

414:                                              ; preds = %.lr.ph406, %432
  %415 = phi i32 [ %106, %.lr.ph406 ], [ %433, %432 ]
  %indvars.iv437 = phi i64 [ 0, %.lr.ph406 ], [ %indvars.iv.next438, %432 ]
  %416 = getelementptr inbounds [256 x i32], ptr %108, i64 0, i64 %indvars.iv437
  %417 = load i32, ptr %416, align 4, !tbaa !19
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds i32, ptr %6, i64 %418
  %420 = load i32, ptr %419, align 4, !tbaa !19
  %.not366 = icmp eq i32 %420, 0
  br i1 %.not366, label %421, label %427

421:                                              ; preds = %414
  %422 = getelementptr inbounds [256 x i32], ptr %109, i64 0, i64 %indvars.iv437
  %423 = load i32, ptr %422, align 4, !tbaa !19
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds i32, ptr %6, i64 %424
  %426 = load i32, ptr %425, align 4, !tbaa !19
  %.not367 = icmp eq i32 %426, 0
  br i1 %.not367, label %432, label %427

427:                                              ; preds = %421, %414
  store i32 1, ptr %419, align 4, !tbaa !19
  %428 = getelementptr inbounds [256 x i32], ptr %109, i64 0, i64 %indvars.iv437
  %429 = load i32, ptr %428, align 4, !tbaa !19
  %430 = sext i32 %429 to i64
  %431 = getelementptr inbounds i32, ptr %6, i64 %430
  store i32 1, ptr %431, align 4, !tbaa !19
  %.pre448 = load i32, ptr %45, align 4, !tbaa !21
  br label %432

432:                                              ; preds = %421, %427
  %433 = phi i32 [ %415, %421 ], [ %.pre448, %427 ]
  %indvars.iv.next438 = add nuw nsw i64 %indvars.iv437, 1
  %434 = sext i32 %433 to i64
  %435 = icmp slt i64 %indvars.iv.next438, %434
  br i1 %435, label %414, label %._crit_edge407, !llvm.loop !52

._crit_edge407:                                   ; preds = %432, %.preheader
  ret void
}

; Function Attrs: nounwind uwtable
declare hidden void @flag_lossless(i32 noundef, float noundef, float noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden float @noise_normalize(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, float noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.abs.i32(i32, i1 immarg) #3

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

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

attributes #0 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { 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, !7, i64 0}
!6 = !{!"", !7, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !11, i64 56, !11, i64 64, !7, i64 72, !7, i64 76, !11, i64 80, !12, i64 88}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!"long", !8, i64 0}
!12 = !{!"float", !8, i64 0}
!13 = !{!6, !10, i64 8}
!14 = !{!15, !7, i64 500}
!15 = !{!"vorbis_info_psy", !7, i64 0, !12, i64 4, !12, i64 8, !8, i64 12, !12, i64 24, !12, i64 28, !12, i64 32, !8, i64 36, !7, i64 104, !12, i64 108, !12, i64 112, !12, i64 116, !7, i64 120, !7, i64 124, !7, i64 128, !8, i64 132, !8, i64 336, !12, i64 496, !7, i64 500, !7, i64 504, !7, i64 508, !16, i64 512}
!16 = !{!"double", !8, i64 0}
!17 = !{!15, !7, i64 508}
!18 = !{!15, !7, i64 0}
!19 = !{!7, !7, i64 0}
!20 = !{!16, !16, i64 0}
!21 = !{!22, !7, i64 1156}
!22 = !{!"vorbis_info_mapping0", !7, i64 0, !8, i64 4, !8, i64 1028, !8, i64 1092, !7, i64 1156, !8, i64 1160, !8, i64 2184}
!23 = !{!10, !10, i64 0}
!24 = distinct !{!24, !25, !26, !27}
!25 = !{!"llvm.loop.mustprogress"}
!26 = !{!"llvm.loop.isvectorized", i32 1}
!27 = !{!"llvm.loop.unroll.runtime.disable"}
!28 = !{!12, !12, i64 0}
!29 = distinct !{!29, !25, !27, !26}
!30 = distinct !{!30, !25, !26, !27}
!31 = distinct !{!31, !25}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.unroll.disable"}
!34 = !{!35}
!35 = distinct !{!35, !36}
!36 = distinct !{!36, !"LVerDomain"}
!37 = !{!38}
!38 = distinct !{!38, !36}
!39 = !{!40, !41, !35}
!40 = distinct !{!40, !36}
!41 = distinct !{!41, !36}
!42 = !{!40}
!43 = !{!41, !35}
!44 = !{!41}
!45 = distinct !{!45, !25, !26, !27}
!46 = distinct !{!46, !25, !26}
!47 = distinct !{!47, !25, !26}
!48 = distinct !{!48, !25}
!49 = distinct !{!49, !25}
!50 = distinct !{!50, !25}
!51 = distinct !{!51, !25}
!52 = distinct !{!52, !25}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass