; LLVM IR from jgaeddert/liquid-dsp :: examples (msresamp2_crcf_example)

; 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.7 = external hidden unnamed_addr constant [10 x i8], align 1
@optarg = external global ptr, align 8
@stderr = external global ptr, align 8
@.str.8 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [7 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @usage() #0

declare i32 @printf(ptr noundef, ...) #1

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr noundef %1) #2 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca float, align 4
  %7 = alloca float, align 4
  %8 = alloca i32, align 4
  %9 = alloca float, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca float, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca ptr, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca float, align 4
  %25 = alloca float, align 4
  %26 = alloca float, align 4
  %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 i32, align 4
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca float, align 4
  %37 = alloca float, align 4
  %38 = alloca float, align 4
  %39 = alloca float, align 4
  %40 = alloca float, align 4
  %41 = alloca float, align 4
  %42 = alloca { float, float }, align 4
  %43 = alloca ptr, align 8
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #9
  store float 2.500000e-01, ptr %6, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #9
  store float 6.000000e+01, ptr %7, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #9
  store i32 128, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #9
  store float 0x3FDCCCCCC0000000, ptr %9, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #9
  br label %44

44:                                               ; preds = %68, %2
  %45 = load i32, ptr %4, align 4, !tbaa !5
  %46 = load ptr, ptr %5, align 8, !tbaa !9
  %47 = call i32 @getopt(i32 noundef %45, ptr noundef %46, ptr noundef @.str.7) #9
  store i32 %47, ptr %10, align 4, !tbaa !5
  %48 = icmp ne i32 %47, -1
  br i1 %48, label %49, label %69

49:                                               ; preds = %44
  %50 = load i32, ptr %10, align 4, !tbaa !5
  switch i32 %50, label %67 [
    i32 104, label %51
    i32 114, label %52
    i32 115, label %56
    i32 110, label %60
    i32 102, label %63
  ]

51:                                               ; preds = %49
  call void @usage()
  store i32 0, ptr %3, align 4
  store i32 1, ptr %11, align 4
  br label %584

52:                                               ; preds = %49
  %53 = load ptr, ptr @optarg, align 8, !tbaa !9
  %54 = call double @atof(ptr noundef %53) #10
  %55 = fptrunc double %54 to float
  store float %55, ptr %6, align 4, !tbaa !11
  br label %68

56:                                               ; preds = %49
  %57 = load ptr, ptr @optarg, align 8, !tbaa !9
  %58 = call double @atof(ptr noundef %57) #10
  %59 = fptrunc double %58 to float
  store float %59, ptr %7, align 4, !tbaa !11
  br label %68

60:                                               ; preds = %49
  %61 = load ptr, ptr @optarg, align 8, !tbaa !9
  %62 = call i32 @atoi(ptr noundef %61) #10
  store i32 %62, ptr %8, align 4, !tbaa !5
  br label %68

63:                                               ; preds = %49
  %64 = load ptr, ptr @optarg, align 8, !tbaa !9
  %65 = call double @atof(ptr noundef %64) #10
  %66 = fptrunc double %65 to float
  store float %66, ptr %9, align 4, !tbaa !11
  br label %68

67:                                               ; preds = %49
  call void @exit(i32 noundef 1) #11
  unreachable

68:                                               ; preds = %63, %60, %56, %52
  br label %44, !llvm.loop !13

69:                                               ; preds = %44
  %70 = load i32, ptr %8, align 4, !tbaa !5
  %71 = icmp eq i32 %70, 0
  br i1 %71, label %72, label %78

72:                                               ; preds = %69
  %73 = load ptr, ptr @stderr, align 8, !tbaa !9
  %74 = load ptr, ptr %5, align 8, !tbaa !9
  %75 = getelementptr inbounds ptr, ptr %74, i64 0
  %76 = load ptr, ptr %75, align 8, !tbaa !9
  %77 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %73, ptr noundef @.str.8, ptr noundef %76) #9
  call void @exit(i32 noundef 1) #11
  unreachable

78:                                               ; preds = %69
  %79 = load float, ptr %6, align 4, !tbaa !11
  %80 = fcmp ole float %79, 0.000000e+00
  br i1 %80, label %81, label %87

81:                                               ; preds = %78
  %82 = load ptr, ptr @stderr, align 8, !tbaa !9
  %83 = load ptr, ptr %5, align 8, !tbaa !9
  %84 = getelementptr inbounds ptr, ptr %83, i64 0
  %85 = load ptr, ptr %84, align 8, !tbaa !9
  %86 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %82, ptr noundef @.str.9, ptr noundef %85) #9
  call void @exit(i32 noundef 1) #11
  unreachable

87:                                               ; preds = %78
  %88 = load float, ptr %6, align 4, !tbaa !11
  %89 = call float @log2f(float noundef %88) #9
  %90 = call float @llvm.fabs.f32(float %89)
  %91 = call float @llvm.round.f32(float %90)
  %92 = fcmp ogt float %91, 1.000000e+01
  br i1 %92, label %93, label %99

93:                                               ; preds = %87
  %94 = load ptr, ptr @stderr, align 8, !tbaa !9
  %95 = load ptr, ptr %5, align 8, !tbaa !9
  %96 = getelementptr inbounds ptr, ptr %95, i64 0
  %97 = load ptr, ptr %96, align 8, !tbaa !9
  %98 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %94, ptr noundef @.str.10, ptr noundef %97) #9
  call void @exit(i32 noundef 1) #11
  unreachable

99:                                               ; preds = %87
  br label %100

100:                                              ; preds = %99
  br label %101

101:                                              ; preds = %100
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #9
  %102 = load float, ptr %6, align 4, !tbaa !11
  %103 = call float @log2f(float noundef %102) #9
  %104 = call float @llvm.fabs.f32(float %103)
  %105 = call float @llvm.round.f32(float %104)
  %106 = fptoui float %105 to i32
  store i32 %106, ptr %12, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #9
  %107 = load float, ptr %6, align 4, !tbaa !11
  %108 = fpext float %107 to double
  %109 = fcmp olt double %108, 1.000000e+00
  %110 = zext i1 %109 to i64
  %111 = select i1 %109, i32 1, i32 0
  store i32 %111, ptr %13, align 4, !tbaa !5
  %112 = call i32 (ptr, ...) @printf(ptr noundef @.str.11)
  %113 = load float, ptr %6, align 4, !tbaa !11
  %114 = fpext float %113 to double
  %115 = call i32 (ptr, ...) @printf(ptr noundef @.str.12, double noundef %114)
  %116 = load float, ptr %6, align 4, !tbaa !11
  %117 = call float @log2f(float noundef %116) #9
  %118 = fpext float %117 to double
  %119 = call i32 (ptr, ...) @printf(ptr noundef @.str.13, double noundef %118)
  %120 = load i32, ptr %13, align 4, !tbaa !5
  %121 = icmp eq i32 %120, 1
  %122 = zext i1 %121 to i64
  %123 = select i1 %121, ptr @.str.15, ptr @.str.16
  %124 = call i32 (ptr, ...) @printf(ptr noundef @.str.14, ptr noundef %123)
  %125 = load i32, ptr %12, align 4, !tbaa !5
  %126 = call i32 (ptr, ...) @printf(ptr noundef @.str.17, i32 noundef %125)
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #9
  %127 = load i32, ptr %13, align 4, !tbaa !5
  %128 = load i32, ptr %12, align 4, !tbaa !5
  %129 = load float, ptr %9, align 4, !tbaa !11
  %130 = load float, ptr %7, align 4, !tbaa !11
  %131 = call ptr @msresamp2_crcf_create(i32 noundef %127, i32 noundef %128, float noundef %129, float noundef 0.000000e+00, float noundef %130)
  store ptr %131, ptr %15, align 8, !tbaa !9
  %132 = load ptr, ptr %15, align 8, !tbaa !9
  %133 = call i32 @msresamp2_crcf_print(ptr noundef %132)
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #9
  %134 = load ptr, ptr %15, align 8, !tbaa !9
  %135 = call float @msresamp2_crcf_get_delay(ptr noundef %134)
  store float %135, ptr %16, align 4, !tbaa !11
  %136 = load ptr, ptr %15, align 8, !tbaa !9
  %137 = call float @msresamp2_crcf_get_rate(ptr noundef %136)
  store float %137, ptr %6, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #9
  %138 = load i32, ptr %12, align 4, !tbaa !5
  %139 = shl i32 1, %138
  store i32 %139, ptr %17, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #9
  %140 = load i32, ptr %13, align 4, !tbaa !5
  %141 = icmp eq i32 %140, 1
  br i1 %141, label %142, label %146

142:                                              ; preds = %101
  %143 = load i32, ptr %8, align 4, !tbaa !5
  %144 = load i32, ptr %17, align 4, !tbaa !5
  %145 = mul i32 %143, %144
  br label %148

146:                                              ; preds = %101
  %147 = load i32, ptr %8, align 4, !tbaa !5
  br label %148

148:                                              ; preds = %146, %142
  %149 = phi i32 [ %145, %142 ], [ %147, %146 ]
  store i32 %149, ptr %18, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #9
  %150 = load i32, ptr %13, align 4, !tbaa !5
  %151 = icmp eq i32 %150, 1
  br i1 %151, label %152, label %154

152:                                              ; preds = %148
  %153 = load i32, ptr %8, align 4, !tbaa !5
  br label %158

154:                                              ; preds = %148
  %155 = load i32, ptr %8, align 4, !tbaa !5
  %156 = load i32, ptr %17, align 4, !tbaa !5
  %157 = mul i32 %155, %156
  br label %158

158:                                              ; preds = %154, %152
  %159 = phi i32 [ %153, %152 ], [ %157, %154 ]
  store i32 %159, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #9
  %160 = load i32, ptr %18, align 4, !tbaa !5
  %161 = uitofp i32 %160 to double
  %162 = fmul double 7.500000e-01, %161
  %163 = call double @llvm.round.f64(double %162)
  %164 = fptoui double %163 to i32
  store i32 %164, ptr %20, align 4, !tbaa !5
  %165 = load i32, ptr %18, align 4, !tbaa !5
  %166 = zext i32 %165 to i64
  %167 = call ptr @llvm.stacksave.p0()
  store ptr %167, ptr %21, align 8
  %168 = alloca { float, float }, i64 %166, align 16
  store i64 %166, ptr %22, align 8
  %169 = load i32, ptr %19, align 4, !tbaa !5
  %170 = zext i32 %169 to i64
  %171 = alloca { float, float }, i64 %170, align 16
  store i64 %170, ptr %23, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #9
  %172 = load float, ptr %9, align 4, !tbaa !11
  %173 = fpext float %172 to double
  %174 = fmul double 0x3FEE666666666666, %173
  %175 = load i32, ptr %13, align 4, !tbaa !5
  %176 = icmp eq i32 %175, 1
  br i1 %176, label %177, label %179

177:                                              ; preds = %158
  %178 = load float, ptr %6, align 4, !tbaa !11
  br label %180

179:                                              ; preds = %158
  br label %180

180:                                              ; preds = %179, %177
  %181 = phi float [ %178, %177 ], [ 1.000000e+00, %179 ]
  %182 = fpext float %181 to double
  %183 = fmul double %174, %182
  %184 = fptrunc double %183 to float
  store float %184, ptr %24, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #9
  store float 0.000000e+00, ptr %25, align 4, !tbaa !11
  store i32 0, ptr %14, align 4, !tbaa !5
  br label %185

185:                                              ; preds = %229, %180
  %186 = load i32, ptr %14, align 4, !tbaa !5
  %187 = load i32, ptr %18, align 4, !tbaa !5
  %188 = icmp ult i32 %186, %187
  br i1 %188, label %189, label %232

189:                                              ; preds = %185
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #9
  %190 = load i32, ptr %14, align 4, !tbaa !5
  %191 = load i32, ptr %20, align 4, !tbaa !5
  %192 = icmp ult i32 %190, %191
  br i1 %192, label %193, label %197

193:                                              ; preds = %189
  %194 = load i32, ptr %14, align 4, !tbaa !5
  %195 = load i32, ptr %20, align 4, !tbaa !5
  %196 = call float @liquid_kaiser(i32 noundef %194, i32 noundef %195, float noundef 1.000000e+01)
  br label %198

197:                                              ; preds = %189
  br label %198

198:                                              ; preds = %197, %193
  %199 = phi float [ %196, %193 ], [ 0.000000e+00, %197 ]
  store float %199, ptr %26, align 4, !tbaa !11
  %200 = load float, ptr %24, align 4, !tbaa !11
  %201 = fpext float %200 to double
  %202 = fmul double 0.000000e+00, %201
  %203 = fmul double 0x401921FB54442D18, %201
  %204 = load i32, ptr %14, align 4, !tbaa !5
  %205 = uitofp i32 %204 to double
  %206 = fmul double %202, %205
  %207 = fmul double %203, %205
  %208 = fptrunc double %206 to float
  %209 = fptrunc double %207 to float
  %210 = getelementptr inbounds { float, float }, ptr %27, i32 0, i32 0
  %211 = getelementptr inbounds { float, float }, ptr %27, i32 0, i32 1
  store float %208, ptr %210, align 4
  store float %209, ptr %211, align 4
  %212 = load <2 x float>, ptr %27, align 4
  %213 = call <2 x float> @cexpf(<2 x float> noundef %212) #9
  store <2 x float> %213, ptr %28, align 4
  %214 = getelementptr inbounds { float, float }, ptr %28, i32 0, i32 0
  %215 = load float, ptr %214, align 4
  %216 = getelementptr inbounds { float, float }, ptr %28, i32 0, i32 1
  %217 = load float, ptr %216, align 4
  %218 = load float, ptr %26, align 4, !tbaa !11
  %219 = fmul float %215, %218
  %220 = fmul float %217, %218
  %221 = load i32, ptr %14, align 4, !tbaa !5
  %222 = zext i32 %221 to i64
  %223 = getelementptr inbounds { float, float }, ptr %168, i64 %222
  %224 = getelementptr inbounds { float, float }, ptr %223, i32 0, i32 0
  %225 = getelementptr inbounds { float, float }, ptr %223, i32 0, i32 1
  store float %219, ptr %224, align 8
  store float %220, ptr %225, align 4
  %226 = load float, ptr %26, align 4, !tbaa !11
  %227 = load float, ptr %25, align 4, !tbaa !11
  %228 = fadd float %227, %226
  store float %228, ptr %25, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #9
  br label %229

229:                                              ; preds = %198
  %230 = load i32, ptr %14, align 4, !tbaa !5
  %231 = add i32 %230, 1
  store i32 %231, ptr %14, align 4, !tbaa !5
  br label %185, !llvm.loop !15

232:                                              ; preds = %185
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #9
  %233 = load i32, ptr %13, align 4, !tbaa !5
  %234 = icmp eq i32 %233, 0
  br i1 %234, label %235, label %236

235:                                              ; preds = %232
  br label %238

236:                                              ; preds = %232
  %237 = load i32, ptr %17, align 4, !tbaa !5
  br label %238

238:                                              ; preds = %236, %235
  %239 = phi i32 [ 1, %235 ], [ %237, %236 ]
  store i32 %239, ptr %29, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #9
  %240 = load i32, ptr %13, align 4, !tbaa !5
  %241 = icmp eq i32 %240, 0
  br i1 %241, label %242, label %244

242:                                              ; preds = %238
  %243 = load i32, ptr %17, align 4, !tbaa !5
  br label %245

244:                                              ; preds = %238
  br label %245

245:                                              ; preds = %244, %242
  %246 = phi i32 [ %243, %242 ], [ 1, %244 ]
  store i32 %246, ptr %30, align 4, !tbaa !5
  store i32 0, ptr %14, align 4, !tbaa !5
  br label %247

247:                                              ; preds = %264, %245
  %248 = load i32, ptr %14, align 4, !tbaa !5
  %249 = load i32, ptr %8, align 4, !tbaa !5
  %250 = icmp ult i32 %248, %249
  br i1 %250, label %251, label %267

251:                                              ; preds = %247
  %252 = load ptr, ptr %15, align 8, !tbaa !9
  %253 = load i32, ptr %14, align 4, !tbaa !5
  %254 = load i32, ptr %29, align 4, !tbaa !5
  %255 = mul i32 %253, %254
  %256 = zext i32 %255 to i64
  %257 = getelementptr inbounds { float, float }, ptr %168, i64 %256
  %258 = load i32, ptr %14, align 4, !tbaa !5
  %259 = load i32, ptr %30, align 4, !tbaa !5
  %260 = mul i32 %258, %259
  %261 = zext i32 %260 to i64
  %262 = getelementptr inbounds { float, float }, ptr %171, i64 %261
  %263 = call i32 @msresamp2_crcf_execute(ptr noundef %252, ptr noundef %257, ptr noundef %262)
  br label %264

264:                                              ; preds = %251
  %265 = load i32, ptr %14, align 4, !tbaa !5
  %266 = add i32 %265, 1
  store i32 %266, ptr %14, align 4, !tbaa !5
  br label %247, !llvm.loop !16

267:                                              ; preds = %247
  %268 = load ptr, ptr %15, align 8, !tbaa !9
  %269 = call i32 @msresamp2_crcf_destroy(ptr noundef %268)
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #9
  %270 = load i32, ptr %19, align 4, !tbaa !5
  %271 = uitofp i32 %270 to float
  %272 = load i32, ptr %18, align 4, !tbaa !5
  %273 = uitofp i32 %272 to float
  %274 = fdiv float %271, %273
  store float %274, ptr %31, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #9
  %275 = load float, ptr %24, align 4, !tbaa !11
  %276 = load float, ptr %6, align 4, !tbaa !11
  %277 = fdiv float %275, %276
  store float %277, ptr %32, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #9
  %278 = load i32, ptr %8, align 4, !tbaa !5
  %279 = load i32, ptr %17, align 4, !tbaa !5
  %280 = mul i32 %278, %279
  %281 = call i32 @liquid_nextpow2(i32 noundef %280)
  %282 = shl i32 4, %281
  store i32 %282, ptr %33, align 4, !tbaa !5
  %283 = load i32, ptr %33, align 4, !tbaa !5
  %284 = zext i32 %283 to i64
  %285 = alloca { float, float }, i64 %284, align 16
  store i64 %284, ptr %34, align 8
  %286 = load i32, ptr %33, align 4, !tbaa !5
  %287 = zext i32 %286 to i64
  %288 = alloca { float, float }, i64 %287, align 16
  store i64 %287, ptr %35, align 8
  store i32 0, ptr %14, align 4, !tbaa !5
  br label %289

289:                                              ; preds = %314, %267
  %290 = load i32, ptr %14, align 4, !tbaa !5
  %291 = load i32, ptr %33, align 4, !tbaa !5
  %292 = icmp ult i32 %290, %291
  br i1 %292, label %293, label %317

293:                                              ; preds = %289
  %294 = load i32, ptr %14, align 4, !tbaa !5
  %295 = load i32, ptr %19, align 4, !tbaa !5
  %296 = icmp ult i32 %294, %295
  br i1 %296, label %297, label %305

297:                                              ; preds = %293
  %298 = load i32, ptr %14, align 4, !tbaa !5
  %299 = zext i32 %298 to i64
  %300 = getelementptr inbounds { float, float }, ptr %171, i64 %299
  %301 = getelementptr inbounds { float, float }, ptr %300, i32 0, i32 0
  %302 = load float, ptr %301, align 8
  %303 = getelementptr inbounds { float, float }, ptr %300, i32 0, i32 1
  %304 = load float, ptr %303, align 4
  br label %306

305:                                              ; preds = %293
  br label %306

306:                                              ; preds = %305, %297
  %307 = phi float [ %302, %297 ], [ 0.000000e+00, %305 ]
  %308 = phi float [ %304, %297 ], [ 0.000000e+00, %305 ]
  %309 = load i32, ptr %14, align 4, !tbaa !5
  %310 = zext i32 %309 to i64
  %311 = getelementptr inbounds { float, float }, ptr %285, i64 %310
  %312 = getelementptr inbounds { float, float }, ptr %311, i32 0, i32 0
  %313 = getelementptr inbounds { float, float }, ptr %311, i32 0, i32 1
  store float %307, ptr %312, align 8
  store float %308, ptr %313, align 4
  br label %314

314:                                              ; preds = %306
  %315 = load i32, ptr %14, align 4, !tbaa !5
  %316 = add i32 %315, 1
  store i32 %316, ptr %14, align 4, !tbaa !5
  br label %289, !llvm.loop !17

317:                                              ; preds = %289
  %318 = load i32, ptr %33, align 4, !tbaa !5
  %319 = call i32 @fft_run(i32 noundef %318, ptr noundef %285, ptr noundef %288, i32 noundef 1, i32 noundef 0)
  %320 = load i32, ptr %33, align 4, !tbaa !5
  %321 = call i32 @fft_shift(ptr noundef %288, i32 noundef %320)
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #9
  store float 0.000000e+00, ptr %36, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #9
  store float 0.000000e+00, ptr %37, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #9
  store float -1.000000e+09, ptr %38, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #9
  store float 0x3FB1EB8520000000, ptr %39, align 4, !tbaa !11
  store i32 0, ptr %14, align 4, !tbaa !5
  br label %322

322:                                              ; preds = %378, %317
  %323 = load i32, ptr %14, align 4, !tbaa !5
  %324 = load i32, ptr %33, align 4, !tbaa !5
  %325 = icmp ult i32 %323, %324
  br i1 %325, label %326, label %381

326:                                              ; preds = %322
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #9
  %327 = load i32, ptr %14, align 4, !tbaa !5
  %328 = uitofp i32 %327 to float
  %329 = load i32, ptr %33, align 4, !tbaa !5
  %330 = uitofp i32 %329 to float
  %331 = fdiv float %328, %330
  %332 = fsub float %331, 5.000000e-01
  store float %332, ptr %40, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #9
  %333 = load i32, ptr %14, align 4, !tbaa !5
  %334 = zext i32 %333 to i64
  %335 = getelementptr inbounds { float, float }, ptr %288, i64 %334
  %336 = getelementptr inbounds { float, float }, ptr %335, i32 0, i32 0
  %337 = load float, ptr %336, align 8
  %338 = getelementptr inbounds { float, float }, ptr %335, i32 0, i32 1
  %339 = load float, ptr %338, align 4
  %340 = load float, ptr %6, align 4, !tbaa !11
  %341 = load float, ptr %25, align 4, !tbaa !11
  %342 = fmul float %340, %341
  %343 = fdiv float %337, %342
  %344 = fdiv float %339, %342
  %345 = getelementptr inbounds { float, float }, ptr %42, i32 0, i32 0
  %346 = getelementptr inbounds { float, float }, ptr %42, i32 0, i32 1
  store float %343, ptr %345, align 4
  store float %344, ptr %346, align 4
  %347 = load <2 x float>, ptr %42, align 4
  %348 = call float @cabsf(<2 x float> noundef %347) #9
  %349 = call float @log10f(float noundef %348) #9
  %350 = fmul float 2.000000e+01, %349
  store float %350, ptr %41, align 4, !tbaa !11
  %351 = load float, ptr %41, align 4, !tbaa !11
  %352 = load float, ptr %36, align 4, !tbaa !11
  %353 = fcmp ogt float %351, %352
  br i1 %353, label %357, label %354

354:                                              ; preds = %326
  %355 = load i32, ptr %14, align 4, !tbaa !5
  %356 = icmp eq i32 %355, 0
  br i1 %356, label %357, label %360

357:                                              ; preds = %354, %326
  %358 = load float, ptr %41, align 4, !tbaa !11
  store float %358, ptr %36, align 4, !tbaa !11
  %359 = load float, ptr %40, align 4, !tbaa !11
  store float %359, ptr %37, align 4, !tbaa !11
  br label %360

360:                                              ; preds = %357, %354
  %361 = load float, ptr %40, align 4, !tbaa !11
  %362 = load float, ptr %32, align 4, !tbaa !11
  %363 = fsub float %361, %362
  %364 = call float @llvm.fabs.f32(float %363)
  %365 = load float, ptr %39, align 4, !tbaa !11
  %366 = fcmp ogt float %364, %365
  br i1 %366, label %367, label %377

367:                                              ; preds = %360
  %368 = load float, ptr %41, align 4, !tbaa !11
  %369 = load float, ptr %38, align 4, !tbaa !11
  %370 = fcmp ogt float %368, %369
  br i1 %370, label %371, label %373

371:                                              ; preds = %367
  %372 = load float, ptr %41, align 4, !tbaa !11
  br label %375

373:                                              ; preds = %367
  %374 = load float, ptr %38, align 4, !tbaa !11
  br label %375

375:                                              ; preds = %373, %371
  %376 = phi float [ %372, %371 ], [ %374, %373 ]
  store float %376, ptr %38, align 4, !tbaa !11
  br label %377

377:                                              ; preds = %375, %360
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #9
  br label %378

378:                                              ; preds = %377
  %379 = load i32, ptr %14, align 4, !tbaa !5
  %380 = add i32 %379, 1
  store i32 %380, ptr %14, align 4, !tbaa !5
  br label %322, !llvm.loop !18

381:                                              ; preds = %322
  %382 = call i32 (ptr, ...) @printf(ptr noundef @.str.18)
  %383 = load float, ptr %16, align 4, !tbaa !11
  %384 = fpext float %383 to double
  %385 = call i32 (ptr, ...) @printf(ptr noundef @.str.19, double noundef %384)
  %386 = load float, ptr %6, align 4, !tbaa !11
  %387 = fpext float %386 to double
  %388 = call i32 (ptr, ...) @printf(ptr noundef @.str.20, double noundef %387)
  %389 = load float, ptr %31, align 4, !tbaa !11
  %390 = fpext float %389 to double
  %391 = load i32, ptr %19, align 4, !tbaa !5
  %392 = load i32, ptr %18, align 4, !tbaa !5
  %393 = call i32 (ptr, ...) @printf(ptr noundef @.str.21, double noundef %390, i32 noundef %391, i32 noundef %392)
  %394 = load float, ptr %36, align 4, !tbaa !11
  %395 = fpext float %394 to double
  %396 = call i32 (ptr, ...) @printf(ptr noundef @.str.22, double noundef %395)
  %397 = load float, ptr %37, align 4, !tbaa !11
  %398 = fpext float %397 to double
  %399 = load float, ptr %32, align 4, !tbaa !11
  %400 = fpext float %399 to double
  %401 = call i32 (ptr, ...) @printf(ptr noundef @.str.23, double noundef %398, double noundef %400)
  %402 = load float, ptr %38, align 4, !tbaa !11
  %403 = fpext float %402 to double
  %404 = load float, ptr %7, align 4, !tbaa !11
  %405 = fneg float %404
  %406 = fpext float %405 to double
  %407 = call i32 (ptr, ...) @printf(ptr noundef @.str.24, double noundef %403, double noundef %406)
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #9
  %408 = call noalias ptr @fopen(ptr noundef @.str.25, ptr noundef @.str.26)
  store ptr %408, ptr %43, align 8, !tbaa !9
  %409 = load ptr, ptr %43, align 8, !tbaa !9
  %410 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %409, ptr noundef @.str.27, ptr noundef @.str.25) #9
  %411 = load ptr, ptr %43, align 8, !tbaa !9
  %412 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %411, ptr noundef @.str.28) #9
  %413 = load ptr, ptr %43, align 8, !tbaa !9
  %414 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %413, ptr noundef @.str.29) #9
  %415 = load ptr, ptr %43, align 8, !tbaa !9
  %416 = load float, ptr %16, align 4, !tbaa !11
  %417 = fpext float %416 to double
  %418 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %415, ptr noundef @.str.30, double noundef %417) #9
  %419 = load ptr, ptr %43, align 8, !tbaa !9
  %420 = load float, ptr %6, align 4, !tbaa !11
  %421 = fpext float %420 to double
  %422 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %419, ptr noundef @.str.31, double noundef %421) #9
  %423 = load ptr, ptr %43, align 8, !tbaa !9
  %424 = load i32, ptr %18, align 4, !tbaa !5
  %425 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %423, ptr noundef @.str.32, i32 noundef %424) #9
  %426 = load ptr, ptr %43, align 8, !tbaa !9
  %427 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %426, ptr noundef @.str.33) #9
  store i32 0, ptr %14, align 4, !tbaa !5
  br label %428

428:                                              ; preds = %453, %381
  %429 = load i32, ptr %14, align 4, !tbaa !5
  %430 = load i32, ptr %18, align 4, !tbaa !5
  %431 = icmp ult i32 %429, %430
  br i1 %431, label %432, label %456

432:                                              ; preds = %428
  %433 = load ptr, ptr %43, align 8, !tbaa !9
  %434 = load i32, ptr %14, align 4, !tbaa !5
  %435 = add i32 %434, 1
  %436 = load i32, ptr %14, align 4, !tbaa !5
  %437 = zext i32 %436 to i64
  %438 = getelementptr inbounds { float, float }, ptr %168, i64 %437
  %439 = getelementptr inbounds { float, float }, ptr %438, i32 0, i32 0
  %440 = load float, ptr %439, align 8
  %441 = getelementptr inbounds { float, float }, ptr %438, i32 0, i32 1
  %442 = load float, ptr %441, align 4
  %443 = fpext float %440 to double
  %444 = load i32, ptr %14, align 4, !tbaa !5
  %445 = zext i32 %444 to i64
  %446 = getelementptr inbounds { float, float }, ptr %168, i64 %445
  %447 = getelementptr inbounds { float, float }, ptr %446, i32 0, i32 0
  %448 = load float, ptr %447, align 8
  %449 = getelementptr inbounds { float, float }, ptr %446, i32 0, i32 1
  %450 = load float, ptr %449, align 4
  %451 = fpext float %450 to double
  %452 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %433, ptr noundef @.str.34, i32 noundef %435, double noundef %443, double noundef %451) #9
  br label %453

453:                                              ; preds = %432
  %454 = load i32, ptr %14, align 4, !tbaa !5
  %455 = add i32 %454, 1
  store i32 %455, ptr %14, align 4, !tbaa !5
  br label %428, !llvm.loop !19

456:                                              ; preds = %428
  %457 = load ptr, ptr %43, align 8, !tbaa !9
  %458 = load i32, ptr %19, align 4, !tbaa !5
  %459 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %457, ptr noundef @.str.35, i32 noundef %458) #9
  %460 = load ptr, ptr %43, align 8, !tbaa !9
  %461 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %460, ptr noundef @.str.36) #9
  store i32 0, ptr %14, align 4, !tbaa !5
  br label %462

462:                                              ; preds = %487, %456
  %463 = load i32, ptr %14, align 4, !tbaa !5
  %464 = load i32, ptr %19, align 4, !tbaa !5
  %465 = icmp ult i32 %463, %464
  br i1 %465, label %466, label %490

466:                                              ; preds = %462
  %467 = load ptr, ptr %43, align 8, !tbaa !9
  %468 = load i32, ptr %14, align 4, !tbaa !5
  %469 = add i32 %468, 1
  %470 = load i32, ptr %14, align 4, !tbaa !5
  %471 = zext i32 %470 to i64
  %472 = getelementptr inbounds { float, float }, ptr %171, i64 %471
  %473 = getelementptr inbounds { float, float }, ptr %472, i32 0, i32 0
  %474 = load float, ptr %473, align 8
  %475 = getelementptr inbounds { float, float }, ptr %472, i32 0, i32 1
  %476 = load float, ptr %475, align 4
  %477 = fpext float %474 to double
  %478 = load i32, ptr %14, align 4, !tbaa !5
  %479 = zext i32 %478 to i64
  %480 = getelementptr inbounds { float, float }, ptr %171, i64 %479
  %481 = getelementptr inbounds { float, float }, ptr %480, i32 0, i32 0
  %482 = load float, ptr %481, align 8
  %483 = getelementptr inbounds { float, float }, ptr %480, i32 0, i32 1
  %484 = load float, ptr %483, align 4
  %485 = fpext float %484 to double
  %486 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %467, ptr noundef @.str.37, i32 noundef %469, double noundef %477, double noundef %485) #9
  br label %487

487:                                              ; preds = %466
  %488 = load i32, ptr %14, align 4, !tbaa !5
  %489 = add i32 %488, 1
  store i32 %489, ptr %14, align 4, !tbaa !5
  br label %462, !llvm.loop !20

490:                                              ; preds = %462
  %491 = load ptr, ptr %43, align 8, !tbaa !9
  %492 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %491, ptr noundef @.str.38) #9
  %493 = load ptr, ptr %43, align 8, !tbaa !9
  %494 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %493, ptr noundef @.str.39) #9
  %495 = load ptr, ptr %43, align 8, !tbaa !9
  %496 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %495, ptr noundef @.str.40) #9
  %497 = load ptr, ptr %43, align 8, !tbaa !9
  %498 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %497, ptr noundef @.str.41) #9
  %499 = load ptr, ptr %43, align 8, !tbaa !9
  %500 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %499, ptr noundef @.str.42) #9
  %501 = load ptr, ptr %43, align 8, !tbaa !9
  %502 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %501, ptr noundef @.str.43) #9
  %503 = load ptr, ptr %43, align 8, !tbaa !9
  %504 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %503, ptr noundef @.str.44) #9
  %505 = load ptr, ptr %43, align 8, !tbaa !9
  %506 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %505, ptr noundef @.str.45) #9
  %507 = load ptr, ptr %43, align 8, !tbaa !9
  %508 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %507, ptr noundef @.str.46) #9
  %509 = load ptr, ptr %43, align 8, !tbaa !9
  %510 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %509, ptr noundef @.str.47) #9
  %511 = load ptr, ptr %43, align 8, !tbaa !9
  %512 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %511, ptr noundef @.str.48) #9
  %513 = load ptr, ptr %43, align 8, !tbaa !9
  %514 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %513, ptr noundef @.str.49) #9
  %515 = load ptr, ptr %43, align 8, !tbaa !9
  %516 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %515, ptr noundef @.str.50) #9
  %517 = load ptr, ptr %43, align 8, !tbaa !9
  %518 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %517, ptr noundef @.str.51) #9
  %519 = load ptr, ptr %43, align 8, !tbaa !9
  %520 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %519, ptr noundef @.str.52) #9
  %521 = load ptr, ptr %43, align 8, !tbaa !9
  %522 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %521, ptr noundef @.str.53) #9
  %523 = load ptr, ptr %43, align 8, !tbaa !9
  %524 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %523, ptr noundef @.str.54) #9
  %525 = load ptr, ptr %43, align 8, !tbaa !9
  %526 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %525, ptr noundef @.str.55) #9
  %527 = load ptr, ptr %43, align 8, !tbaa !9
  %528 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %527, ptr noundef @.str.48) #9
  %529 = load ptr, ptr %43, align 8, !tbaa !9
  %530 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %529, ptr noundef @.str.49) #9
  %531 = load ptr, ptr %43, align 8, !tbaa !9
  %532 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %531, ptr noundef @.str.50) #9
  %533 = load ptr, ptr %43, align 8, !tbaa !9
  %534 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %533, ptr noundef @.str.51) #9
  %535 = load ptr, ptr %43, align 8, !tbaa !9
  %536 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %535, ptr noundef @.str.56) #9
  %537 = load ptr, ptr %43, align 8, !tbaa !9
  %538 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %537, ptr noundef @.str.57) #9
  %539 = load ptr, ptr %43, align 8, !tbaa !9
  %540 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %539, ptr noundef @.str.58) #9
  %541 = load ptr, ptr %43, align 8, !tbaa !9
  %542 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %541, ptr noundef @.str.59) #9
  %543 = load ptr, ptr %43, align 8, !tbaa !9
  %544 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %543, ptr noundef @.str.60) #9
  %545 = load ptr, ptr %43, align 8, !tbaa !9
  %546 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %545, ptr noundef @.str.61) #9
  %547 = load ptr, ptr %43, align 8, !tbaa !9
  %548 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %547, ptr noundef @.str.62) #9
  %549 = load ptr, ptr %43, align 8, !tbaa !9
  %550 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %549, ptr noundef @.str.63) #9
  %551 = load ptr, ptr %43, align 8, !tbaa !9
  %552 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %551, ptr noundef @.str.64) #9
  %553 = load ptr, ptr %43, align 8, !tbaa !9
  %554 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %553, ptr noundef @.str.65) #9
  %555 = load ptr, ptr %43, align 8, !tbaa !9
  %556 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %555, ptr noundef @.str.66) #9
  %557 = load ptr, ptr %43, align 8, !tbaa !9
  %558 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %557, ptr noundef @.str.44) #9
  %559 = load ptr, ptr %43, align 8, !tbaa !9
  %560 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %559, ptr noundef @.str.67) #9
  %561 = load ptr, ptr %43, align 8, !tbaa !9
  %562 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %561, ptr noundef @.str.68) #9
  %563 = load ptr, ptr %43, align 8, !tbaa !9
  %564 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %563, ptr noundef @.str.69) #9
  %565 = load ptr, ptr %43, align 8, !tbaa !9
  %566 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %565, ptr noundef @.str.70) #9
  %567 = load ptr, ptr %43, align 8, !tbaa !9
  %568 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %567, ptr noundef @.str.71) #9
  %569 = load ptr, ptr %43, align 8, !tbaa !9
  %570 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %569, ptr noundef @.str.72) #9
  %571 = load ptr, ptr %43, align 8, !tbaa !9
  %572 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %571, ptr noundef @.str.73) #9
  %573 = load ptr, ptr %43, align 8, !tbaa !9
  %574 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %573, ptr noundef @.str.74) #9
  %575 = load ptr, ptr %43, align 8, !tbaa !9
  %576 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %575, ptr noundef @.str.75) #9
  %577 = load ptr, ptr %43, align 8, !tbaa !9
  %578 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %577, ptr noundef @.str.76) #9
  %579 = load ptr, ptr %43, align 8, !tbaa !9
  %580 = call i32 @fclose(ptr noundef %579)
  %581 = call i32 (ptr, ...) @printf(ptr noundef @.str.77, ptr noundef @.str.25)
  %582 = call i32 (ptr, ...) @printf(ptr noundef @.str.78)
  store i32 0, ptr %3, align 4
  store i32 1, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #9
  %583 = load ptr, ptr %21, align 8
  call void @llvm.stackrestore.p0(ptr %583)
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #9
  br label %584

584:                                              ; preds = %490, %51
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #9
  %585 = load i32, ptr %3, align 4
  ret i32 %585
}

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

; Function Attrs: nounwind
declare i32 @getopt(i32 noundef, ptr noundef, ptr noundef) #4

; Function Attrs: inlinehint nounwind willreturn memory(read) uwtable
declare double @atof(ptr noundef nonnull) #5

; Function Attrs: inlinehint nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr noundef nonnull) #5

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) #6

; Function Attrs: nounwind
declare i32 @fprintf(ptr noundef, ptr noundef, ...) #4

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

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

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

declare ptr @msresamp2_crcf_create(i32 noundef, i32 noundef, float noundef, float noundef, float noundef) #1

declare i32 @msresamp2_crcf_print(ptr noundef) #1

declare float @msresamp2_crcf_get_delay(ptr noundef) #1

declare float @msresamp2_crcf_get_rate(ptr noundef) #1

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

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

declare float @liquid_kaiser(i32 noundef, i32 noundef, float noundef) #1

; Function Attrs: nounwind
declare <2 x float> @cexpf(<2 x float> noundef) #4

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

declare i32 @msresamp2_crcf_execute(ptr noundef, ptr noundef, ptr noundef) #1

declare i32 @msresamp2_crcf_destroy(ptr noundef) #1

declare i32 @liquid_nextpow2(i32 noundef) #1

declare i32 @fft_run(i32 noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #1

declare i32 @fft_shift(ptr noundef, i32 noundef) #1

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

; Function Attrs: nounwind
declare float @cabsf(<2 x float> noundef) #4

declare noalias ptr @fopen(ptr noundef, ptr noundef) #1

declare i32 @fclose(ptr noundef) #1

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !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"

@.str.7 = external hidden unnamed_addr constant [10 x i8], align 1
@optarg = external local_unnamed_addr global ptr, align 8
@stderr = external local_unnamed_addr global ptr, align 8
@.str.8 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [7 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @usage() local_unnamed_addr #0

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr noundef %1) local_unnamed_addr #2 {
  br label %.outer

.outer:                                           ; preds = %17, %2
  %.0199.ph = phi float [ %20, %17 ], [ 0x3FDCCCCCC0000000, %2 ]
  %.0191.ph = phi i32 [ %.0191.ph302, %17 ], [ 128, %2 ]
  %.0189.ph = phi float [ %.0189.ph306, %17 ], [ 6.000000e+01, %2 ]
  %.0188.ph = phi float [ %.0188, %17 ], [ 2.500000e-01, %2 ]
  br label %.outer301

.outer301:                                        ; preds = %.outer, %14
  %.0191.ph302 = phi i32 [ %.0191.ph, %.outer ], [ %16, %14 ]
  %.0189.ph303 = phi float [ %.0189.ph, %.outer ], [ %.0189.ph306, %14 ]
  %.0188.ph304 = phi float [ %.0188.ph, %.outer ], [ %.0188, %14 ]
  br label %.outer305

.outer305:                                        ; preds = %.outer301, %10
  %.0189.ph306 = phi float [ %.0189.ph303, %.outer301 ], [ %13, %10 ]
  %.0188.ph307 = phi float [ %.0188.ph304, %.outer301 ], [ %.0188, %10 ]
  br label %3

3:                                                ; preds = %.outer305, %6
  %.0188 = phi float [ %9, %6 ], [ %.0188.ph307, %.outer305 ]
  %4 = tail call i32 @getopt(i32 noundef %0, ptr noundef %1, ptr noundef nonnull @.str.7) #11
  switch i32 %4, label %21 [
    i32 -1, label %22
    i32 104, label %5
    i32 114, label %6
    i32 115, label %10
    i32 110, label %14
    i32 102, label %17
  ]

5:                                                ; preds = %3
  tail call void @usage()
  br label %270

6:                                                ; preds = %3
  %7 = load ptr, ptr @optarg, align 8, !tbaa !5
  %8 = tail call double @atof(ptr noundef %7) #12
  %9 = fptrunc double %8 to float
  br label %3, !llvm.loop !9

10:                                               ; preds = %3
  %11 = load ptr, ptr @optarg, align 8, !tbaa !5
  %12 = tail call double @atof(ptr noundef %11) #12
  %13 = fptrunc double %12 to float
  br label %.outer305, !llvm.loop !9

14:                                               ; preds = %3
  %15 = load ptr, ptr @optarg, align 8, !tbaa !5
  %16 = tail call i32 @atoi(ptr nocapture noundef %15) #12
  br label %.outer301, !llvm.loop !9

17:                                               ; preds = %3
  %18 = load ptr, ptr @optarg, align 8, !tbaa !5
  %19 = tail call double @atof(ptr noundef %18) #12
  %20 = fptrunc double %19 to float
  br label %.outer, !llvm.loop !9

21:                                               ; preds = %3
  tail call void @exit(i32 noundef 1) #13
  unreachable

22:                                               ; preds = %3
  %23 = icmp eq i32 %.0191.ph302, 0
  br i1 %23, label %24, label %28

24:                                               ; preds = %22
  %25 = load ptr, ptr @stderr, align 8, !tbaa !5
  %26 = load ptr, ptr %1, align 8, !tbaa !5
  %27 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %25, ptr noundef nonnull @.str.8, ptr noundef %26) #14
  tail call void @exit(i32 noundef 1) #13
  unreachable

28:                                               ; preds = %22
  %29 = fcmp ugt float %.0188, 0.000000e+00
  br i1 %29, label %34, label %30

30:                                               ; preds = %28
  %31 = load ptr, ptr @stderr, align 8, !tbaa !5
  %32 = load ptr, ptr %1, align 8, !tbaa !5
  %33 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %31, ptr noundef nonnull @.str.9, ptr noundef %32) #14
  tail call void @exit(i32 noundef 1) #13
  unreachable

34:                                               ; preds = %28
  %35 = tail call float @log2f(float noundef %.0188) #11
  %36 = tail call float @llvm.fabs.f32(float %35)
  %37 = tail call float @llvm.round.f32(float %36)
  %38 = fcmp ogt float %37, 1.000000e+01
  br i1 %38, label %39, label %43

39:                                               ; preds = %34
  %40 = load ptr, ptr @stderr, align 8, !tbaa !5
  %41 = load ptr, ptr %1, align 8, !tbaa !5
  %42 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %40, ptr noundef nonnull @.str.10, ptr noundef %41) #14
  tail call void @exit(i32 noundef 1) #13
  unreachable

43:                                               ; preds = %34
  %44 = tail call float @log2f(float noundef %.0188) #11
  %45 = tail call float @llvm.fabs.f32(float %44)
  %46 = tail call float @llvm.round.f32(float %45)
  %47 = fptoui float %46 to i32
  %48 = fpext float %.0188 to double
  %49 = fcmp olt float %.0188, 1.000000e+00
  %50 = zext i1 %49 to i32
  %51 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.11)
  %52 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.12, double noundef %48)
  %53 = tail call float @log2f(float noundef %.0188) #11
  %54 = fpext float %53 to double
  %55 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.13, double noundef %54)
  %56 = select i1 %49, ptr @.str.15, ptr @.str.16
  %57 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.14, ptr noundef nonnull %56)
  %58 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.17, i32 noundef %47)
  %59 = tail call ptr @msresamp2_crcf_create(i32 noundef %50, i32 noundef %47, float noundef %.0199.ph, float noundef 0.000000e+00, float noundef %.0189.ph306) #11
  %60 = tail call i32 @msresamp2_crcf_print(ptr noundef %59) #11
  %61 = tail call float @msresamp2_crcf_get_delay(ptr noundef %59) #11
  %62 = tail call float @msresamp2_crcf_get_rate(ptr noundef %59) #11
  %63 = shl i32 %.0191.ph302, %47
  %64 = select i1 %49, i32 %63, i32 %.0191.ph302
  %65 = select i1 %49, i32 %.0191.ph302, i32 %63
  %66 = uitofp i32 %64 to double
  %67 = fmul double %66, 7.500000e-01
  %68 = tail call double @llvm.round.f64(double %67)
  %69 = fptoui double %68 to i32
  %70 = zext i32 %64 to i64
  %71 = tail call ptr @llvm.stacksave.p0()
  %72 = alloca { float, float }, i64 %70, align 16
  %73 = zext i32 %65 to i64
  %74 = alloca { float, float }, i64 %73, align 16
  %75 = fpext float %.0199.ph to double
  %76 = fmul double %75, 0x3FEE666666666666
  %77 = select i1 %49, float %62, float 1.000000e+00
  %78 = fpext float %77 to double
  %79 = fmul double %76, %78
  %80 = fptrunc double %79 to float
  %.not = icmp eq i32 %64, 0
  br i1 %.not, label %.preheader, label %.lr.ph

.lr.ph:                                           ; preds = %43
  %81 = fpext float %80 to double
  %82 = insertelement <2 x double> poison, double %81, i64 0
  %83 = shufflevector <2 x double> %82, <2 x double> poison, <2 x i32> zeroinitializer
  %84 = fmul <2 x double> %83, <double 0.000000e+00, double 0x401921FB54442D18>
  %85 = zext i32 %69 to i64
  br label %88

.preheader:                                       ; preds = %._crit_edge275, %43
  %.0203.lcssa = phi float [ 0.000000e+00, %43 ], [ %104, %._crit_edge275 ]
  %86 = select i1 %49, i32 %47, i32 0
  %87 = select i1 %49, i32 0, i32 %47
  %umax = tail call i32 @llvm.umax.i32(i32 %.0191.ph302, i32 1)
  br label %105

88:                                               ; preds = %.lr.ph, %._crit_edge275
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %._crit_edge275 ]
  %.0203215 = phi float [ 0.000000e+00, %.lr.ph ], [ %104, %._crit_edge275 ]
  %89 = icmp ult i64 %indvars.iv, %85
  %90 = trunc nuw i64 %indvars.iv to i32
  br i1 %89, label %91, label %._crit_edge275

91:                                               ; preds = %88
  %92 = tail call float @liquid_kaiser(i32 noundef %90, i32 noundef %69, float noundef 1.000000e+01) #11
  br label %._crit_edge275

._crit_edge275:                                   ; preds = %88, %91
  %93 = phi float [ %92, %91 ], [ 0.000000e+00, %88 ]
  %94 = uitofp i32 %90 to double
  %95 = insertelement <2 x double> poison, double %94, i64 0
  %96 = shufflevector <2 x double> %95, <2 x double> poison, <2 x i32> zeroinitializer
  %97 = fmul <2 x double> %84, %96
  %98 = fptrunc <2 x double> %97 to <2 x float>
  %99 = tail call <2 x float> @cexpf(<2 x float> noundef %98) #11
  %100 = getelementptr inbounds { float, float }, ptr %72, i64 %indvars.iv
  %101 = insertelement <2 x float> poison, float %93, i64 0
  %102 = shufflevector <2 x float> %101, <2 x float> poison, <2 x i32> zeroinitializer
  %103 = fmul <2 x float> %102, %99
  store <2 x float> %103, ptr %100, align 8
  %104 = fadd float %.0203215, %93
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %70
  br i1 %exitcond.not, label %.preheader, label %88, !llvm.loop !11

105:                                              ; preds = %.preheader, %105
  %.1202217 = phi i32 [ 0, %.preheader ], [ %113, %105 ]
  %106 = shl i32 %.1202217, %86
  %107 = zext i32 %106 to i64
  %108 = getelementptr inbounds { float, float }, ptr %72, i64 %107
  %109 = shl i32 %.1202217, %87
  %110 = zext i32 %109 to i64
  %111 = getelementptr inbounds { float, float }, ptr %74, i64 %110
  %112 = call i32 @msresamp2_crcf_execute(ptr noundef %59, ptr noundef nonnull %108, ptr noundef nonnull %111) #11
  %113 = add nuw i32 %.1202217, 1
  %exitcond251.not = icmp eq i32 %113, %umax
  br i1 %exitcond251.not, label %114, label %105, !llvm.loop !12

114:                                              ; preds = %105
  %115 = call i32 @msresamp2_crcf_destroy(ptr noundef %59) #11
  %116 = uitofp i32 %65 to float
  %117 = uitofp i32 %64 to float
  %118 = fdiv float %116, %117
  %119 = fdiv float %80, %62
  %120 = call i32 @liquid_nextpow2(i32 noundef %63) #11
  %121 = shl i32 4, %120
  %122 = zext i32 %121 to i64
  %123 = alloca { float, float }, i64 %122, align 16
  %124 = alloca { float, float }, i64 %122, align 16
  %.not238 = icmp ugt i32 %120, 29
  br i1 %.not238, label %._crit_edge226.critedge, label %.lr.ph219.preheader

.lr.ph219.preheader:                              ; preds = %114
  %umax255 = call i32 @llvm.umax.i32(i32 %121, i32 1)
  %wide.trip.count256 = zext i32 %umax255 to i64
  %xtraiter = and i64 %wide.trip.count256, 1
  %125 = icmp eq i32 %umax255, 1
  br i1 %125, label %._crit_edge.unr-lcssa, label %.lr.ph219.preheader.new

.lr.ph219.preheader.new:                          ; preds = %.lr.ph219.preheader
  %unroll_iter = and i64 %wide.trip.count256, 4294967292
  br label %.lr.ph219

.lr.ph219:                                        ; preds = %136, %.lr.ph219.preheader.new
  %indvars.iv252 = phi i64 [ 0, %.lr.ph219.preheader.new ], [ %indvars.iv.next253.1, %136 ]
  %niter = phi i64 [ 0, %.lr.ph219.preheader.new ], [ %niter.next.1, %136 ]
  %126 = icmp ult i64 %indvars.iv252, %73
  br i1 %126, label %127, label %.lr.ph219.1

127:                                              ; preds = %.lr.ph219
  %128 = getelementptr inbounds { float, float }, ptr %74, i64 %indvars.iv252
  %129 = load <2 x float>, ptr %128, align 16
  br label %.lr.ph219.1

.lr.ph219.1:                                      ; preds = %.lr.ph219, %127
  %130 = phi <2 x float> [ %129, %127 ], [ zeroinitializer, %.lr.ph219 ]
  %131 = getelementptr inbounds { float, float }, ptr %123, i64 %indvars.iv252
  store <2 x float> %130, ptr %131, align 16
  %indvars.iv.next253 = or disjoint i64 %indvars.iv252, 1
  %132 = icmp ult i64 %indvars.iv.next253, %73
  br i1 %132, label %133, label %136

133:                                              ; preds = %.lr.ph219.1
  %134 = getelementptr inbounds { float, float }, ptr %74, i64 %indvars.iv.next253
  %135 = load <2 x float>, ptr %134, align 8
  br label %136

136:                                              ; preds = %133, %.lr.ph219.1
  %137 = phi <2 x float> [ %135, %133 ], [ zeroinitializer, %.lr.ph219.1 ]
  %138 = getelementptr inbounds { float, float }, ptr %123, i64 %indvars.iv.next253
  store <2 x float> %137, ptr %138, align 8
  %indvars.iv.next253.1 = add nuw nsw i64 %indvars.iv252, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.unr-lcssa, label %.lr.ph219, !llvm.loop !13

._crit_edge.unr-lcssa:                            ; preds = %136, %.lr.ph219.preheader
  %indvars.iv252.unr = phi i64 [ 0, %.lr.ph219.preheader ], [ %indvars.iv.next253.1, %136 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph219.epil

.lr.ph219.epil:                                   ; preds = %._crit_edge.unr-lcssa
  %139 = icmp ult i64 %indvars.iv252.unr, %73
  br i1 %139, label %140, label %._crit_edge.epilog-lcssa

140:                                              ; preds = %.lr.ph219.epil
  %141 = getelementptr inbounds { float, float }, ptr %74, i64 %indvars.iv252.unr
  %142 = load <2 x float>, ptr %141, align 8
  br label %._crit_edge.epilog-lcssa

._crit_edge.epilog-lcssa:                         ; preds = %140, %.lr.ph219.epil
  %143 = phi <2 x float> [ %142, %140 ], [ zeroinitializer, %.lr.ph219.epil ]
  %144 = getelementptr inbounds { float, float }, ptr %123, i64 %indvars.iv252.unr
  store <2 x float> %143, ptr %144, align 8
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.unr-lcssa, %._crit_edge.epilog-lcssa
  %145 = call i32 @fft_run(i32 noundef %121, ptr noundef nonnull %123, ptr noundef nonnull %124, i32 noundef 1, i32 noundef 0) #11
  %146 = call i32 @fft_shift(ptr noundef nonnull %124, i32 noundef %121) #11
  br i1 %.not238, label %._crit_edge226, label %.lr.ph225

.lr.ph225:                                        ; preds = %._crit_edge
  %147 = uitofp i32 %121 to float
  %148 = fmul float %62, %.0203.lcssa
  %umax261 = call i32 @llvm.umax.i32(i32 %121, i32 1)
  %wide.trip.count262 = zext i32 %umax261 to i64
  %149 = fdiv float 0.000000e+00, %147
  %150 = fadd float %149, -5.000000e-01
  %151 = load <2 x float>, ptr %124, align 16
  %152 = insertelement <2 x float> poison, float %148, i64 0
  %153 = shufflevector <2 x float> %152, <2 x float> poison, <2 x i32> zeroinitializer
  %154 = fdiv <2 x float> %151, %153
  %155 = call float @cabsf(<2 x float> noundef %154) #11
  %156 = call float @log10f(float noundef %155) #11
  %157 = fmul float %156, 2.000000e+01
  %158 = fsub float %150, %119
  %159 = call float @llvm.fabs.f32(float %158)
  %160 = fcmp ogt float %159, 0x3FB1EB8520000000
  %161 = fcmp ogt float %157, -1.000000e+09
  %162 = select i1 %160, i1 %161, i1 false
  %.1194.peel = select i1 %162, float %157, float -1.000000e+09
  %exitcond263.peel.not = icmp eq i32 %umax261, 1
  br i1 %exitcond263.peel.not, label %._crit_edge226.loopexit, label %.peel.next

.peel.next:                                       ; preds = %.lr.ph225, %.peel.next
  %indvars.iv258 = phi i64 [ %indvars.iv.next259, %.peel.next ], [ 1, %.lr.ph225 ]
  %.0193223 = phi float [ %.1194, %.peel.next ], [ %.1194.peel, %.lr.ph225 ]
  %.0195222 = phi float [ %.1196, %.peel.next ], [ %150, %.lr.ph225 ]
  %.0197221 = phi float [ %.1198, %.peel.next ], [ %157, %.lr.ph225 ]
  %163 = trunc nuw i64 %indvars.iv258 to i32
  %164 = uitofp i32 %163 to float
  %165 = fdiv float %164, %147
  %166 = fadd float %165, -5.000000e-01
  %167 = getelementptr inbounds { float, float }, ptr %124, i64 %indvars.iv258
  %168 = load <2 x float>, ptr %167, align 8
  %169 = fdiv <2 x float> %168, %153
  %170 = call float @cabsf(<2 x float> noundef %169) #11
  %171 = call float @log10f(float noundef %170) #11
  %172 = fmul float %171, 2.000000e+01
  %173 = fcmp ogt float %172, %.0197221
  %.1198 = select i1 %173, float %172, float %.0197221
  %.1196 = select i1 %173, float %166, float %.0195222
  %174 = fsub float %166, %119
  %175 = call float @llvm.fabs.f32(float %174)
  %176 = fcmp ogt float %175, 0x3FB1EB8520000000
  %177 = fcmp ogt float %172, %.0193223
  %178 = select i1 %176, i1 %177, i1 false
  %.1194 = select i1 %178, float %172, float %.0193223
  %indvars.iv.next259 = add nuw nsw i64 %indvars.iv258, 1
  %exitcond263.not = icmp eq i64 %indvars.iv.next259, %wide.trip.count262
  br i1 %exitcond263.not, label %._crit_edge226.loopexit, label %.peel.next, !llvm.loop !14

._crit_edge226.loopexit:                          ; preds = %.peel.next, %.lr.ph225
  %.1198.lcssa = phi float [ %157, %.lr.ph225 ], [ %.1198, %.peel.next ]
  %.1196.lcssa = phi float [ %150, %.lr.ph225 ], [ %.1196, %.peel.next ]
  %.1194.lcssa = phi float [ %.1194.peel, %.lr.ph225 ], [ %.1194, %.peel.next ]
  %179 = fpext float %.1198.lcssa to double
  %180 = fpext float %.1196.lcssa to double
  %181 = fpext float %.1194.lcssa to double
  br label %._crit_edge226

._crit_edge226.critedge:                          ; preds = %114
  %182 = call i32 @fft_run(i32 noundef %121, ptr noundef nonnull %123, ptr noundef nonnull %124, i32 noundef 1, i32 noundef 0) #11
  %183 = call i32 @fft_shift(ptr noundef nonnull %124, i32 noundef %121) #11
  br label %._crit_edge226

._crit_edge226:                                   ; preds = %._crit_edge226.critedge, %._crit_edge226.loopexit, %._crit_edge
  %.0197.lcssa = phi double [ 0.000000e+00, %._crit_edge ], [ %179, %._crit_edge226.loopexit ], [ 0.000000e+00, %._crit_edge226.critedge ]
  %.0195.lcssa = phi double [ 0.000000e+00, %._crit_edge ], [ %180, %._crit_edge226.loopexit ], [ 0.000000e+00, %._crit_edge226.critedge ]
  %.0193.lcssa = phi double [ -1.000000e+09, %._crit_edge ], [ %181, %._crit_edge226.loopexit ], [ -1.000000e+09, %._crit_edge226.critedge ]
  %184 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.18)
  %185 = fpext float %61 to double
  %186 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.19, double noundef %185)
  %187 = fpext float %62 to double
  %188 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.20, double noundef %187)
  %189 = fpext float %118 to double
  %190 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.21, double noundef %189, i32 noundef %65, i32 noundef %64)
  %191 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.22, double noundef %.0197.lcssa)
  %192 = fpext float %119 to double
  %193 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.23, double noundef %.0195.lcssa, double noundef %192)
  %194 = fneg float %.0189.ph306
  %195 = fpext float %194 to double
  %196 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.24, double noundef %.0193.lcssa, double noundef %195)
  %197 = call noalias ptr @fopen(ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.26)
  %198 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.25) #11
  %199 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.28) #11
  %200 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.29) #11
  %201 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.30, double noundef %185) #11
  %202 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.31, double noundef %187) #11
  %203 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.32, i32 noundef %64) #11
  %204 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.33) #11
  br i1 %.not, label %._crit_edge233, label %.lr.ph232

.lr.ph232:                                        ; preds = %._crit_edge226, %.lr.ph232
  %indvars.iv265 = phi i64 [ %indvars.iv.next266, %.lr.ph232 ], [ 0, %._crit_edge226 ]
  %indvars.iv.next266 = add nuw nsw i64 %indvars.iv265, 1
  %205 = getelementptr inbounds { float, float }, ptr %72, i64 %indvars.iv265
  %206 = load float, ptr %205, align 8
  %207 = getelementptr inbounds i8, ptr %205, i64 4
  %208 = fpext float %206 to double
  %209 = load float, ptr %207, align 4
  %210 = fpext float %209 to double
  %211 = trunc nuw i64 %indvars.iv.next266 to i32
  %212 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.34, i32 noundef %211, double noundef %208, double noundef %210) #11
  %exitcond269.not = icmp eq i64 %indvars.iv.next266, %70
  br i1 %exitcond269.not, label %._crit_edge233, label %.lr.ph232, !llvm.loop !16

._crit_edge233:                                   ; preds = %.lr.ph232, %._crit_edge226
  %213 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.35, i32 noundef %65) #11
  %214 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.36) #11
  %.not241 = icmp eq i32 %65, 0
  br i1 %.not241, label %._crit_edge237, label %.lr.ph236

.lr.ph236:                                        ; preds = %._crit_edge233, %.lr.ph236
  %indvars.iv270 = phi i64 [ %indvars.iv.next271, %.lr.ph236 ], [ 0, %._crit_edge233 ]
  %indvars.iv.next271 = add nuw nsw i64 %indvars.iv270, 1
  %215 = getelementptr inbounds { float, float }, ptr %74, i64 %indvars.iv270
  %216 = load float, ptr %215, align 8
  %217 = getelementptr inbounds i8, ptr %215, i64 4
  %218 = fpext float %216 to double
  %219 = load float, ptr %217, align 4
  %220 = fpext float %219 to double
  %221 = trunc nuw i64 %indvars.iv.next271 to i32
  %222 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.37, i32 noundef %221, double noundef %218, double noundef %220) #11
  %exitcond274.not = icmp eq i64 %indvars.iv.next271, %73
  br i1 %exitcond274.not, label %._crit_edge237, label %.lr.ph236, !llvm.loop !17

._crit_edge237:                                   ; preds = %.lr.ph236, %._crit_edge233
  %223 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.38) #11
  %224 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.39) #11
  %225 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.40) #11
  %226 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.41) #11
  %227 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.42) #11
  %228 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.43) #11
  %229 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.44) #11
  %230 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.45) #11
  %231 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.46) #11
  %232 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.47) #11
  %233 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.48) #11
  %234 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.49) #11
  %235 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.50) #11
  %236 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.51) #11
  %237 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.52) #11
  %238 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.53) #11
  %239 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.54) #11
  %240 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.55) #11
  %241 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.48) #11
  %242 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.49) #11
  %243 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.50) #11
  %244 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.51) #11
  %245 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.56) #11
  %246 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.57) #11
  %247 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.58) #11
  %248 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.59) #11
  %249 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.60) #11
  %250 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.61) #11
  %251 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.62) #11
  %252 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.63) #11
  %253 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.64) #11
  %254 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.65) #11
  %255 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.66) #11
  %256 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.44) #11
  %257 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.67) #11
  %258 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.68) #11
  %259 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.69) #11
  %260 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.70) #11
  %261 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.71) #11
  %262 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.72) #11
  %263 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.73) #11
  %264 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.74) #11
  %265 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.75) #11
  %266 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.76) #11
  %267 = call i32 @fclose(ptr noundef %197)
  %268 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.77, ptr noundef nonnull @.str.25)
  %269 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.78)
  call void @llvm.stackrestore.p0(ptr %71)
  br label %270

270:                                              ; preds = %._crit_edge237, %5
  ret i32 0
}

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

; Function Attrs: inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable
declare double @atof(ptr nocapture noundef nonnull) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr nocapture noundef nonnull) local_unnamed_addr #4

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) local_unnamed_addr #5

; Function Attrs: nofree nounwind
declare noundef i32 @fprintf(ptr nocapture noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #1

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

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

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

declare ptr @msresamp2_crcf_create(i32 noundef, i32 noundef, float noundef, float noundef, float noundef) local_unnamed_addr #8

declare i32 @msresamp2_crcf_print(ptr noundef) local_unnamed_addr #8

declare float @msresamp2_crcf_get_delay(ptr noundef) local_unnamed_addr #8

declare float @msresamp2_crcf_get_rate(ptr noundef) local_unnamed_addr #8

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

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

declare float @liquid_kaiser(i32 noundef, i32 noundef, float noundef) local_unnamed_addr #8

; Function Attrs: nounwind
declare <2 x float> @cexpf(<2 x float> noundef) local_unnamed_addr #3

declare i32 @msresamp2_crcf_execute(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #8

declare i32 @msresamp2_crcf_destroy(ptr noundef) local_unnamed_addr #8

declare i32 @liquid_nextpow2(i32 noundef) local_unnamed_addr #8

declare i32 @fft_run(i32 noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #8

declare i32 @fft_shift(ptr noundef, i32 noundef) local_unnamed_addr #8

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

; Function Attrs: nounwind
declare float @cabsf(<2 x float> noundef) local_unnamed_addr #3

; Function Attrs: nofree nounwind
declare noalias noundef ptr @fopen(ptr nocapture noundef readonly, ptr nocapture noundef readonly) local_unnamed_addr #1

; Function Attrs: nofree nounwind
declare noundef i32 @fclose(ptr nocapture noundef) local_unnamed_addr #1

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

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

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 = { nofree 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 #2 = { 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 #3 = { 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 #4 = { inlinehint mustprogress nofree nounwind willreturn memory(read) 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 #5 = { noreturn 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 = { 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 #7 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { "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 #9 = { mustprogress nocallback nofree nosync nounwind willreturn }
attributes #10 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #11 = { nounwind }
attributes #12 = { nounwind willreturn memory(read) }
attributes #13 = { noreturn nounwind }
attributes #14 = { cold 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 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = distinct !{!11, !10}
!12 = distinct !{!12, !10}
!13 = distinct !{!13, !10}
!14 = distinct !{!14, !10, !15}
!15 = !{!"llvm.loop.peeled.count", i32 1}
!16 = distinct !{!16, !10}
!17 = distinct !{!17, !10}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopFullUnrollPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass