; LLVM IR from Ryuk17/SpeechAlgorithms :: WebRTC_ANR/src (noise_suppression)

; 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.NoiseSuppressionC_ = type { i32, i64, i64, i64, i64, float, i32, ptr, [256 x float], [256 x float], [256 x float], i32, [387 x float], [387 x float], [129 x float], [3 x i32], i32, [129 x float], [129 x float], [129 x float], float, float, i32, [128 x i64], [128 x float], i32, [4 x i32], [7 x float], [129 x float], [129 x float], [129 x float], [129 x float], [129 x float], float, [7 x float], [129 x float], float, float, float, [129 x float], float, float, [129 x float], %struct.NSParaExtract_, [1000 x i32], [1000 x i32], [1000 x i32], [129 x float], [2 x [256 x float]] }
%struct.NSParaExtract_ = type { float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, i32, i32 }

@kBlocks80w128 = external hidden constant [128 x float], align 16
@kBlocks160w256 = external hidden constant [256 x float], align 16

; Function Attrs: nounwind uwtable
declare dso_local void @WebRtc_rdft(i64 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

; Function Attrs: nounwind uwtable
define dso_local i32 @WebRtcNs_InitCore(ptr noundef %0, i32 noundef %1) #0 {
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store i32 %1, ptr %5, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #5
  %8 = load ptr, ptr %4, align 8, !tbaa !5
  %9 = icmp eq ptr %8, null
  br i1 %9, label %10, label %11

10:                                               ; preds = %2
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %290

11:                                               ; preds = %2
  %12 = load i32, ptr %5, align 4, !tbaa !9
  %13 = icmp eq i32 %12, 8000
  br i1 %13, label %17, label %14

14:                                               ; preds = %11
  %15 = load i32, ptr %5, align 4, !tbaa !9
  %16 = icmp eq i32 %15, 16000
  br i1 %16, label %17, label %21

17:                                               ; preds = %14, %11
  %18 = load i32, ptr %5, align 4, !tbaa !9
  %19 = load ptr, ptr %4, align 8, !tbaa !5
  %20 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %19, i32 0, i32 0
  store i32 %18, ptr %20, align 8, !tbaa !11
  br label %22

21:                                               ; preds = %14
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %290

22:                                               ; preds = %17
  %23 = load ptr, ptr %4, align 8, !tbaa !5
  %24 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %23, i32 0, i32 2
  store i64 0, ptr %24, align 8, !tbaa !16
  %25 = load i32, ptr %5, align 4, !tbaa !9
  %26 = icmp eq i32 %25, 8000
  br i1 %26, label %27, label %34

27:                                               ; preds = %22
  %28 = load ptr, ptr %4, align 8, !tbaa !5
  %29 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %28, i32 0, i32 1
  store i64 80, ptr %29, align 8, !tbaa !17
  %30 = load ptr, ptr %4, align 8, !tbaa !5
  %31 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %30, i32 0, i32 3
  store i64 128, ptr %31, align 8, !tbaa !18
  %32 = load ptr, ptr %4, align 8, !tbaa !5
  %33 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %32, i32 0, i32 7
  store ptr @kBlocks80w128, ptr %33, align 8, !tbaa !19
  br label %41

34:                                               ; preds = %22
  %35 = load ptr, ptr %4, align 8, !tbaa !5
  %36 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %35, i32 0, i32 1
  store i64 160, ptr %36, align 8, !tbaa !17
  %37 = load ptr, ptr %4, align 8, !tbaa !5
  %38 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %37, i32 0, i32 3
  store i64 256, ptr %38, align 8, !tbaa !18
  %39 = load ptr, ptr %4, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %39, i32 0, i32 7
  store ptr @kBlocks160w256, ptr %40, align 8, !tbaa !19
  br label %41

41:                                               ; preds = %34, %27
  %42 = load ptr, ptr %4, align 8, !tbaa !5
  %43 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %42, i32 0, i32 3
  %44 = load i64, ptr %43, align 8, !tbaa !18
  %45 = udiv i64 %44, 2
  %46 = add i64 %45, 1
  %47 = load ptr, ptr %4, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %47, i32 0, i32 4
  store i64 %46, ptr %48, align 8, !tbaa !20
  %49 = load ptr, ptr %4, align 8, !tbaa !5
  %50 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %49, i32 0, i32 4
  %51 = load i64, ptr %50, align 8, !tbaa !20
  %52 = uitofp i64 %51 to float
  %53 = fdiv float 1.000000e+00, %52
  %54 = load ptr, ptr %4, align 8, !tbaa !5
  %55 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %54, i32 0, i32 5
  store float %53, ptr %55, align 8, !tbaa !21
  %56 = load ptr, ptr %4, align 8, !tbaa !5
  %57 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %56, i32 0, i32 23
  %58 = getelementptr inbounds [128 x i64], ptr %57, i64 0, i64 0
  store i64 0, ptr %58, align 8, !tbaa !22
  %59 = load ptr, ptr %4, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %59, i32 0, i32 9
  %61 = getelementptr inbounds [256 x float], ptr %60, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 8 %61, i8 0, i64 1024, i1 false)
  %62 = load ptr, ptr %4, align 8, !tbaa !5
  %63 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %62, i32 0, i32 3
  %64 = load i64, ptr %63, align 8, !tbaa !18
  %65 = load ptr, ptr %4, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %65, i32 0, i32 9
  %67 = getelementptr inbounds [256 x float], ptr %66, i64 0, i64 0
  %68 = load ptr, ptr %4, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %68, i32 0, i32 23
  %70 = getelementptr inbounds [128 x i64], ptr %69, i64 0, i64 0
  %71 = load ptr, ptr %4, align 8, !tbaa !5
  %72 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %71, i32 0, i32 24
  %73 = getelementptr inbounds [128 x float], ptr %72, i64 0, i64 0
  call void @WebRtc_rdft(i64 noundef %64, i32 noundef 1, ptr noundef %67, ptr noundef %70, ptr noundef %73)
  %74 = load ptr, ptr %4, align 8, !tbaa !5
  %75 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %74, i32 0, i32 8
  %76 = getelementptr inbounds [256 x float], ptr %75, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 8 %76, i8 0, i64 1024, i1 false)
  %77 = load ptr, ptr %4, align 8, !tbaa !5
  %78 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %77, i32 0, i32 9
  %79 = getelementptr inbounds [256 x float], ptr %78, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 8 %79, i8 0, i64 1024, i1 false)
  %80 = load ptr, ptr %4, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %80, i32 0, i32 10
  %82 = getelementptr inbounds [256 x float], ptr %81, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 8 %82, i8 0, i64 1024, i1 false)
  %83 = load ptr, ptr %4, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %83, i32 0, i32 48
  %85 = getelementptr inbounds [2 x [256 x float]], ptr %84, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 8 %85, i8 0, i64 2048, i1 false)
  %86 = load ptr, ptr %4, align 8, !tbaa !5
  %87 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %86, i32 0, i32 14
  %88 = getelementptr inbounds [129 x float], ptr %87, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 4 %88, i8 0, i64 516, i1 false)
  store i32 0, ptr %6, align 4, !tbaa !9
  br label %89

89:                                               ; preds = %103, %41
  %90 = load i32, ptr %6, align 4, !tbaa !9
  %91 = icmp slt i32 %90, 387
  br i1 %91, label %92, label %106

92:                                               ; preds = %89
  %93 = load ptr, ptr %4, align 8, !tbaa !5
  %94 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %93, i32 0, i32 13
  %95 = load i32, ptr %6, align 4, !tbaa !9
  %96 = sext i32 %95 to i64
  %97 = getelementptr inbounds [387 x float], ptr %94, i64 0, i64 %96
  store float 8.000000e+00, ptr %97, align 4, !tbaa !23
  %98 = load ptr, ptr %4, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %98, i32 0, i32 12
  %100 = load i32, ptr %6, align 4, !tbaa !9
  %101 = sext i32 %100 to i64
  %102 = getelementptr inbounds [387 x float], ptr %99, i64 0, i64 %101
  store float 0x3FD3333340000000, ptr %102, align 4, !tbaa !23
  br label %103

103:                                              ; preds = %92
  %104 = load i32, ptr %6, align 4, !tbaa !9
  %105 = add nsw i32 %104, 1
  store i32 %105, ptr %6, align 4, !tbaa !9
  br label %89, !llvm.loop !24

106:                                              ; preds = %89
  store i32 0, ptr %6, align 4, !tbaa !9
  br label %107

107:                                              ; preds = %123, %106
  %108 = load i32, ptr %6, align 4, !tbaa !9
  %109 = icmp slt i32 %108, 3
  br i1 %109, label %110, label %126

110:                                              ; preds = %107
  %111 = load i32, ptr %6, align 4, !tbaa !9
  %112 = add nsw i32 %111, 1
  %113 = mul nsw i32 200, %112
  %114 = sitofp i32 %113 to float
  %115 = fdiv float %114, 3.000000e+00
  %116 = call float @llvm.floor.f32(float %115)
  %117 = fptosi float %116 to i32
  %118 = load ptr, ptr %4, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %118, i32 0, i32 15
  %120 = load i32, ptr %6, align 4, !tbaa !9
  %121 = sext i32 %120 to i64
  %122 = getelementptr inbounds [3 x i32], ptr %119, i64 0, i64 %121
  store i32 %117, ptr %122, align 4, !tbaa !9
  br label %123

123:                                              ; preds = %110
  %124 = load i32, ptr %6, align 4, !tbaa !9
  %125 = add nsw i32 %124, 1
  store i32 %125, ptr %6, align 4, !tbaa !9
  br label %107, !llvm.loop !26

126:                                              ; preds = %107
  %127 = load ptr, ptr %4, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %127, i32 0, i32 16
  store i32 0, ptr %128, align 4, !tbaa !27
  store i32 0, ptr %6, align 4, !tbaa !9
  br label %129

129:                                              ; preds = %164, %126
  %130 = load i32, ptr %6, align 4, !tbaa !9
  %131 = icmp slt i32 %130, 129
  br i1 %131, label %132, label %167

132:                                              ; preds = %129
  %133 = load ptr, ptr %4, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %133, i32 0, i32 17
  %135 = load i32, ptr %6, align 4, !tbaa !9
  %136 = sext i32 %135 to i64
  %137 = getelementptr inbounds [129 x float], ptr %134, i64 0, i64 %136
  store float 1.000000e+00, ptr %137, align 4, !tbaa !23
  %138 = load i32, ptr %6, align 4, !tbaa !9
  %139 = sitofp i32 %138 to float
  %140 = call float @log1pf(float noundef %139) #5
  %141 = load ptr, ptr %4, align 8, !tbaa !5
  %142 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %141, i32 0, i32 18
  %143 = load i32, ptr %6, align 4, !tbaa !9
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds [129 x float], ptr %142, i64 0, i64 %144
  store float %140, ptr %145, align 4, !tbaa !23
  %146 = load ptr, ptr %4, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %146, i32 0, i32 18
  %148 = load i32, ptr %6, align 4, !tbaa !9
  %149 = sext i32 %148 to i64
  %150 = getelementptr inbounds [129 x float], ptr %147, i64 0, i64 %149
  %151 = load float, ptr %150, align 4, !tbaa !23
  %152 = load ptr, ptr %4, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %152, i32 0, i32 18
  %154 = load i32, ptr %6, align 4, !tbaa !9
  %155 = sext i32 %154 to i64
  %156 = getelementptr inbounds [129 x float], ptr %153, i64 0, i64 %155
  %157 = load float, ptr %156, align 4, !tbaa !23
  %158 = fmul float %151, %157
  %159 = load ptr, ptr %4, align 8, !tbaa !5
  %160 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %159, i32 0, i32 19
  %161 = load i32, ptr %6, align 4, !tbaa !9
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds [129 x float], ptr %160, i64 0, i64 %162
  store float %158, ptr %163, align 4, !tbaa !23
  br label %164

164:                                              ; preds = %132
  %165 = load i32, ptr %6, align 4, !tbaa !9
  %166 = add nsw i32 %165, 1
  store i32 %166, ptr %6, align 4, !tbaa !9
  br label %129, !llvm.loop !28

167:                                              ; preds = %129
  %168 = load ptr, ptr %4, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %168, i32 0, i32 6
  store i32 0, ptr %169, align 4, !tbaa !29
  %170 = load ptr, ptr %4, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %170, i32 0, i32 33
  store float 5.000000e-01, ptr %171, align 4, !tbaa !30
  %172 = load ptr, ptr %4, align 8, !tbaa !5
  %173 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %172, i32 0, i32 30
  %174 = getelementptr inbounds [129 x float], ptr %173, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 8 %174, i8 0, i64 516, i1 false)
  %175 = load ptr, ptr %4, align 8, !tbaa !5
  %176 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %175, i32 0, i32 31
  %177 = getelementptr inbounds [129 x float], ptr %176, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 4 %177, i8 0, i64 516, i1 false)
  %178 = load ptr, ptr %4, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %178, i32 0, i32 28
  %180 = getelementptr inbounds [129 x float], ptr %179, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 8 %180, i8 0, i64 516, i1 false)
  %181 = load ptr, ptr %4, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %181, i32 0, i32 29
  %183 = getelementptr inbounds [129 x float], ptr %182, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 4 %183, i8 0, i64 516, i1 false)
  %184 = load ptr, ptr %4, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %184, i32 0, i32 35
  %186 = getelementptr inbounds [129 x float], ptr %185, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 4 %186, i8 0, i64 516, i1 false)
  %187 = load ptr, ptr %4, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %187, i32 0, i32 47
  %189 = getelementptr inbounds [129 x float], ptr %188, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 4 %189, i8 0, i64 516, i1 false)
  %190 = load ptr, ptr %4, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %190, i32 0, i32 39
  %192 = getelementptr inbounds [129 x float], ptr %191, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 4 %192, i8 0, i64 516, i1 false)
  store i32 0, ptr %6, align 4, !tbaa !9
  br label %193

193:                                              ; preds = %202, %167
  %194 = load i32, ptr %6, align 4, !tbaa !9
  %195 = icmp slt i32 %194, 129
  br i1 %195, label %196, label %205

196:                                              ; preds = %193
  %197 = load ptr, ptr %4, align 8, !tbaa !5
  %198 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %197, i32 0, i32 32
  %199 = load i32, ptr %6, align 4, !tbaa !9
  %200 = sext i32 %199 to i64
  %201 = getelementptr inbounds [129 x float], ptr %198, i64 0, i64 %200
  store float 5.000000e-01, ptr %201, align 4, !tbaa !23
  br label %202

202:                                              ; preds = %196
  %203 = load i32, ptr %6, align 4, !tbaa !9
  %204 = add nsw i32 %203, 1
  store i32 %204, ptr %6, align 4, !tbaa !9
  br label %193, !llvm.loop !31

205:                                              ; preds = %193
  %206 = load ptr, ptr %4, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %206, i32 0, i32 34
  %208 = getelementptr inbounds [7 x float], ptr %207, i64 0, i64 0
  store float 5.000000e-01, ptr %208, align 8, !tbaa !23
  %209 = load ptr, ptr %4, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %209, i32 0, i32 34
  %211 = getelementptr inbounds [7 x float], ptr %210, i64 0, i64 1
  store float 0.000000e+00, ptr %211, align 4, !tbaa !23
  %212 = load ptr, ptr %4, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %212, i32 0, i32 34
  %214 = getelementptr inbounds [7 x float], ptr %213, i64 0, i64 2
  store float 0.000000e+00, ptr %214, align 8, !tbaa !23
  %215 = load ptr, ptr %4, align 8, !tbaa !5
  %216 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %215, i32 0, i32 34
  %217 = getelementptr inbounds [7 x float], ptr %216, i64 0, i64 3
  store float 5.000000e-01, ptr %217, align 4, !tbaa !23
  %218 = load ptr, ptr %4, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %218, i32 0, i32 34
  %220 = getelementptr inbounds [7 x float], ptr %219, i64 0, i64 4
  store float 5.000000e-01, ptr %220, align 8, !tbaa !23
  %221 = load ptr, ptr %4, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %221, i32 0, i32 34
  %223 = getelementptr inbounds [7 x float], ptr %222, i64 0, i64 5
  store float 0.000000e+00, ptr %223, align 4, !tbaa !23
  %224 = load ptr, ptr %4, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %224, i32 0, i32 34
  %226 = getelementptr inbounds [7 x float], ptr %225, i64 0, i64 6
  store float 0.000000e+00, ptr %226, align 8, !tbaa !23
  %227 = load ptr, ptr %4, align 8, !tbaa !5
  %228 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %227, i32 0, i32 44
  %229 = getelementptr inbounds [1000 x i32], ptr %228, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 4 %229, i8 0, i64 4000, i1 false)
  %230 = load ptr, ptr %4, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %230, i32 0, i32 45
  %232 = getelementptr inbounds [1000 x i32], ptr %231, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 4 %232, i8 0, i64 4000, i1 false)
  %233 = load ptr, ptr %4, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %233, i32 0, i32 46
  %235 = getelementptr inbounds [1000 x i32], ptr %234, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 4 %235, i8 0, i64 4000, i1 false)
  %236 = load ptr, ptr %4, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %236, i32 0, i32 25
  store i32 -1, ptr %237, align 8, !tbaa !32
  %238 = load ptr, ptr %4, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %238, i32 0, i32 27
  %240 = getelementptr inbounds [7 x float], ptr %239, i64 0, i64 0
  store float 5.000000e-01, ptr %240, align 4, !tbaa !23
  %241 = load ptr, ptr %4, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %241, i32 0, i32 27
  %243 = getelementptr inbounds [7 x float], ptr %242, i64 0, i64 1
  store float 5.000000e-01, ptr %243, align 4, !tbaa !23
  %244 = load ptr, ptr %4, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %244, i32 0, i32 27
  %246 = getelementptr inbounds [7 x float], ptr %245, i64 0, i64 2
  store float 1.000000e+00, ptr %246, align 4, !tbaa !23
  %247 = load ptr, ptr %4, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %247, i32 0, i32 27
  %249 = getelementptr inbounds [7 x float], ptr %248, i64 0, i64 3
  store float 5.000000e-01, ptr %249, align 4, !tbaa !23
  %250 = load ptr, ptr %4, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %250, i32 0, i32 27
  %252 = getelementptr inbounds [7 x float], ptr %251, i64 0, i64 4
  store float 1.000000e+00, ptr %252, align 4, !tbaa !23
  %253 = load ptr, ptr %4, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %253, i32 0, i32 27
  %255 = getelementptr inbounds [7 x float], ptr %254, i64 0, i64 5
  store float 0.000000e+00, ptr %255, align 4, !tbaa !23
  %256 = load ptr, ptr %4, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %256, i32 0, i32 27
  %258 = getelementptr inbounds [7 x float], ptr %257, i64 0, i64 6
  store float 0.000000e+00, ptr %258, align 4, !tbaa !23
  %259 = load ptr, ptr %4, align 8, !tbaa !5
  %260 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %259, i32 0, i32 26
  %261 = getelementptr inbounds [4 x i32], ptr %260, i64 0, i64 0
  store i32 2, ptr %261, align 4, !tbaa !9
  %262 = load ptr, ptr %4, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %262, i32 0, i32 26
  %264 = getelementptr inbounds [4 x i32], ptr %263, i64 0, i64 1
  store i32 500, ptr %264, align 4, !tbaa !9
  %265 = load ptr, ptr %4, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %265, i32 0, i32 26
  %267 = getelementptr inbounds [4 x i32], ptr %266, i64 0, i64 2
  store i32 0, ptr %267, align 4, !tbaa !9
  %268 = load ptr, ptr %4, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %268, i32 0, i32 26
  %270 = getelementptr inbounds [4 x i32], ptr %269, i64 0, i64 1
  %271 = load i32, ptr %270, align 4, !tbaa !9
  %272 = load ptr, ptr %4, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %272, i32 0, i32 26
  %274 = getelementptr inbounds [4 x i32], ptr %273, i64 0, i64 3
  store i32 %271, ptr %274, align 4, !tbaa !9
  %275 = load ptr, ptr %4, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %275, i32 0, i32 36
  store float 0.000000e+00, ptr %276, align 8, !tbaa !33
  %277 = load ptr, ptr %4, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %277, i32 0, i32 37
  store float 0.000000e+00, ptr %278, align 4, !tbaa !34
  %279 = load ptr, ptr %4, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %279, i32 0, i32 38
  store float 0.000000e+00, ptr %280, align 8, !tbaa !35
  %281 = load ptr, ptr %4, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %281, i32 0, i32 40
  store float 0.000000e+00, ptr %282, align 8, !tbaa !36
  %283 = load ptr, ptr %4, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %283, i32 0, i32 41
  store float 0.000000e+00, ptr %284, align 4, !tbaa !37
  %285 = load ptr, ptr %4, align 8, !tbaa !5
  call void @set_feature_extraction_parameters(ptr noundef %285)
  %286 = load ptr, ptr %4, align 8, !tbaa !5
  %287 = call i32 @WebRtcNs_set_policy_core(ptr noundef %286, i32 noundef 0)
  %288 = load ptr, ptr %4, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.NoiseSuppressionC_, ptr %288, i32 0, i32 11
  store i32 1, ptr %289, align 8, !tbaa !38
  store i32 0, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %290

290:                                              ; preds = %205, %21, %10
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #5
  %291 = load i32, ptr %3, align 4
  ret i32 %291
}

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

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

; Function Attrs: nounwind
declare float @log1pf(float noundef) #4

; Function Attrs: nounwind uwtable
declare hidden void @set_feature_extraction_parameters(ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local i32 @WebRtcNs_set_policy_core(ptr noundef, i32 noundef) #0

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nounwind "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 #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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"NoiseSuppressionC_", !10, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !14, i64 40, !10, i64 44, !6, i64 48, !7, i64 56, !7, i64 1080, !7, i64 2104, !10, i64 3128, !7, i64 3132, !7, i64 4680, !7, i64 6228, !7, i64 6744, !10, i64 6756, !7, i64 6760, !7, i64 7276, !7, i64 7792, !14, i64 8308, !14, i64 8312, !10, i64 8316, !7, i64 8320, !7, i64 9344, !10, i64 9856, !7, i64 9860, !7, i64 9876, !7, i64 9904, !7, i64 10420, !7, i64 10936, !7, i64 11452, !7, i64 11968, !14, i64 12484, !7, i64 12488, !7, i64 12516, !14, i64 13032, !14, i64 13036, !14, i64 13040, !7, i64 13044, !14, i64 13560, !14, i64 13564, !7, i64 13568, !15, i64 14084, !7, i64 14164, !7, i64 18164, !7, i64 22164, !7, i64 26164, !7, i64 26680}
!13 = !{!"long", !7, i64 0}
!14 = !{!"float", !7, i64 0}
!15 = !{!"NSParaExtract_", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !14, i64 24, !14, i64 28, !14, i64 32, !14, i64 36, !14, i64 40, !14, i64 44, !14, i64 48, !14, i64 52, !14, i64 56, !14, i64 60, !14, i64 64, !14, i64 68, !10, i64 72, !10, i64 76}
!16 = !{!12, !13, i64 16}
!17 = !{!12, !13, i64 8}
!18 = !{!12, !13, i64 24}
!19 = !{!12, !6, i64 48}
!20 = !{!12, !13, i64 32}
!21 = !{!12, !14, i64 40}
!22 = !{!13, !13, i64 0}
!23 = !{!14, !14, i64 0}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = distinct !{!26, !25}
!27 = !{!12, !10, i64 6756}
!28 = distinct !{!28, !25}
!29 = !{!12, !10, i64 44}
!30 = !{!12, !14, i64 12484}
!31 = distinct !{!31, !25}
!32 = !{!12, !10, i64 9856}
!33 = !{!12, !14, i64 13032}
!34 = !{!12, !14, i64 13036}
!35 = !{!12, !14, i64 13040}
!36 = !{!12, !14, i64 13560}
!37 = !{!12, !14, i64 13564}
!38 = !{!12, !10, i64 3128}


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

@kBlocks80w128 = external hidden constant [128 x float], align 16
@kBlocks160w256 = external hidden constant [256 x float], align 16

; Function Attrs: nounwind uwtable
declare dso_local void @WebRtc_rdft(i64 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local range(i32 -1, 1) i32 @WebRtcNs_InitCore(ptr noundef %0, i32 noundef %1) local_unnamed_addr #0 {
  %3 = icmp eq ptr %0, null
  br i1 %3, label %108, label %4

4:                                                ; preds = %2
  switch i32 %1, label %108 [
    i32 16000, label %vector.ph
    i32 8000, label %vector.ph
  ]

vector.ph:                                        ; preds = %4, %4
  %5 = icmp eq i32 %1, 8000
  store i32 %1, ptr %0, align 8, !tbaa !5
  %6 = getelementptr inbounds i8, ptr %0, i64 16
  store i64 0, ptr %6, align 8, !tbaa !14
  %.sink117 = select i1 %5, i64 80, i64 160
  %.sink = select i1 %5, i64 128, i64 256
  %kBlocks160w256.sink = select i1 %5, ptr @kBlocks80w128, ptr @kBlocks160w256
  %7 = getelementptr inbounds i8, ptr %0, i64 8
  store i64 %.sink117, ptr %7, align 8
  %8 = getelementptr inbounds i8, ptr %0, i64 24
  store i64 %.sink, ptr %8, align 8
  %9 = getelementptr inbounds i8, ptr %0, i64 48
  store ptr %kBlocks160w256.sink, ptr %9, align 8
  %10 = lshr exact i64 %.sink, 1
  %11 = or disjoint i64 %10, 1
  %12 = getelementptr inbounds i8, ptr %0, i64 32
  store i64 %11, ptr %12, align 8, !tbaa !15
  %13 = uitofp nneg i64 %11 to float
  %14 = fdiv float 1.000000e+00, %13
  %15 = getelementptr inbounds i8, ptr %0, i64 40
  store float %14, ptr %15, align 8, !tbaa !16
  %16 = getelementptr inbounds i8, ptr %0, i64 8320
  store i64 0, ptr %16, align 8, !tbaa !17
  %17 = getelementptr inbounds i8, ptr %0, i64 1080
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1024) %17, i8 0, i64 1024, i1 false)
  %18 = getelementptr inbounds i8, ptr %0, i64 9344
  tail call void @WebRtc_rdft(i64 noundef %.sink, i32 noundef 1, ptr noundef nonnull %17, ptr noundef nonnull %16, ptr noundef nonnull %18)
  %19 = getelementptr inbounds i8, ptr %0, i64 56
  %20 = getelementptr inbounds i8, ptr %0, i64 26680
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(2048) %20, i8 0, i64 2048, i1 false)
  %21 = getelementptr inbounds i8, ptr %0, i64 6228
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(516) %21, i8 0, i64 516, i1 false)
  %22 = getelementptr inbounds i8, ptr %0, i64 4680
  %23 = getelementptr inbounds i8, ptr %0, i64 3132
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(3072) %19, i8 0, i64 3072, i1 false)
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next.2, %vector.body ]
  %24 = getelementptr inbounds [387 x float], ptr %22, i64 0, i64 %index
  %25 = getelementptr inbounds i8, ptr %24, i64 16
  store <4 x float> <float 8.000000e+00, float 8.000000e+00, float 8.000000e+00, float 8.000000e+00>, ptr %24, align 4, !tbaa !18
  store <4 x float> <float 8.000000e+00, float 8.000000e+00, float 8.000000e+00, float 8.000000e+00>, ptr %25, align 4, !tbaa !18
  %26 = getelementptr inbounds [387 x float], ptr %23, i64 0, i64 %index
  %27 = getelementptr inbounds i8, ptr %26, i64 16
  store <4 x float> <float 0x3FD3333340000000, float 0x3FD3333340000000, float 0x3FD3333340000000, float 0x3FD3333340000000>, ptr %26, align 4, !tbaa !18
  store <4 x float> <float 0x3FD3333340000000, float 0x3FD3333340000000, float 0x3FD3333340000000, float 0x3FD3333340000000>, ptr %27, align 4, !tbaa !18
  %index.next = add nuw nsw i64 %index, 8
  %28 = getelementptr inbounds [387 x float], ptr %22, i64 0, i64 %index.next
  %29 = getelementptr inbounds i8, ptr %28, i64 16
  store <4 x float> <float 8.000000e+00, float 8.000000e+00, float 8.000000e+00, float 8.000000e+00>, ptr %28, align 4, !tbaa !18
  store <4 x float> <float 8.000000e+00, float 8.000000e+00, float 8.000000e+00, float 8.000000e+00>, ptr %29, align 4, !tbaa !18
  %30 = getelementptr inbounds [387 x float], ptr %23, i64 0, i64 %index.next
  %31 = getelementptr inbounds i8, ptr %30, i64 16
  store <4 x float> <float 0x3FD3333340000000, float 0x3FD3333340000000, float 0x3FD3333340000000, float 0x3FD3333340000000>, ptr %30, align 4, !tbaa !18
  store <4 x float> <float 0x3FD3333340000000, float 0x3FD3333340000000, float 0x3FD3333340000000, float 0x3FD3333340000000>, ptr %31, align 4, !tbaa !18
  %index.next.1 = add nuw nsw i64 %index, 16
  %32 = getelementptr inbounds [387 x float], ptr %22, i64 0, i64 %index.next.1
  %33 = getelementptr inbounds i8, ptr %32, i64 16
  store <4 x float> <float 8.000000e+00, float 8.000000e+00, float 8.000000e+00, float 8.000000e+00>, ptr %32, align 4, !tbaa !18
  store <4 x float> <float 8.000000e+00, float 8.000000e+00, float 8.000000e+00, float 8.000000e+00>, ptr %33, align 4, !tbaa !18
  %34 = getelementptr inbounds [387 x float], ptr %23, i64 0, i64 %index.next.1
  %35 = getelementptr inbounds i8, ptr %34, i64 16
  store <4 x float> <float 0x3FD3333340000000, float 0x3FD3333340000000, float 0x3FD3333340000000, float 0x3FD3333340000000>, ptr %34, align 4, !tbaa !18
  store <4 x float> <float 0x3FD3333340000000, float 0x3FD3333340000000, float 0x3FD3333340000000, float 0x3FD3333340000000>, ptr %35, align 4, !tbaa !18
  %index.next.2 = add nuw nsw i64 %index, 24
  %36 = icmp eq i64 %index.next.2, 384
  br i1 %36, label %scalar.ph, label %vector.body, !llvm.loop !19

scalar.ph:                                        ; preds = %vector.body
  %37 = getelementptr inbounds i8, ptr %0, i64 6216
  store float 8.000000e+00, ptr %37, align 4, !tbaa !18
  %38 = getelementptr inbounds i8, ptr %0, i64 4668
  store float 0x3FD3333340000000, ptr %38, align 4, !tbaa !18
  %39 = getelementptr inbounds i8, ptr %0, i64 6220
  store float 8.000000e+00, ptr %39, align 4, !tbaa !18
  %40 = getelementptr inbounds i8, ptr %0, i64 4672
  store float 0x3FD3333340000000, ptr %40, align 4, !tbaa !18
  %41 = getelementptr inbounds i8, ptr %0, i64 6224
  store float 8.000000e+00, ptr %41, align 4, !tbaa !18
  %42 = getelementptr inbounds i8, ptr %0, i64 4676
  store float 0x3FD3333340000000, ptr %42, align 4, !tbaa !18
  %43 = getelementptr inbounds i8, ptr %0, i64 6744
  store <4 x i32> <i32 66, i32 133, i32 200, i32 0>, ptr %43, align 4, !tbaa !23
  %44 = getelementptr inbounds i8, ptr %0, i64 6760
  %45 = getelementptr inbounds i8, ptr %0, i64 7276
  %46 = getelementptr inbounds i8, ptr %0, i64 7792
  br label %47

47:                                               ; preds = %scalar.ph, %47
  %indvars.iv109 = phi i64 [ 0, %scalar.ph ], [ %indvars.iv.next110, %47 ]
  %48 = getelementptr inbounds [129 x float], ptr %44, i64 0, i64 %indvars.iv109
  store float 1.000000e+00, ptr %48, align 4, !tbaa !18
  %49 = trunc nuw nsw i64 %indvars.iv109 to i32
  %50 = uitofp nneg i32 %49 to float
  %51 = tail call float @log1pf(float noundef %50) #3
  %52 = getelementptr inbounds [129 x float], ptr %45, i64 0, i64 %indvars.iv109
  store float %51, ptr %52, align 4, !tbaa !18
  %53 = fmul float %51, %51
  %54 = getelementptr inbounds [129 x float], ptr %46, i64 0, i64 %indvars.iv109
  store float %53, ptr %54, align 4, !tbaa !18
  %indvars.iv.next110 = add nuw nsw i64 %indvars.iv109, 1
  %exitcond112.not = icmp eq i64 %indvars.iv.next110, 129
  br i1 %exitcond112.not, label %vector.ph120, label %47, !llvm.loop !24

vector.ph120:                                     ; preds = %47
  %55 = getelementptr inbounds i8, ptr %0, i64 44
  store i32 0, ptr %55, align 4, !tbaa !25
  %56 = getelementptr inbounds i8, ptr %0, i64 12484
  store float 5.000000e-01, ptr %56, align 4, !tbaa !26
  %57 = getelementptr inbounds i8, ptr %0, i64 9904
  %58 = getelementptr inbounds i8, ptr %0, i64 12516
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(516) %58, i8 0, i64 516, i1 false)
  %59 = getelementptr inbounds i8, ptr %0, i64 26164
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(516) %59, i8 0, i64 516, i1 false)
  %60 = getelementptr inbounds i8, ptr %0, i64 13044
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(516) %60, i8 0, i64 516, i1 false)
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(2064) %57, i8 0, i64 2064, i1 false)
  %61 = getelementptr inbounds i8, ptr %0, i64 11968
  %62 = getelementptr inbounds i8, ptr %0, i64 11984
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %61, align 4, !tbaa !18
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %62, align 4, !tbaa !18
  %63 = getelementptr inbounds i8, ptr %0, i64 12000
  %64 = getelementptr inbounds i8, ptr %0, i64 12016
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %63, align 4, !tbaa !18
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %64, align 4, !tbaa !18
  %65 = getelementptr inbounds i8, ptr %0, i64 12032
  %66 = getelementptr inbounds i8, ptr %0, i64 12048
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %65, align 4, !tbaa !18
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %66, align 4, !tbaa !18
  %67 = getelementptr inbounds i8, ptr %0, i64 12064
  %68 = getelementptr inbounds i8, ptr %0, i64 12080
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %67, align 4, !tbaa !18
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %68, align 4, !tbaa !18
  %69 = getelementptr inbounds i8, ptr %0, i64 12096
  %70 = getelementptr inbounds i8, ptr %0, i64 12112
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %69, align 4, !tbaa !18
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %70, align 4, !tbaa !18
  %71 = getelementptr inbounds i8, ptr %0, i64 12128
  %72 = getelementptr inbounds i8, ptr %0, i64 12144
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %71, align 4, !tbaa !18
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %72, align 4, !tbaa !18
  %73 = getelementptr inbounds i8, ptr %0, i64 12160
  %74 = getelementptr inbounds i8, ptr %0, i64 12176
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %73, align 4, !tbaa !18
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %74, align 4, !tbaa !18
  %75 = getelementptr inbounds i8, ptr %0, i64 12192
  %76 = getelementptr inbounds i8, ptr %0, i64 12208
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %75, align 4, !tbaa !18
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %76, align 4, !tbaa !18
  %77 = getelementptr inbounds i8, ptr %0, i64 12224
  %78 = getelementptr inbounds i8, ptr %0, i64 12240
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %77, align 4, !tbaa !18
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %78, align 4, !tbaa !18
  %79 = getelementptr inbounds i8, ptr %0, i64 12256
  %80 = getelementptr inbounds i8, ptr %0, i64 12272
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %79, align 4, !tbaa !18
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %80, align 4, !tbaa !18
  %81 = getelementptr inbounds i8, ptr %0, i64 12288
  %82 = getelementptr inbounds i8, ptr %0, i64 12304
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %81, align 4, !tbaa !18
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %82, align 4, !tbaa !18
  %83 = getelementptr inbounds i8, ptr %0, i64 12320
  %84 = getelementptr inbounds i8, ptr %0, i64 12336
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %83, align 4, !tbaa !18
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %84, align 4, !tbaa !18
  %85 = getelementptr inbounds i8, ptr %0, i64 12352
  %86 = getelementptr inbounds i8, ptr %0, i64 12368
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %85, align 4, !tbaa !18
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %86, align 4, !tbaa !18
  %87 = getelementptr inbounds i8, ptr %0, i64 12384
  %88 = getelementptr inbounds i8, ptr %0, i64 12400
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %87, align 4, !tbaa !18
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %88, align 4, !tbaa !18
  %89 = getelementptr inbounds i8, ptr %0, i64 12416
  %90 = getelementptr inbounds i8, ptr %0, i64 12432
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %89, align 4, !tbaa !18
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %90, align 4, !tbaa !18
  %91 = getelementptr inbounds i8, ptr %0, i64 12448
  %92 = getelementptr inbounds i8, ptr %0, i64 12464
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %91, align 4, !tbaa !18
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, ptr %92, align 4, !tbaa !18
  %93 = getelementptr inbounds i8, ptr %0, i64 12480
  store float 5.000000e-01, ptr %93, align 4, !tbaa !18
  %94 = getelementptr inbounds i8, ptr %0, i64 12488
  store <4 x float> <float 5.000000e-01, float 0.000000e+00, float 0.000000e+00, float 5.000000e-01>, ptr %94, align 8, !tbaa !18
  %95 = getelementptr inbounds i8, ptr %0, i64 12504
  store <2 x float> <float 5.000000e-01, float 0.000000e+00>, ptr %95, align 8, !tbaa !18
  %96 = getelementptr inbounds i8, ptr %0, i64 12512
  store float 0.000000e+00, ptr %96, align 8, !tbaa !18
  %97 = getelementptr inbounds i8, ptr %0, i64 14164
  %98 = getelementptr inbounds i8, ptr %0, i64 9856
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(12000) %97, i8 0, i64 12000, i1 false)
  %99 = getelementptr inbounds i8, ptr %0, i64 9876
  store <4 x float> <float 5.000000e-01, float 5.000000e-01, float 1.000000e+00, float 5.000000e-01>, ptr %99, align 4, !tbaa !18
  %100 = getelementptr inbounds i8, ptr %0, i64 9892
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %100, align 4, !tbaa !18
  %101 = getelementptr inbounds i8, ptr %0, i64 9900
  store float 0.000000e+00, ptr %101, align 4, !tbaa !18
  store <4 x i32> <i32 -1, i32 2, i32 500, i32 0>, ptr %98, align 8, !tbaa !23
  %102 = getelementptr inbounds i8, ptr %0, i64 9872
  store i32 500, ptr %102, align 4, !tbaa !23
  %103 = getelementptr inbounds i8, ptr %0, i64 13032
  store <2 x float> zeroinitializer, ptr %103, align 8, !tbaa !18
  %104 = getelementptr inbounds i8, ptr %0, i64 13040
  store float 0.000000e+00, ptr %104, align 8, !tbaa !27
  %105 = getelementptr inbounds i8, ptr %0, i64 13560
  store <2 x float> zeroinitializer, ptr %105, align 8, !tbaa !18
  tail call void @set_feature_extraction_parameters(ptr noundef nonnull %0)
  %106 = tail call i32 @WebRtcNs_set_policy_core(ptr noundef nonnull %0, i32 noundef 0)
  %107 = getelementptr inbounds i8, ptr %0, i64 3128
  store i32 1, ptr %107, align 8, !tbaa !28
  br label %108

108:                                              ; preds = %4, %2, %vector.ph120
  %.098 = phi i32 [ 0, %vector.ph120 ], [ -1, %2 ], [ -1, %4 ]
  ret i32 %.098
}

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare float @log1pf(float noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden void @set_feature_extraction_parameters(ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local i32 @WebRtcNs_set_policy_core(ptr noundef, i32 noundef) local_unnamed_addr #0

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #2 = { mustprogress nofree nounwind willreturn memory(write) "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 = { 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, !7, i64 0}
!6 = !{!"NoiseSuppressionC_", !7, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !11, i64 40, !7, i64 44, !12, i64 48, !8, i64 56, !8, i64 1080, !8, i64 2104, !7, i64 3128, !8, i64 3132, !8, i64 4680, !8, i64 6228, !8, i64 6744, !7, i64 6756, !8, i64 6760, !8, i64 7276, !8, i64 7792, !11, i64 8308, !11, i64 8312, !7, i64 8316, !8, i64 8320, !8, i64 9344, !7, i64 9856, !8, i64 9860, !8, i64 9876, !8, i64 9904, !8, i64 10420, !8, i64 10936, !8, i64 11452, !8, i64 11968, !11, i64 12484, !8, i64 12488, !8, i64 12516, !11, i64 13032, !11, i64 13036, !11, i64 13040, !8, i64 13044, !11, i64 13560, !11, i64 13564, !8, i64 13568, !13, i64 14084, !8, i64 14164, !8, i64 18164, !8, i64 22164, !8, i64 26164, !8, i64 26680}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"long", !8, i64 0}
!11 = !{!"float", !8, i64 0}
!12 = !{!"any pointer", !8, i64 0}
!13 = !{!"NSParaExtract_", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44, !11, i64 48, !11, i64 52, !11, i64 56, !11, i64 60, !11, i64 64, !11, i64 68, !7, i64 72, !7, i64 76}
!14 = !{!6, !10, i64 16}
!15 = !{!6, !10, i64 32}
!16 = !{!6, !11, i64 40}
!17 = !{!10, !10, i64 0}
!18 = !{!11, !11, i64 0}
!19 = distinct !{!19, !20, !21, !22}
!20 = !{!"llvm.loop.mustprogress"}
!21 = !{!"llvm.loop.isvectorized", i32 1}
!22 = !{!"llvm.loop.unroll.runtime.disable"}
!23 = !{!7, !7, i64 0}
!24 = distinct !{!24, !20}
!25 = !{!6, !7, i64 44}
!26 = !{!6, !11, i64 12484}
!27 = !{!6, !11, i64 13040}
!28 = !{!6, !7, i64 3128}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,MemCpyOptPass,MergedLoadStoreMotionPass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass