; LLVM IR from glaretechnologies/substrata :: opus/opus-1.3.1/silk/float (pitch_analysis_core_FLP)

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

@silk_CB_lags_stage2 = external constant [4 x [11 x i8]], align 16
@silk_CB_lags_stage2_10_ms = external constant [2 x [3 x i8]], align 1
@silk_nb_cbk_searchs_stage3 = external constant [3 x i8], align 1
@silk_CB_lags_stage3 = external constant [4 x [34 x i8]], align 16
@silk_CB_lags_stage3_10_ms = external constant [2 x [12 x i8]], align 16

; Function Attrs: nounwind uwtable
define dso_local i32 @silk_pitch_analysis_core_FLP(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, i32 noundef %5, float noundef %6, float noundef %7, i32 noundef %8, i32 noundef %9, i32 noundef %10, i32 noundef %11) #0 {
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca float, align 4
  %21 = alloca float, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca [320 x float], align 16
  %31 = alloca [160 x float], align 16
  %32 = alloca [320 x i16], align 16
  %33 = alloca [160 x i16], align 16
  %34 = alloca [6 x i32], align 16
  %35 = alloca float, align 4
  %36 = alloca float, align 4
  %37 = alloca [4 x [149 x float]], align 16
  %38 = alloca [65 x float], align 16
  %39 = alloca [11 x float], align 16
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca double, align 8
  %45 = alloca double, align 8
  %46 = alloca [24 x i32], align 16
  %47 = alloca [149 x i16], align 16
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca float, align 4
  %51 = alloca float, align 4
  %52 = alloca float, align 4
  %53 = alloca float, align 4
  %54 = alloca float, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca float, align 4
  %63 = alloca float, align 4
  %64 = alloca float, align 4
  %65 = alloca [4 x [34 x [5 x float]]], align 16
  %66 = alloca [4 x [34 x [5 x float]]], align 16
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca i32, align 4
  %72 = alloca i32, align 4
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = alloca ptr, align 8
  %82 = alloca [640 x i16], align 16
  %83 = alloca [480 x i16], align 16
  %84 = alloca i32, align 4
  store ptr %0, ptr %14, align 8, !tbaa !5
  store ptr %1, ptr %15, align 8, !tbaa !5
  store ptr %2, ptr %16, align 8, !tbaa !5
  store ptr %3, ptr %17, align 8, !tbaa !5
  store ptr %4, ptr %18, align 8, !tbaa !5
  store i32 %5, ptr %19, align 4, !tbaa !9
  store float %6, ptr %20, align 4, !tbaa !11
  store float %7, ptr %21, align 4, !tbaa !11
  store i32 %8, ptr %22, align 4, !tbaa !9
  store i32 %9, ptr %23, align 4, !tbaa !9
  store i32 %10, ptr %24, align 4, !tbaa !9
  store i32 %11, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 1280, ptr %30) #6
  call void @llvm.lifetime.start.p0(i64 640, ptr %31) #6
  call void @llvm.lifetime.start.p0(i64 640, ptr %32) #6
  call void @llvm.lifetime.start.p0(i64 320, ptr %33) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %34) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.start.p0(i64 2384, ptr %37) #6
  call void @llvm.lifetime.start.p0(i64 260, ptr %38) #6
  call void @llvm.lifetime.start.p0(i64 44, ptr %39) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #6
  call void @llvm.lifetime.start.p0(i64 96, ptr %46) #6
  call void @llvm.lifetime.start.p0(i64 298, ptr %47) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #6
  call void @llvm.lifetime.start.p0(i64 2720, ptr %65) #6
  call void @llvm.lifetime.start.p0(i64 2720, ptr %66) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #6
  %85 = load i32, ptr %24, align 4, !tbaa !9
  %86 = mul nsw i32 %85, 5
  %87 = add nsw i32 20, %86
  %88 = load i32, ptr %22, align 4, !tbaa !9
  %89 = mul nsw i32 %87, %88
  store i32 %89, ptr %68, align 4, !tbaa !9
  %90 = load i32, ptr %24, align 4, !tbaa !9
  %91 = mul nsw i32 %90, 5
  %92 = add nsw i32 20, %91
  %93 = mul nsw i32 %92, 4
  store i32 %93, ptr %70, align 4, !tbaa !9
  %94 = load i32, ptr %24, align 4, !tbaa !9
  %95 = mul nsw i32 %94, 5
  %96 = add nsw i32 20, %95
  %97 = mul nsw i32 %96, 8
  store i32 %97, ptr %69, align 4, !tbaa !9
  %98 = load i32, ptr %22, align 4, !tbaa !9
  %99 = mul nsw i32 5, %98
  store i32 %99, ptr %71, align 4, !tbaa !9
  store i32 20, ptr %73, align 4, !tbaa !9
  store i32 40, ptr %72, align 4, !tbaa !9
  %100 = load i32, ptr %22, align 4, !tbaa !9
  %101 = mul nsw i32 2, %100
  store i32 %101, ptr %74, align 4, !tbaa !9
  store i32 8, ptr %76, align 4, !tbaa !9
  store i32 16, ptr %75, align 4, !tbaa !9
  %102 = load i32, ptr %22, align 4, !tbaa !9
  %103 = mul nsw i32 18, %102
  %104 = sub nsw i32 %103, 1
  store i32 %104, ptr %77, align 4, !tbaa !9
  store i32 72, ptr %79, align 4, !tbaa !9
  store i32 143, ptr %78, align 4, !tbaa !9
  %105 = load i32, ptr %22, align 4, !tbaa !9
  %106 = icmp eq i32 %105, 16
  br i1 %106, label %107, label %119

107:                                              ; preds = %12
  call void @llvm.lifetime.start.p0(i64 1280, ptr %82) #6
  %108 = getelementptr inbounds [640 x i16], ptr %82, i64 0, i64 0
  %109 = load ptr, ptr %14, align 8, !tbaa !5
  %110 = load i32, ptr %68, align 4, !tbaa !9
  call void @silk_float2short_array(ptr noundef %108, ptr noundef %109, i32 noundef %110)
  %111 = getelementptr inbounds [6 x i32], ptr %34, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 16 %111, i8 0, i64 8, i1 false)
  %112 = getelementptr inbounds [6 x i32], ptr %34, i64 0, i64 0
  %113 = getelementptr inbounds [320 x i16], ptr %32, i64 0, i64 0
  %114 = getelementptr inbounds [640 x i16], ptr %82, i64 0, i64 0
  %115 = load i32, ptr %68, align 4, !tbaa !9
  call void @silk_resampler_down2(ptr noundef %112, ptr noundef %113, ptr noundef %114, i32 noundef %115)
  %116 = getelementptr inbounds [320 x float], ptr %30, i64 0, i64 0
  %117 = getelementptr inbounds [320 x i16], ptr %32, i64 0, i64 0
  %118 = load i32, ptr %69, align 4, !tbaa !9
  call void @silk_short2float_array(ptr noundef %116, ptr noundef %117, i32 noundef %118)
  call void @llvm.lifetime.end.p0(i64 1280, ptr %82) #6
  br label %139

119:                                              ; preds = %12
  %120 = load i32, ptr %22, align 4, !tbaa !9
  %121 = icmp eq i32 %120, 12
  br i1 %121, label %122, label %134

122:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 960, ptr %83) #6
  %123 = getelementptr inbounds [480 x i16], ptr %83, i64 0, i64 0
  %124 = load ptr, ptr %14, align 8, !tbaa !5
  %125 = load i32, ptr %68, align 4, !tbaa !9
  call void @silk_float2short_array(ptr noundef %123, ptr noundef %124, i32 noundef %125)
  %126 = getelementptr inbounds [6 x i32], ptr %34, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 16 %126, i8 0, i64 24, i1 false)
  %127 = getelementptr inbounds [6 x i32], ptr %34, i64 0, i64 0
  %128 = getelementptr inbounds [320 x i16], ptr %32, i64 0, i64 0
  %129 = getelementptr inbounds [480 x i16], ptr %83, i64 0, i64 0
  %130 = load i32, ptr %68, align 4, !tbaa !9
  call void @silk_resampler_down2_3(ptr noundef %127, ptr noundef %128, ptr noundef %129, i32 noundef %130)
  %131 = getelementptr inbounds [320 x float], ptr %30, i64 0, i64 0
  %132 = getelementptr inbounds [320 x i16], ptr %32, i64 0, i64 0
  %133 = load i32, ptr %69, align 4, !tbaa !9
  call void @silk_short2float_array(ptr noundef %131, ptr noundef %132, i32 noundef %133)
  call void @llvm.lifetime.end.p0(i64 960, ptr %83) #6
  br label %138

134:                                              ; preds = %119
  %135 = getelementptr inbounds [320 x i16], ptr %32, i64 0, i64 0
  %136 = load ptr, ptr %14, align 8, !tbaa !5
  %137 = load i32, ptr %69, align 4, !tbaa !9
  call void @silk_float2short_array(ptr noundef %135, ptr noundef %136, i32 noundef %137)
  br label %138

138:                                              ; preds = %134, %122
  br label %139

139:                                              ; preds = %138, %107
  %140 = getelementptr inbounds [6 x i32], ptr %34, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 16 %140, i8 0, i64 8, i1 false)
  %141 = getelementptr inbounds [6 x i32], ptr %34, i64 0, i64 0
  %142 = getelementptr inbounds [160 x i16], ptr %33, i64 0, i64 0
  %143 = getelementptr inbounds [320 x i16], ptr %32, i64 0, i64 0
  %144 = load i32, ptr %69, align 4, !tbaa !9
  call void @silk_resampler_down2(ptr noundef %141, ptr noundef %142, ptr noundef %143, i32 noundef %144)
  %145 = getelementptr inbounds [160 x float], ptr %31, i64 0, i64 0
  %146 = getelementptr inbounds [160 x i16], ptr %33, i64 0, i64 0
  %147 = load i32, ptr %70, align 4, !tbaa !9
  call void @silk_short2float_array(ptr noundef %145, ptr noundef %146, i32 noundef %147)
  %148 = load i32, ptr %70, align 4, !tbaa !9
  %149 = sub nsw i32 %148, 1
  store i32 %149, ptr %26, align 4, !tbaa !9
  br label %150

150:                                              ; preds = %205, %139
  %151 = load i32, ptr %26, align 4, !tbaa !9
  %152 = icmp sgt i32 %151, 0
  br i1 %152, label %153, label %208

153:                                              ; preds = %150
  %154 = load i32, ptr %26, align 4, !tbaa !9
  %155 = sext i32 %154 to i64
  %156 = getelementptr inbounds [160 x float], ptr %31, i64 0, i64 %155
  %157 = load float, ptr %156, align 4, !tbaa !11
  %158 = fptosi float %157 to i32
  %159 = sitofp i32 %158 to float
  %160 = load i32, ptr %26, align 4, !tbaa !9
  %161 = sub nsw i32 %160, 1
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds [160 x float], ptr %31, i64 0, i64 %162
  %164 = load float, ptr %163, align 4, !tbaa !11
  %165 = fadd float %159, %164
  %166 = fcmp ogt float %165, 3.276700e+04
  br i1 %166, label %167, label %168

167:                                              ; preds = %153
  br label %198

168:                                              ; preds = %153
  %169 = load i32, ptr %26, align 4, !tbaa !9
  %170 = sext i32 %169 to i64
  %171 = getelementptr inbounds [160 x float], ptr %31, i64 0, i64 %170
  %172 = load float, ptr %171, align 4, !tbaa !11
  %173 = fptosi float %172 to i32
  %174 = sitofp i32 %173 to float
  %175 = load i32, ptr %26, align 4, !tbaa !9
  %176 = sub nsw i32 %175, 1
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds [160 x float], ptr %31, i64 0, i64 %177
  %179 = load float, ptr %178, align 4, !tbaa !11
  %180 = fadd float %174, %179
  %181 = fcmp olt float %180, -3.276800e+04
  br i1 %181, label %182, label %183

182:                                              ; preds = %168
  br label %196

183:                                              ; preds = %168
  %184 = load i32, ptr %26, align 4, !tbaa !9
  %185 = sext i32 %184 to i64
  %186 = getelementptr inbounds [160 x float], ptr %31, i64 0, i64 %185
  %187 = load float, ptr %186, align 4, !tbaa !11
  %188 = fptosi float %187 to i32
  %189 = sitofp i32 %188 to float
  %190 = load i32, ptr %26, align 4, !tbaa !9
  %191 = sub nsw i32 %190, 1
  %192 = sext i32 %191 to i64
  %193 = getelementptr inbounds [160 x float], ptr %31, i64 0, i64 %192
  %194 = load float, ptr %193, align 4, !tbaa !11
  %195 = fadd float %189, %194
  br label %196

196:                                              ; preds = %183, %182
  %197 = phi float [ -3.276800e+04, %182 ], [ %195, %183 ]
  br label %198

198:                                              ; preds = %196, %167
  %199 = phi float [ 3.276700e+04, %167 ], [ %197, %196 ]
  %200 = fptosi float %199 to i16
  %201 = sitofp i16 %200 to float
  %202 = load i32, ptr %26, align 4, !tbaa !9
  %203 = sext i32 %202 to i64
  %204 = getelementptr inbounds [160 x float], ptr %31, i64 0, i64 %203
  store float %201, ptr %204, align 4, !tbaa !11
  br label %205

205:                                              ; preds = %198
  %206 = load i32, ptr %26, align 4, !tbaa !9
  %207 = add nsw i32 %206, -1
  store i32 %207, ptr %26, align 4, !tbaa !9
  br label %150, !llvm.loop !13

208:                                              ; preds = %150
  %209 = getelementptr inbounds [4 x [149 x float]], ptr %37, i64 0, i64 0
  %210 = load i32, ptr %24, align 4, !tbaa !9
  %211 = sext i32 %210 to i64
  %212 = mul i64 4, %211
  %213 = mul i64 %212, 149
  call void @llvm.memset.p0.i64(ptr align 16 %209, i8 0, i64 %213, i1 false)
  %214 = load i32, ptr %73, align 4, !tbaa !9
  %215 = shl i32 %214, 2
  %216 = sext i32 %215 to i64
  %217 = getelementptr inbounds [160 x float], ptr %31, i64 0, i64 %216
  store ptr %217, ptr %40, align 8, !tbaa !5
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %218

218:                                              ; preds = %332, %208
  %219 = load i32, ptr %27, align 4, !tbaa !9
  %220 = load i32, ptr %24, align 4, !tbaa !9
  %221 = ashr i32 %220, 1
  %222 = icmp slt i32 %219, %221
  br i1 %222, label %223, label %335

223:                                              ; preds = %218
  %224 = load ptr, ptr %40, align 8, !tbaa !5
  %225 = load i32, ptr %76, align 4, !tbaa !9
  %226 = sext i32 %225 to i64
  %227 = sub i64 0, %226
  %228 = getelementptr inbounds float, ptr %224, i64 %227
  store ptr %228, ptr %41, align 8, !tbaa !5
  %229 = load ptr, ptr %40, align 8, !tbaa !5
  %230 = load ptr, ptr %40, align 8, !tbaa !5
  %231 = load i32, ptr %79, align 4, !tbaa !9
  %232 = sext i32 %231 to i64
  %233 = sub i64 0, %232
  %234 = getelementptr inbounds float, ptr %230, i64 %233
  %235 = getelementptr inbounds [65 x float], ptr %38, i64 0, i64 0
  %236 = load i32, ptr %72, align 4, !tbaa !9
  %237 = load i32, ptr %79, align 4, !tbaa !9
  %238 = load i32, ptr %76, align 4, !tbaa !9
  %239 = sub nsw i32 %237, %238
  %240 = add nsw i32 %239, 1
  %241 = load i32, ptr %25, align 4, !tbaa !9
  call void @celt_pitch_xcorr_c(ptr noundef %229, ptr noundef %234, ptr noundef %235, i32 noundef %236, i32 noundef %240, i32 noundef %241)
  %242 = load i32, ptr %79, align 4, !tbaa !9
  %243 = load i32, ptr %76, align 4, !tbaa !9
  %244 = sub nsw i32 %242, %243
  %245 = sext i32 %244 to i64
  %246 = getelementptr inbounds [65 x float], ptr %38, i64 0, i64 %245
  %247 = load float, ptr %246, align 4, !tbaa !11
  %248 = fpext float %247 to double
  store double %248, ptr %42, align 8, !tbaa !15
  %249 = load ptr, ptr %40, align 8, !tbaa !5
  %250 = load i32, ptr %72, align 4, !tbaa !9
  %251 = call double @silk_energy_FLP(ptr noundef %249, i32 noundef %250)
  %252 = load ptr, ptr %41, align 8, !tbaa !5
  %253 = load i32, ptr %72, align 4, !tbaa !9
  %254 = call double @silk_energy_FLP(ptr noundef %252, i32 noundef %253)
  %255 = fadd double %251, %254
  %256 = load i32, ptr %72, align 4, !tbaa !9
  %257 = sitofp i32 %256 to float
  %258 = fmul float %257, 4.000000e+03
  %259 = fpext float %258 to double
  %260 = fadd double %255, %259
  store double %260, ptr %43, align 8, !tbaa !15
  %261 = load double, ptr %42, align 8, !tbaa !15
  %262 = fmul double 2.000000e+00, %261
  %263 = load double, ptr %43, align 8, !tbaa !15
  %264 = fdiv double %262, %263
  %265 = fptrunc double %264 to float
  %266 = getelementptr inbounds [4 x [149 x float]], ptr %37, i64 0, i64 0
  %267 = load i32, ptr %76, align 4, !tbaa !9
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds [149 x float], ptr %266, i64 0, i64 %268
  %270 = load float, ptr %269, align 4, !tbaa !11
  %271 = fadd float %270, %265
  store float %271, ptr %269, align 4, !tbaa !11
  %272 = load i32, ptr %76, align 4, !tbaa !9
  %273 = add nsw i32 %272, 1
  store i32 %273, ptr %28, align 4, !tbaa !9
  br label %274

274:                                              ; preds = %324, %223
  %275 = load i32, ptr %28, align 4, !tbaa !9
  %276 = load i32, ptr %79, align 4, !tbaa !9
  %277 = icmp sle i32 %275, %276
  br i1 %277, label %278, label %327

278:                                              ; preds = %274
  %279 = load ptr, ptr %41, align 8, !tbaa !5
  %280 = getelementptr inbounds float, ptr %279, i32 -1
  store ptr %280, ptr %41, align 8, !tbaa !5
  %281 = load i32, ptr %79, align 4, !tbaa !9
  %282 = load i32, ptr %28, align 4, !tbaa !9
  %283 = sub nsw i32 %281, %282
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds [65 x float], ptr %38, i64 0, i64 %284
  %286 = load float, ptr %285, align 4, !tbaa !11
  %287 = fpext float %286 to double
  store double %287, ptr %42, align 8, !tbaa !15
  %288 = load ptr, ptr %41, align 8, !tbaa !5
  %289 = getelementptr inbounds float, ptr %288, i64 0
  %290 = load float, ptr %289, align 4, !tbaa !11
  %291 = fpext float %290 to double
  %292 = load ptr, ptr %41, align 8, !tbaa !5
  %293 = getelementptr inbounds float, ptr %292, i64 0
  %294 = load float, ptr %293, align 4, !tbaa !11
  %295 = fpext float %294 to double
  %296 = load ptr, ptr %41, align 8, !tbaa !5
  %297 = load i32, ptr %72, align 4, !tbaa !9
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds float, ptr %296, i64 %298
  %300 = load float, ptr %299, align 4, !tbaa !11
  %301 = fpext float %300 to double
  %302 = load ptr, ptr %41, align 8, !tbaa !5
  %303 = load i32, ptr %72, align 4, !tbaa !9
  %304 = sext i32 %303 to i64
  %305 = getelementptr inbounds float, ptr %302, i64 %304
  %306 = load float, ptr %305, align 4, !tbaa !11
  %307 = fpext float %306 to double
  %308 = fmul double %301, %307
  %309 = fneg double %308
  %310 = call double @llvm.fmuladd.f64(double %291, double %295, double %309)
  %311 = load double, ptr %43, align 8, !tbaa !15
  %312 = fadd double %311, %310
  store double %312, ptr %43, align 8, !tbaa !15
  %313 = load double, ptr %42, align 8, !tbaa !15
  %314 = fmul double 2.000000e+00, %313
  %315 = load double, ptr %43, align 8, !tbaa !15
  %316 = fdiv double %314, %315
  %317 = fptrunc double %316 to float
  %318 = getelementptr inbounds [4 x [149 x float]], ptr %37, i64 0, i64 0
  %319 = load i32, ptr %28, align 4, !tbaa !9
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds [149 x float], ptr %318, i64 0, i64 %320
  %322 = load float, ptr %321, align 4, !tbaa !11
  %323 = fadd float %322, %317
  store float %323, ptr %321, align 4, !tbaa !11
  br label %324

324:                                              ; preds = %278
  %325 = load i32, ptr %28, align 4, !tbaa !9
  %326 = add nsw i32 %325, 1
  store i32 %326, ptr %28, align 4, !tbaa !9
  br label %274, !llvm.loop !17

327:                                              ; preds = %274
  %328 = load i32, ptr %72, align 4, !tbaa !9
  %329 = load ptr, ptr %40, align 8, !tbaa !5
  %330 = sext i32 %328 to i64
  %331 = getelementptr inbounds float, ptr %329, i64 %330
  store ptr %331, ptr %40, align 8, !tbaa !5
  br label %332

332:                                              ; preds = %327
  %333 = load i32, ptr %27, align 4, !tbaa !9
  %334 = add nsw i32 %333, 1
  store i32 %334, ptr %27, align 4, !tbaa !9
  br label %218, !llvm.loop !18

335:                                              ; preds = %218
  %336 = load i32, ptr %79, align 4, !tbaa !9
  store i32 %336, ptr %26, align 4, !tbaa !9
  br label %337

337:                                              ; preds = %357, %335
  %338 = load i32, ptr %26, align 4, !tbaa !9
  %339 = load i32, ptr %76, align 4, !tbaa !9
  %340 = icmp sge i32 %338, %339
  br i1 %340, label %341, label %360

341:                                              ; preds = %337
  %342 = getelementptr inbounds [4 x [149 x float]], ptr %37, i64 0, i64 0
  %343 = load i32, ptr %26, align 4, !tbaa !9
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds [149 x float], ptr %342, i64 0, i64 %344
  %346 = load float, ptr %345, align 4, !tbaa !11
  %347 = load i32, ptr %26, align 4, !tbaa !9
  %348 = sitofp i32 %347 to float
  %349 = fmul float %346, %348
  %350 = fdiv float %349, 4.096000e+03
  %351 = getelementptr inbounds [4 x [149 x float]], ptr %37, i64 0, i64 0
  %352 = load i32, ptr %26, align 4, !tbaa !9
  %353 = sext i32 %352 to i64
  %354 = getelementptr inbounds [149 x float], ptr %351, i64 0, i64 %353
  %355 = load float, ptr %354, align 4, !tbaa !11
  %356 = fsub float %355, %350
  store float %356, ptr %354, align 4, !tbaa !11
  br label %357

357:                                              ; preds = %341
  %358 = load i32, ptr %26, align 4, !tbaa !9
  %359 = add nsw i32 %358, -1
  store i32 %359, ptr %26, align 4, !tbaa !9
  br label %337, !llvm.loop !19

360:                                              ; preds = %337
  %361 = load i32, ptr %23, align 4, !tbaa !9
  %362 = mul nsw i32 2, %361
  %363 = add nsw i32 4, %362
  store i32 %363, ptr %48, align 4, !tbaa !9
  %364 = getelementptr inbounds [4 x [149 x float]], ptr %37, i64 0, i64 0
  %365 = load i32, ptr %76, align 4, !tbaa !9
  %366 = sext i32 %365 to i64
  %367 = getelementptr inbounds [149 x float], ptr %364, i64 0, i64 %366
  %368 = getelementptr inbounds [24 x i32], ptr %46, i64 0, i64 0
  %369 = load i32, ptr %79, align 4, !tbaa !9
  %370 = load i32, ptr %76, align 4, !tbaa !9
  %371 = sub nsw i32 %369, %370
  %372 = add nsw i32 %371, 1
  %373 = load i32, ptr %48, align 4, !tbaa !9
  call void @silk_insertion_sort_decreasing_FLP(ptr noundef %367, ptr noundef %368, i32 noundef %372, i32 noundef %373)
  %374 = getelementptr inbounds [4 x [149 x float]], ptr %37, i64 0, i64 0
  %375 = load i32, ptr %76, align 4, !tbaa !9
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds [149 x float], ptr %374, i64 0, i64 %376
  %378 = load float, ptr %377, align 4, !tbaa !11
  store float %378, ptr %50, align 4, !tbaa !11
  %379 = load float, ptr %50, align 4, !tbaa !11
  %380 = fcmp olt float %379, 0x3FC99999A0000000
  br i1 %380, label %381, label %389

381:                                              ; preds = %360
  %382 = load ptr, ptr %15, align 8, !tbaa !5
  %383 = load i32, ptr %24, align 4, !tbaa !9
  %384 = sext i32 %383 to i64
  %385 = mul i64 %384, 4
  call void @llvm.memset.p0.i64(ptr align 4 %382, i8 0, i64 %385, i1 false)
  %386 = load ptr, ptr %18, align 8, !tbaa !5
  store float 0.000000e+00, ptr %386, align 4, !tbaa !11
  %387 = load ptr, ptr %16, align 8, !tbaa !5
  store i16 0, ptr %387, align 2, !tbaa !20
  %388 = load ptr, ptr %17, align 8, !tbaa !5
  store i8 0, ptr %388, align 1, !tbaa !22
  store i32 1, ptr %13, align 4
  store i32 1, ptr %84, align 4
  br label %1237

389:                                              ; preds = %360
  %390 = load float, ptr %20, align 4, !tbaa !11
  %391 = load float, ptr %50, align 4, !tbaa !11
  %392 = fmul float %390, %391
  store float %392, ptr %35, align 4, !tbaa !11
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %393

393:                                              ; preds = %421, %389
  %394 = load i32, ptr %26, align 4, !tbaa !9
  %395 = load i32, ptr %48, align 4, !tbaa !9
  %396 = icmp slt i32 %394, %395
  br i1 %396, label %397, label %424

397:                                              ; preds = %393
  %398 = getelementptr inbounds [4 x [149 x float]], ptr %37, i64 0, i64 0
  %399 = load i32, ptr %76, align 4, !tbaa !9
  %400 = load i32, ptr %26, align 4, !tbaa !9
  %401 = add nsw i32 %399, %400
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds [149 x float], ptr %398, i64 0, i64 %402
  %404 = load float, ptr %403, align 4, !tbaa !11
  %405 = load float, ptr %35, align 4, !tbaa !11
  %406 = fcmp ogt float %404, %405
  br i1 %406, label %407, label %418

407:                                              ; preds = %397
  %408 = load i32, ptr %26, align 4, !tbaa !9
  %409 = sext i32 %408 to i64
  %410 = getelementptr inbounds [24 x i32], ptr %46, i64 0, i64 %409
  %411 = load i32, ptr %410, align 4, !tbaa !9
  %412 = load i32, ptr %76, align 4, !tbaa !9
  %413 = add nsw i32 %411, %412
  %414 = shl i32 %413, 1
  %415 = load i32, ptr %26, align 4, !tbaa !9
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds [24 x i32], ptr %46, i64 0, i64 %416
  store i32 %414, ptr %417, align 4, !tbaa !9
  br label %420

418:                                              ; preds = %397
  %419 = load i32, ptr %26, align 4, !tbaa !9
  store i32 %419, ptr %48, align 4, !tbaa !9
  br label %424

420:                                              ; preds = %407
  br label %421

421:                                              ; preds = %420
  %422 = load i32, ptr %26, align 4, !tbaa !9
  %423 = add nsw i32 %422, 1
  store i32 %423, ptr %26, align 4, !tbaa !9
  br label %393, !llvm.loop !23

424:                                              ; preds = %418, %393
  %425 = load i32, ptr %75, align 4, !tbaa !9
  %426 = sub nsw i32 %425, 5
  store i32 %426, ptr %26, align 4, !tbaa !9
  br label %427

427:                                              ; preds = %436, %424
  %428 = load i32, ptr %26, align 4, !tbaa !9
  %429 = load i32, ptr %78, align 4, !tbaa !9
  %430 = add nsw i32 %429, 5
  %431 = icmp slt i32 %428, %430
  br i1 %431, label %432, label %439

432:                                              ; preds = %427
  %433 = load i32, ptr %26, align 4, !tbaa !9
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds [149 x i16], ptr %47, i64 0, i64 %434
  store i16 0, ptr %435, align 2, !tbaa !20
  br label %436

436:                                              ; preds = %432
  %437 = load i32, ptr %26, align 4, !tbaa !9
  %438 = add nsw i32 %437, 1
  store i32 %438, ptr %26, align 4, !tbaa !9
  br label %427, !llvm.loop !24

439:                                              ; preds = %427
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %440

440:                                              ; preds = %451, %439
  %441 = load i32, ptr %26, align 4, !tbaa !9
  %442 = load i32, ptr %48, align 4, !tbaa !9
  %443 = icmp slt i32 %441, %442
  br i1 %443, label %444, label %454

444:                                              ; preds = %440
  %445 = load i32, ptr %26, align 4, !tbaa !9
  %446 = sext i32 %445 to i64
  %447 = getelementptr inbounds [24 x i32], ptr %46, i64 0, i64 %446
  %448 = load i32, ptr %447, align 4, !tbaa !9
  %449 = sext i32 %448 to i64
  %450 = getelementptr inbounds [149 x i16], ptr %47, i64 0, i64 %449
  store i16 1, ptr %450, align 2, !tbaa !20
  br label %451

451:                                              ; preds = %444
  %452 = load i32, ptr %26, align 4, !tbaa !9
  %453 = add nsw i32 %452, 1
  store i32 %453, ptr %26, align 4, !tbaa !9
  br label %440, !llvm.loop !25

454:                                              ; preds = %440
  %455 = load i32, ptr %78, align 4, !tbaa !9
  %456 = add nsw i32 %455, 3
  store i32 %456, ptr %26, align 4, !tbaa !9
  br label %457

457:                                              ; preds = %482, %454
  %458 = load i32, ptr %26, align 4, !tbaa !9
  %459 = load i32, ptr %75, align 4, !tbaa !9
  %460 = icmp sge i32 %458, %459
  br i1 %460, label %461, label %485

461:                                              ; preds = %457
  %462 = load i32, ptr %26, align 4, !tbaa !9
  %463 = sub nsw i32 %462, 1
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds [149 x i16], ptr %47, i64 0, i64 %464
  %466 = load i16, ptr %465, align 2, !tbaa !20
  %467 = sext i16 %466 to i32
  %468 = load i32, ptr %26, align 4, !tbaa !9
  %469 = sub nsw i32 %468, 2
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds [149 x i16], ptr %47, i64 0, i64 %470
  %472 = load i16, ptr %471, align 2, !tbaa !20
  %473 = sext i16 %472 to i32
  %474 = add nsw i32 %467, %473
  %475 = load i32, ptr %26, align 4, !tbaa !9
  %476 = sext i32 %475 to i64
  %477 = getelementptr inbounds [149 x i16], ptr %47, i64 0, i64 %476
  %478 = load i16, ptr %477, align 2, !tbaa !20
  %479 = sext i16 %478 to i32
  %480 = add nsw i32 %479, %474
  %481 = trunc i32 %480 to i16
  store i16 %481, ptr %477, align 2, !tbaa !20
  br label %482

482:                                              ; preds = %461
  %483 = load i32, ptr %26, align 4, !tbaa !9
  %484 = add nsw i32 %483, -1
  store i32 %484, ptr %26, align 4, !tbaa !9
  br label %457, !llvm.loop !26

485:                                              ; preds = %457
  store i32 0, ptr %48, align 4, !tbaa !9
  %486 = load i32, ptr %75, align 4, !tbaa !9
  store i32 %486, ptr %26, align 4, !tbaa !9
  br label %487

487:                                              ; preds = %508, %485
  %488 = load i32, ptr %26, align 4, !tbaa !9
  %489 = load i32, ptr %78, align 4, !tbaa !9
  %490 = add nsw i32 %489, 1
  %491 = icmp slt i32 %488, %490
  br i1 %491, label %492, label %511

492:                                              ; preds = %487
  %493 = load i32, ptr %26, align 4, !tbaa !9
  %494 = add nsw i32 %493, 1
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds [149 x i16], ptr %47, i64 0, i64 %495
  %497 = load i16, ptr %496, align 2, !tbaa !20
  %498 = sext i16 %497 to i32
  %499 = icmp sgt i32 %498, 0
  br i1 %499, label %500, label %507

500:                                              ; preds = %492
  %501 = load i32, ptr %26, align 4, !tbaa !9
  %502 = load i32, ptr %48, align 4, !tbaa !9
  %503 = sext i32 %502 to i64
  %504 = getelementptr inbounds [24 x i32], ptr %46, i64 0, i64 %503
  store i32 %501, ptr %504, align 4, !tbaa !9
  %505 = load i32, ptr %48, align 4, !tbaa !9
  %506 = add nsw i32 %505, 1
  store i32 %506, ptr %48, align 4, !tbaa !9
  br label %507

507:                                              ; preds = %500, %492
  br label %508

508:                                              ; preds = %507
  %509 = load i32, ptr %26, align 4, !tbaa !9
  %510 = add nsw i32 %509, 1
  store i32 %510, ptr %26, align 4, !tbaa !9
  br label %487, !llvm.loop !27

511:                                              ; preds = %487
  %512 = load i32, ptr %78, align 4, !tbaa !9
  %513 = add nsw i32 %512, 3
  store i32 %513, ptr %26, align 4, !tbaa !9
  br label %514

514:                                              ; preds = %546, %511
  %515 = load i32, ptr %26, align 4, !tbaa !9
  %516 = load i32, ptr %75, align 4, !tbaa !9
  %517 = icmp sge i32 %515, %516
  br i1 %517, label %518, label %549

518:                                              ; preds = %514
  %519 = load i32, ptr %26, align 4, !tbaa !9
  %520 = sub nsw i32 %519, 1
  %521 = sext i32 %520 to i64
  %522 = getelementptr inbounds [149 x i16], ptr %47, i64 0, i64 %521
  %523 = load i16, ptr %522, align 2, !tbaa !20
  %524 = sext i16 %523 to i32
  %525 = load i32, ptr %26, align 4, !tbaa !9
  %526 = sub nsw i32 %525, 2
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds [149 x i16], ptr %47, i64 0, i64 %527
  %529 = load i16, ptr %528, align 2, !tbaa !20
  %530 = sext i16 %529 to i32
  %531 = add nsw i32 %524, %530
  %532 = load i32, ptr %26, align 4, !tbaa !9
  %533 = sub nsw i32 %532, 3
  %534 = sext i32 %533 to i64
  %535 = getelementptr inbounds [149 x i16], ptr %47, i64 0, i64 %534
  %536 = load i16, ptr %535, align 2, !tbaa !20
  %537 = sext i16 %536 to i32
  %538 = add nsw i32 %531, %537
  %539 = load i32, ptr %26, align 4, !tbaa !9
  %540 = sext i32 %539 to i64
  %541 = getelementptr inbounds [149 x i16], ptr %47, i64 0, i64 %540
  %542 = load i16, ptr %541, align 2, !tbaa !20
  %543 = sext i16 %542 to i32
  %544 = add nsw i32 %543, %538
  %545 = trunc i32 %544 to i16
  store i16 %545, ptr %541, align 2, !tbaa !20
  br label %546

546:                                              ; preds = %518
  %547 = load i32, ptr %26, align 4, !tbaa !9
  %548 = add nsw i32 %547, -1
  store i32 %548, ptr %26, align 4, !tbaa !9
  br label %514, !llvm.loop !28

549:                                              ; preds = %514
  store i32 0, ptr %49, align 4, !tbaa !9
  %550 = load i32, ptr %75, align 4, !tbaa !9
  store i32 %550, ptr %26, align 4, !tbaa !9
  br label %551

551:                                              ; preds = %573, %549
  %552 = load i32, ptr %26, align 4, !tbaa !9
  %553 = load i32, ptr %78, align 4, !tbaa !9
  %554 = add nsw i32 %553, 4
  %555 = icmp slt i32 %552, %554
  br i1 %555, label %556, label %576

556:                                              ; preds = %551
  %557 = load i32, ptr %26, align 4, !tbaa !9
  %558 = sext i32 %557 to i64
  %559 = getelementptr inbounds [149 x i16], ptr %47, i64 0, i64 %558
  %560 = load i16, ptr %559, align 2, !tbaa !20
  %561 = sext i16 %560 to i32
  %562 = icmp sgt i32 %561, 0
  br i1 %562, label %563, label %572

563:                                              ; preds = %556
  %564 = load i32, ptr %26, align 4, !tbaa !9
  %565 = sub nsw i32 %564, 2
  %566 = trunc i32 %565 to i16
  %567 = load i32, ptr %49, align 4, !tbaa !9
  %568 = sext i32 %567 to i64
  %569 = getelementptr inbounds [149 x i16], ptr %47, i64 0, i64 %568
  store i16 %566, ptr %569, align 2, !tbaa !20
  %570 = load i32, ptr %49, align 4, !tbaa !9
  %571 = add nsw i32 %570, 1
  store i32 %571, ptr %49, align 4, !tbaa !9
  br label %572

572:                                              ; preds = %563, %556
  br label %573

573:                                              ; preds = %572
  %574 = load i32, ptr %26, align 4, !tbaa !9
  %575 = add nsw i32 %574, 1
  store i32 %575, ptr %26, align 4, !tbaa !9
  br label %551, !llvm.loop !29

576:                                              ; preds = %551
  %577 = getelementptr inbounds [4 x [149 x float]], ptr %37, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 16 %577, i8 0, i64 2384, i1 false)
  %578 = load i32, ptr %22, align 4, !tbaa !9
  %579 = icmp eq i32 %578, 8
  br i1 %579, label %580, label %583

580:                                              ; preds = %576
  %581 = load ptr, ptr %14, align 8, !tbaa !5
  %582 = getelementptr inbounds float, ptr %581, i64 160
  store ptr %582, ptr %40, align 8, !tbaa !5
  br label %585

583:                                              ; preds = %576
  %584 = getelementptr inbounds [320 x float], ptr %30, i64 0, i64 160
  store ptr %584, ptr %40, align 8, !tbaa !5
  br label %585

585:                                              ; preds = %583, %580
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %586

586:                                              ; preds = %649, %585
  %587 = load i32, ptr %27, align 4, !tbaa !9
  %588 = load i32, ptr %24, align 4, !tbaa !9
  %589 = icmp slt i32 %587, %588
  br i1 %589, label %590, label %652

590:                                              ; preds = %586
  %591 = load ptr, ptr %40, align 8, !tbaa !5
  %592 = load i32, ptr %72, align 4, !tbaa !9
  %593 = call double @silk_energy_FLP(ptr noundef %591, i32 noundef %592)
  %594 = fadd double %593, 1.000000e+00
  store double %594, ptr %45, align 8, !tbaa !15
  store i32 0, ptr %29, align 4, !tbaa !9
  br label %595

595:                                              ; preds = %641, %590
  %596 = load i32, ptr %29, align 4, !tbaa !9
  %597 = load i32, ptr %49, align 4, !tbaa !9
  %598 = icmp slt i32 %596, %597
  br i1 %598, label %599, label %644

599:                                              ; preds = %595
  %600 = load i32, ptr %29, align 4, !tbaa !9
  %601 = sext i32 %600 to i64
  %602 = getelementptr inbounds [149 x i16], ptr %47, i64 0, i64 %601
  %603 = load i16, ptr %602, align 2, !tbaa !20
  %604 = sext i16 %603 to i32
  store i32 %604, ptr %28, align 4, !tbaa !9
  %605 = load ptr, ptr %40, align 8, !tbaa !5
  %606 = load i32, ptr %28, align 4, !tbaa !9
  %607 = sext i32 %606 to i64
  %608 = sub i64 0, %607
  %609 = getelementptr inbounds float, ptr %605, i64 %608
  store ptr %609, ptr %41, align 8, !tbaa !5
  %610 = load ptr, ptr %41, align 8, !tbaa !5
  %611 = load ptr, ptr %40, align 8, !tbaa !5
  %612 = load i32, ptr %72, align 4, !tbaa !9
  %613 = call double @silk_inner_product_FLP(ptr noundef %610, ptr noundef %611, i32 noundef %612)
  store double %613, ptr %42, align 8, !tbaa !15
  %614 = load double, ptr %42, align 8, !tbaa !15
  %615 = fcmp ogt double %614, 0.000000e+00
  br i1 %615, label %616, label %633

616:                                              ; preds = %599
  %617 = load ptr, ptr %41, align 8, !tbaa !5
  %618 = load i32, ptr %72, align 4, !tbaa !9
  %619 = call double @silk_energy_FLP(ptr noundef %617, i32 noundef %618)
  store double %619, ptr %44, align 8, !tbaa !15
  %620 = load double, ptr %42, align 8, !tbaa !15
  %621 = fmul double 2.000000e+00, %620
  %622 = load double, ptr %44, align 8, !tbaa !15
  %623 = load double, ptr %45, align 8, !tbaa !15
  %624 = fadd double %622, %623
  %625 = fdiv double %621, %624
  %626 = fptrunc double %625 to float
  %627 = load i32, ptr %27, align 4, !tbaa !9
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds [4 x [149 x float]], ptr %37, i64 0, i64 %628
  %630 = load i32, ptr %28, align 4, !tbaa !9
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds [149 x float], ptr %629, i64 0, i64 %631
  store float %626, ptr %632, align 4, !tbaa !11
  br label %640

633:                                              ; preds = %599
  %634 = load i32, ptr %27, align 4, !tbaa !9
  %635 = sext i32 %634 to i64
  %636 = getelementptr inbounds [4 x [149 x float]], ptr %37, i64 0, i64 %635
  %637 = load i32, ptr %28, align 4, !tbaa !9
  %638 = sext i32 %637 to i64
  %639 = getelementptr inbounds [149 x float], ptr %636, i64 0, i64 %638
  store float 0.000000e+00, ptr %639, align 4, !tbaa !11
  br label %640

640:                                              ; preds = %633, %616
  br label %641

641:                                              ; preds = %640
  %642 = load i32, ptr %29, align 4, !tbaa !9
  %643 = add nsw i32 %642, 1
  store i32 %643, ptr %29, align 4, !tbaa !9
  br label %595, !llvm.loop !30

644:                                              ; preds = %595
  %645 = load i32, ptr %72, align 4, !tbaa !9
  %646 = load ptr, ptr %40, align 8, !tbaa !5
  %647 = sext i32 %645 to i64
  %648 = getelementptr inbounds float, ptr %646, i64 %647
  store ptr %648, ptr %40, align 8, !tbaa !5
  br label %649

649:                                              ; preds = %644
  %650 = load i32, ptr %27, align 4, !tbaa !9
  %651 = add nsw i32 %650, 1
  store i32 %651, ptr %27, align 4, !tbaa !9
  br label %586, !llvm.loop !31

652:                                              ; preds = %586
  store float 0.000000e+00, ptr %51, align 4, !tbaa !11
  store float -1.000000e+03, ptr %52, align 4, !tbaa !11
  store i32 0, ptr %55, align 4, !tbaa !9
  store i32 -1, ptr %57, align 4, !tbaa !9
  %653 = load i32, ptr %19, align 4, !tbaa !9
  %654 = icmp sgt i32 %653, 0
  br i1 %654, label %655, label %674

655:                                              ; preds = %652
  %656 = load i32, ptr %22, align 4, !tbaa !9
  %657 = icmp eq i32 %656, 12
  br i1 %657, label %658, label %662

658:                                              ; preds = %655
  %659 = load i32, ptr %19, align 4, !tbaa !9
  %660 = shl i32 %659, 1
  %661 = sdiv i32 %660, 3
  store i32 %661, ptr %19, align 4, !tbaa !9
  br label %669

662:                                              ; preds = %655
  %663 = load i32, ptr %22, align 4, !tbaa !9
  %664 = icmp eq i32 %663, 16
  br i1 %664, label %665, label %668

665:                                              ; preds = %662
  %666 = load i32, ptr %19, align 4, !tbaa !9
  %667 = ashr i32 %666, 1
  store i32 %667, ptr %19, align 4, !tbaa !9
  br label %668

668:                                              ; preds = %665, %662
  br label %669

669:                                              ; preds = %668, %658
  %670 = load i32, ptr %19, align 4, !tbaa !9
  %671 = sitofp i32 %670 to float
  %672 = fpext float %671 to double
  %673 = call float @silk_log2(double noundef %672)
  store float %673, ptr %63, align 4, !tbaa !11
  br label %675

674:                                              ; preds = %652
  store float 0.000000e+00, ptr %63, align 4, !tbaa !11
  br label %675

675:                                              ; preds = %674, %669
  %676 = load i32, ptr %24, align 4, !tbaa !9
  %677 = icmp eq i32 %676, 4
  br i1 %677, label %678, label %687

678:                                              ; preds = %675
  store i32 11, ptr %61, align 4, !tbaa !9
  store ptr @silk_CB_lags_stage2, ptr %81, align 8, !tbaa !5
  %679 = load i32, ptr %22, align 4, !tbaa !9
  %680 = icmp eq i32 %679, 8
  br i1 %680, label %681, label %685

681:                                              ; preds = %678
  %682 = load i32, ptr %23, align 4, !tbaa !9
  %683 = icmp sgt i32 %682, 0
  br i1 %683, label %684, label %685

684:                                              ; preds = %681
  store i32 11, ptr %80, align 4, !tbaa !9
  br label %686

685:                                              ; preds = %681, %678
  store i32 3, ptr %80, align 4, !tbaa !9
  br label %686

686:                                              ; preds = %685, %684
  br label %688

687:                                              ; preds = %675
  store i32 3, ptr %61, align 4, !tbaa !9
  store ptr @silk_CB_lags_stage2_10_ms, ptr %81, align 8, !tbaa !5
  store i32 3, ptr %80, align 4, !tbaa !9
  br label %688

688:                                              ; preds = %687, %686
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %689

689:                                              ; preds = %814, %688
  %690 = load i32, ptr %27, align 4, !tbaa !9
  %691 = load i32, ptr %48, align 4, !tbaa !9
  %692 = icmp slt i32 %690, %691
  br i1 %692, label %693, label %817

693:                                              ; preds = %689
  %694 = load i32, ptr %27, align 4, !tbaa !9
  %695 = sext i32 %694 to i64
  %696 = getelementptr inbounds [24 x i32], ptr %46, i64 0, i64 %695
  %697 = load i32, ptr %696, align 4, !tbaa !9
  store i32 %697, ptr %28, align 4, !tbaa !9
  store i32 0, ptr %29, align 4, !tbaa !9
  br label %698

698:                                              ; preds = %738, %693
  %699 = load i32, ptr %29, align 4, !tbaa !9
  %700 = load i32, ptr %80, align 4, !tbaa !9
  %701 = icmp slt i32 %699, %700
  br i1 %701, label %702, label %741

702:                                              ; preds = %698
  %703 = load i32, ptr %29, align 4, !tbaa !9
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds [11 x float], ptr %39, i64 0, i64 %704
  store float 0.000000e+00, ptr %705, align 4, !tbaa !11
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %706

706:                                              ; preds = %734, %702
  %707 = load i32, ptr %26, align 4, !tbaa !9
  %708 = load i32, ptr %24, align 4, !tbaa !9
  %709 = icmp slt i32 %707, %708
  br i1 %709, label %710, label %737

710:                                              ; preds = %706
  %711 = load i32, ptr %26, align 4, !tbaa !9
  %712 = sext i32 %711 to i64
  %713 = getelementptr inbounds [4 x [149 x float]], ptr %37, i64 0, i64 %712
  %714 = load i32, ptr %28, align 4, !tbaa !9
  %715 = load ptr, ptr %81, align 8, !tbaa !5
  %716 = load i32, ptr %26, align 4, !tbaa !9
  %717 = load i32, ptr %61, align 4, !tbaa !9
  %718 = mul nsw i32 %716, %717
  %719 = load i32, ptr %29, align 4, !tbaa !9
  %720 = add nsw i32 %718, %719
  %721 = sext i32 %720 to i64
  %722 = getelementptr inbounds i8, ptr %715, i64 %721
  %723 = load i8, ptr %722, align 1, !tbaa !22
  %724 = sext i8 %723 to i32
  %725 = add nsw i32 %714, %724
  %726 = sext i32 %725 to i64
  %727 = getelementptr inbounds [149 x float], ptr %713, i64 0, i64 %726
  %728 = load float, ptr %727, align 4, !tbaa !11
  %729 = load i32, ptr %29, align 4, !tbaa !9
  %730 = sext i32 %729 to i64
  %731 = getelementptr inbounds [11 x float], ptr %39, i64 0, i64 %730
  %732 = load float, ptr %731, align 4, !tbaa !11
  %733 = fadd float %732, %728
  store float %733, ptr %731, align 4, !tbaa !11
  br label %734

734:                                              ; preds = %710
  %735 = load i32, ptr %26, align 4, !tbaa !9
  %736 = add nsw i32 %735, 1
  store i32 %736, ptr %26, align 4, !tbaa !9
  br label %706, !llvm.loop !32

737:                                              ; preds = %706
  br label %738

738:                                              ; preds = %737
  %739 = load i32, ptr %29, align 4, !tbaa !9
  %740 = add nsw i32 %739, 1
  store i32 %740, ptr %29, align 4, !tbaa !9
  br label %698, !llvm.loop !33

741:                                              ; preds = %698
  store float -1.000000e+03, ptr %54, align 4, !tbaa !11
  store i32 0, ptr %56, align 4, !tbaa !9
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %742

742:                                              ; preds = %760, %741
  %743 = load i32, ptr %26, align 4, !tbaa !9
  %744 = load i32, ptr %80, align 4, !tbaa !9
  %745 = icmp slt i32 %743, %744
  br i1 %745, label %746, label %763

746:                                              ; preds = %742
  %747 = load i32, ptr %26, align 4, !tbaa !9
  %748 = sext i32 %747 to i64
  %749 = getelementptr inbounds [11 x float], ptr %39, i64 0, i64 %748
  %750 = load float, ptr %749, align 4, !tbaa !11
  %751 = load float, ptr %54, align 4, !tbaa !11
  %752 = fcmp ogt float %750, %751
  br i1 %752, label %753, label %759

753:                                              ; preds = %746
  %754 = load i32, ptr %26, align 4, !tbaa !9
  %755 = sext i32 %754 to i64
  %756 = getelementptr inbounds [11 x float], ptr %39, i64 0, i64 %755
  %757 = load float, ptr %756, align 4, !tbaa !11
  store float %757, ptr %54, align 4, !tbaa !11
  %758 = load i32, ptr %26, align 4, !tbaa !9
  store i32 %758, ptr %56, align 4, !tbaa !9
  br label %759

759:                                              ; preds = %753, %746
  br label %760

760:                                              ; preds = %759
  %761 = load i32, ptr %26, align 4, !tbaa !9
  %762 = add nsw i32 %761, 1
  store i32 %762, ptr %26, align 4, !tbaa !9
  br label %742, !llvm.loop !34

763:                                              ; preds = %742
  %764 = load i32, ptr %28, align 4, !tbaa !9
  %765 = sitofp i32 %764 to float
  %766 = fpext float %765 to double
  %767 = call float @silk_log2(double noundef %766)
  store float %767, ptr %62, align 4, !tbaa !11
  %768 = load float, ptr %54, align 4, !tbaa !11
  %769 = load i32, ptr %24, align 4, !tbaa !9
  %770 = sitofp i32 %769 to float
  %771 = fmul float 0x3FC99999A0000000, %770
  %772 = load float, ptr %62, align 4, !tbaa !11
  %773 = fneg float %771
  %774 = call float @llvm.fmuladd.f32(float %773, float %772, float %768)
  store float %774, ptr %53, align 4, !tbaa !11
  %775 = load i32, ptr %19, align 4, !tbaa !9
  %776 = icmp sgt i32 %775, 0
  br i1 %776, label %777, label %797

777:                                              ; preds = %763
  %778 = load float, ptr %62, align 4, !tbaa !11
  %779 = load float, ptr %63, align 4, !tbaa !11
  %780 = fsub float %778, %779
  store float %780, ptr %64, align 4, !tbaa !11
  %781 = load float, ptr %64, align 4, !tbaa !11
  %782 = load float, ptr %64, align 4, !tbaa !11
  %783 = fmul float %782, %781
  store float %783, ptr %64, align 4, !tbaa !11
  %784 = load i32, ptr %24, align 4, !tbaa !9
  %785 = sitofp i32 %784 to float
  %786 = fmul float 0x3FC99999A0000000, %785
  %787 = load ptr, ptr %18, align 8, !tbaa !5
  %788 = load float, ptr %787, align 4, !tbaa !11
  %789 = fmul float %786, %788
  %790 = load float, ptr %64, align 4, !tbaa !11
  %791 = fmul float %789, %790
  %792 = load float, ptr %64, align 4, !tbaa !11
  %793 = fadd float %792, 5.000000e-01
  %794 = fdiv float %791, %793
  %795 = load float, ptr %53, align 4, !tbaa !11
  %796 = fsub float %795, %794
  store float %796, ptr %53, align 4, !tbaa !11
  br label %797

797:                                              ; preds = %777, %763
  %798 = load float, ptr %53, align 4, !tbaa !11
  %799 = load float, ptr %52, align 4, !tbaa !11
  %800 = fcmp ogt float %798, %799
  br i1 %800, label %801, label %813

801:                                              ; preds = %797
  %802 = load float, ptr %54, align 4, !tbaa !11
  %803 = load i32, ptr %24, align 4, !tbaa !9
  %804 = sitofp i32 %803 to float
  %805 = load float, ptr %21, align 4, !tbaa !11
  %806 = fmul float %804, %805
  %807 = fcmp ogt float %802, %806
  br i1 %807, label %808, label %813

808:                                              ; preds = %801
  %809 = load float, ptr %53, align 4, !tbaa !11
  store float %809, ptr %52, align 4, !tbaa !11
  %810 = load float, ptr %54, align 4, !tbaa !11
  store float %810, ptr %51, align 4, !tbaa !11
  %811 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %811, ptr %57, align 4, !tbaa !9
  %812 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %812, ptr %55, align 4, !tbaa !9
  br label %813

813:                                              ; preds = %808, %801, %797
  br label %814

814:                                              ; preds = %813
  %815 = load i32, ptr %27, align 4, !tbaa !9
  %816 = add nsw i32 %815, 1
  store i32 %816, ptr %27, align 4, !tbaa !9
  br label %689, !llvm.loop !35

817:                                              ; preds = %689
  %818 = load i32, ptr %57, align 4, !tbaa !9
  %819 = icmp eq i32 %818, -1
  br i1 %819, label %820, label %825

820:                                              ; preds = %817
  %821 = load ptr, ptr %15, align 8, !tbaa !5
  call void @llvm.memset.p0.i64(ptr align 4 %821, i8 0, i64 16, i1 false)
  %822 = load ptr, ptr %18, align 8, !tbaa !5
  store float 0.000000e+00, ptr %822, align 4, !tbaa !11
  %823 = load ptr, ptr %16, align 8, !tbaa !5
  store i16 0, ptr %823, align 2, !tbaa !20
  %824 = load ptr, ptr %17, align 8, !tbaa !5
  store i8 0, ptr %824, align 1, !tbaa !22
  store i32 1, ptr %13, align 4
  store i32 1, ptr %84, align 4
  br label %1237

825:                                              ; preds = %817
  %826 = load float, ptr %51, align 4, !tbaa !11
  %827 = load i32, ptr %24, align 4, !tbaa !9
  %828 = sitofp i32 %827 to float
  %829 = fdiv float %826, %828
  %830 = load ptr, ptr %18, align 8, !tbaa !5
  store float %829, ptr %830, align 4, !tbaa !11
  %831 = load i32, ptr %22, align 4, !tbaa !9
  %832 = icmp sgt i32 %831, 8
  br i1 %832, label %833, label %1138

833:                                              ; preds = %825
  %834 = load i32, ptr %22, align 4, !tbaa !9
  %835 = icmp eq i32 %834, 12
  br i1 %835, label %836, label %848

836:                                              ; preds = %833
  %837 = load i32, ptr %57, align 4, !tbaa !9
  %838 = trunc i32 %837 to i16
  %839 = sext i16 %838 to i32
  %840 = mul nsw i32 %839, 3
  %841 = ashr i32 %840, 1
  %842 = load i32, ptr %57, align 4, !tbaa !9
  %843 = trunc i32 %842 to i16
  %844 = sext i16 %843 to i32
  %845 = mul nsw i32 %844, 3
  %846 = and i32 %845, 1
  %847 = add nsw i32 %841, %846
  store i32 %847, ptr %57, align 4, !tbaa !9
  br label %851

848:                                              ; preds = %833
  %849 = load i32, ptr %57, align 4, !tbaa !9
  %850 = shl i32 %849, 1
  store i32 %850, ptr %57, align 4, !tbaa !9
  br label %851

851:                                              ; preds = %848, %836
  %852 = load i32, ptr %74, align 4, !tbaa !9
  %853 = load i32, ptr %77, align 4, !tbaa !9
  %854 = icmp sgt i32 %852, %853
  br i1 %854, label %855, label %873

855:                                              ; preds = %851
  %856 = load i32, ptr %57, align 4, !tbaa !9
  %857 = load i32, ptr %74, align 4, !tbaa !9
  %858 = icmp sgt i32 %856, %857
  br i1 %858, label %859, label %861

859:                                              ; preds = %855
  %860 = load i32, ptr %74, align 4, !tbaa !9
  br label %871

861:                                              ; preds = %855
  %862 = load i32, ptr %57, align 4, !tbaa !9
  %863 = load i32, ptr %77, align 4, !tbaa !9
  %864 = icmp slt i32 %862, %863
  br i1 %864, label %865, label %867

865:                                              ; preds = %861
  %866 = load i32, ptr %77, align 4, !tbaa !9
  br label %869

867:                                              ; preds = %861
  %868 = load i32, ptr %57, align 4, !tbaa !9
  br label %869

869:                                              ; preds = %867, %865
  %870 = phi i32 [ %866, %865 ], [ %868, %867 ]
  br label %871

871:                                              ; preds = %869, %859
  %872 = phi i32 [ %860, %859 ], [ %870, %869 ]
  br label %891

873:                                              ; preds = %851
  %874 = load i32, ptr %57, align 4, !tbaa !9
  %875 = load i32, ptr %77, align 4, !tbaa !9
  %876 = icmp sgt i32 %874, %875
  br i1 %876, label %877, label %879

877:                                              ; preds = %873
  %878 = load i32, ptr %77, align 4, !tbaa !9
  br label %889

879:                                              ; preds = %873
  %880 = load i32, ptr %57, align 4, !tbaa !9
  %881 = load i32, ptr %74, align 4, !tbaa !9
  %882 = icmp slt i32 %880, %881
  br i1 %882, label %883, label %885

883:                                              ; preds = %879
  %884 = load i32, ptr %74, align 4, !tbaa !9
  br label %887

885:                                              ; preds = %879
  %886 = load i32, ptr %57, align 4, !tbaa !9
  br label %887

887:                                              ; preds = %885, %883
  %888 = phi i32 [ %884, %883 ], [ %886, %885 ]
  br label %889

889:                                              ; preds = %887, %877
  %890 = phi i32 [ %878, %877 ], [ %888, %887 ]
  br label %891

891:                                              ; preds = %889, %871
  %892 = phi i32 [ %872, %871 ], [ %890, %889 ]
  store i32 %892, ptr %57, align 4, !tbaa !9
  %893 = load i32, ptr %57, align 4, !tbaa !9
  %894 = sub nsw i32 %893, 2
  %895 = load i32, ptr %74, align 4, !tbaa !9
  %896 = call i32 @silk_max_int(i32 noundef %894, i32 noundef %895)
  store i32 %896, ptr %58, align 4, !tbaa !9
  %897 = load i32, ptr %57, align 4, !tbaa !9
  %898 = add nsw i32 %897, 2
  %899 = load i32, ptr %77, align 4, !tbaa !9
  %900 = call i32 @silk_min_int(i32 noundef %898, i32 noundef %899)
  store i32 %900, ptr %59, align 4, !tbaa !9
  %901 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %901, ptr %60, align 4, !tbaa !9
  store i32 0, ptr %55, align 4, !tbaa !9
  store float -1.000000e+03, ptr %51, align 4, !tbaa !11
  %902 = getelementptr inbounds [4 x [34 x [5 x float]]], ptr %66, i64 0, i64 0
  %903 = load ptr, ptr %14, align 8, !tbaa !5
  %904 = load i32, ptr %58, align 4, !tbaa !9
  %905 = load i32, ptr %71, align 4, !tbaa !9
  %906 = load i32, ptr %24, align 4, !tbaa !9
  %907 = load i32, ptr %23, align 4, !tbaa !9
  %908 = load i32, ptr %25, align 4, !tbaa !9
  call void @silk_P_Ana_calc_corr_st3(ptr noundef %902, ptr noundef %903, i32 noundef %904, i32 noundef %905, i32 noundef %906, i32 noundef %907, i32 noundef %908)
  %909 = getelementptr inbounds [4 x [34 x [5 x float]]], ptr %65, i64 0, i64 0
  %910 = load ptr, ptr %14, align 8, !tbaa !5
  %911 = load i32, ptr %58, align 4, !tbaa !9
  %912 = load i32, ptr %71, align 4, !tbaa !9
  %913 = load i32, ptr %24, align 4, !tbaa !9
  %914 = load i32, ptr %23, align 4, !tbaa !9
  call void @silk_P_Ana_calc_energy_st3(ptr noundef %909, ptr noundef %910, i32 noundef %911, i32 noundef %912, i32 noundef %913, i32 noundef %914)
  store i32 0, ptr %67, align 4, !tbaa !9
  %915 = load i32, ptr %57, align 4, !tbaa !9
  %916 = sitofp i32 %915 to float
  %917 = fdiv float 0x3FA99999A0000000, %916
  store float %917, ptr %36, align 4, !tbaa !11
  %918 = load i32, ptr %24, align 4, !tbaa !9
  %919 = icmp eq i32 %918, 4
  br i1 %919, label %920, label %926

920:                                              ; preds = %891
  %921 = load i32, ptr %23, align 4, !tbaa !9
  %922 = sext i32 %921 to i64
  %923 = getelementptr inbounds [3 x i8], ptr @silk_nb_cbk_searchs_stage3, i64 0, i64 %922
  %924 = load i8, ptr %923, align 1, !tbaa !22
  %925 = sext i8 %924 to i32
  store i32 %925, ptr %80, align 4, !tbaa !9
  store i32 34, ptr %61, align 4, !tbaa !9
  store ptr @silk_CB_lags_stage3, ptr %81, align 8, !tbaa !5
  br label %927

926:                                              ; preds = %891
  store i32 12, ptr %80, align 4, !tbaa !9
  store i32 12, ptr %61, align 4, !tbaa !9
  store ptr @silk_CB_lags_stage3_10_ms, ptr %81, align 8, !tbaa !5
  br label %927

927:                                              ; preds = %926, %920
  %928 = load ptr, ptr %14, align 8, !tbaa !5
  %929 = load i32, ptr %22, align 4, !tbaa !9
  %930 = mul nsw i32 20, %929
  %931 = sext i32 %930 to i64
  %932 = getelementptr inbounds float, ptr %928, i64 %931
  store ptr %932, ptr %40, align 8, !tbaa !5
  %933 = load ptr, ptr %40, align 8, !tbaa !5
  %934 = load i32, ptr %24, align 4, !tbaa !9
  %935 = load i32, ptr %71, align 4, !tbaa !9
  %936 = mul nsw i32 %934, %935
  %937 = call double @silk_energy_FLP(ptr noundef %933, i32 noundef %936)
  %938 = fadd double %937, 1.000000e+00
  store double %938, ptr %45, align 8, !tbaa !15
  %939 = load i32, ptr %58, align 4, !tbaa !9
  store i32 %939, ptr %28, align 4, !tbaa !9
  br label %940

940:                                              ; preds = %1027, %927
  %941 = load i32, ptr %28, align 4, !tbaa !9
  %942 = load i32, ptr %59, align 4, !tbaa !9
  %943 = icmp sle i32 %941, %942
  br i1 %943, label %944, label %1030

944:                                              ; preds = %940
  store i32 0, ptr %29, align 4, !tbaa !9
  br label %945

945:                                              ; preds = %1021, %944
  %946 = load i32, ptr %29, align 4, !tbaa !9
  %947 = load i32, ptr %80, align 4, !tbaa !9
  %948 = icmp slt i32 %946, %947
  br i1 %948, label %949, label %1024

949:                                              ; preds = %945
  store double 0.000000e+00, ptr %42, align 8, !tbaa !15
  %950 = load double, ptr %45, align 8, !tbaa !15
  store double %950, ptr %44, align 8, !tbaa !15
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %951

951:                                              ; preds = %982, %949
  %952 = load i32, ptr %27, align 4, !tbaa !9
  %953 = load i32, ptr %24, align 4, !tbaa !9
  %954 = icmp slt i32 %952, %953
  br i1 %954, label %955, label %985

955:                                              ; preds = %951
  %956 = load i32, ptr %27, align 4, !tbaa !9
  %957 = sext i32 %956 to i64
  %958 = getelementptr inbounds [4 x [34 x [5 x float]]], ptr %66, i64 0, i64 %957
  %959 = load i32, ptr %29, align 4, !tbaa !9
  %960 = sext i32 %959 to i64
  %961 = getelementptr inbounds [34 x [5 x float]], ptr %958, i64 0, i64 %960
  %962 = load i32, ptr %67, align 4, !tbaa !9
  %963 = sext i32 %962 to i64
  %964 = getelementptr inbounds [5 x float], ptr %961, i64 0, i64 %963
  %965 = load float, ptr %964, align 4, !tbaa !11
  %966 = fpext float %965 to double
  %967 = load double, ptr %42, align 8, !tbaa !15
  %968 = fadd double %967, %966
  store double %968, ptr %42, align 8, !tbaa !15
  %969 = load i32, ptr %27, align 4, !tbaa !9
  %970 = sext i32 %969 to i64
  %971 = getelementptr inbounds [4 x [34 x [5 x float]]], ptr %65, i64 0, i64 %970
  %972 = load i32, ptr %29, align 4, !tbaa !9
  %973 = sext i32 %972 to i64
  %974 = getelementptr inbounds [34 x [5 x float]], ptr %971, i64 0, i64 %973
  %975 = load i32, ptr %67, align 4, !tbaa !9
  %976 = sext i32 %975 to i64
  %977 = getelementptr inbounds [5 x float], ptr %974, i64 0, i64 %976
  %978 = load float, ptr %977, align 4, !tbaa !11
  %979 = fpext float %978 to double
  %980 = load double, ptr %44, align 8, !tbaa !15
  %981 = fadd double %980, %979
  store double %981, ptr %44, align 8, !tbaa !15
  br label %982

982:                                              ; preds = %955
  %983 = load i32, ptr %27, align 4, !tbaa !9
  %984 = add nsw i32 %983, 1
  store i32 %984, ptr %27, align 4, !tbaa !9
  br label %951, !llvm.loop !36

985:                                              ; preds = %951
  %986 = load double, ptr %42, align 8, !tbaa !15
  %987 = fcmp ogt double %986, 0.000000e+00
  br i1 %987, label %988, label %1001

988:                                              ; preds = %985
  %989 = load double, ptr %42, align 8, !tbaa !15
  %990 = fmul double 2.000000e+00, %989
  %991 = load double, ptr %44, align 8, !tbaa !15
  %992 = fdiv double %990, %991
  %993 = fptrunc double %992 to float
  store float %993, ptr %54, align 4, !tbaa !11
  %994 = load float, ptr %36, align 4, !tbaa !11
  %995 = load i32, ptr %29, align 4, !tbaa !9
  %996 = sitofp i32 %995 to float
  %997 = fneg float %994
  %998 = call float @llvm.fmuladd.f32(float %997, float %996, float 1.000000e+00)
  %999 = load float, ptr %54, align 4, !tbaa !11
  %1000 = fmul float %999, %998
  store float %1000, ptr %54, align 4, !tbaa !11
  br label %1002

1001:                                             ; preds = %985
  store float 0.000000e+00, ptr %54, align 4, !tbaa !11
  br label %1002

1002:                                             ; preds = %1001, %988
  %1003 = load float, ptr %54, align 4, !tbaa !11
  %1004 = load float, ptr %51, align 4, !tbaa !11
  %1005 = fcmp ogt float %1003, %1004
  br i1 %1005, label %1006, label %1020

1006:                                             ; preds = %1002
  %1007 = load i32, ptr %28, align 4, !tbaa !9
  %1008 = load i32, ptr %29, align 4, !tbaa !9
  %1009 = sext i32 %1008 to i64
  %1010 = getelementptr inbounds [34 x i8], ptr @silk_CB_lags_stage3, i64 0, i64 %1009
  %1011 = load i8, ptr %1010, align 1, !tbaa !22
  %1012 = sext i8 %1011 to i32
  %1013 = add nsw i32 %1007, %1012
  %1014 = load i32, ptr %77, align 4, !tbaa !9
  %1015 = icmp sle i32 %1013, %1014
  br i1 %1015, label %1016, label %1020

1016:                                             ; preds = %1006
  %1017 = load float, ptr %54, align 4, !tbaa !11
  store float %1017, ptr %51, align 4, !tbaa !11
  %1018 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %1018, ptr %60, align 4, !tbaa !9
  %1019 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %1019, ptr %55, align 4, !tbaa !9
  br label %1020

1020:                                             ; preds = %1016, %1006, %1002
  br label %1021

1021:                                             ; preds = %1020
  %1022 = load i32, ptr %29, align 4, !tbaa !9
  %1023 = add nsw i32 %1022, 1
  store i32 %1023, ptr %29, align 4, !tbaa !9
  br label %945, !llvm.loop !37

1024:                                             ; preds = %945
  %1025 = load i32, ptr %67, align 4, !tbaa !9
  %1026 = add nsw i32 %1025, 1
  store i32 %1026, ptr %67, align 4, !tbaa !9
  br label %1027

1027:                                             ; preds = %1024
  %1028 = load i32, ptr %28, align 4, !tbaa !9
  %1029 = add nsw i32 %1028, 1
  store i32 %1029, ptr %28, align 4, !tbaa !9
  br label %940, !llvm.loop !38

1030:                                             ; preds = %940
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %1031

1031:                                             ; preds = %1126, %1030
  %1032 = load i32, ptr %27, align 4, !tbaa !9
  %1033 = load i32, ptr %24, align 4, !tbaa !9
  %1034 = icmp slt i32 %1032, %1033
  br i1 %1034, label %1035, label %1129

1035:                                             ; preds = %1031
  %1036 = load i32, ptr %60, align 4, !tbaa !9
  %1037 = load ptr, ptr %81, align 8, !tbaa !5
  %1038 = load i32, ptr %27, align 4, !tbaa !9
  %1039 = load i32, ptr %61, align 4, !tbaa !9
  %1040 = mul nsw i32 %1038, %1039
  %1041 = load i32, ptr %55, align 4, !tbaa !9
  %1042 = add nsw i32 %1040, %1041
  %1043 = sext i32 %1042 to i64
  %1044 = getelementptr inbounds i8, ptr %1037, i64 %1043
  %1045 = load i8, ptr %1044, align 1, !tbaa !22
  %1046 = sext i8 %1045 to i32
  %1047 = add nsw i32 %1036, %1046
  %1048 = load ptr, ptr %15, align 8, !tbaa !5
  %1049 = load i32, ptr %27, align 4, !tbaa !9
  %1050 = sext i32 %1049 to i64
  %1051 = getelementptr inbounds i32, ptr %1048, i64 %1050
  store i32 %1047, ptr %1051, align 4, !tbaa !9
  %1052 = load i32, ptr %74, align 4, !tbaa !9
  %1053 = load i32, ptr %22, align 4, !tbaa !9
  %1054 = mul nsw i32 18, %1053
  %1055 = icmp sgt i32 %1052, %1054
  br i1 %1055, label %1056, label %1088

1056:                                             ; preds = %1035
  %1057 = load ptr, ptr %15, align 8, !tbaa !5
  %1058 = load i32, ptr %27, align 4, !tbaa !9
  %1059 = sext i32 %1058 to i64
  %1060 = getelementptr inbounds i32, ptr %1057, i64 %1059
  %1061 = load i32, ptr %1060, align 4, !tbaa !9
  %1062 = load i32, ptr %74, align 4, !tbaa !9
  %1063 = icmp sgt i32 %1061, %1062
  br i1 %1063, label %1064, label %1066

1064:                                             ; preds = %1056
  %1065 = load i32, ptr %74, align 4, !tbaa !9
  br label %1086

1066:                                             ; preds = %1056
  %1067 = load ptr, ptr %15, align 8, !tbaa !5
  %1068 = load i32, ptr %27, align 4, !tbaa !9
  %1069 = sext i32 %1068 to i64
  %1070 = getelementptr inbounds i32, ptr %1067, i64 %1069
  %1071 = load i32, ptr %1070, align 4, !tbaa !9
  %1072 = load i32, ptr %22, align 4, !tbaa !9
  %1073 = mul nsw i32 18, %1072
  %1074 = icmp slt i32 %1071, %1073
  br i1 %1074, label %1075, label %1078

1075:                                             ; preds = %1066
  %1076 = load i32, ptr %22, align 4, !tbaa !9
  %1077 = mul nsw i32 18, %1076
  br label %1084

1078:                                             ; preds = %1066
  %1079 = load ptr, ptr %15, align 8, !tbaa !5
  %1080 = load i32, ptr %27, align 4, !tbaa !9
  %1081 = sext i32 %1080 to i64
  %1082 = getelementptr inbounds i32, ptr %1079, i64 %1081
  %1083 = load i32, ptr %1082, align 4, !tbaa !9
  br label %1084

1084:                                             ; preds = %1078, %1075
  %1085 = phi i32 [ %1077, %1075 ], [ %1083, %1078 ]
  br label %1086

1086:                                             ; preds = %1084, %1064
  %1087 = phi i32 [ %1065, %1064 ], [ %1085, %1084 ]
  br label %1120

1088:                                             ; preds = %1035
  %1089 = load ptr, ptr %15, align 8, !tbaa !5
  %1090 = load i32, ptr %27, align 4, !tbaa !9
  %1091 = sext i32 %1090 to i64
  %1092 = getelementptr inbounds i32, ptr %1089, i64 %1091
  %1093 = load i32, ptr %1092, align 4, !tbaa !9
  %1094 = load i32, ptr %22, align 4, !tbaa !9
  %1095 = mul nsw i32 18, %1094
  %1096 = icmp sgt i32 %1093, %1095
  br i1 %1096, label %1097, label %1100

1097:                                             ; preds = %1088
  %1098 = load i32, ptr %22, align 4, !tbaa !9
  %1099 = mul nsw i32 18, %1098
  br label %1118

1100:                                             ; preds = %1088
  %1101 = load ptr, ptr %15, align 8, !tbaa !5
  %1102 = load i32, ptr %27, align 4, !tbaa !9
  %1103 = sext i32 %1102 to i64
  %1104 = getelementptr inbounds i32, ptr %1101, i64 %1103
  %1105 = load i32, ptr %1104, align 4, !tbaa !9
  %1106 = load i32, ptr %74, align 4, !tbaa !9
  %1107 = icmp slt i32 %1105, %1106
  br i1 %1107, label %1108, label %1110

1108:                                             ; preds = %1100
  %1109 = load i32, ptr %74, align 4, !tbaa !9
  br label %1116

1110:                                             ; preds = %1100
  %1111 = load ptr, ptr %15, align 8, !tbaa !5
  %1112 = load i32, ptr %27, align 4, !tbaa !9
  %1113 = sext i32 %1112 to i64
  %1114 = getelementptr inbounds i32, ptr %1111, i64 %1113
  %1115 = load i32, ptr %1114, align 4, !tbaa !9
  br label %1116

1116:                                             ; preds = %1110, %1108
  %1117 = phi i32 [ %1109, %1108 ], [ %1115, %1110 ]
  br label %1118

1118:                                             ; preds = %1116, %1097
  %1119 = phi i32 [ %1099, %1097 ], [ %1117, %1116 ]
  br label %1120

1120:                                             ; preds = %1118, %1086
  %1121 = phi i32 [ %1087, %1086 ], [ %1119, %1118 ]
  %1122 = load ptr, ptr %15, align 8, !tbaa !5
  %1123 = load i32, ptr %27, align 4, !tbaa !9
  %1124 = sext i32 %1123 to i64
  %1125 = getelementptr inbounds i32, ptr %1122, i64 %1124
  store i32 %1121, ptr %1125, align 4, !tbaa !9
  br label %1126

1126:                                             ; preds = %1120
  %1127 = load i32, ptr %27, align 4, !tbaa !9
  %1128 = add nsw i32 %1127, 1
  store i32 %1128, ptr %27, align 4, !tbaa !9
  br label %1031, !llvm.loop !39

1129:                                             ; preds = %1031
  %1130 = load i32, ptr %60, align 4, !tbaa !9
  %1131 = load i32, ptr %74, align 4, !tbaa !9
  %1132 = sub nsw i32 %1130, %1131
  %1133 = trunc i32 %1132 to i16
  %1134 = load ptr, ptr %16, align 8, !tbaa !5
  store i16 %1133, ptr %1134, align 2, !tbaa !20
  %1135 = load i32, ptr %55, align 4, !tbaa !9
  %1136 = trunc i32 %1135 to i8
  %1137 = load ptr, ptr %17, align 8, !tbaa !5
  store i8 %1136, ptr %1137, align 1, !tbaa !22
  br label %1236

1138:                                             ; preds = %825
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %1139

1139:                                             ; preds = %1224, %1138
  %1140 = load i32, ptr %27, align 4, !tbaa !9
  %1141 = load i32, ptr %24, align 4, !tbaa !9
  %1142 = icmp slt i32 %1140, %1141
  br i1 %1142, label %1143, label %1227

1143:                                             ; preds = %1139
  %1144 = load i32, ptr %57, align 4, !tbaa !9
  %1145 = load ptr, ptr %81, align 8, !tbaa !5
  %1146 = load i32, ptr %27, align 4, !tbaa !9
  %1147 = load i32, ptr %61, align 4, !tbaa !9
  %1148 = mul nsw i32 %1146, %1147
  %1149 = load i32, ptr %55, align 4, !tbaa !9
  %1150 = add nsw i32 %1148, %1149
  %1151 = sext i32 %1150 to i64
  %1152 = getelementptr inbounds i8, ptr %1145, i64 %1151
  %1153 = load i8, ptr %1152, align 1, !tbaa !22
  %1154 = sext i8 %1153 to i32
  %1155 = add nsw i32 %1144, %1154
  %1156 = load ptr, ptr %15, align 8, !tbaa !5
  %1157 = load i32, ptr %27, align 4, !tbaa !9
  %1158 = sext i32 %1157 to i64
  %1159 = getelementptr inbounds i32, ptr %1156, i64 %1158
  store i32 %1155, ptr %1159, align 4, !tbaa !9
  %1160 = load i32, ptr %75, align 4, !tbaa !9
  %1161 = icmp sgt i32 %1160, 144
  br i1 %1161, label %1162, label %1190

1162:                                             ; preds = %1143
  %1163 = load ptr, ptr %15, align 8, !tbaa !5
  %1164 = load i32, ptr %27, align 4, !tbaa !9
  %1165 = sext i32 %1164 to i64
  %1166 = getelementptr inbounds i32, ptr %1163, i64 %1165
  %1167 = load i32, ptr %1166, align 4, !tbaa !9
  %1168 = load i32, ptr %75, align 4, !tbaa !9
  %1169 = icmp sgt i32 %1167, %1168
  br i1 %1169, label %1170, label %1172

1170:                                             ; preds = %1162
  %1171 = load i32, ptr %75, align 4, !tbaa !9
  br label %1188

1172:                                             ; preds = %1162
  %1173 = load ptr, ptr %15, align 8, !tbaa !5
  %1174 = load i32, ptr %27, align 4, !tbaa !9
  %1175 = sext i32 %1174 to i64
  %1176 = getelementptr inbounds i32, ptr %1173, i64 %1175
  %1177 = load i32, ptr %1176, align 4, !tbaa !9
  %1178 = icmp slt i32 %1177, 144
  br i1 %1178, label %1179, label %1180

1179:                                             ; preds = %1172
  br label %1186

1180:                                             ; preds = %1172
  %1181 = load ptr, ptr %15, align 8, !tbaa !5
  %1182 = load i32, ptr %27, align 4, !tbaa !9
  %1183 = sext i32 %1182 to i64
  %1184 = getelementptr inbounds i32, ptr %1181, i64 %1183
  %1185 = load i32, ptr %1184, align 4, !tbaa !9
  br label %1186

1186:                                             ; preds = %1180, %1179
  %1187 = phi i32 [ 144, %1179 ], [ %1185, %1180 ]
  br label %1188

1188:                                             ; preds = %1186, %1170
  %1189 = phi i32 [ %1171, %1170 ], [ %1187, %1186 ]
  br label %1218

1190:                                             ; preds = %1143
  %1191 = load ptr, ptr %15, align 8, !tbaa !5
  %1192 = load i32, ptr %27, align 4, !tbaa !9
  %1193 = sext i32 %1192 to i64
  %1194 = getelementptr inbounds i32, ptr %1191, i64 %1193
  %1195 = load i32, ptr %1194, align 4, !tbaa !9
  %1196 = icmp sgt i32 %1195, 144
  br i1 %1196, label %1197, label %1198

1197:                                             ; preds = %1190
  br label %1216

1198:                                             ; preds = %1190
  %1199 = load ptr, ptr %15, align 8, !tbaa !5
  %1200 = load i32, ptr %27, align 4, !tbaa !9
  %1201 = sext i32 %1200 to i64
  %1202 = getelementptr inbounds i32, ptr %1199, i64 %1201
  %1203 = load i32, ptr %1202, align 4, !tbaa !9
  %1204 = load i32, ptr %75, align 4, !tbaa !9
  %1205 = icmp slt i32 %1203, %1204
  br i1 %1205, label %1206, label %1208

1206:                                             ; preds = %1198
  %1207 = load i32, ptr %75, align 4, !tbaa !9
  br label %1214

1208:                                             ; preds = %1198
  %1209 = load ptr, ptr %15, align 8, !tbaa !5
  %1210 = load i32, ptr %27, align 4, !tbaa !9
  %1211 = sext i32 %1210 to i64
  %1212 = getelementptr inbounds i32, ptr %1209, i64 %1211
  %1213 = load i32, ptr %1212, align 4, !tbaa !9
  br label %1214

1214:                                             ; preds = %1208, %1206
  %1215 = phi i32 [ %1207, %1206 ], [ %1213, %1208 ]
  br label %1216

1216:                                             ; preds = %1214, %1197
  %1217 = phi i32 [ 144, %1197 ], [ %1215, %1214 ]
  br label %1218

1218:                                             ; preds = %1216, %1188
  %1219 = phi i32 [ %1189, %1188 ], [ %1217, %1216 ]
  %1220 = load ptr, ptr %15, align 8, !tbaa !5
  %1221 = load i32, ptr %27, align 4, !tbaa !9
  %1222 = sext i32 %1221 to i64
  %1223 = getelementptr inbounds i32, ptr %1220, i64 %1222
  store i32 %1219, ptr %1223, align 4, !tbaa !9
  br label %1224

1224:                                             ; preds = %1218
  %1225 = load i32, ptr %27, align 4, !tbaa !9
  %1226 = add nsw i32 %1225, 1
  store i32 %1226, ptr %27, align 4, !tbaa !9
  br label %1139, !llvm.loop !40

1227:                                             ; preds = %1139
  %1228 = load i32, ptr %57, align 4, !tbaa !9
  %1229 = load i32, ptr %75, align 4, !tbaa !9
  %1230 = sub nsw i32 %1228, %1229
  %1231 = trunc i32 %1230 to i16
  %1232 = load ptr, ptr %16, align 8, !tbaa !5
  store i16 %1231, ptr %1232, align 2, !tbaa !20
  %1233 = load i32, ptr %55, align 4, !tbaa !9
  %1234 = trunc i32 %1233 to i8
  %1235 = load ptr, ptr %17, align 8, !tbaa !5
  store i8 %1234, ptr %1235, align 1, !tbaa !22
  br label %1236

1236:                                             ; preds = %1227, %1129
  store i32 0, ptr %13, align 4
  store i32 1, ptr %84, align 4
  br label %1237

1237:                                             ; preds = %1236, %820, %381
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 2720, ptr %66) #6
  call void @llvm.lifetime.end.p0(i64 2720, ptr %65) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 298, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 96, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 44, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 260, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 2384, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 320, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 640, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 640, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 1280, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  %1238 = load i32, ptr %13, align 4
  ret i32 %1238
}

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @silk_float2short_array(ptr noundef, ptr noundef, i32 noundef) #2

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

declare void @silk_resampler_down2(ptr noundef, ptr noundef, ptr noundef, i32 noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @silk_short2float_array(ptr noundef, ptr noundef, i32 noundef) #2

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

declare void @silk_resampler_down2_3(ptr noundef, ptr noundef, ptr noundef, i32 noundef) #4

declare void @celt_pitch_xcorr_c(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef) #4

declare double @silk_energy_FLP(ptr noundef, i32 noundef) #4

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

declare void @silk_insertion_sort_decreasing_FLP(ptr noundef, ptr noundef, i32 noundef, i32 noundef) #4

declare double @silk_inner_product_FLP(ptr noundef, ptr noundef, i32 noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden float @silk_log2(double noundef) #2

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @silk_max_int(i32 noundef, i32 noundef) #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @silk_min_int(i32 noundef, i32 noundef) #2

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

; Function Attrs: nounwind uwtable
declare hidden void @silk_P_Ana_calc_energy_st3(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 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 = { inlinehint 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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { "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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { 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, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = !{!16, !16, i64 0}
!16 = !{!"double", !7, i64 0}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = !{!21, !21, i64 0}
!21 = !{!"short", !7, i64 0}
!22 = !{!7, !7, i64 0}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}
!32 = distinct !{!32, !14}
!33 = distinct !{!33, !14}
!34 = distinct !{!34, !14}
!35 = distinct !{!35, !14}
!36 = distinct !{!36, !14}
!37 = distinct !{!37, !14}
!38 = distinct !{!38, !14}
!39 = distinct !{!39, !14}
!40 = distinct !{!40, !14}


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

@silk_CB_lags_stage2 = external local_unnamed_addr constant [4 x [11 x i8]], align 16
@silk_CB_lags_stage2_10_ms = external local_unnamed_addr constant [2 x [3 x i8]], align 1
@silk_nb_cbk_searchs_stage3 = external local_unnamed_addr constant [3 x i8], align 1
@silk_CB_lags_stage3 = external local_unnamed_addr constant [4 x [34 x i8]], align 16
@silk_CB_lags_stage3_10_ms = external local_unnamed_addr constant [2 x [12 x i8]], align 16

; Function Attrs: nounwind uwtable
define dso_local range(i32 0, 2) i32 @silk_pitch_analysis_core_FLP(ptr noundef %0, ptr nocapture noundef writeonly %1, ptr nocapture noundef writeonly %2, ptr nocapture noundef writeonly %3, ptr nocapture noundef %4, i32 noundef %5, float noundef %6, float noundef %7, i32 noundef %8, i32 noundef %9, i32 noundef %10, i32 noundef %11) local_unnamed_addr #0 {
  %13 = alloca [320 x float], align 16
  %14 = alloca [160 x float], align 16
  %15 = alloca [320 x i16], align 16
  %16 = alloca [160 x i16], align 16
  %17 = alloca [6 x i32], align 16
  %18 = alloca [4 x [149 x float]], align 16
  %19 = alloca [65 x float], align 16
  %20 = alloca [11 x float], align 16
  %21 = alloca [24 x i32], align 16
  %22 = alloca [149 x i16], align 16
  %23 = alloca [4 x [34 x [5 x float]]], align 16
  %24 = alloca [4 x [34 x [5 x float]]], align 16
  %25 = alloca [640 x i16], align 16
  %26 = alloca [480 x i16], align 16
  call void @llvm.lifetime.start.p0(i64 1280, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 640, ptr nonnull %14) #7
  call void @llvm.lifetime.start.p0(i64 640, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 320, ptr nonnull %16) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17) #7
  call void @llvm.lifetime.start.p0(i64 2384, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 260, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %21) #7
  call void @llvm.lifetime.start.p0(i64 298, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 2720, ptr nonnull %23) #7
  call void @llvm.lifetime.start.p0(i64 2720, ptr nonnull %24) #7
  %27 = mul i32 %10, 5
  %28 = add i32 %27, 20
  %29 = mul nsw i32 %28, %8
  %30 = shl i32 %28, 2
  %31 = shl nsw i32 %28, 3
  %32 = mul nsw i32 %8, 5
  %33 = shl nsw i32 %8, 1
  %34 = mul nsw i32 %8, 18
  %35 = add nsw i32 %34, -1
  %36 = icmp eq i32 %8, 16
  br i1 %36, label %37, label %38

37:                                               ; preds = %12
  call void @llvm.lifetime.start.p0(i64 1280, ptr nonnull %25) #7
  call void @silk_float2short_array(ptr noundef nonnull %25, ptr noundef %0, i32 noundef %29)
  store i64 0, ptr %17, align 16
  call void @silk_resampler_down2(ptr noundef nonnull %17, ptr noundef nonnull %15, ptr noundef nonnull %25, i32 noundef %29) #7
  call void @silk_short2float_array(ptr noundef nonnull %13, ptr noundef nonnull %15, i32 noundef %31)
  call void @llvm.lifetime.end.p0(i64 1280, ptr nonnull %25) #7
  br label %42

38:                                               ; preds = %12
  %39 = icmp eq i32 %8, 12
  br i1 %39, label %40, label %41

40:                                               ; preds = %38
  call void @llvm.lifetime.start.p0(i64 960, ptr nonnull %26) #7
  call void @silk_float2short_array(ptr noundef nonnull %26, ptr noundef %0, i32 noundef %29)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %17, i8 0, i64 24, i1 false)
  call void @silk_resampler_down2_3(ptr noundef nonnull %17, ptr noundef nonnull %15, ptr noundef nonnull %26, i32 noundef %29) #7
  call void @silk_short2float_array(ptr noundef nonnull %13, ptr noundef nonnull %15, i32 noundef %31)
  call void @llvm.lifetime.end.p0(i64 960, ptr nonnull %26) #7
  br label %42

41:                                               ; preds = %38
  call void @silk_float2short_array(ptr noundef nonnull %15, ptr noundef %0, i32 noundef %31)
  br label %42

42:                                               ; preds = %40, %41, %37
  store i64 0, ptr %17, align 16
  call void @silk_resampler_down2(ptr noundef nonnull %17, ptr noundef nonnull %16, ptr noundef nonnull %15, i32 noundef %31) #7
  call void @silk_short2float_array(ptr noundef nonnull %14, ptr noundef nonnull %16, i32 noundef %30)
  %43 = icmp sgt i32 %10, -4
  br i1 %43, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %42
  %44 = zext i32 %30 to i64
  %45 = mul i32 %10, 20
  %46 = add i32 %45, 80
  %smin = call i32 @llvm.smin.i32(i32 %30, i32 2)
  %47 = sub i32 %46, %smin
  %min.iters.check = icmp ult i32 %47, 4
  br i1 %min.iters.check, label %.lr.ph.preheader837, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %48 = and i32 %47, -4
  %n.vec = zext i32 %48 to i64
  %ind.end = sub nsw i64 %44, %n.vec
  %invariant.gep882 = getelementptr i8, ptr %14, i64 -12
  %invariant.gep884 = getelementptr i8, ptr %14, i64 -12
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = sub i64 %44, %index
  %49 = add i64 %offset.idx, 4294967295
  %50 = and i64 %49, 4294967295
  %gep883 = getelementptr [160 x float], ptr %invariant.gep882, i64 0, i64 %50
  %wide.load = load <4 x float>, ptr %gep883, align 4, !tbaa !5
  %51 = fptosi <4 x float> %wide.load to <4 x i32>
  %52 = sitofp <4 x i32> %51 to <4 x float>
  %53 = add i64 %offset.idx, 4294967294
  %54 = and i64 %53, 4294967294
  %gep885 = getelementptr [160 x float], ptr %invariant.gep884, i64 0, i64 %54
  %wide.load737 = load <4 x float>, ptr %gep885, align 4, !tbaa !5
  %55 = fadd <4 x float> %wide.load737, %52
  %56 = shufflevector <4 x float> %55, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %57 = fcmp ule <4 x float> %56, <float 3.276700e+04, float 3.276700e+04, float 3.276700e+04, float 3.276700e+04>
  %58 = fcmp olt <4 x float> %56, <float -3.276800e+04, float -3.276800e+04, float -3.276800e+04, float -3.276800e+04>
  %59 = xor <4 x i1> %58, <i1 true, i1 true, i1 true, i1 true>
  %60 = and <4 x i1> %57, %59
  %61 = and <4 x i1> %57, %58
  %62 = fptosi <4 x float> %56 to <4 x i16>
  %63 = sitofp <4 x i16> %62 to <4 x float>
  %64 = select <4 x i1> %60, <4 x float> %63, <4 x float> <float 3.276700e+04, float 3.276700e+04, float 3.276700e+04, float 3.276700e+04>
  %65 = select <4 x i1> %61, <4 x float> <float -3.276800e+04, float -3.276800e+04, float -3.276800e+04, float -3.276800e+04>, <4 x float> %64
  %reverse740 = shufflevector <4 x float> %65, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  store <4 x float> %reverse740, ptr %gep883, align 4, !tbaa !5
  %index.next = add nuw i64 %index, 4
  %66 = icmp eq i64 %index.next, %n.vec
  br i1 %66, label %.lr.ph.preheader837, label %vector.body, !llvm.loop !9

.lr.ph.preheader837:                              ; preds = %vector.body, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ %44, %.lr.ph.preheader ], [ %ind.end, %vector.body ]
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader837, %82
  %indvars.iv = phi i64 [ %indvars.iv.next, %82 ], [ %indvars.iv.ph, %.lr.ph.preheader837 ]
  %indvars.iv.next = add nsw i64 %indvars.iv, -1
  %67 = and i64 %indvars.iv.next, 4294967295
  %68 = getelementptr inbounds [160 x float], ptr %14, i64 0, i64 %67
  %69 = load float, ptr %68, align 4, !tbaa !5
  %70 = fptosi float %69 to i32
  %71 = sitofp i32 %70 to float
  %72 = trunc nuw i64 %indvars.iv to i32
  %73 = add i64 %indvars.iv, 4294967294
  %74 = and i64 %73, 4294967295
  %75 = getelementptr inbounds [160 x float], ptr %14, i64 0, i64 %74
  %76 = load float, ptr %75, align 4, !tbaa !5
  %77 = fadd float %76, %71
  %78 = fcmp ogt float %77, 3.276700e+04
  br i1 %78, label %82, label %79

79:                                               ; preds = %.lr.ph
  %80 = fcmp olt float %77, -3.276800e+04
  br i1 %80, label %82, label %81

81:                                               ; preds = %79
  br label %82

82:                                               ; preds = %81, %79, %.lr.ph
  %83 = phi float [ 3.276700e+04, %.lr.ph ], [ %77, %81 ], [ -3.276800e+04, %79 ]
  %84 = fptosi float %83 to i16
  %85 = sitofp i16 %84 to float
  store float %85, ptr %68, align 4, !tbaa !5
  %86 = icmp sgt i32 %72, 2
  br i1 %86, label %.lr.ph, label %._crit_edge, !llvm.loop !13

._crit_edge:                                      ; preds = %82, %42
  %87 = sext i32 %10 to i64
  %88 = shl nsw i64 %87, 2
  %89 = mul nsw i64 %87, 596
  call void @llvm.memset.p0.i64(ptr nonnull align 16 %18, i8 0, i64 %89, i1 false)
  %90 = ashr i32 %10, 1
  %91 = icmp sgt i32 %90, 0
  br i1 %91, label %.lr.ph499, label %vector.body745.preheader

.lr.ph499:                                        ; preds = %._crit_edge
  %92 = getelementptr inbounds i8, ptr %14, i64 320
  %93 = getelementptr inbounds i8, ptr %19, i64 256
  %94 = getelementptr inbounds i8, ptr %18, i64 32
  br label %95

95:                                               ; preds = %.lr.ph499, %130
  %.0398497 = phi i32 [ 0, %.lr.ph499 ], [ %132, %130 ]
  %.0409496 = phi ptr [ %92, %.lr.ph499 ], [ %131, %130 ]
  %96 = getelementptr inbounds i8, ptr %.0409496, i64 -32
  %97 = getelementptr inbounds i8, ptr %.0409496, i64 -288
  call void @celt_pitch_xcorr_c(ptr noundef nonnull %.0409496, ptr noundef nonnull %97, ptr noundef nonnull %19, i32 noundef 40, i32 noundef 65, i32 noundef %11) #7
  %98 = load float, ptr %93, align 16, !tbaa !5
  %99 = fpext float %98 to double
  %100 = call double @silk_energy_FLP(ptr noundef nonnull %.0409496, i32 noundef 40) #7
  %101 = call double @silk_energy_FLP(ptr noundef nonnull %96, i32 noundef 40) #7
  %102 = fadd double %100, %101
  %103 = fadd double %102, 1.600000e+05
  %104 = fmul double %99, 2.000000e+00
  %105 = fdiv double %104, %103
  %106 = fptrunc double %105 to float
  %107 = load float, ptr %94, align 16, !tbaa !5
  %108 = fadd float %107, %106
  store float %108, ptr %94, align 16, !tbaa !5
  br label %109

109:                                              ; preds = %95, %109
  %indvars.iv599 = phi i64 [ 9, %95 ], [ %indvars.iv.next600, %109 ]
  %.0412494 = phi ptr [ %96, %95 ], [ %110, %109 ]
  %.0414493 = phi double [ %103, %95 ], [ %123, %109 ]
  %110 = getelementptr inbounds i8, ptr %.0412494, i64 -4
  %111 = sub nuw nsw i64 72, %indvars.iv599
  %112 = getelementptr inbounds [65 x float], ptr %19, i64 0, i64 %111
  %113 = load float, ptr %112, align 4, !tbaa !5
  %114 = fpext float %113 to double
  %115 = load float, ptr %110, align 4, !tbaa !5
  %116 = fpext float %115 to double
  %117 = getelementptr inbounds i8, ptr %.0412494, i64 156
  %118 = load float, ptr %117, align 4, !tbaa !5
  %119 = fpext float %118 to double
  %120 = fneg double %119
  %121 = fmul double %120, %119
  %122 = call double @llvm.fmuladd.f64(double %116, double %116, double %121)
  %123 = fadd double %.0414493, %122
  %124 = fmul double %114, 2.000000e+00
  %125 = fdiv double %124, %123
  %126 = fptrunc double %125 to float
  %127 = getelementptr inbounds [149 x float], ptr %18, i64 0, i64 %indvars.iv599
  %128 = load float, ptr %127, align 4, !tbaa !5
  %129 = fadd float %128, %126
  store float %129, ptr %127, align 4, !tbaa !5
  %indvars.iv.next600 = add nuw nsw i64 %indvars.iv599, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next600, 73
  br i1 %exitcond.not, label %130, label %109, !llvm.loop !14

130:                                              ; preds = %109
  %131 = getelementptr inbounds i8, ptr %.0409496, i64 160
  %132 = add nuw nsw i32 %.0398497, 1
  %exitcond603.not = icmp eq i32 %132, %90
  br i1 %exitcond603.not, label %vector.body745.preheader, label %95, !llvm.loop !15

vector.body745.preheader:                         ; preds = %130, %._crit_edge
  %133 = getelementptr inbounds i8, ptr %18, i64 276
  %134 = getelementptr inbounds i8, ptr %18, i64 260
  %wide.load749 = load <4 x float>, ptr %133, align 4, !tbaa !5
  %reverse750 = shufflevector <4 x float> %wide.load749, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %wide.load751 = load <4 x float>, ptr %134, align 4, !tbaa !5
  %reverse752 = shufflevector <4 x float> %wide.load751, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %135 = fmul <4 x float> %reverse750, <float 7.200000e+01, float 7.100000e+01, float 7.000000e+01, float 6.900000e+01>
  %136 = fmul <4 x float> %reverse752, <float 6.800000e+01, float 6.700000e+01, float 6.600000e+01, float 6.500000e+01>
  %137 = fmul <4 x float> %135, <float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000>
  %138 = fmul <4 x float> %136, <float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000>
  %139 = fsub <4 x float> %reverse750, %137
  %140 = fsub <4 x float> %reverse752, %138
  %reverse753 = shufflevector <4 x float> %139, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  store <4 x float> %reverse753, ptr %133, align 4, !tbaa !5
  %reverse754 = shufflevector <4 x float> %140, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  store <4 x float> %reverse754, ptr %134, align 4, !tbaa !5
  %141 = getelementptr inbounds i8, ptr %18, i64 244
  %142 = getelementptr inbounds i8, ptr %18, i64 228
  %wide.load749.1 = load <4 x float>, ptr %141, align 4, !tbaa !5
  %reverse750.1 = shufflevector <4 x float> %wide.load749.1, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %wide.load751.1 = load <4 x float>, ptr %142, align 4, !tbaa !5
  %reverse752.1 = shufflevector <4 x float> %wide.load751.1, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %143 = fmul <4 x float> %reverse750.1, <float 6.400000e+01, float 6.300000e+01, float 6.200000e+01, float 6.100000e+01>
  %144 = fmul <4 x float> %reverse752.1, <float 6.000000e+01, float 5.900000e+01, float 5.800000e+01, float 5.700000e+01>
  %145 = fmul <4 x float> %143, <float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000>
  %146 = fmul <4 x float> %144, <float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000>
  %147 = fsub <4 x float> %reverse750.1, %145
  %148 = fsub <4 x float> %reverse752.1, %146
  %reverse753.1 = shufflevector <4 x float> %147, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  store <4 x float> %reverse753.1, ptr %141, align 4, !tbaa !5
  %reverse754.1 = shufflevector <4 x float> %148, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  store <4 x float> %reverse754.1, ptr %142, align 4, !tbaa !5
  %149 = getelementptr inbounds i8, ptr %18, i64 212
  %150 = getelementptr inbounds i8, ptr %18, i64 196
  %wide.load749.2 = load <4 x float>, ptr %149, align 4, !tbaa !5
  %reverse750.2 = shufflevector <4 x float> %wide.load749.2, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %wide.load751.2 = load <4 x float>, ptr %150, align 4, !tbaa !5
  %reverse752.2 = shufflevector <4 x float> %wide.load751.2, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %151 = fmul <4 x float> %reverse750.2, <float 5.600000e+01, float 5.500000e+01, float 5.400000e+01, float 5.300000e+01>
  %152 = fmul <4 x float> %reverse752.2, <float 5.200000e+01, float 5.100000e+01, float 5.000000e+01, float 4.900000e+01>
  %153 = fmul <4 x float> %151, <float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000>
  %154 = fmul <4 x float> %152, <float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000>
  %155 = fsub <4 x float> %reverse750.2, %153
  %156 = fsub <4 x float> %reverse752.2, %154
  %reverse753.2 = shufflevector <4 x float> %155, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  store <4 x float> %reverse753.2, ptr %149, align 4, !tbaa !5
  %reverse754.2 = shufflevector <4 x float> %156, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  store <4 x float> %reverse754.2, ptr %150, align 4, !tbaa !5
  %157 = getelementptr inbounds i8, ptr %18, i64 180
  %158 = getelementptr inbounds i8, ptr %18, i64 164
  %wide.load749.3 = load <4 x float>, ptr %157, align 4, !tbaa !5
  %reverse750.3 = shufflevector <4 x float> %wide.load749.3, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %wide.load751.3 = load <4 x float>, ptr %158, align 4, !tbaa !5
  %reverse752.3 = shufflevector <4 x float> %wide.load751.3, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %159 = fmul <4 x float> %reverse750.3, <float 4.800000e+01, float 4.700000e+01, float 4.600000e+01, float 4.500000e+01>
  %160 = fmul <4 x float> %reverse752.3, <float 4.400000e+01, float 4.300000e+01, float 4.200000e+01, float 4.100000e+01>
  %161 = fmul <4 x float> %159, <float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000>
  %162 = fmul <4 x float> %160, <float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000>
  %163 = fsub <4 x float> %reverse750.3, %161
  %164 = fsub <4 x float> %reverse752.3, %162
  %reverse753.3 = shufflevector <4 x float> %163, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  store <4 x float> %reverse753.3, ptr %157, align 4, !tbaa !5
  %reverse754.3 = shufflevector <4 x float> %164, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  store <4 x float> %reverse754.3, ptr %158, align 4, !tbaa !5
  %165 = getelementptr inbounds i8, ptr %18, i64 148
  %166 = getelementptr inbounds i8, ptr %18, i64 132
  %wide.load749.4 = load <4 x float>, ptr %165, align 4, !tbaa !5
  %reverse750.4 = shufflevector <4 x float> %wide.load749.4, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %wide.load751.4 = load <4 x float>, ptr %166, align 4, !tbaa !5
  %reverse752.4 = shufflevector <4 x float> %wide.load751.4, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %167 = fmul <4 x float> %reverse750.4, <float 4.000000e+01, float 3.900000e+01, float 3.800000e+01, float 3.700000e+01>
  %168 = fmul <4 x float> %reverse752.4, <float 3.600000e+01, float 3.500000e+01, float 3.400000e+01, float 3.300000e+01>
  %169 = fmul <4 x float> %167, <float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000>
  %170 = fmul <4 x float> %168, <float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000>
  %171 = fsub <4 x float> %reverse750.4, %169
  %172 = fsub <4 x float> %reverse752.4, %170
  %reverse753.4 = shufflevector <4 x float> %171, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  store <4 x float> %reverse753.4, ptr %165, align 4, !tbaa !5
  %reverse754.4 = shufflevector <4 x float> %172, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  store <4 x float> %reverse754.4, ptr %166, align 4, !tbaa !5
  %173 = getelementptr inbounds i8, ptr %18, i64 116
  %174 = getelementptr inbounds i8, ptr %18, i64 100
  %wide.load749.5 = load <4 x float>, ptr %173, align 4, !tbaa !5
  %reverse750.5 = shufflevector <4 x float> %wide.load749.5, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %wide.load751.5 = load <4 x float>, ptr %174, align 4, !tbaa !5
  %reverse752.5 = shufflevector <4 x float> %wide.load751.5, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %175 = fmul <4 x float> %reverse750.5, <float 3.200000e+01, float 3.100000e+01, float 3.000000e+01, float 2.900000e+01>
  %176 = fmul <4 x float> %reverse752.5, <float 2.800000e+01, float 2.700000e+01, float 2.600000e+01, float 2.500000e+01>
  %177 = fmul <4 x float> %175, <float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000>
  %178 = fmul <4 x float> %176, <float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000>
  %179 = fsub <4 x float> %reverse750.5, %177
  %180 = fsub <4 x float> %reverse752.5, %178
  %reverse753.5 = shufflevector <4 x float> %179, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  store <4 x float> %reverse753.5, ptr %173, align 4, !tbaa !5
  %reverse754.5 = shufflevector <4 x float> %180, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  store <4 x float> %reverse754.5, ptr %174, align 4, !tbaa !5
  %181 = getelementptr inbounds i8, ptr %18, i64 84
  %182 = getelementptr inbounds i8, ptr %18, i64 68
  %wide.load749.6 = load <4 x float>, ptr %181, align 4, !tbaa !5
  %reverse750.6 = shufflevector <4 x float> %wide.load749.6, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %wide.load751.6 = load <4 x float>, ptr %182, align 4, !tbaa !5
  %reverse752.6 = shufflevector <4 x float> %wide.load751.6, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %183 = fmul <4 x float> %reverse750.6, <float 2.400000e+01, float 2.300000e+01, float 2.200000e+01, float 2.100000e+01>
  %184 = fmul <4 x float> %reverse752.6, <float 2.000000e+01, float 1.900000e+01, float 1.800000e+01, float 1.700000e+01>
  %185 = fmul <4 x float> %183, <float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000>
  %186 = fmul <4 x float> %184, <float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000>
  %187 = fsub <4 x float> %reverse750.6, %185
  %188 = fsub <4 x float> %reverse752.6, %186
  %reverse753.6 = shufflevector <4 x float> %187, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  store <4 x float> %reverse753.6, ptr %181, align 4, !tbaa !5
  %reverse754.6 = shufflevector <4 x float> %188, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  store <4 x float> %reverse754.6, ptr %182, align 4, !tbaa !5
  %189 = getelementptr inbounds i8, ptr %18, i64 52
  %190 = getelementptr inbounds i8, ptr %18, i64 36
  %wide.load749.7 = load <4 x float>, ptr %189, align 4, !tbaa !5
  %reverse750.7 = shufflevector <4 x float> %wide.load749.7, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %wide.load751.7 = load <4 x float>, ptr %190, align 4, !tbaa !5
  %reverse752.7 = shufflevector <4 x float> %wide.load751.7, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %191 = fmul <4 x float> %reverse750.7, <float 1.600000e+01, float 1.500000e+01, float 1.400000e+01, float 1.300000e+01>
  %192 = fmul <4 x float> %reverse752.7, <float 1.200000e+01, float 1.100000e+01, float 1.000000e+01, float 9.000000e+00>
  %193 = fmul <4 x float> %191, <float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000>
  %194 = fmul <4 x float> %192, <float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000>
  %195 = fsub <4 x float> %reverse750.7, %193
  %196 = fsub <4 x float> %reverse752.7, %194
  %reverse753.7 = shufflevector <4 x float> %195, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  store <4 x float> %reverse753.7, ptr %189, align 4, !tbaa !5
  %reverse754.7 = shufflevector <4 x float> %196, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  store <4 x float> %reverse754.7, ptr %190, align 4, !tbaa !5
  %197 = getelementptr inbounds i8, ptr %18, i64 32
  %198 = load float, ptr %197, align 16, !tbaa !5
  %199 = fmul float %198, 8.000000e+00
  %200 = fmul float %199, 0x3F30000000000000
  %201 = fsub float %198, %200
  store float %201, ptr %197, align 16, !tbaa !5
  %202 = shl nsw i32 %9, 1
  %203 = add nsw i32 %202, 4
  %204 = getelementptr inbounds i8, ptr %18, i64 32
  call void @silk_insertion_sort_decreasing_FLP(ptr noundef nonnull %204, ptr noundef nonnull %21, i32 noundef 65, i32 noundef %203) #7
  %205 = load float, ptr %204, align 16, !tbaa !5
  %206 = fcmp olt float %205, 0x3FC99999A0000000
  br i1 %206, label %207, label %208

207:                                              ; preds = %vector.body745.preheader
  call void @llvm.memset.p0.i64(ptr align 4 %1, i8 0, i64 %88, i1 false)
  store float 0.000000e+00, ptr %4, align 4, !tbaa !5
  store i16 0, ptr %2, align 2, !tbaa !16
  br label %607

208:                                              ; preds = %vector.body745.preheader
  %209 = fmul float %205, %6
  %210 = icmp sgt i32 %9, -2
  br i1 %210, label %.lr.ph503.preheader, label %._crit_edge504

.lr.ph503.preheader:                              ; preds = %208
  %smax = call i32 @llvm.smax.i32(i32 %203, i32 1)
  %wide.trip.count = zext nneg i32 %smax to i64
  br label %.lr.ph503

.lr.ph503:                                        ; preds = %.lr.ph503.preheader, %215
  %indvars.iv608 = phi i64 [ 0, %.lr.ph503.preheader ], [ %indvars.iv.next609, %215 ]
  %211 = add nuw nsw i64 %indvars.iv608, 8
  %212 = getelementptr inbounds [149 x float], ptr %18, i64 0, i64 %211
  %213 = load float, ptr %212, align 4, !tbaa !5
  %214 = fcmp ogt float %213, %209
  br i1 %214, label %215, label %._crit_edge504.loopexit.split.loop.exit

215:                                              ; preds = %.lr.ph503
  %216 = getelementptr inbounds [24 x i32], ptr %21, i64 0, i64 %indvars.iv608
  %217 = load i32, ptr %216, align 4, !tbaa !18
  %218 = shl i32 %217, 1
  %219 = add i32 %218, 16
  store i32 %219, ptr %216, align 4, !tbaa !18
  %indvars.iv.next609 = add nuw nsw i64 %indvars.iv608, 1
  %exitcond612.not = icmp eq i64 %indvars.iv.next609, %wide.trip.count
  br i1 %exitcond612.not, label %._crit_edge504, label %.lr.ph503, !llvm.loop !20

._crit_edge504.loopexit.split.loop.exit:          ; preds = %.lr.ph503
  %220 = trunc nuw nsw i64 %indvars.iv608 to i32
  br label %._crit_edge504

._crit_edge504:                                   ; preds = %215, %._crit_edge504.loopexit.split.loop.exit, %208
  %.0417 = phi i32 [ %203, %208 ], [ %220, %._crit_edge504.loopexit.split.loop.exit ], [ %203, %215 ]
  %scevgep = getelementptr inbounds i8, ptr %22, i64 22
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(274) %scevgep, i8 0, i64 274, i1 false), !tbaa !16
  %221 = icmp sgt i32 %.0417, 0
  br i1 %221, label %.lr.ph509.preheader, label %.preheader487

.lr.ph509.preheader:                              ; preds = %._crit_edge504
  %wide.trip.count621 = zext nneg i32 %.0417 to i64
  %xtraiter = and i64 %wide.trip.count621, 3
  %222 = icmp ult i32 %.0417, 4
  br i1 %222, label %.preheader487.loopexit.unr-lcssa, label %.lr.ph509.preheader.new

.lr.ph509.preheader.new:                          ; preds = %.lr.ph509.preheader
  %unroll_iter = and i64 %wide.trip.count621, 2147483644
  br label %.lr.ph509

.preheader487.loopexit.unr-lcssa:                 ; preds = %.lr.ph509, %.lr.ph509.preheader
  %indvars.iv617.unr = phi i64 [ 0, %.lr.ph509.preheader ], [ %indvars.iv.next618.3, %.lr.ph509 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader487.loopexit, label %.lr.ph509.epil

.lr.ph509.epil:                                   ; preds = %.preheader487.loopexit.unr-lcssa, %.lr.ph509.epil
  %indvars.iv617.epil = phi i64 [ %indvars.iv.next618.epil, %.lr.ph509.epil ], [ %indvars.iv617.unr, %.preheader487.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph509.epil ], [ 0, %.preheader487.loopexit.unr-lcssa ]
  %223 = getelementptr inbounds [24 x i32], ptr %21, i64 0, i64 %indvars.iv617.epil
  %224 = load i32, ptr %223, align 4, !tbaa !18
  %225 = sext i32 %224 to i64
  %226 = getelementptr inbounds [149 x i16], ptr %22, i64 0, i64 %225
  store i16 1, ptr %226, align 2, !tbaa !16
  %indvars.iv.next618.epil = add nuw nsw i64 %indvars.iv617.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 %.preheader487.loopexit, label %.lr.ph509.epil, !llvm.loop !21

.preheader487.loopexit:                           ; preds = %.lr.ph509.epil, %.preheader487.loopexit.unr-lcssa
  %.phi.trans.insert.phi.trans.insert = getelementptr inbounds i8, ptr %22, i64 290
  %.pre.pre = load i16, ptr %.phi.trans.insert.phi.trans.insert, align 2, !tbaa !16
  br label %.preheader487

.preheader487:                                    ; preds = %.preheader487.loopexit, %._crit_edge504
  %.pre = phi i16 [ %.pre.pre, %.preheader487.loopexit ], [ 0, %._crit_edge504 ]
  %.phi.trans.insert = getelementptr inbounds i8, ptr %22, i64 290
  %vector.recur.init = insertelement <8 x i16> poison, i16 %.pre, i64 7
  %invariant.gep886 = getelementptr i8, ptr %22, i64 -14
  %invariant.gep888 = getelementptr i8, ptr %22, i64 -14
  br label %vector.body760

vector.body760:                                   ; preds = %vector.body760, %.preheader487
  %index761 = phi i64 [ 0, %.preheader487 ], [ %index.next768, %vector.body760 ]
  %vector.recur = phi <8 x i16> [ %vector.recur.init, %.preheader487 ], [ %reverse764, %vector.body760 ]
  %offset.idx762 = sub i64 146, %index761
  %227 = sub i64 144, %index761
  %gep887 = getelementptr [149 x i16], ptr %invariant.gep886, i64 0, i64 %227
  %wide.load763 = load <8 x i16>, ptr %gep887, align 2, !tbaa !16
  %reverse764 = shufflevector <8 x i16> %wide.load763, <8 x i16> poison, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
  %228 = shufflevector <8 x i16> %vector.recur, <8 x i16> %reverse764, <8 x i32> <i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14>
  %229 = add <8 x i16> %reverse764, %228
  %gep889 = getelementptr [149 x i16], ptr %invariant.gep888, i64 0, i64 %offset.idx762
  %wide.load765 = load <8 x i16>, ptr %gep889, align 2, !tbaa !16
  %reverse766 = shufflevector <8 x i16> %wide.load765, <8 x i16> poison, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
  %230 = add <8 x i16> %229, %reverse766
  %reverse767 = shufflevector <8 x i16> %230, <8 x i16> poison, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
  store <8 x i16> %reverse767, ptr %gep889, align 2, !tbaa !16
  %index.next768 = add nuw i64 %index761, 8
  %231 = icmp eq i64 %index.next768, 128
  br i1 %231, label %.preheader486.preheader, label %vector.body760, !llvm.loop !23

.lr.ph509:                                        ; preds = %.lr.ph509, %.lr.ph509.preheader.new
  %indvars.iv617 = phi i64 [ 0, %.lr.ph509.preheader.new ], [ %indvars.iv.next618.3, %.lr.ph509 ]
  %niter = phi i64 [ 0, %.lr.ph509.preheader.new ], [ %niter.next.3, %.lr.ph509 ]
  %232 = getelementptr inbounds [24 x i32], ptr %21, i64 0, i64 %indvars.iv617
  %233 = load i32, ptr %232, align 16, !tbaa !18
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds [149 x i16], ptr %22, i64 0, i64 %234
  store i16 1, ptr %235, align 2, !tbaa !16
  %indvars.iv.next618 = or disjoint i64 %indvars.iv617, 1
  %236 = getelementptr inbounds [24 x i32], ptr %21, i64 0, i64 %indvars.iv.next618
  %237 = load i32, ptr %236, align 4, !tbaa !18
  %238 = sext i32 %237 to i64
  %239 = getelementptr inbounds [149 x i16], ptr %22, i64 0, i64 %238
  store i16 1, ptr %239, align 2, !tbaa !16
  %indvars.iv.next618.1 = or disjoint i64 %indvars.iv617, 2
  %240 = getelementptr inbounds [24 x i32], ptr %21, i64 0, i64 %indvars.iv.next618.1
  %241 = load i32, ptr %240, align 8, !tbaa !18
  %242 = sext i32 %241 to i64
  %243 = getelementptr inbounds [149 x i16], ptr %22, i64 0, i64 %242
  store i16 1, ptr %243, align 2, !tbaa !16
  %indvars.iv.next618.2 = or disjoint i64 %indvars.iv617, 3
  %244 = getelementptr inbounds [24 x i32], ptr %21, i64 0, i64 %indvars.iv.next618.2
  %245 = load i32, ptr %244, align 4, !tbaa !18
  %246 = sext i32 %245 to i64
  %247 = getelementptr inbounds [149 x i16], ptr %22, i64 0, i64 %246
  store i16 1, ptr %247, align 2, !tbaa !16
  %indvars.iv.next618.3 = add nuw nsw i64 %indvars.iv617, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.preheader487.loopexit.unr-lcssa, label %.lr.ph509, !llvm.loop !24

.preheader486.preheader:                          ; preds = %vector.body760
  %vector.recur.extract = extractelement <8 x i16> %wide.load763, i64 0
  %248 = getelementptr inbounds i8, ptr %22, i64 32
  %249 = load i16, ptr %248, align 16, !tbaa !16
  %250 = add i16 %249, %vector.recur.extract
  %251 = getelementptr inbounds i8, ptr %22, i64 36
  %252 = load i16, ptr %251, align 4, !tbaa !16
  %253 = add i16 %250, %252
  store i16 %253, ptr %251, align 4, !tbaa !16
  %254 = getelementptr inbounds i8, ptr %22, i64 30
  %255 = load i16, ptr %254, align 2, !tbaa !16
  %256 = add i16 %255, %249
  %257 = getelementptr inbounds i8, ptr %22, i64 34
  %258 = load i16, ptr %257, align 2, !tbaa !16
  %259 = add i16 %256, %258
  store i16 %259, ptr %257, align 2, !tbaa !16
  %260 = getelementptr inbounds i8, ptr %22, i64 28
  %261 = load i16, ptr %260, align 4, !tbaa !16
  %262 = add i16 %261, %255
  %263 = getelementptr inbounds i8, ptr %22, i64 32
  %264 = load i16, ptr %263, align 16, !tbaa !16
  %265 = add i16 %262, %264
  store i16 %265, ptr %263, align 16, !tbaa !16
  br label %.preheader486

vector.ph771:                                     ; preds = %289
  %.phi.trans.insert720 = getelementptr inbounds i8, ptr %22, i64 288
  %.pre721 = load i16, ptr %.phi.trans.insert720, align 16, !tbaa !16
  %.pre719 = load i16, ptr %.phi.trans.insert, align 2, !tbaa !16
  %vector.recur.init775 = insertelement <8 x i16> poison, i16 %.pre721, i64 7
  %vector.recur.init777 = insertelement <8 x i16> poison, i16 %.pre719, i64 7
  %invariant.gep890 = getelementptr i8, ptr %22, i64 -14
  %invariant.gep892 = getelementptr i8, ptr %22, i64 -14
  br label %vector.body773

vector.body773:                                   ; preds = %vector.body773, %vector.ph771
  %index774 = phi i64 [ 0, %vector.ph771 ], [ %index.next785, %vector.body773 ]
  %vector.recur776 = phi <8 x i16> [ %vector.recur.init775, %vector.ph771 ], [ %reverse781, %vector.body773 ]
  %vector.recur778 = phi <8 x i16> [ %vector.recur.init777, %vector.ph771 ], [ %267, %vector.body773 ]
  %offset.idx779 = sub i64 146, %index774
  %266 = sub i64 143, %index774
  %gep891 = getelementptr [149 x i16], ptr %invariant.gep890, i64 0, i64 %266
  %wide.load780 = load <8 x i16>, ptr %gep891, align 16, !tbaa !16
  %reverse781 = shufflevector <8 x i16> %wide.load780, <8 x i16> poison, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
  %267 = shufflevector <8 x i16> %vector.recur776, <8 x i16> %reverse781, <8 x i32> <i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14>
  %268 = shufflevector <8 x i16> %vector.recur778, <8 x i16> %267, <8 x i32> <i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14>
  %269 = add <8 x i16> %267, %268
  %270 = add <8 x i16> %269, %reverse781
  %gep893 = getelementptr [149 x i16], ptr %invariant.gep892, i64 0, i64 %offset.idx779
  %wide.load782 = load <8 x i16>, ptr %gep893, align 2, !tbaa !16
  %reverse783 = shufflevector <8 x i16> %wide.load782, <8 x i16> poison, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
  %271 = add <8 x i16> %270, %reverse783
  %reverse784 = shufflevector <8 x i16> %271, <8 x i16> poison, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
  store <8 x i16> %reverse784, ptr %gep893, align 2, !tbaa !16
  %index.next785 = add nuw i64 %index774, 8
  %272 = icmp eq i64 %index.next785, 128
  br i1 %272, label %.preheader484.preheader, label %vector.body773, !llvm.loop !25

.preheader486:                                    ; preds = %289, %.preheader486.preheader
  %indvars.iv627 = phi i64 [ 16, %.preheader486.preheader ], [ %indvars.iv.next628.1, %289 ]
  %.1418511 = phi i32 [ 0, %.preheader486.preheader ], [ %.2419.1, %289 ]
  %indvars.iv.next628 = or disjoint i64 %indvars.iv627, 1
  %273 = getelementptr inbounds [149 x i16], ptr %22, i64 0, i64 %indvars.iv.next628
  %274 = load i16, ptr %273, align 2, !tbaa !16
  %275 = icmp sgt i16 %274, 0
  br i1 %275, label %276, label %.preheader486.1

276:                                              ; preds = %.preheader486
  %277 = sext i32 %.1418511 to i64
  %278 = getelementptr inbounds [24 x i32], ptr %21, i64 0, i64 %277
  %279 = trunc nuw nsw i64 %indvars.iv627 to i32
  store i32 %279, ptr %278, align 4, !tbaa !18
  %280 = add nsw i32 %.1418511, 1
  br label %.preheader486.1

.preheader486.1:                                  ; preds = %.preheader486, %276
  %.2419 = phi i32 [ %280, %276 ], [ %.1418511, %.preheader486 ]
  %indvars.iv.next628.1 = add nuw nsw i64 %indvars.iv627, 2
  %281 = getelementptr inbounds [149 x i16], ptr %22, i64 0, i64 %indvars.iv.next628.1
  %282 = load i16, ptr %281, align 4, !tbaa !16
  %283 = icmp sgt i16 %282, 0
  br i1 %283, label %284, label %289

284:                                              ; preds = %.preheader486.1
  %285 = sext i32 %.2419 to i64
  %286 = getelementptr inbounds [24 x i32], ptr %21, i64 0, i64 %285
  %287 = trunc nuw nsw i64 %indvars.iv.next628 to i32
  store i32 %287, ptr %286, align 4, !tbaa !18
  %288 = add nsw i32 %.2419, 1
  br label %289

289:                                              ; preds = %284, %.preheader486.1
  %.2419.1 = phi i32 [ %288, %284 ], [ %.2419, %.preheader486.1 ]
  %exitcond631.not.1 = icmp eq i64 %indvars.iv.next628.1, 144
  br i1 %exitcond631.not.1, label %vector.ph771, label %.preheader486, !llvm.loop !26

.preheader484.preheader:                          ; preds = %vector.body773
  %vector.recur.extract787 = extractelement <8 x i16> %wide.load780, i64 1
  %vector.recur.extract786 = extractelement <8 x i16> %wide.load780, i64 0
  %290 = add i16 %vector.recur.extract786, %vector.recur.extract787
  %291 = getelementptr inbounds i8, ptr %22, i64 30
  %292 = load i16, ptr %291, align 2, !tbaa !16
  %293 = add i16 %290, %292
  %294 = getelementptr inbounds i8, ptr %22, i64 36
  %295 = load i16, ptr %294, align 4, !tbaa !16
  %296 = add i16 %293, %295
  store i16 %296, ptr %294, align 4, !tbaa !16
  %297 = add i16 %292, %vector.recur.extract786
  %298 = getelementptr inbounds i8, ptr %22, i64 28
  %299 = load i16, ptr %298, align 4, !tbaa !16
  %300 = add i16 %297, %299
  %301 = getelementptr inbounds i8, ptr %22, i64 34
  %302 = load i16, ptr %301, align 2, !tbaa !16
  %303 = add i16 %300, %302
  store i16 %303, ptr %301, align 2, !tbaa !16
  %304 = add i16 %299, %292
  %305 = getelementptr inbounds i8, ptr %22, i64 26
  %306 = load i16, ptr %305, align 2, !tbaa !16
  %307 = add i16 %304, %306
  %308 = getelementptr inbounds i8, ptr %22, i64 32
  %309 = load i16, ptr %308, align 16, !tbaa !16
  %310 = add i16 %307, %309
  store i16 %310, ptr %308, align 16, !tbaa !16
  br label %.preheader484

.preheader484:                                    ; preds = %330, %.preheader484.preheader
  %indvars.iv636 = phi i64 [ 16, %.preheader484.preheader ], [ %indvars.iv.next637.1, %330 ]
  %.0421514 = phi i32 [ 0, %.preheader484.preheader ], [ %.1422.1, %330 ]
  %311 = getelementptr inbounds [149 x i16], ptr %22, i64 0, i64 %indvars.iv636
  %312 = load i16, ptr %311, align 4, !tbaa !16
  %313 = icmp sgt i16 %312, 0
  br i1 %313, label %314, label %320

314:                                              ; preds = %.preheader484
  %315 = trunc i64 %indvars.iv636 to i16
  %316 = add nsw i16 %315, -2
  %317 = sext i32 %.0421514 to i64
  %318 = getelementptr inbounds [149 x i16], ptr %22, i64 0, i64 %317
  store i16 %316, ptr %318, align 2, !tbaa !16
  %319 = add nsw i32 %.0421514, 1
  br label %320

320:                                              ; preds = %.preheader484, %314
  %.1422 = phi i32 [ %319, %314 ], [ %.0421514, %.preheader484 ]
  %indvars.iv.next637 = or disjoint i64 %indvars.iv636, 1
  %exitcond640.not = icmp eq i64 %indvars.iv636, 146
  br i1 %exitcond640.not, label %331, label %.preheader484.1, !llvm.loop !27

.preheader484.1:                                  ; preds = %320
  %321 = getelementptr inbounds [149 x i16], ptr %22, i64 0, i64 %indvars.iv.next637
  %322 = load i16, ptr %321, align 2, !tbaa !16
  %323 = icmp sgt i16 %322, 0
  br i1 %323, label %324, label %330

324:                                              ; preds = %.preheader484.1
  %325 = trunc i64 %indvars.iv.next637 to i16
  %326 = add nsw i16 %325, -2
  %327 = sext i32 %.1422 to i64
  %328 = getelementptr inbounds [149 x i16], ptr %22, i64 0, i64 %327
  store i16 %326, ptr %328, align 2, !tbaa !16
  %329 = add nsw i32 %.1422, 1
  br label %330

330:                                              ; preds = %324, %.preheader484.1
  %.1422.1 = phi i32 [ %329, %324 ], [ %.1422, %.preheader484.1 ]
  %indvars.iv.next637.1 = add nuw nsw i64 %indvars.iv636, 2
  br label %.preheader484

331:                                              ; preds = %320
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(2384) %18, i8 0, i64 2384, i1 false)
  %332 = icmp eq i32 %8, 8
  %333 = icmp sgt i32 %10, 0
  br i1 %333, label %.lr.ph523, label %._crit_edge524

.lr.ph523:                                        ; preds = %331
  %.1410.v.sroa.sel.v.sroa.sel.v = select i1 %332, ptr %0, ptr %13
  %.1410.v.sroa.sel.v.sroa.sel = getelementptr inbounds i8, ptr %.1410.v.sroa.sel.v.sroa.sel.v, i64 640
  %334 = icmp sgt i32 %.1422, 0
  %wide.trip.count651 = zext nneg i32 %10 to i64
  %wide.trip.count645 = zext nneg i32 %.1422 to i64
  br label %335

335:                                              ; preds = %.lr.ph523, %._crit_edge519
  %indvars.iv647 = phi i64 [ 0, %.lr.ph523 ], [ %indvars.iv.next648, %._crit_edge519 ]
  %.2411520 = phi ptr [ %.1410.v.sroa.sel.v.sroa.sel, %.lr.ph523 ], [ %353, %._crit_edge519 ]
  %336 = call double @silk_energy_FLP(ptr noundef nonnull %.2411520, i32 noundef 40) #7
  %337 = fadd double %336, 1.000000e+00
  br i1 %334, label %.lr.ph518, label %._crit_edge519

.lr.ph518:                                        ; preds = %335, %351
  %indvars.iv641 = phi i64 [ %indvars.iv.next642, %351 ], [ 0, %335 ]
  %338 = getelementptr inbounds [149 x i16], ptr %22, i64 0, i64 %indvars.iv641
  %339 = load i16, ptr %338, align 2, !tbaa !16
  %340 = sext i16 %339 to i64
  %341 = sub nsw i64 0, %340
  %342 = getelementptr inbounds float, ptr %.2411520, i64 %341
  %343 = call double @silk_inner_product_FLP(ptr noundef nonnull %342, ptr noundef nonnull %.2411520, i32 noundef 40) #7
  %344 = fcmp ogt double %343, 0.000000e+00
  br i1 %344, label %345, label %351

345:                                              ; preds = %.lr.ph518
  %346 = call double @silk_energy_FLP(ptr noundef nonnull %342, i32 noundef 40) #7
  %347 = fmul double %343, 2.000000e+00
  %348 = fadd double %337, %346
  %349 = fdiv double %347, %348
  %350 = fptrunc double %349 to float
  br label %351

351:                                              ; preds = %.lr.ph518, %345
  %.sink = phi float [ %350, %345 ], [ 0.000000e+00, %.lr.ph518 ]
  %352 = getelementptr inbounds [4 x [149 x float]], ptr %18, i64 0, i64 %indvars.iv647, i64 %340
  store float %.sink, ptr %352, align 4
  %indvars.iv.next642 = add nuw nsw i64 %indvars.iv641, 1
  %exitcond646.not = icmp eq i64 %indvars.iv.next642, %wide.trip.count645
  br i1 %exitcond646.not, label %._crit_edge519, label %.lr.ph518, !llvm.loop !28

._crit_edge519:                                   ; preds = %351, %335
  %353 = getelementptr inbounds i8, ptr %.2411520, i64 160
  %indvars.iv.next648 = add nuw nsw i64 %indvars.iv647, 1
  %exitcond652.not = icmp eq i64 %indvars.iv.next648, %wide.trip.count651
  br i1 %exitcond652.not, label %._crit_edge524, label %335, !llvm.loop !29

._crit_edge524:                                   ; preds = %._crit_edge519, %331
  %354 = icmp sgt i32 %5, 0
  br i1 %354, label %355, label %367

355:                                              ; preds = %._crit_edge524
  %356 = icmp eq i32 %8, 12
  br i1 %356, label %357, label %360

357:                                              ; preds = %355
  %358 = shl nuw i32 %5, 1
  %359 = sdiv i32 %358, 3
  br label %362

360:                                              ; preds = %355
  %361 = zext i1 %36 to i32
  %spec.select = lshr i32 %5, %361
  br label %362

362:                                              ; preds = %360, %357
  %.0394 = phi i32 [ %359, %357 ], [ %spec.select, %360 ]
  %363 = sitofp i32 %.0394 to float
  %364 = fpext float %363 to double
  %365 = call float @silk_log2(double noundef %364)
  %366 = icmp sgt i32 %.0394, 0
  br label %367

367:                                              ; preds = %._crit_edge524, %362
  %.0420 = phi float [ %365, %362 ], [ 0.000000e+00, %._crit_edge524 ]
  %.1395 = phi i1 [ %366, %362 ], [ false, %._crit_edge524 ]
  %368 = icmp eq i32 %10, 4
  %.0423 = select i1 %368, i32 11, i32 3
  %.0 = select i1 %368, ptr @silk_CB_lags_stage2, ptr @silk_CB_lags_stage2_10_ms
  %369 = icmp sgt i32 %.2419.1, 0
  br i1 %369, label %.lr.ph539, label %._crit_edge540.thread

.lr.ph539:                                        ; preds = %367
  %370 = icmp sgt i32 %9, 0
  %or.cond = and i1 %332, %370
  %371 = and i1 %368, %or.cond
  %372 = sitofp i32 %10 to float
  %373 = fmul float %372, 0x3FC99999A0000000
  %374 = fneg float %373
  %375 = fmul float %372, %7
  %376 = select i1 %371, i64 11, i64 3
  %377 = shl nuw nsw i64 %376, 2
  %378 = zext nneg i32 %.0423 to i64
  %wide.trip.count679 = zext nneg i32 %.2419.1 to i64
  %wide.trip.count661 = zext i32 %10 to i64
  %379 = add nsw i64 %wide.trip.count661, -1
  %xtraiter838 = and i64 %wide.trip.count661, 1
  %380 = icmp eq i64 %379, 0
  %unroll_iter842 = and i64 %wide.trip.count661, 2147483646
  %lcmp.mod840.not = icmp eq i64 %xtraiter838, 0
  %381 = add nsw i64 %376, -3
  br label %382

382:                                              ; preds = %.lr.ph539, %440
  %indvars.iv675 = phi i64 [ 0, %.lr.ph539 ], [ %indvars.iv.next676, %440 ]
  %.0428536 = phi float [ 0.000000e+00, %.lr.ph539 ], [ %.1429, %440 ]
  %.0433535 = phi float [ -1.000000e+03, %.lr.ph539 ], [ %.1434, %440 ]
  %.0435534 = phi i32 [ -1, %.lr.ph539 ], [ %.1436, %440 ]
  %.0440533 = phi i32 [ 0, %.lr.ph539 ], [ %.1441, %440 ]
  %383 = getelementptr inbounds [24 x i32], ptr %21, i64 0, i64 %indvars.iv675
  %384 = load i32, ptr %383, align 4, !tbaa !18
  br i1 %333, label %.lr.ph527.us, label %.split.preheader

.split.preheader:                                 ; preds = %382
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1) %20, i8 0, i64 %377, i1 false), !tbaa !5
  br label %.preheader483.preheader.new

.lr.ph527.us:                                     ; preds = %382, %._crit_edge528.us
  %indvars.iv663 = phi i64 [ %indvars.iv.next664, %._crit_edge528.us ], [ 0, %382 ]
  %385 = getelementptr inbounds [11 x float], ptr %20, i64 0, i64 %indvars.iv663
  %invariant.gep = getelementptr inbounds i8, ptr %.0, i64 %indvars.iv663
  br i1 %380, label %._crit_edge528.us.unr-lcssa, label %.lr.ph527.us.new

.lr.ph527.us.new:                                 ; preds = %.lr.ph527.us, %.lr.ph527.us.new
  %indvars.iv657 = phi i64 [ %indvars.iv.next658.1, %.lr.ph527.us.new ], [ 0, %.lr.ph527.us ]
  %386 = phi float [ %402, %.lr.ph527.us.new ], [ 0.000000e+00, %.lr.ph527.us ]
  %niter843 = phi i64 [ %niter843.next.1, %.lr.ph527.us.new ], [ 0, %.lr.ph527.us ]
  %387 = mul nuw nsw i64 %indvars.iv657, %378
  %gep = getelementptr inbounds i8, ptr %invariant.gep, i64 %387
  %388 = load i8, ptr %gep, align 1, !tbaa !30
  %389 = sext i8 %388 to i32
  %390 = add nsw i32 %384, %389
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds [4 x [149 x float]], ptr %18, i64 0, i64 %indvars.iv657, i64 %391
  %393 = load float, ptr %392, align 4, !tbaa !5
  %394 = fadd float %393, %386
  %indvars.iv.next658 = or disjoint i64 %indvars.iv657, 1
  %395 = mul nuw nsw i64 %indvars.iv.next658, %378
  %gep.1 = getelementptr inbounds i8, ptr %invariant.gep, i64 %395
  %396 = load i8, ptr %gep.1, align 1, !tbaa !30
  %397 = sext i8 %396 to i32
  %398 = add nsw i32 %384, %397
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds [4 x [149 x float]], ptr %18, i64 0, i64 %indvars.iv.next658, i64 %399
  %401 = load float, ptr %400, align 4, !tbaa !5
  %402 = fadd float %401, %394
  %indvars.iv.next658.1 = add nuw nsw i64 %indvars.iv657, 2
  %niter843.next.1 = add i64 %niter843, 2
  %niter843.ncmp.1 = icmp eq i64 %niter843.next.1, %unroll_iter842
  br i1 %niter843.ncmp.1, label %._crit_edge528.us.unr-lcssa, label %.lr.ph527.us.new, !llvm.loop !31

._crit_edge528.us.unr-lcssa:                      ; preds = %.lr.ph527.us.new, %.lr.ph527.us
  %.lcssa835.ph = phi float [ poison, %.lr.ph527.us ], [ %402, %.lr.ph527.us.new ]
  %indvars.iv657.unr = phi i64 [ 0, %.lr.ph527.us ], [ %indvars.iv.next658.1, %.lr.ph527.us.new ]
  %.unr = phi float [ 0.000000e+00, %.lr.ph527.us ], [ %402, %.lr.ph527.us.new ]
  br i1 %lcmp.mod840.not, label %._crit_edge528.us, label %._crit_edge528.us.epilog-lcssa

._crit_edge528.us.epilog-lcssa:                   ; preds = %._crit_edge528.us.unr-lcssa
  %403 = mul nuw nsw i64 %indvars.iv657.unr, %378
  %gep.epil = getelementptr inbounds i8, ptr %invariant.gep, i64 %403
  %404 = load i8, ptr %gep.epil, align 1, !tbaa !30
  %405 = sext i8 %404 to i32
  %406 = add nsw i32 %384, %405
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds [4 x [149 x float]], ptr %18, i64 0, i64 %indvars.iv657.unr, i64 %407
  %409 = load float, ptr %408, align 4, !tbaa !5
  %410 = fadd float %409, %.unr
  br label %._crit_edge528.us

._crit_edge528.us:                                ; preds = %._crit_edge528.us.unr-lcssa, %._crit_edge528.us.epilog-lcssa
  %.lcssa835 = phi float [ %.lcssa835.ph, %._crit_edge528.us.unr-lcssa ], [ %410, %._crit_edge528.us.epilog-lcssa ]
  store float %.lcssa835, ptr %385, align 4, !tbaa !5
  %indvars.iv.next664 = add nuw nsw i64 %indvars.iv663, 1
  %exitcond668.not = icmp eq i64 %indvars.iv.next664, %376
  br i1 %exitcond668.not, label %.preheader483.preheader.new, label %.lr.ph527.us, !llvm.loop !32

.preheader483.preheader.new:                      ; preds = %.split.preheader, %._crit_edge528.us
  br label %.preheader483

.preheader483:                                    ; preds = %.preheader483, %.preheader483.preheader.new
  %indvars.iv669 = phi i64 [ 0, %.preheader483.preheader.new ], [ %indvars.iv.next670.1, %.preheader483 ]
  %.0438531 = phi i32 [ 0, %.preheader483.preheader.new ], [ %.1439.1, %.preheader483 ]
  %.0445530 = phi float [ -1.000000e+03, %.preheader483.preheader.new ], [ %.1446.1, %.preheader483 ]
  %niter850 = phi i64 [ 0, %.preheader483.preheader.new ], [ %niter850.next.1, %.preheader483 ]
  %411 = getelementptr inbounds [11 x float], ptr %20, i64 0, i64 %indvars.iv669
  %412 = load float, ptr %411, align 8, !tbaa !5
  %413 = fcmp ogt float %412, %.0445530
  %.1446 = select i1 %413, float %412, float %.0445530
  %414 = trunc nuw nsw i64 %indvars.iv669 to i32
  %.1439 = select i1 %413, i32 %414, i32 %.0438531
  %indvars.iv.next670 = or disjoint i64 %indvars.iv669, 1
  %415 = getelementptr inbounds [11 x float], ptr %20, i64 0, i64 %indvars.iv.next670
  %416 = load float, ptr %415, align 4, !tbaa !5
  %417 = fcmp ogt float %416, %.1446
  %.1446.1 = select i1 %417, float %416, float %.1446
  %418 = trunc nuw nsw i64 %indvars.iv.next670 to i32
  %.1439.1 = select i1 %417, i32 %418, i32 %.1439
  %indvars.iv.next670.1 = add nuw nsw i64 %indvars.iv669, 2
  %niter850.next.1 = add nuw nsw i64 %niter850, 2
  %niter850.ncmp.1 = icmp eq i64 %niter850, %381
  br i1 %niter850.ncmp.1, label %.preheader483.epil, label %.preheader483, !llvm.loop !33

.preheader483.epil:                               ; preds = %.preheader483
  %419 = getelementptr inbounds [11 x float], ptr %20, i64 0, i64 %indvars.iv.next670.1
  %420 = load float, ptr %419, align 4, !tbaa !5
  %421 = fcmp ogt float %420, %.1446.1
  %.1446.epil = select i1 %421, float %420, float %.1446.1
  %422 = trunc nuw nsw i64 %indvars.iv.next670.1 to i32
  %.1439.epil = select i1 %421, i32 %422, i32 %.1439.1
  %423 = sitofp i32 %384 to float
  %424 = fpext float %423 to double
  %425 = call float @silk_log2(double noundef %424)
  %426 = call float @llvm.fmuladd.f32(float %374, float %425, float %.1446.epil)
  br i1 %.1395, label %427, label %436

427:                                              ; preds = %.preheader483.epil
  %428 = fsub float %425, %.0420
  %429 = fmul float %428, %428
  %430 = load float, ptr %4, align 4, !tbaa !5
  %431 = fmul float %373, %430
  %432 = fmul float %429, %431
  %433 = fadd float %429, 5.000000e-01
  %434 = fdiv float %432, %433
  %435 = fsub float %426, %434
  br label %436

436:                                              ; preds = %427, %.preheader483.epil
  %.0448 = phi float [ %435, %427 ], [ %426, %.preheader483.epil ]
  %437 = fcmp ogt float %.0448, %.0433535
  %438 = fcmp ogt float %.1446.epil, %375
  %or.cond476 = select i1 %437, i1 %438, i1 false
  br i1 %or.cond476, label %439, label %440

439:                                              ; preds = %436
  br label %440

440:                                              ; preds = %436, %439
  %.1441 = phi i32 [ %.1439.epil, %439 ], [ %.0440533, %436 ]
  %.1436 = phi i32 [ %384, %439 ], [ %.0435534, %436 ]
  %.1434 = phi float [ %.0448, %439 ], [ %.0433535, %436 ]
  %.1429 = phi float [ %.1446.epil, %439 ], [ %.0428536, %436 ]
  %indvars.iv.next676 = add nuw nsw i64 %indvars.iv675, 1
  %exitcond680.not = icmp eq i64 %indvars.iv.next676, %wide.trip.count679
  br i1 %exitcond680.not, label %._crit_edge540, label %382, !llvm.loop !34

._crit_edge540:                                   ; preds = %440
  %441 = icmp eq i32 %.1436, -1
  br i1 %441, label %._crit_edge540.thread, label %442

._crit_edge540.thread:                            ; preds = %367, %._crit_edge540
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %1, i8 0, i64 16, i1 false)
  store float 0.000000e+00, ptr %4, align 4, !tbaa !5
  store i16 0, ptr %2, align 2, !tbaa !16
  br label %607

442:                                              ; preds = %._crit_edge540
  %443 = sitofp i32 %10 to float
  %444 = fdiv float %.1429, %443
  store float %444, ptr %4, align 4, !tbaa !5
  %445 = icmp sgt i32 %8, 8
  br i1 %445, label %449, label %.preheader482

.preheader482:                                    ; preds = %442
  br i1 %333, label %.lr.ph545.preheader, label %._crit_edge546

.lr.ph545.preheader:                              ; preds = %.preheader482
  %446 = zext nneg i32 %.0423 to i64
  %447 = sext i32 %.1441 to i64
  %invariant.gep731 = getelementptr i8, ptr %.0, i64 %447
  %xtraiter851 = and i64 %wide.trip.count661, 1
  %448 = icmp eq i64 %379, 0
  br i1 %448, label %._crit_edge546.loopexit.unr-lcssa, label %.lr.ph545.preheader.new

.lr.ph545.preheader.new:                          ; preds = %.lr.ph545.preheader
  %unroll_iter854 = and i64 %wide.trip.count661, 2147483646
  br label %.lr.ph545

449:                                              ; preds = %442
  %450 = icmp eq i32 %8, 12
  br i1 %450, label %451, label %457

451:                                              ; preds = %449
  %sext = shl i32 %.1436, 16
  %452 = ashr exact i32 %sext, 16
  %453 = mul nsw i32 %452, 3
  %454 = ashr i32 %453, 1
  %455 = and i32 %453, 1
  %456 = add nsw i32 %454, %455
  br label %459

457:                                              ; preds = %449
  %458 = shl i32 %.1436, 1
  br label %459

459:                                              ; preds = %451, %457
  %.2437 = phi i32 [ %456, %451 ], [ %458, %457 ]
  %.not472 = icmp slt i32 %.2437, %34
  %460 = call i32 @llvm.smax.i32(i32 %.2437, i32 %33)
  %461 = select i1 %.not472, i32 %460, i32 %35
  %462 = add nsw i32 %461, -2
  %463 = call i32 @silk_max_int(i32 noundef %462, i32 noundef %33)
  %464 = add nsw i32 %461, 2
  %465 = call i32 @silk_min_int(i32 noundef %464, i32 noundef %35)
  call void @silk_P_Ana_calc_corr_st3(ptr noundef nonnull %24, ptr noundef %0, i32 noundef %463, i32 noundef %32, i32 noundef %10, i32 noundef %9, i32 noundef %11)
  call void @silk_P_Ana_calc_energy_st3(ptr noundef nonnull %23, ptr noundef %0, i32 noundef %463, i32 noundef %32, i32 noundef %10, i32 noundef %9)
  %466 = sitofp i32 %461 to float
  br i1 %368, label %467, label %472

467:                                              ; preds = %459
  %468 = sext i32 %9 to i64
  %469 = getelementptr inbounds [3 x i8], ptr @silk_nb_cbk_searchs_stage3, i64 0, i64 %468
  %470 = load i8, ptr %469, align 1, !tbaa !30
  %471 = sext i8 %470 to i32
  br label %472

472:                                              ; preds = %459, %467
  %.1424 = phi i64 [ 34, %467 ], [ 12, %459 ]
  %.1392 = phi i32 [ %471, %467 ], [ 12, %459 ]
  %.1 = phi ptr [ @silk_CB_lags_stage3, %467 ], [ @silk_CB_lags_stage3_10_ms, %459 ]
  %473 = mul nuw nsw i32 %8, 20
  %474 = zext nneg i32 %473 to i64
  %475 = getelementptr inbounds float, ptr %0, i64 %474
  %476 = mul nsw i32 %32, %10
  %477 = call double @silk_energy_FLP(ptr noundef nonnull %475, i32 noundef %476) #7
  %478 = fadd double %477, 1.000000e+00
  %.not473564 = icmp sgt i32 %463, %465
  br i1 %.not473564, label %.preheader, label %.preheader481.lr.ph

.preheader481.lr.ph:                              ; preds = %472
  %479 = icmp sgt i32 %.1392, 0
  %480 = fdiv float 0xBFA99999A0000000, %466
  br i1 %479, label %.preheader481.lr.ph.split.us, label %.preheader

.preheader481.lr.ph.split.us:                     ; preds = %.preheader481.lr.ph
  br i1 %333, label %.preheader481.us.us.preheader, label %.preheader481.us.preheader

.preheader481.us.preheader:                       ; preds = %.preheader481.lr.ph.split.us
  %wide.trip.count691 = zext nneg i32 %.1392 to i64
  %xtraiter856 = and i64 %wide.trip.count691, 1
  %481 = icmp eq i32 %.1392, 1
  %unroll_iter862 = and i64 %wide.trip.count691, 2147483646
  %lcmp.mod858.not = icmp eq i64 %xtraiter856, 0
  br label %.preheader481.us

.preheader481.us.us.preheader:                    ; preds = %.preheader481.lr.ph.split.us
  %482 = add i32 %465, 1
  %483 = sub i32 %482, %463
  %wide.trip.count710 = zext i32 %483 to i64
  %wide.trip.count704 = zext nneg i32 %.1392 to i64
  %xtraiter865 = and i64 %wide.trip.count661, 1
  %484 = icmp eq i64 %379, 0
  %unroll_iter870 = and i64 %wide.trip.count661, 2147483646
  %lcmp.mod867.not = icmp eq i64 %xtraiter865, 0
  br label %.preheader481.us.us

.preheader481.us.us:                              ; preds = %.preheader481.us.us.preheader, %._crit_edge558.split.us.us.us
  %indvars.iv706 = phi i64 [ 0, %.preheader481.us.us.preheader ], [ %indvars.iv.next707, %._crit_edge558.split.us.us.us ]
  %.1405569.us.us = phi i32 [ %463, %.preheader481.us.us.preheader ], [ %528, %._crit_edge558.split.us.us.us ]
  %.0425567.us.us = phi i32 [ %461, %.preheader481.us.us.preheader ], [ %.2427.us.us.us, %._crit_edge558.split.us.us.us ]
  %.2430566.us.us = phi float [ -1.000000e+03, %.preheader481.us.us.preheader ], [ %.4432.us.us.us, %._crit_edge558.split.us.us.us ]
  %.2442565.us.us = phi i32 [ 0, %.preheader481.us.us.preheader ], [ %.4444.us.us.us, %._crit_edge558.split.us.us.us ]
  br label %.preheader480.us.us.us

.preheader480.us.us.us:                           ; preds = %502, %.preheader481.us.us
  %indvars.iv700 = phi i64 [ %indvars.iv.next701, %502 ], [ 0, %.preheader481.us.us ]
  %.1426556.us.us.us = phi i32 [ %.2427.us.us.us, %502 ], [ %.0425567.us.us, %.preheader481.us.us ]
  %.3431555.us.us.us = phi float [ %.4432.us.us.us, %502 ], [ %.2430566.us.us, %.preheader481.us.us ]
  %.3443554.us.us.us = phi i32 [ %.4444.us.us.us, %502 ], [ %.2442565.us.us, %.preheader481.us.us ]
  br i1 %484, label %._crit_edge551.us.us.us.unr-lcssa, label %.preheader480.us.us.us.new

485:                                              ; preds = %._crit_edge551.us.us.us
  %486 = fmul double %.lcssa833, 2.000000e+00
  %487 = fdiv double %486, %.lcssa
  %488 = fptrunc double %487 to float
  %489 = trunc nuw nsw i64 %indvars.iv700 to i32
  %490 = uitofp nneg i32 %489 to float
  %491 = call float @llvm.fmuladd.f32(float %480, float %490, float 1.000000e+00)
  %492 = fmul float %491, %488
  br label %493

493:                                              ; preds = %._crit_edge551.us.us.us, %485
  %.2447.us.us.us = phi float [ %492, %485 ], [ 0.000000e+00, %._crit_edge551.us.us.us ]
  %494 = fcmp ogt float %.2447.us.us.us, %.3431555.us.us.us
  br i1 %494, label %495, label %502

495:                                              ; preds = %493
  %496 = getelementptr inbounds [34 x i8], ptr @silk_CB_lags_stage3, i64 0, i64 %indvars.iv700
  %497 = load i8, ptr %496, align 1, !tbaa !30
  %498 = sext i8 %497 to i32
  %499 = add nsw i32 %.1405569.us.us, %498
  %.not474.not.us.us.us = icmp slt i32 %499, %34
  br i1 %.not474.not.us.us.us, label %500, label %502

500:                                              ; preds = %495
  %501 = trunc nuw nsw i64 %indvars.iv700 to i32
  br label %502

502:                                              ; preds = %500, %495, %493
  %.4444.us.us.us = phi i32 [ %501, %500 ], [ %.3443554.us.us.us, %495 ], [ %.3443554.us.us.us, %493 ]
  %.4432.us.us.us = phi float [ %.2447.us.us.us, %500 ], [ %.3431555.us.us.us, %495 ], [ %.3431555.us.us.us, %493 ]
  %.2427.us.us.us = phi i32 [ %.1405569.us.us, %500 ], [ %.1426556.us.us.us, %495 ], [ %.1426556.us.us.us, %493 ]
  %indvars.iv.next701 = add nuw nsw i64 %indvars.iv700, 1
  %exitcond705.not = icmp eq i64 %indvars.iv.next701, %wide.trip.count704
  br i1 %exitcond705.not, label %._crit_edge558.split.us.us.us, label %.preheader480.us.us.us, !llvm.loop !35

.preheader480.us.us.us.new:                       ; preds = %.preheader480.us.us.us, %.preheader480.us.us.us.new
  %indvars.iv694 = phi i64 [ %indvars.iv.next695.1, %.preheader480.us.us.us.new ], [ 0, %.preheader480.us.us.us ]
  %.0413548.us.us.us = phi double [ %514, %.preheader480.us.us.us.new ], [ 0.000000e+00, %.preheader480.us.us.us ]
  %.0415547.us.us.us = phi double [ %518, %.preheader480.us.us.us.new ], [ %478, %.preheader480.us.us.us ]
  %niter871 = phi i64 [ %niter871.next.1, %.preheader480.us.us.us.new ], [ 0, %.preheader480.us.us.us ]
  %503 = getelementptr inbounds [4 x [34 x [5 x float]]], ptr %24, i64 0, i64 %indvars.iv694, i64 %indvars.iv700, i64 %indvars.iv706
  %504 = load float, ptr %503, align 4, !tbaa !5
  %505 = fpext float %504 to double
  %506 = fadd double %.0413548.us.us.us, %505
  %507 = getelementptr inbounds [4 x [34 x [5 x float]]], ptr %23, i64 0, i64 %indvars.iv694, i64 %indvars.iv700, i64 %indvars.iv706
  %508 = load float, ptr %507, align 4, !tbaa !5
  %509 = fpext float %508 to double
  %510 = fadd double %.0415547.us.us.us, %509
  %indvars.iv.next695 = or disjoint i64 %indvars.iv694, 1
  %511 = getelementptr inbounds [4 x [34 x [5 x float]]], ptr %24, i64 0, i64 %indvars.iv.next695, i64 %indvars.iv700, i64 %indvars.iv706
  %512 = load float, ptr %511, align 4, !tbaa !5
  %513 = fpext float %512 to double
  %514 = fadd double %506, %513
  %515 = getelementptr inbounds [4 x [34 x [5 x float]]], ptr %23, i64 0, i64 %indvars.iv.next695, i64 %indvars.iv700, i64 %indvars.iv706
  %516 = load float, ptr %515, align 4, !tbaa !5
  %517 = fpext float %516 to double
  %518 = fadd double %510, %517
  %indvars.iv.next695.1 = add nuw nsw i64 %indvars.iv694, 2
  %niter871.next.1 = add i64 %niter871, 2
  %niter871.ncmp.1 = icmp eq i64 %niter871.next.1, %unroll_iter870
  br i1 %niter871.ncmp.1, label %._crit_edge551.us.us.us.unr-lcssa, label %.preheader480.us.us.us.new, !llvm.loop !36

._crit_edge551.us.us.us.unr-lcssa:                ; preds = %.preheader480.us.us.us.new, %.preheader480.us.us.us
  %.lcssa833.ph = phi double [ poison, %.preheader480.us.us.us ], [ %514, %.preheader480.us.us.us.new ]
  %.lcssa.ph = phi double [ poison, %.preheader480.us.us.us ], [ %518, %.preheader480.us.us.us.new ]
  %indvars.iv694.unr = phi i64 [ 0, %.preheader480.us.us.us ], [ %indvars.iv.next695.1, %.preheader480.us.us.us.new ]
  %.0413548.us.us.us.unr = phi double [ 0.000000e+00, %.preheader480.us.us.us ], [ %514, %.preheader480.us.us.us.new ]
  %.0415547.us.us.us.unr = phi double [ %478, %.preheader480.us.us.us ], [ %518, %.preheader480.us.us.us.new ]
  br i1 %lcmp.mod867.not, label %._crit_edge551.us.us.us, label %._crit_edge551.us.us.us.epilog-lcssa

._crit_edge551.us.us.us.epilog-lcssa:             ; preds = %._crit_edge551.us.us.us.unr-lcssa
  %519 = getelementptr inbounds [4 x [34 x [5 x float]]], ptr %24, i64 0, i64 %indvars.iv694.unr, i64 %indvars.iv700, i64 %indvars.iv706
  %520 = load float, ptr %519, align 4, !tbaa !5
  %521 = fpext float %520 to double
  %522 = fadd double %.0413548.us.us.us.unr, %521
  %523 = getelementptr inbounds [4 x [34 x [5 x float]]], ptr %23, i64 0, i64 %indvars.iv694.unr, i64 %indvars.iv700, i64 %indvars.iv706
  %524 = load float, ptr %523, align 4, !tbaa !5
  %525 = fpext float %524 to double
  %526 = fadd double %.0415547.us.us.us.unr, %525
  br label %._crit_edge551.us.us.us

._crit_edge551.us.us.us:                          ; preds = %._crit_edge551.us.us.us.unr-lcssa, %._crit_edge551.us.us.us.epilog-lcssa
  %.lcssa833 = phi double [ %.lcssa833.ph, %._crit_edge551.us.us.us.unr-lcssa ], [ %522, %._crit_edge551.us.us.us.epilog-lcssa ]
  %.lcssa = phi double [ %.lcssa.ph, %._crit_edge551.us.us.us.unr-lcssa ], [ %526, %._crit_edge551.us.us.us.epilog-lcssa ]
  %527 = fcmp ogt double %.lcssa833, 0.000000e+00
  br i1 %527, label %485, label %493

._crit_edge558.split.us.us.us:                    ; preds = %502
  %indvars.iv.next707 = add nuw nsw i64 %indvars.iv706, 1
  %528 = add nsw i32 %.1405569.us.us, 1
  %exitcond711.not = icmp eq i64 %indvars.iv.next707, %wide.trip.count710
  br i1 %exitcond711.not, label %.preheader, label %.preheader481.us.us, !llvm.loop !37

.preheader481.us:                                 ; preds = %.preheader481.us.preheader, %._crit_edge558.split.us582
  %.1405569.us = phi i32 [ %554, %._crit_edge558.split.us582 ], [ %463, %.preheader481.us.preheader ]
  %.0425567.us = phi i32 [ %.2427.us576.lcssa, %._crit_edge558.split.us582 ], [ %461, %.preheader481.us.preheader ]
  %.2430566.us = phi float [ %.4432.us575.lcssa, %._crit_edge558.split.us582 ], [ -1.000000e+03, %.preheader481.us.preheader ]
  %.2442565.us = phi i32 [ %.4444.us574.lcssa, %._crit_edge558.split.us582 ], [ 0, %.preheader481.us.preheader ]
  br i1 %481, label %._crit_edge558.split.us582.unr-lcssa, label %.preheader480.us577

529:                                              ; preds = %.preheader480.us577
  %530 = getelementptr inbounds [34 x i8], ptr @silk_CB_lags_stage3, i64 0, i64 %indvars.iv687
  %531 = load i8, ptr %530, align 2, !tbaa !30
  %532 = sext i8 %531 to i32
  %533 = add nsw i32 %.1405569.us, %532
  %.not474.not.us573 = icmp slt i32 %533, %34
  br i1 %.not474.not.us573, label %534, label %.preheader480.us577.1

534:                                              ; preds = %529
  %535 = trunc nuw nsw i64 %indvars.iv687 to i32
  br label %.preheader480.us577.1

.preheader480.us577.1:                            ; preds = %.preheader480.us577, %534, %529
  %.4444.us574 = phi i32 [ %535, %534 ], [ %.3443554.us581, %529 ], [ %.3443554.us581, %.preheader480.us577 ]
  %.4432.us575 = phi float [ 0.000000e+00, %534 ], [ %.3431555.us580, %529 ], [ %.3431555.us580, %.preheader480.us577 ]
  %.2427.us576 = phi i32 [ %.1405569.us, %534 ], [ %.1426556.us579, %529 ], [ %.1426556.us579, %.preheader480.us577 ]
  %indvars.iv.next688 = or disjoint i64 %indvars.iv687, 1
  %536 = fcmp olt float %.4432.us575, 0.000000e+00
  br i1 %536, label %537, label %544

537:                                              ; preds = %.preheader480.us577.1
  %538 = getelementptr inbounds [34 x i8], ptr @silk_CB_lags_stage3, i64 0, i64 %indvars.iv.next688
  %539 = load i8, ptr %538, align 1, !tbaa !30
  %540 = sext i8 %539 to i32
  %541 = add nsw i32 %.1405569.us, %540
  %.not474.not.us573.1 = icmp slt i32 %541, %34
  br i1 %.not474.not.us573.1, label %542, label %544

542:                                              ; preds = %537
  %543 = trunc nuw nsw i64 %indvars.iv.next688 to i32
  br label %544

544:                                              ; preds = %542, %537, %.preheader480.us577.1
  %.4444.us574.1 = phi i32 [ %543, %542 ], [ %.4444.us574, %537 ], [ %.4444.us574, %.preheader480.us577.1 ]
  %.4432.us575.1 = phi float [ 0.000000e+00, %542 ], [ %.4432.us575, %537 ], [ %.4432.us575, %.preheader480.us577.1 ]
  %.2427.us576.1 = phi i32 [ %.1405569.us, %542 ], [ %.2427.us576, %537 ], [ %.2427.us576, %.preheader480.us577.1 ]
  %indvars.iv.next688.1 = add nuw nsw i64 %indvars.iv687, 2
  %niter863.next.1 = add i64 %niter863, 2
  %niter863.ncmp.1 = icmp eq i64 %niter863.next.1, %unroll_iter862
  br i1 %niter863.ncmp.1, label %._crit_edge558.split.us582.unr-lcssa, label %.preheader480.us577, !llvm.loop !35

.preheader480.us577:                              ; preds = %.preheader481.us, %544
  %indvars.iv687 = phi i64 [ %indvars.iv.next688.1, %544 ], [ 0, %.preheader481.us ]
  %.1426556.us579 = phi i32 [ %.2427.us576.1, %544 ], [ %.0425567.us, %.preheader481.us ]
  %.3431555.us580 = phi float [ %.4432.us575.1, %544 ], [ %.2430566.us, %.preheader481.us ]
  %.3443554.us581 = phi i32 [ %.4444.us574.1, %544 ], [ %.2442565.us, %.preheader481.us ]
  %niter863 = phi i64 [ %niter863.next.1, %544 ], [ 0, %.preheader481.us ]
  %545 = fcmp olt float %.3431555.us580, 0.000000e+00
  br i1 %545, label %529, label %.preheader480.us577.1

._crit_edge558.split.us582.unr-lcssa:             ; preds = %544, %.preheader481.us
  %.4444.us574.lcssa.ph = phi i32 [ poison, %.preheader481.us ], [ %.4444.us574.1, %544 ]
  %.4432.us575.lcssa.ph = phi float [ poison, %.preheader481.us ], [ %.4432.us575.1, %544 ]
  %.2427.us576.lcssa.ph = phi i32 [ poison, %.preheader481.us ], [ %.2427.us576.1, %544 ]
  %indvars.iv687.unr = phi i64 [ 0, %.preheader481.us ], [ %indvars.iv.next688.1, %544 ]
  %.1426556.us579.unr = phi i32 [ %.0425567.us, %.preheader481.us ], [ %.2427.us576.1, %544 ]
  %.3431555.us580.unr = phi float [ %.2430566.us, %.preheader481.us ], [ %.4432.us575.1, %544 ]
  %.3443554.us581.unr = phi i32 [ %.2442565.us, %.preheader481.us ], [ %.4444.us574.1, %544 ]
  br i1 %lcmp.mod858.not, label %._crit_edge558.split.us582, label %.preheader480.us577.epil

.preheader480.us577.epil:                         ; preds = %._crit_edge558.split.us582.unr-lcssa
  %546 = fcmp olt float %.3431555.us580.unr, 0.000000e+00
  br i1 %546, label %547, label %._crit_edge558.split.us582

547:                                              ; preds = %.preheader480.us577.epil
  %548 = getelementptr inbounds [34 x i8], ptr @silk_CB_lags_stage3, i64 0, i64 %indvars.iv687.unr
  %549 = load i8, ptr %548, align 1, !tbaa !30
  %550 = sext i8 %549 to i32
  %551 = add nsw i32 %.1405569.us, %550
  %.not474.not.us573.epil = icmp slt i32 %551, %34
  br i1 %.not474.not.us573.epil, label %552, label %._crit_edge558.split.us582

552:                                              ; preds = %547
  %553 = trunc nuw nsw i64 %indvars.iv687.unr to i32
  br label %._crit_edge558.split.us582

._crit_edge558.split.us582:                       ; preds = %.preheader480.us577.epil, %547, %552, %._crit_edge558.split.us582.unr-lcssa
  %.4444.us574.lcssa = phi i32 [ %.4444.us574.lcssa.ph, %._crit_edge558.split.us582.unr-lcssa ], [ %553, %552 ], [ %.3443554.us581.unr, %547 ], [ %.3443554.us581.unr, %.preheader480.us577.epil ]
  %.4432.us575.lcssa = phi float [ %.4432.us575.lcssa.ph, %._crit_edge558.split.us582.unr-lcssa ], [ 0.000000e+00, %552 ], [ %.3431555.us580.unr, %547 ], [ %.3431555.us580.unr, %.preheader480.us577.epil ]
  %.2427.us576.lcssa = phi i32 [ %.2427.us576.lcssa.ph, %._crit_edge558.split.us582.unr-lcssa ], [ %.1405569.us, %552 ], [ %.1426556.us579.unr, %547 ], [ %.1426556.us579.unr, %.preheader480.us577.epil ]
  %554 = add i32 %.1405569.us, 1
  %exitcond693.not = icmp eq i32 %.1405569.us, %465
  br i1 %exitcond693.not, label %.preheader, label %.preheader481.us, !llvm.loop !37

.preheader:                                       ; preds = %._crit_edge558.split.us582, %._crit_edge558.split.us.us.us, %.preheader481.lr.ph, %472
  %.2442.lcssa = phi i32 [ 0, %472 ], [ 0, %.preheader481.lr.ph ], [ %.4444.us.us.us, %._crit_edge558.split.us.us.us ], [ %.4444.us574.lcssa, %._crit_edge558.split.us582 ]
  %.0425.lcssa = phi i32 [ %461, %472 ], [ %461, %.preheader481.lr.ph ], [ %.2427.us.us.us, %._crit_edge558.split.us.us.us ], [ %.2427.us576.lcssa, %._crit_edge558.split.us582 ]
  br i1 %333, label %.lr.ph591.preheader, label %._crit_edge592

.lr.ph591.preheader:                              ; preds = %.preheader
  %555 = sext i32 %.2442.lcssa to i64
  %xtraiter872 = and i64 %wide.trip.count661, 1
  %556 = icmp eq i64 %379, 0
  br i1 %556, label %._crit_edge592.loopexit.unr-lcssa, label %.lr.ph591.preheader.new

.lr.ph591.preheader.new:                          ; preds = %.lr.ph591.preheader
  %unroll_iter875 = and i64 %wide.trip.count661, 2147483646
  br label %.lr.ph591

.lr.ph591:                                        ; preds = %.lr.ph591, %.lr.ph591.preheader.new
  %indvars.iv712 = phi i64 [ 0, %.lr.ph591.preheader.new ], [ %indvars.iv.next713.1, %.lr.ph591 ]
  %niter876 = phi i64 [ 0, %.lr.ph591.preheader.new ], [ %niter876.next.1, %.lr.ph591 ]
  %557 = mul nuw nsw i64 %indvars.iv712, %.1424
  %558 = add nsw i64 %557, %555
  %559 = getelementptr inbounds i8, ptr %.1, i64 %558
  %560 = load i8, ptr %559, align 1, !tbaa !30
  %561 = sext i8 %560 to i32
  %562 = add nsw i32 %.0425.lcssa, %561
  %563 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv712
  %564 = icmp sgt i32 %562, %34
  %.478 = call i32 @llvm.smax.i32(i32 %562, i32 %33)
  %565 = select i1 %564, i32 %34, i32 %.478
  store i32 %565, ptr %563, align 4, !tbaa !18
  %indvars.iv.next713 = or disjoint i64 %indvars.iv712, 1
  %566 = mul nuw nsw i64 %indvars.iv.next713, %.1424
  %567 = add nsw i64 %566, %555
  %568 = getelementptr inbounds i8, ptr %.1, i64 %567
  %569 = load i8, ptr %568, align 1, !tbaa !30
  %570 = sext i8 %569 to i32
  %571 = add nsw i32 %.0425.lcssa, %570
  %572 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv.next713
  %573 = icmp sgt i32 %571, %34
  %.478.1 = call i32 @llvm.smax.i32(i32 %571, i32 %33)
  %574 = select i1 %573, i32 %34, i32 %.478.1
  store i32 %574, ptr %572, align 4, !tbaa !18
  %indvars.iv.next713.1 = add nuw nsw i64 %indvars.iv712, 2
  %niter876.next.1 = add i64 %niter876, 2
  %niter876.ncmp.1 = icmp eq i64 %niter876.next.1, %unroll_iter875
  br i1 %niter876.ncmp.1, label %._crit_edge592.loopexit.unr-lcssa, label %.lr.ph591, !llvm.loop !38

._crit_edge592.loopexit.unr-lcssa:                ; preds = %.lr.ph591, %.lr.ph591.preheader
  %indvars.iv712.unr = phi i64 [ 0, %.lr.ph591.preheader ], [ %indvars.iv.next713.1, %.lr.ph591 ]
  %lcmp.mod874.not = icmp eq i64 %xtraiter872, 0
  br i1 %lcmp.mod874.not, label %._crit_edge592, label %.lr.ph591.epil

.lr.ph591.epil:                                   ; preds = %._crit_edge592.loopexit.unr-lcssa
  %575 = mul nuw nsw i64 %indvars.iv712.unr, %.1424
  %576 = add nsw i64 %575, %555
  %577 = getelementptr inbounds i8, ptr %.1, i64 %576
  %578 = load i8, ptr %577, align 1, !tbaa !30
  %579 = sext i8 %578 to i32
  %580 = add nsw i32 %.0425.lcssa, %579
  %581 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv712.unr
  %582 = icmp sgt i32 %580, %34
  %.478.epil = call i32 @llvm.smax.i32(i32 %580, i32 %33)
  %583 = select i1 %582, i32 %34, i32 %.478.epil
  store i32 %583, ptr %581, align 4, !tbaa !18
  br label %._crit_edge592

._crit_edge592:                                   ; preds = %.lr.ph591.epil, %._crit_edge592.loopexit.unr-lcssa, %.preheader
  %584 = sub nsw i32 %.0425.lcssa, %33
  %585 = trunc i32 %584 to i16
  br label %606

.lr.ph545:                                        ; preds = %.lr.ph545, %.lr.ph545.preheader.new
  %indvars.iv681 = phi i64 [ 0, %.lr.ph545.preheader.new ], [ %indvars.iv.next682.1, %.lr.ph545 ]
  %niter855 = phi i64 [ 0, %.lr.ph545.preheader.new ], [ %niter855.next.1, %.lr.ph545 ]
  %586 = mul nuw nsw i64 %indvars.iv681, %446
  %gep732 = getelementptr i8, ptr %invariant.gep731, i64 %586
  %587 = load i8, ptr %gep732, align 1, !tbaa !30
  %588 = sext i8 %587 to i32
  %589 = add nsw i32 %.1436, %588
  %590 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv681
  %.479 = call i32 @llvm.smax.i32(i32 %589, i32 16)
  %591 = call i32 @llvm.umin.i32(i32 %.479, i32 144)
  store i32 %591, ptr %590, align 4, !tbaa !18
  %indvars.iv.next682 = or disjoint i64 %indvars.iv681, 1
  %592 = mul nuw nsw i64 %indvars.iv.next682, %446
  %gep732.1 = getelementptr i8, ptr %invariant.gep731, i64 %592
  %593 = load i8, ptr %gep732.1, align 1, !tbaa !30
  %594 = sext i8 %593 to i32
  %595 = add nsw i32 %.1436, %594
  %596 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv.next682
  %.479.1 = call i32 @llvm.smax.i32(i32 %595, i32 16)
  %597 = call i32 @llvm.umin.i32(i32 %.479.1, i32 144)
  store i32 %597, ptr %596, align 4, !tbaa !18
  %indvars.iv.next682.1 = add nuw nsw i64 %indvars.iv681, 2
  %niter855.next.1 = add i64 %niter855, 2
  %niter855.ncmp.1 = icmp eq i64 %niter855.next.1, %unroll_iter854
  br i1 %niter855.ncmp.1, label %._crit_edge546.loopexit.unr-lcssa, label %.lr.ph545, !llvm.loop !39

._crit_edge546.loopexit.unr-lcssa:                ; preds = %.lr.ph545, %.lr.ph545.preheader
  %indvars.iv681.unr = phi i64 [ 0, %.lr.ph545.preheader ], [ %indvars.iv.next682.1, %.lr.ph545 ]
  %lcmp.mod853.not = icmp eq i64 %xtraiter851, 0
  br i1 %lcmp.mod853.not, label %._crit_edge546, label %.lr.ph545.epil

.lr.ph545.epil:                                   ; preds = %._crit_edge546.loopexit.unr-lcssa
  %598 = mul nuw nsw i64 %indvars.iv681.unr, %446
  %gep732.epil = getelementptr i8, ptr %invariant.gep731, i64 %598
  %599 = load i8, ptr %gep732.epil, align 1, !tbaa !30
  %600 = sext i8 %599 to i32
  %601 = add nsw i32 %.1436, %600
  %602 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv681.unr
  %.479.epil = call i32 @llvm.smax.i32(i32 %601, i32 16)
  %603 = call i32 @llvm.umin.i32(i32 %.479.epil, i32 144)
  store i32 %603, ptr %602, align 4, !tbaa !18
  br label %._crit_edge546

._crit_edge546:                                   ; preds = %.lr.ph545.epil, %._crit_edge546.loopexit.unr-lcssa, %.preheader482
  %604 = trunc i32 %.1436 to i16
  %605 = add i16 %604, -16
  br label %606

606:                                              ; preds = %._crit_edge546, %._crit_edge592
  %storemerge471 = phi i16 [ %605, %._crit_edge546 ], [ %585, %._crit_edge592 ]
  %storemerge.in = phi i32 [ %.1441, %._crit_edge546 ], [ %.2442.lcssa, %._crit_edge592 ]
  store i16 %storemerge471, ptr %2, align 2, !tbaa !16
  %storemerge = trunc i32 %storemerge.in to i8
  br label %607

607:                                              ; preds = %606, %._crit_edge540.thread, %207
  %storemerge.sink = phi i8 [ %storemerge, %606 ], [ 0, %._crit_edge540.thread ], [ 0, %207 ]
  %.0393 = phi i32 [ 0, %606 ], [ 1, %._crit_edge540.thread ], [ 1, %207 ]
  store i8 %storemerge.sink, ptr %3, align 1, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 2720, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 2720, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 298, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 260, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 2384, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 320, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 640, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 640, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 1280, ptr nonnull %13) #7
  ret i32 %.0393
}

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

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

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

declare void @silk_resampler_down2(ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #4

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

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

declare void @silk_resampler_down2_3(ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #4

declare void @celt_pitch_xcorr_c(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

declare double @silk_energy_FLP(ptr noundef, i32 noundef) local_unnamed_addr #4

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

declare void @silk_insertion_sort_decreasing_FLP(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

declare double @silk_inner_product_FLP(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden float @silk_log2(double noundef) local_unnamed_addr #2

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @silk_max_int(i32 noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @silk_min_int(i32 noundef, i32 noundef) local_unnamed_addr #2

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

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

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

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { inlinehint 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 nounwind willreturn memory(argmem: write) }
attributes #4 = { "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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { 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 = !{!"float", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = distinct !{!9, !10, !11, !12}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!"llvm.loop.isvectorized", i32 1}
!12 = !{!"llvm.loop.unroll.runtime.disable"}
!13 = distinct !{!13, !10, !12, !11}
!14 = distinct !{!14, !10}
!15 = distinct !{!15, !10}
!16 = !{!17, !17, i64 0}
!17 = !{!"short", !7, i64 0}
!18 = !{!19, !19, i64 0}
!19 = !{!"int", !7, i64 0}
!20 = distinct !{!20, !10}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.unroll.disable"}
!23 = distinct !{!23, !10, !11, !12}
!24 = distinct !{!24, !10}
!25 = distinct !{!25, !10, !11, !12}
!26 = distinct !{!26, !10}
!27 = distinct !{!27, !10}
!28 = distinct !{!28, !10}
!29 = distinct !{!29, !10}
!30 = !{!7, !7, i64 0}
!31 = distinct !{!31, !10}
!32 = distinct !{!32, !10}
!33 = distinct !{!33, !10}
!34 = distinct !{!34, !10}
!35 = distinct !{!35, !10}
!36 = distinct !{!36, !10}
!37 = distinct !{!37, !10}
!38 = distinct !{!38, !10, !11}
!39 = distinct !{!39, !10, !11}


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