; LLVM IR from jgaeddert/liquid-dsp :: src/filter/src (iirdes)

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

@.str = external hidden unnamed_addr constant [78 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [67 x i8], align 1

declare i32 @liquid_error_fl(i32 noundef, ptr noundef, i32 noundef, ptr noundef, ...) #0

; Function Attrs: nocallback nofree nosync nounwind willreturn
declare ptr @llvm.stacksave.p0() #1

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

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

; Function Attrs: nocallback nofree nosync nounwind willreturn
declare void @llvm.stackrestore.p0(ptr) #1

; Function Attrs: nounwind uwtable
declare dso_local float @iirdes_freqprewarp(i32 noundef, float noundef, float noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local i32 @bilinear_zpkf(ptr noundef, i32 noundef, ptr noundef, i32 noundef, <2 x float> noundef, float noundef, ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @iirdes_dzpk2tff(ptr noundef, ptr noundef, i32 noundef, <2 x float> noundef, ptr noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @iirdes_dzpk2sosf(ptr noundef, ptr noundef, i32 noundef, <2 x float> noundef, ptr noundef, ptr noundef) #4

; Function Attrs: nounwind
declare float @powf(float noundef, float noundef) #5

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @iirdes_dzpk_lp2bp(ptr noundef, ptr noundef, i32 noundef, float noundef, ptr noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
define dso_local i32 @liquid_iirdes(i32 noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, float noundef %4, float noundef %5, float noundef %6, float noundef %7, ptr noundef %8, ptr noundef %9) #4 {
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca float, align 4
  %17 = alloca float, align 4
  %18 = alloca float, align 4
  %19 = alloca float, align 4
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca ptr, align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca { float, float }, align 4
  %28 = alloca { float, float }, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca float, align 4
  %32 = alloca float, align 4
  %33 = alloca float, align 4
  %34 = alloca float, align 4
  %35 = alloca float, align 4
  %36 = alloca i32, align 4
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca { float, float }, align 4
  %40 = alloca float, align 4
  %41 = alloca { float, float }, align 4
  %42 = alloca ptr, align 8
  %43 = alloca i64, align 8
  %44 = alloca i64, align 8
  %45 = alloca { float, float }, align 4
  %46 = alloca { float, float }, align 4
  store i32 %0, ptr %12, align 4, !tbaa !5
  store i32 %1, ptr %13, align 4, !tbaa !5
  store i32 %2, ptr %14, align 4, !tbaa !5
  store i32 %3, ptr %15, align 4, !tbaa !5
  store float %4, ptr %16, align 4, !tbaa !9
  store float %5, ptr %17, align 4, !tbaa !9
  store float %6, ptr %18, align 4, !tbaa !9
  store float %7, ptr %19, align 4, !tbaa !9
  store ptr %8, ptr %20, align 8, !tbaa !11
  store ptr %9, ptr %21, align 8, !tbaa !11
  %47 = load float, ptr %16, align 4, !tbaa !9
  %48 = fcmp ole float %47, 0.000000e+00
  br i1 %48, label %53, label %49

49:                                               ; preds = %10
  %50 = load float, ptr %16, align 4, !tbaa !9
  %51 = fpext float %50 to double
  %52 = fcmp oge double %51, 5.000000e-01
  br i1 %52, label %53, label %55

53:                                               ; preds = %49, %10
  %54 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 3, ptr noundef @.str, i32 noundef 607, ptr noundef @.str.9)
  store i32 %54, ptr %11, align 4
  br label %316

55:                                               ; preds = %49
  %56 = load float, ptr %17, align 4, !tbaa !9
  %57 = fcmp olt float %56, 0.000000e+00
  br i1 %57, label %62, label %58

58:                                               ; preds = %55
  %59 = load float, ptr %17, align 4, !tbaa !9
  %60 = fpext float %59 to double
  %61 = fcmp ogt double %60, 5.000000e-01
  br i1 %61, label %62, label %64

62:                                               ; preds = %58, %55
  %63 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 3, ptr noundef @.str, i32 noundef 609, ptr noundef @.str.10)
  store i32 %63, ptr %11, align 4
  br label %316

64:                                               ; preds = %58
  %65 = load float, ptr %18, align 4, !tbaa !9
  %66 = fcmp ole float %65, 0.000000e+00
  br i1 %66, label %67, label %69

67:                                               ; preds = %64
  %68 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 3, ptr noundef @.str, i32 noundef 611, ptr noundef @.str.11)
  store i32 %68, ptr %11, align 4
  br label %316

69:                                               ; preds = %64
  %70 = load float, ptr %19, align 4, !tbaa !9
  %71 = fcmp ole float %70, 0.000000e+00
  br i1 %71, label %72, label %74

72:                                               ; preds = %69
  %73 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 3, ptr noundef @.str, i32 noundef 613, ptr noundef @.str.12)
  store i32 %73, ptr %11, align 4
  br label %316

74:                                               ; preds = %69
  %75 = load i32, ptr %15, align 4, !tbaa !5
  %76 = icmp eq i32 %75, 0
  br i1 %76, label %77, label %79

77:                                               ; preds = %74
  %78 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 3, ptr noundef @.str, i32 noundef 615, ptr noundef @.str.13)
  store i32 %78, ptr %11, align 4
  br label %316

79:                                               ; preds = %74
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  %80 = load i32, ptr %15, align 4, !tbaa !5
  store i32 %80, ptr %22, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #8
  %81 = load i32, ptr %15, align 4, !tbaa !5
  %82 = zext i32 %81 to i64
  %83 = call ptr @llvm.stacksave.p0()
  store ptr %83, ptr %24, align 8
  %84 = alloca { float, float }, i64 %82, align 16
  store i64 %82, ptr %25, align 8
  %85 = load i32, ptr %15, align 4, !tbaa !5
  %86 = zext i32 %85 to i64
  %87 = alloca { float, float }, i64 %86, align 16
  store i64 %86, ptr %26, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  %88 = getelementptr inbounds { float, float }, ptr %28, i32 0, i32 0
  %89 = getelementptr inbounds { float, float }, ptr %28, i32 0, i32 1
  store float 1.000000e+00, ptr %88, align 4
  store float 0.000000e+00, ptr %89, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #8
  %90 = load i32, ptr %15, align 4, !tbaa !5
  %91 = urem i32 %90, 2
  store i32 %91, ptr %29, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #8
  %92 = load i32, ptr %15, align 4, !tbaa !5
  %93 = load i32, ptr %29, align 4, !tbaa !5
  %94 = sub i32 %92, %93
  %95 = udiv i32 %94, 2
  store i32 %95, ptr %30, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #8
  %96 = load i32, ptr %12, align 4, !tbaa !5
  switch i32 %96, label %205 [
    i32 0, label %97
    i32 1, label %106
    i32 2, label %134
    i32 3, label %150
    i32 4, label %196
  ]

97:                                               ; preds = %79
  store i32 0, ptr %23, align 4, !tbaa !5
  %98 = getelementptr inbounds { float, float }, ptr %28, i32 0, i32 0
  %99 = getelementptr inbounds { float, float }, ptr %28, i32 0, i32 1
  store float 1.000000e+00, ptr %98, align 4
  store float 0.000000e+00, ptr %99, align 4
  %100 = load i32, ptr %15, align 4, !tbaa !5
  %101 = call i32 @butter_azpkf(i32 noundef %100, ptr noundef %87, ptr noundef %84, ptr noundef %27)
  %102 = icmp ne i32 %101, 0
  br i1 %102, label %103, label %105

103:                                              ; preds = %97
  %104 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 1, ptr noundef @.str, i32 noundef 641, ptr noundef @.str.14)
  store i32 %104, ptr %11, align 4
  store i32 1, ptr %36, align 4
  br label %314

105:                                              ; preds = %97
  br label %207

106:                                              ; preds = %79
  store i32 0, ptr %23, align 4, !tbaa !5
  %107 = load float, ptr %18, align 4, !tbaa !9
  %108 = fdiv float %107, 1.000000e+01
  %109 = call float @powf(float noundef 1.000000e+01, float noundef %108) #8
  %110 = fsub float %109, 1.000000e+00
  %111 = call float @sqrtf(float noundef %110) #8
  store float %111, ptr %31, align 4, !tbaa !9
  %112 = load i32, ptr %29, align 4, !tbaa !5
  %113 = icmp ne i32 %112, 0
  br i1 %113, label %114, label %115

114:                                              ; preds = %106
  br label %122

115:                                              ; preds = %106
  %116 = load float, ptr %31, align 4, !tbaa !9
  %117 = load float, ptr %31, align 4, !tbaa !9
  %118 = call float @llvm.fmuladd.f32(float %116, float %117, float 1.000000e+00)
  %119 = fpext float %118 to double
  %120 = call double @sqrt(double noundef %119) #8
  %121 = fdiv double 1.000000e+00, %120
  br label %122

122:                                              ; preds = %115, %114
  %123 = phi double [ 1.000000e+00, %114 ], [ %121, %115 ]
  %124 = fptrunc double %123 to float
  %125 = getelementptr inbounds { float, float }, ptr %28, i32 0, i32 0
  %126 = getelementptr inbounds { float, float }, ptr %28, i32 0, i32 1
  store float %124, ptr %125, align 4
  store float 0.000000e+00, ptr %126, align 4
  %127 = load i32, ptr %15, align 4, !tbaa !5
  %128 = load float, ptr %31, align 4, !tbaa !9
  %129 = call i32 @cheby1_azpkf(i32 noundef %127, float noundef %128, ptr noundef %87, ptr noundef %84, ptr noundef %27)
  %130 = icmp ne i32 %129, 0
  br i1 %130, label %131, label %133

131:                                              ; preds = %122
  %132 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 1, ptr noundef @.str, i32 noundef 649, ptr noundef @.str.15)
  store i32 %132, ptr %11, align 4
  store i32 1, ptr %36, align 4
  br label %314

133:                                              ; preds = %122
  br label %207

134:                                              ; preds = %79
  %135 = load i32, ptr %30, align 4, !tbaa !5
  %136 = mul i32 2, %135
  store i32 %136, ptr %23, align 4, !tbaa !5
  %137 = load float, ptr %19, align 4, !tbaa !9
  %138 = fneg float %137
  %139 = fdiv float %138, 2.000000e+01
  %140 = call float @powf(float noundef 1.000000e+01, float noundef %139) #8
  store float %140, ptr %31, align 4, !tbaa !9
  %141 = getelementptr inbounds { float, float }, ptr %28, i32 0, i32 0
  %142 = getelementptr inbounds { float, float }, ptr %28, i32 0, i32 1
  store float 1.000000e+00, ptr %141, align 4
  store float 0.000000e+00, ptr %142, align 4
  %143 = load i32, ptr %15, align 4, !tbaa !5
  %144 = load float, ptr %31, align 4, !tbaa !9
  %145 = call i32 @cheby2_azpkf(i32 noundef %143, float noundef %144, ptr noundef %87, ptr noundef %84, ptr noundef %27)
  %146 = icmp ne i32 %145, 0
  br i1 %146, label %147, label %149

147:                                              ; preds = %134
  %148 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 1, ptr noundef @.str, i32 noundef 657, ptr noundef @.str.16)
  store i32 %148, ptr %11, align 4
  store i32 1, ptr %36, align 4
  br label %314

149:                                              ; preds = %134
  br label %207

150:                                              ; preds = %79
  %151 = load i32, ptr %30, align 4, !tbaa !5
  %152 = mul i32 2, %151
  store i32 %152, ptr %23, align 4, !tbaa !5
  %153 = load float, ptr %18, align 4, !tbaa !9
  %154 = fneg float %153
  %155 = fdiv float %154, 2.000000e+01
  %156 = call float @powf(float noundef 1.000000e+01, float noundef %155) #8
  store float %156, ptr %32, align 4, !tbaa !9
  %157 = load float, ptr %19, align 4, !tbaa !9
  %158 = fneg float %157
  %159 = fdiv float %158, 2.000000e+01
  %160 = call float @powf(float noundef 1.000000e+01, float noundef %159) #8
  store float %160, ptr %33, align 4, !tbaa !9
  %161 = load float, ptr %32, align 4, !tbaa !9
  %162 = load float, ptr %32, align 4, !tbaa !9
  %163 = fmul float %161, %162
  %164 = fdiv float 1.000000e+00, %163
  %165 = fsub float %164, 1.000000e+00
  %166 = call float @sqrtf(float noundef %165) #8
  store float %166, ptr %34, align 4, !tbaa !9
  %167 = load float, ptr %33, align 4, !tbaa !9
  %168 = load float, ptr %33, align 4, !tbaa !9
  %169 = fmul float %167, %168
  %170 = fdiv float 1.000000e+00, %169
  %171 = fsub float %170, 1.000000e+00
  %172 = call float @sqrtf(float noundef %171) #8
  store float %172, ptr %35, align 4, !tbaa !9
  %173 = load i32, ptr %29, align 4, !tbaa !5
  %174 = icmp ne i32 %173, 0
  br i1 %174, label %175, label %176

175:                                              ; preds = %150
  br label %183

176:                                              ; preds = %150
  %177 = load float, ptr %34, align 4, !tbaa !9
  %178 = load float, ptr %34, align 4, !tbaa !9
  %179 = call float @llvm.fmuladd.f32(float %177, float %178, float 1.000000e+00)
  %180 = fpext float %179 to double
  %181 = call double @sqrt(double noundef %180) #8
  %182 = fdiv double 1.000000e+00, %181
  br label %183

183:                                              ; preds = %176, %175
  %184 = phi double [ 1.000000e+00, %175 ], [ %182, %176 ]
  %185 = fptrunc double %184 to float
  %186 = getelementptr inbounds { float, float }, ptr %28, i32 0, i32 0
  %187 = getelementptr inbounds { float, float }, ptr %28, i32 0, i32 1
  store float %185, ptr %186, align 4
  store float 0.000000e+00, ptr %187, align 4
  %188 = load i32, ptr %15, align 4, !tbaa !5
  %189 = load float, ptr %34, align 4, !tbaa !9
  %190 = load float, ptr %35, align 4, !tbaa !9
  %191 = call i32 @ellip_azpkf(i32 noundef %188, float noundef %189, float noundef %190, ptr noundef %87, ptr noundef %84, ptr noundef %27)
  %192 = icmp ne i32 %191, 0
  br i1 %192, label %193, label %195

193:                                              ; preds = %183
  %194 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 1, ptr noundef @.str, i32 noundef 668, ptr noundef @.str.17)
  store i32 %194, ptr %11, align 4
  store i32 1, ptr %36, align 4
  br label %314

195:                                              ; preds = %183
  br label %207

196:                                              ; preds = %79
  store i32 0, ptr %23, align 4, !tbaa !5
  %197 = getelementptr inbounds { float, float }, ptr %28, i32 0, i32 0
  %198 = getelementptr inbounds { float, float }, ptr %28, i32 0, i32 1
  store float 1.000000e+00, ptr %197, align 4
  store float 0.000000e+00, ptr %198, align 4
  %199 = load i32, ptr %15, align 4, !tbaa !5
  %200 = call i32 @bessel_azpkf(i32 noundef %199, ptr noundef %87, ptr noundef %84, ptr noundef %27)
  %201 = icmp ne i32 %200, 0
  br i1 %201, label %202, label %204

202:                                              ; preds = %196
  %203 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 1, ptr noundef @.str, i32 noundef 675, ptr noundef @.str.18)
  store i32 %203, ptr %11, align 4
  store i32 1, ptr %36, align 4
  br label %314

204:                                              ; preds = %196
  br label %207

205:                                              ; preds = %79
  %206 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 3, ptr noundef @.str, i32 noundef 678, ptr noundef @.str.19)
  store i32 %206, ptr %11, align 4
  store i32 1, ptr %36, align 4
  br label %314

207:                                              ; preds = %204, %195, %149, %133, %105
  %208 = load i32, ptr %15, align 4, !tbaa !5
  %209 = mul i32 2, %208
  %210 = zext i32 %209 to i64
  %211 = alloca { float, float }, i64 %210, align 16
  store i64 %210, ptr %37, align 8
  %212 = load i32, ptr %15, align 4, !tbaa !5
  %213 = mul i32 2, %212
  %214 = zext i32 %213 to i64
  %215 = alloca { float, float }, i64 %214, align 16
  store i64 %214, ptr %38, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #8
  %216 = load i32, ptr %13, align 4, !tbaa !5
  %217 = load float, ptr %16, align 4, !tbaa !9
  %218 = load float, ptr %17, align 4, !tbaa !9
  %219 = call float @iirdes_freqprewarp(i32 noundef %216, float noundef %217, float noundef %218)
  store float %219, ptr %40, align 4, !tbaa !9
  %220 = load i32, ptr %23, align 4, !tbaa !5
  %221 = load i32, ptr %22, align 4, !tbaa !5
  %222 = getelementptr inbounds { float, float }, ptr %28, i32 0, i32 0
  %223 = load float, ptr %222, align 4
  %224 = getelementptr inbounds { float, float }, ptr %28, i32 0, i32 1
  %225 = load float, ptr %224, align 4
  %226 = load float, ptr %40, align 4, !tbaa !9
  %227 = getelementptr inbounds { float, float }, ptr %41, i32 0, i32 0
  %228 = getelementptr inbounds { float, float }, ptr %41, i32 0, i32 1
  store float %223, ptr %227, align 4
  store float %225, ptr %228, align 4
  %229 = load <2 x float>, ptr %41, align 4
  %230 = call i32 @bilinear_zpkf(ptr noundef %87, i32 noundef %220, ptr noundef %84, i32 noundef %221, <2 x float> noundef %229, float noundef %226, ptr noundef %211, ptr noundef %215, ptr noundef %39)
  %231 = icmp ne i32 %230, 0
  br i1 %231, label %232, label %234

232:                                              ; preds = %207
  %233 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 1, ptr noundef @.str, i32 noundef 702, ptr noundef @.str.20)
  store i32 %233, ptr %11, align 4
  store i32 1, ptr %36, align 4
  br label %313

234:                                              ; preds = %207
  %235 = load i32, ptr %13, align 4, !tbaa !5
  %236 = icmp eq i32 %235, 1
  br i1 %236, label %240, label %237

237:                                              ; preds = %234
  %238 = load i32, ptr %13, align 4, !tbaa !5
  %239 = icmp eq i32 %238, 3
  br i1 %239, label %240, label %247

240:                                              ; preds = %237, %234
  %241 = load i32, ptr %15, align 4, !tbaa !5
  %242 = call i32 @iirdes_dzpk_lp2hp(ptr noundef %211, ptr noundef %215, i32 noundef %241, ptr noundef %211, ptr noundef %215)
  %243 = icmp ne i32 %242, 0
  br i1 %243, label %244, label %246

244:                                              ; preds = %240
  %245 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 1, ptr noundef @.str, i32 noundef 722, ptr noundef @.str.21)
  store i32 %245, ptr %11, align 4
  store i32 1, ptr %36, align 4
  br label %313

246:                                              ; preds = %240
  br label %247

247:                                              ; preds = %246, %237
  %248 = load i32, ptr %13, align 4, !tbaa !5
  %249 = icmp eq i32 %248, 2
  br i1 %249, label %253, label %250

250:                                              ; preds = %247
  %251 = load i32, ptr %13, align 4, !tbaa !5
  %252 = icmp eq i32 %251, 3
  br i1 %252, label %253, label %277

253:                                              ; preds = %250, %247
  %254 = load i32, ptr %15, align 4, !tbaa !5
  %255 = mul i32 2, %254
  %256 = zext i32 %255 to i64
  %257 = call ptr @llvm.stacksave.p0()
  store ptr %257, ptr %42, align 8
  %258 = alloca { float, float }, i64 %256, align 16
  store i64 %256, ptr %43, align 8
  %259 = load i32, ptr %15, align 4, !tbaa !5
  %260 = mul i32 2, %259
  %261 = zext i32 %260 to i64
  %262 = alloca { float, float }, i64 %261, align 16
  store i64 %261, ptr %44, align 8
  %263 = load i32, ptr %15, align 4, !tbaa !5
  %264 = load float, ptr %17, align 4, !tbaa !9
  %265 = call i32 @iirdes_dzpk_lp2bp(ptr noundef %211, ptr noundef %215, i32 noundef %263, float noundef %264, ptr noundef %258, ptr noundef %262)
  %266 = load i32, ptr %15, align 4, !tbaa !5
  %267 = mul i32 2, %266
  %268 = zext i32 %267 to i64
  %269 = mul i64 %268, 8
  call void @llvm.memmove.p0.p0.i64(ptr align 16 %211, ptr align 16 %258, i64 %269, i1 false)
  %270 = load i32, ptr %15, align 4, !tbaa !5
  %271 = mul i32 2, %270
  %272 = zext i32 %271 to i64
  %273 = mul i64 %272, 8
  call void @llvm.memmove.p0.p0.i64(ptr align 16 %215, ptr align 16 %262, i64 %273, i1 false)
  %274 = load i32, ptr %15, align 4, !tbaa !5
  %275 = mul i32 2, %274
  store i32 %275, ptr %15, align 4, !tbaa !5
  %276 = load ptr, ptr %42, align 8
  call void @llvm.stackrestore.p0(ptr %276)
  br label %277

277:                                              ; preds = %253, %250
  %278 = load i32, ptr %14, align 4, !tbaa !5
  %279 = icmp eq i32 %278, 1
  br i1 %279, label %280, label %296

280:                                              ; preds = %277
  %281 = load i32, ptr %15, align 4, !tbaa !5
  %282 = getelementptr inbounds { float, float }, ptr %39, i32 0, i32 0
  %283 = load float, ptr %282, align 4
  %284 = getelementptr inbounds { float, float }, ptr %39, i32 0, i32 1
  %285 = load float, ptr %284, align 4
  %286 = load ptr, ptr %20, align 8, !tbaa !11
  %287 = load ptr, ptr %21, align 8, !tbaa !11
  %288 = getelementptr inbounds { float, float }, ptr %45, i32 0, i32 0
  %289 = getelementptr inbounds { float, float }, ptr %45, i32 0, i32 1
  store float %283, ptr %288, align 4
  store float %285, ptr %289, align 4
  %290 = load <2 x float>, ptr %45, align 4
  %291 = call i32 @iirdes_dzpk2tff(ptr noundef %211, ptr noundef %215, i32 noundef %281, <2 x float> noundef %290, ptr noundef %286, ptr noundef %287)
  %292 = icmp ne i32 %291, 0
  br i1 %292, label %293, label %295

293:                                              ; preds = %280
  %294 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 1, ptr noundef @.str, i32 noundef 759, ptr noundef @.str.22)
  store i32 %294, ptr %11, align 4
  store i32 1, ptr %36, align 4
  br label %313

295:                                              ; preds = %280
  br label %312

296:                                              ; preds = %277
  %297 = load i32, ptr %15, align 4, !tbaa !5
  %298 = getelementptr inbounds { float, float }, ptr %39, i32 0, i32 0
  %299 = load float, ptr %298, align 4
  %300 = getelementptr inbounds { float, float }, ptr %39, i32 0, i32 1
  %301 = load float, ptr %300, align 4
  %302 = load ptr, ptr %20, align 8, !tbaa !11
  %303 = load ptr, ptr %21, align 8, !tbaa !11
  %304 = getelementptr inbounds { float, float }, ptr %46, i32 0, i32 0
  %305 = getelementptr inbounds { float, float }, ptr %46, i32 0, i32 1
  store float %299, ptr %304, align 4
  store float %301, ptr %305, align 4
  %306 = load <2 x float>, ptr %46, align 4
  %307 = call i32 @iirdes_dzpk2sosf(ptr noundef %211, ptr noundef %215, i32 noundef %297, <2 x float> noundef %306, ptr noundef %302, ptr noundef %303)
  %308 = icmp ne i32 %307, 0
  br i1 %308, label %309, label %311

309:                                              ; preds = %296
  %310 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 1, ptr noundef @.str, i32 noundef 773, ptr noundef @.str.23)
  store i32 %310, ptr %11, align 4
  store i32 1, ptr %36, align 4
  br label %313

311:                                              ; preds = %296
  br label %312

312:                                              ; preds = %311, %295
  store i32 0, ptr %11, align 4
  store i32 1, ptr %36, align 4
  br label %313

313:                                              ; preds = %312, %309, %293, %244, %232
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  br label %314

314:                                              ; preds = %313, %205, %202, %193, %147, %131, %103
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  %315 = load ptr, ptr %24, align 8
  call void @llvm.stackrestore.p0(ptr %315)
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %316

316:                                              ; preds = %314, %77, %72, %67, %62, %53
  %317 = load i32, ptr %11, align 4
  ret i32 %317
}

declare i32 @butter_azpkf(i32 noundef, ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind
declare float @sqrtf(float noundef) #5

; Function Attrs: nounwind
declare double @sqrt(double noundef) #5

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

declare i32 @cheby1_azpkf(i32 noundef, float noundef, ptr noundef, ptr noundef, ptr noundef) #0

declare i32 @cheby2_azpkf(i32 noundef, float noundef, ptr noundef, ptr noundef, ptr noundef) #0

declare i32 @ellip_azpkf(i32 noundef, float noundef, float noundef, ptr noundef, ptr noundef, ptr noundef) #0

declare i32 @bessel_azpkf(i32 noundef, ptr noundef, ptr noundef, ptr noundef) #0

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"any pointer", !7, i64 0}


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

@.str = external hidden unnamed_addr constant [78 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [67 x i8], align 1

declare i32 @liquid_error_fl(i32 noundef, ptr noundef, i32 noundef, ptr noundef, ...) local_unnamed_addr #0

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn
declare ptr @llvm.stacksave.p0() #1

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

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn
declare void @llvm.stackrestore.p0(ptr) #1

; Function Attrs: nounwind uwtable
declare dso_local float @iirdes_freqprewarp(i32 noundef, float noundef, float noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare dso_local i32 @bilinear_zpkf(ptr noundef, i32 noundef, ptr noundef, i32 noundef, <2 x float> noundef, float noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @iirdes_dzpk2tff(ptr noundef, ptr noundef, i32 noundef, <2 x float> noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @iirdes_dzpk2sosf(ptr noundef, ptr noundef, i32 noundef, <2 x float> noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare float @powf(float noundef, float noundef) local_unnamed_addr #5

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @iirdes_dzpk_lp2bp(ptr noundef, ptr noundef, i32 noundef, float noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
define dso_local i32 @liquid_iirdes(i32 noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, float noundef %4, float noundef %5, float noundef %6, float noundef %7, ptr noundef %8, ptr noundef %9) local_unnamed_addr #4 {
  %11 = alloca { float, float }, align 4
  %12 = alloca { float, float }, align 8
  %13 = fcmp ugt float %4, 0.000000e+00
  %14 = fcmp ult float %4, 5.000000e-01
  %or.cond94 = and i1 %13, %14
  br i1 %or.cond94, label %17, label %15

15:                                               ; preds = %10
  %16 = tail call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 607, ptr noundef nonnull @.str.9) #9
  br label %132

17:                                               ; preds = %10
  %18 = fcmp olt float %5, 0.000000e+00
  %19 = fcmp ogt float %5, 5.000000e-01
  %or.cond95 = or i1 %18, %19
  br i1 %or.cond95, label %20, label %22

20:                                               ; preds = %17
  %21 = tail call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 609, ptr noundef nonnull @.str.10) #9
  br label %132

22:                                               ; preds = %17
  %23 = fcmp ugt float %6, 0.000000e+00
  br i1 %23, label %26, label %24

24:                                               ; preds = %22
  %25 = tail call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 611, ptr noundef nonnull @.str.11) #9
  br label %132

26:                                               ; preds = %22
  %27 = fcmp ugt float %7, 0.000000e+00
  br i1 %27, label %30, label %28

28:                                               ; preds = %26
  %29 = tail call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 613, ptr noundef nonnull @.str.12) #9
  br label %132

30:                                               ; preds = %26
  %31 = icmp eq i32 %3, 0
  br i1 %31, label %32, label %34

32:                                               ; preds = %30
  %33 = tail call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 615, ptr noundef nonnull @.str.13) #9
  br label %132

34:                                               ; preds = %30
  %35 = zext i32 %3 to i64
  %36 = tail call ptr @llvm.stacksave.p0()
  %37 = alloca { float, float }, i64 %35, align 16
  %38 = alloca { float, float }, i64 %35, align 16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #9
  %39 = and i32 %3, 1
  switch i32 %0, label %94 [
    i32 0, label %40
    i32 1, label %44
    i32 2, label %59
    i32 3, label %66
    i32 4, label %90
  ]

40:                                               ; preds = %34
  %41 = call i32 @butter_azpkf(i32 noundef %3, ptr noundef nonnull %38, ptr noundef nonnull %37, ptr noundef nonnull %11) #9
  %.not89 = icmp eq i32 %41, 0
  br i1 %.not89, label %96, label %42

42:                                               ; preds = %40
  %43 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 641, ptr noundef nonnull @.str.14) #9
  br label %131

44:                                               ; preds = %34
  %45 = fdiv float %6, 1.000000e+01
  %46 = tail call float @powf(float noundef 1.000000e+01, float noundef %45) #9
  %47 = fadd float %46, -1.000000e+00
  %48 = tail call float @sqrtf(float noundef %47) #9
  %.not87 = icmp eq i32 %39, 0
  br i1 %.not87, label %49, label %54

49:                                               ; preds = %44
  %50 = tail call float @llvm.fmuladd.f32(float %48, float %48, float 1.000000e+00)
  %51 = fpext float %50 to double
  %sqrt = tail call double @llvm.sqrt.f64(double %51)
  %52 = fdiv double 1.000000e+00, %sqrt
  %53 = fptrunc double %52 to float
  br label %54

54:                                               ; preds = %44, %49
  %55 = phi float [ %53, %49 ], [ 1.000000e+00, %44 ]
  %56 = call i32 @cheby1_azpkf(i32 noundef %3, float noundef %48, ptr noundef nonnull %38, ptr noundef nonnull %37, ptr noundef nonnull %11) #9
  %.not88 = icmp eq i32 %56, 0
  br i1 %.not88, label %96, label %57

57:                                               ; preds = %54
  %58 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 649, ptr noundef nonnull @.str.15) #9
  br label %131

59:                                               ; preds = %34
  %60 = and i32 %3, -2
  %61 = fdiv float %7, -2.000000e+01
  %62 = tail call float @powf(float noundef 1.000000e+01, float noundef %61) #9
  %63 = call i32 @cheby2_azpkf(i32 noundef %3, float noundef %62, ptr noundef nonnull %38, ptr noundef nonnull %37, ptr noundef nonnull %11) #9
  %.not86 = icmp eq i32 %63, 0
  br i1 %.not86, label %96, label %64

64:                                               ; preds = %59
  %65 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 657, ptr noundef nonnull @.str.16) #9
  br label %131

66:                                               ; preds = %34
  %67 = and i32 %3, -2
  %68 = fdiv float %6, -2.000000e+01
  %69 = tail call float @powf(float noundef 1.000000e+01, float noundef %68) #9
  %70 = fdiv float %7, -2.000000e+01
  %71 = tail call float @powf(float noundef 1.000000e+01, float noundef %70) #9
  %72 = fmul float %69, %69
  %73 = fdiv float 1.000000e+00, %72
  %74 = fadd float %73, -1.000000e+00
  %75 = tail call float @sqrtf(float noundef %74) #9
  %76 = fmul float %71, %71
  %77 = fdiv float 1.000000e+00, %76
  %78 = fadd float %77, -1.000000e+00
  %79 = tail call float @sqrtf(float noundef %78) #9
  %.not84 = icmp eq i32 %39, 0
  br i1 %.not84, label %80, label %85

80:                                               ; preds = %66
  %81 = tail call float @llvm.fmuladd.f32(float %75, float %75, float 1.000000e+00)
  %82 = fpext float %81 to double
  %sqrt96 = tail call double @llvm.sqrt.f64(double %82)
  %83 = fdiv double 1.000000e+00, %sqrt96
  %84 = fptrunc double %83 to float
  br label %85

85:                                               ; preds = %66, %80
  %86 = phi float [ %84, %80 ], [ 1.000000e+00, %66 ]
  %87 = call i32 @ellip_azpkf(i32 noundef %3, float noundef %75, float noundef %79, ptr noundef nonnull %38, ptr noundef nonnull %37, ptr noundef nonnull %11) #9
  %.not85 = icmp eq i32 %87, 0
  br i1 %.not85, label %96, label %88

88:                                               ; preds = %85
  %89 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 668, ptr noundef nonnull @.str.17) #9
  br label %131

90:                                               ; preds = %34
  %91 = call i32 @bessel_azpkf(i32 noundef %3, ptr noundef nonnull %38, ptr noundef nonnull %37, ptr noundef nonnull %11) #9
  %.not = icmp eq i32 %91, 0
  br i1 %.not, label %96, label %92

92:                                               ; preds = %90
  %93 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 675, ptr noundef nonnull @.str.18) #9
  br label %131

94:                                               ; preds = %34
  %95 = tail call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 678, ptr noundef nonnull @.str.19) #9
  br label %131

96:                                               ; preds = %90, %85, %59, %54, %40
  %.sroa.026.0 = phi float [ 1.000000e+00, %90 ], [ %86, %85 ], [ 1.000000e+00, %59 ], [ %55, %54 ], [ 1.000000e+00, %40 ]
  %.078 = phi i32 [ 0, %90 ], [ %67, %85 ], [ %60, %59 ], [ 0, %54 ], [ 0, %40 ]
  %97 = shl i32 %3, 1
  %98 = zext i32 %97 to i64
  %99 = alloca { float, float }, i64 %98, align 16
  %100 = alloca { float, float }, i64 %98, align 16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #9
  %101 = call float @iirdes_freqprewarp(i32 noundef %1, float noundef %4, float noundef %5)
  %.sroa.07.4.vec.insert = insertelement <2 x float> <float poison, float 0.000000e+00>, float %.sroa.026.0, i64 0
  %102 = call i32 @bilinear_zpkf(ptr noundef nonnull %38, i32 noundef %.078, ptr noundef nonnull %37, i32 noundef %3, <2 x float> noundef %.sroa.07.4.vec.insert, float noundef %101, ptr noundef nonnull %99, ptr noundef nonnull %100, ptr noundef nonnull %12)
  %.not90 = icmp eq i32 %102, 0
  br i1 %.not90, label %105, label %103

103:                                              ; preds = %96
  %104 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 702, ptr noundef nonnull @.str.20) #9
  br label %130

105:                                              ; preds = %96
  %106 = and i32 %1, -3
  %or.cond = icmp eq i32 %106, 1
  br i1 %or.cond, label %107, label %111

107:                                              ; preds = %105
  %108 = call i32 @iirdes_dzpk_lp2hp(ptr noundef nonnull %99, ptr noundef nonnull %100, i32 noundef %3, ptr noundef nonnull %99, ptr noundef nonnull %100)
  %.not91 = icmp eq i32 %108, 0
  br i1 %.not91, label %111, label %109

109:                                              ; preds = %107
  %110 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 722, ptr noundef nonnull @.str.21) #9
  br label %130

111:                                              ; preds = %107, %105
  %112 = and i32 %1, -2
  %or.cond3 = icmp eq i32 %112, 2
  br i1 %or.cond3, label %113, label %119

113:                                              ; preds = %111
  %114 = call ptr @llvm.stacksave.p0()
  %115 = alloca { float, float }, i64 %98, align 16
  %116 = alloca { float, float }, i64 %98, align 16
  %117 = call i32 @iirdes_dzpk_lp2bp(ptr noundef nonnull %99, ptr noundef nonnull %100, i32 noundef %3, float noundef %5, ptr noundef nonnull %115, ptr noundef nonnull %116)
  %118 = shl nuw nsw i64 %98, 3
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %99, ptr nonnull align 16 %115, i64 %118, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %100, ptr nonnull align 16 %116, i64 %118, i1 false)
  call void @llvm.stackrestore.p0(ptr %114)
  br label %119

119:                                              ; preds = %111, %113
  %.077 = phi i32 [ %97, %113 ], [ %3, %111 ]
  %120 = icmp eq i32 %2, 1
  %121 = load <2 x float>, ptr %12, align 8
  br i1 %120, label %122, label %126

122:                                              ; preds = %119
  %123 = call i32 @iirdes_dzpk2tff(ptr noundef nonnull %99, ptr noundef nonnull %100, i32 noundef %.077, <2 x float> noundef %121, ptr noundef %8, ptr noundef %9)
  %.not93 = icmp eq i32 %123, 0
  br i1 %.not93, label %130, label %124

124:                                              ; preds = %122
  %125 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 759, ptr noundef nonnull @.str.22) #9
  br label %130

126:                                              ; preds = %119
  %127 = call i32 @iirdes_dzpk2sosf(ptr noundef nonnull %99, ptr noundef nonnull %100, i32 noundef %.077, <2 x float> noundef %121, ptr noundef %8, ptr noundef %9)
  %.not92 = icmp eq i32 %127, 0
  br i1 %.not92, label %130, label %128

128:                                              ; preds = %126
  %129 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 773, ptr noundef nonnull @.str.23) #9
  br label %130

130:                                              ; preds = %122, %126, %128, %124, %109, %103
  %.0 = phi i32 [ %104, %103 ], [ %110, %109 ], [ %125, %124 ], [ %129, %128 ], [ 0, %126 ], [ 0, %122 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #9
  br label %131

131:                                              ; preds = %130, %94, %92, %88, %64, %57, %42
  %.1 = phi i32 [ %95, %94 ], [ %93, %92 ], [ %.0, %130 ], [ %89, %88 ], [ %65, %64 ], [ %58, %57 ], [ %43, %42 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #9
  call void @llvm.stackrestore.p0(ptr %36)
  br label %132

132:                                              ; preds = %131, %32, %28, %24, %20, %15
  %.2 = phi i32 [ %16, %15 ], [ %21, %20 ], [ %25, %24 ], [ %29, %28 ], [ %33, %32 ], [ %.1, %131 ]
  ret i32 %.2
}

declare i32 @butter_azpkf(i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

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

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

declare i32 @cheby1_azpkf(i32 noundef, float noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare i32 @cheby2_azpkf(i32 noundef, float noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare i32 @ellip_azpkf(i32 noundef, float noundef, float noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare i32 @bessel_azpkf(i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

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

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

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


; Effective O3 passes: AggressiveInstCombinePass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,MemCpyOptPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass