; LLVM IR from kacperks/Fractal_Engine :: Engine/Thirdparty/cmake/Engine/Thirdparty/cmake/openal-soft/examples (main)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.Recorder = type { ptr, ptr, i64, i32, float, i32, i32, i32, i32, ptr, i32 }

@main.optlist = external hidden constant [316 x i8], align 16
@.str = external hidden unnamed_addr constant [11 x i8], align 1
@stderr = external global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [29 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr noundef %1) #0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca %struct.Recorder, align 8
  %10 = alloca i64, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = 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 8, ptr %6) #7
  store ptr @.str, ptr %6, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #7
  store ptr null, ptr %7, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr %9) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  %17 = load ptr, ptr %5, align 8, !tbaa !9
  %18 = getelementptr inbounds ptr, ptr %17, i64 0
  %19 = load ptr, ptr %18, align 8, !tbaa !9
  store ptr %19, ptr %8, align 8, !tbaa !9
  %20 = load i32, ptr %4, align 4, !tbaa !5
  %21 = icmp slt i32 %20, 2
  br i1 %21, label %22, label %26

22:                                               ; preds = %2
  %23 = load ptr, ptr @stderr, align 8, !tbaa !9
  %24 = load ptr, ptr %8, align 8, !tbaa !9
  %25 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %23, ptr noundef @.str.1, ptr noundef %24, ptr noundef @main.optlist) #7
  store i32 0, ptr %3, align 4
  store i32 1, ptr %13, align 4
  br label %717

26:                                               ; preds = %2
  %27 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 0
  store ptr null, ptr %27, align 8, !tbaa !11
  %28 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  store ptr null, ptr %28, align 8, !tbaa !15
  %29 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 2
  store i64 0, ptr %29, align 8, !tbaa !16
  %30 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 3
  store i32 0, ptr %30, align 8, !tbaa !17
  %31 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 4
  store float 4.000000e+00, ptr %31, align 4, !tbaa !18
  %32 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 5
  store i32 1, ptr %32, align 8, !tbaa !19
  %33 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 6
  store i32 16, ptr %33, align 4, !tbaa !20
  %34 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 7
  store i32 44100, ptr %34, align 8, !tbaa !21
  %35 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 5
  %36 = load i32, ptr %35, align 8, !tbaa !19
  %37 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 6
  %38 = load i32, ptr %37, align 4, !tbaa !20
  %39 = mul i32 %36, %38
  %40 = udiv i32 %39, 8
  %41 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 8
  store i32 %40, ptr %41, align 4, !tbaa !22
  %42 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 9
  store ptr null, ptr %42, align 8, !tbaa !23
  %43 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 10
  store i32 0, ptr %43, align 8, !tbaa !24
  %44 = load ptr, ptr %5, align 8, !tbaa !9
  %45 = getelementptr inbounds ptr, ptr %44, i32 1
  store ptr %45, ptr %5, align 8, !tbaa !9
  %46 = load i32, ptr %4, align 4, !tbaa !5
  %47 = add nsw i32 %46, -1
  store i32 %47, ptr %4, align 4, !tbaa !5
  %48 = load i32, ptr %4, align 4, !tbaa !5
  %49 = icmp sgt i32 %48, 1
  br i1 %49, label %50, label %64

50:                                               ; preds = %26
  %51 = load ptr, ptr %5, align 8, !tbaa !9
  %52 = getelementptr inbounds ptr, ptr %51, i64 0
  %53 = load ptr, ptr %52, align 8, !tbaa !9
  %54 = call i32 @strcmp(ptr noundef %53, ptr noundef @.str.2) #8
  %55 = icmp eq i32 %54, 0
  br i1 %55, label %56, label %64

56:                                               ; preds = %50
  %57 = load ptr, ptr %5, align 8, !tbaa !9
  %58 = getelementptr inbounds ptr, ptr %57, i64 1
  %59 = load ptr, ptr %58, align 8, !tbaa !9
  store ptr %59, ptr %7, align 8, !tbaa !9
  %60 = load ptr, ptr %5, align 8, !tbaa !9
  %61 = getelementptr inbounds ptr, ptr %60, i64 2
  store ptr %61, ptr %5, align 8, !tbaa !9
  %62 = load i32, ptr %4, align 4, !tbaa !5
  %63 = sub nsw i32 %62, 2
  store i32 %63, ptr %4, align 4, !tbaa !5
  br label %64

64:                                               ; preds = %56, %50, %26
  br label %65

65:                                               ; preds = %354, %64
  %66 = load i32, ptr %4, align 4, !tbaa !5
  %67 = icmp sgt i32 %66, 0
  br i1 %67, label %68, label %355

68:                                               ; preds = %65
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  %69 = load ptr, ptr %5, align 8, !tbaa !9
  %70 = getelementptr inbounds ptr, ptr %69, i64 0
  %71 = load ptr, ptr %70, align 8, !tbaa !9
  %72 = call i32 @strcmp(ptr noundef %71, ptr noundef @.str.3) #8
  %73 = icmp eq i32 %72, 0
  br i1 %73, label %74, label %75

74:                                               ; preds = %68
  store i32 3, ptr %13, align 4
  br label %352

75:                                               ; preds = %68
  %76 = load ptr, ptr %5, align 8, !tbaa !9
  %77 = getelementptr inbounds ptr, ptr %76, i64 0
  %78 = load ptr, ptr %77, align 8, !tbaa !9
  %79 = call i32 @strcmp(ptr noundef %78, ptr noundef @.str.4) #8
  %80 = icmp eq i32 %79, 0
  br i1 %80, label %87, label %81

81:                                               ; preds = %75
  %82 = load ptr, ptr %5, align 8, !tbaa !9
  %83 = getelementptr inbounds ptr, ptr %82, i64 0
  %84 = load ptr, ptr %83, align 8, !tbaa !9
  %85 = call i32 @strcmp(ptr noundef %84, ptr noundef @.str.5) #8
  %86 = icmp eq i32 %85, 0
  br i1 %86, label %87, label %129

87:                                               ; preds = %81, %75
  %88 = load i32, ptr %4, align 4, !tbaa !5
  %89 = icmp slt i32 %88, 2
  br i1 %89, label %90, label %96

90:                                               ; preds = %87
  %91 = load ptr, ptr @stderr, align 8, !tbaa !9
  %92 = load ptr, ptr %5, align 8, !tbaa !9
  %93 = getelementptr inbounds ptr, ptr %92, i64 0
  %94 = load ptr, ptr %93, align 8, !tbaa !9
  %95 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %91, ptr noundef @.str.6, ptr noundef %94) #7
  store i32 1, ptr %3, align 4
  store i32 1, ptr %13, align 4
  br label %352

96:                                               ; preds = %87
  %97 = load ptr, ptr %5, align 8, !tbaa !9
  %98 = getelementptr inbounds ptr, ptr %97, i64 1
  %99 = load ptr, ptr %98, align 8, !tbaa !9
  %100 = call i64 @strtoul(ptr noundef %99, ptr noundef %14, i32 noundef 0) #7
  %101 = trunc i64 %100 to i32
  %102 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 5
  store i32 %101, ptr %102, align 8, !tbaa !19
  %103 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 5
  %104 = load i32, ptr %103, align 8, !tbaa !19
  %105 = icmp ne i32 %104, 1
  br i1 %105, label %106, label %110

106:                                              ; preds = %96
  %107 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 5
  %108 = load i32, ptr %107, align 8, !tbaa !19
  %109 = icmp ne i32 %108, 2
  br i1 %109, label %118, label %110

110:                                              ; preds = %106, %96
  %111 = load ptr, ptr %14, align 8, !tbaa !9
  %112 = icmp ne ptr %111, null
  br i1 %112, label %113, label %124

113:                                              ; preds = %110
  %114 = load ptr, ptr %14, align 8, !tbaa !9
  %115 = load i8, ptr %114, align 1, !tbaa !25
  %116 = sext i8 %115 to i32
  %117 = icmp ne i32 %116, 0
  br i1 %117, label %118, label %124

118:                                              ; preds = %113, %106
  %119 = load ptr, ptr @stderr, align 8, !tbaa !9
  %120 = load ptr, ptr %5, align 8, !tbaa !9
  %121 = getelementptr inbounds ptr, ptr %120, i64 1
  %122 = load ptr, ptr %121, align 8, !tbaa !9
  %123 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %119, ptr noundef @.str.7, ptr noundef %122) #7
  store i32 1, ptr %3, align 4
  store i32 1, ptr %13, align 4
  br label %352

124:                                              ; preds = %113, %110
  %125 = load ptr, ptr %5, align 8, !tbaa !9
  %126 = getelementptr inbounds ptr, ptr %125, i64 2
  store ptr %126, ptr %5, align 8, !tbaa !9
  %127 = load i32, ptr %4, align 4, !tbaa !5
  %128 = sub nsw i32 %127, 2
  store i32 %128, ptr %4, align 4, !tbaa !5
  br label %350

129:                                              ; preds = %81
  %130 = load ptr, ptr %5, align 8, !tbaa !9
  %131 = getelementptr inbounds ptr, ptr %130, i64 0
  %132 = load ptr, ptr %131, align 8, !tbaa !9
  %133 = call i32 @strcmp(ptr noundef %132, ptr noundef @.str.8) #8
  %134 = icmp eq i32 %133, 0
  br i1 %134, label %141, label %135

135:                                              ; preds = %129
  %136 = load ptr, ptr %5, align 8, !tbaa !9
  %137 = getelementptr inbounds ptr, ptr %136, i64 0
  %138 = load ptr, ptr %137, align 8, !tbaa !9
  %139 = call i32 @strcmp(ptr noundef %138, ptr noundef @.str.9) #8
  %140 = icmp eq i32 %139, 0
  br i1 %140, label %141, label %187

141:                                              ; preds = %135, %129
  %142 = load i32, ptr %4, align 4, !tbaa !5
  %143 = icmp slt i32 %142, 2
  br i1 %143, label %144, label %150

144:                                              ; preds = %141
  %145 = load ptr, ptr @stderr, align 8, !tbaa !9
  %146 = load ptr, ptr %5, align 8, !tbaa !9
  %147 = getelementptr inbounds ptr, ptr %146, i64 0
  %148 = load ptr, ptr %147, align 8, !tbaa !9
  %149 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %145, ptr noundef @.str.6, ptr noundef %148) #7
  store i32 1, ptr %3, align 4
  store i32 1, ptr %13, align 4
  br label %352

150:                                              ; preds = %141
  %151 = load ptr, ptr %5, align 8, !tbaa !9
  %152 = getelementptr inbounds ptr, ptr %151, i64 1
  %153 = load ptr, ptr %152, align 8, !tbaa !9
  %154 = call i64 @strtoul(ptr noundef %153, ptr noundef %14, i32 noundef 0) #7
  %155 = trunc i64 %154 to i32
  %156 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 6
  store i32 %155, ptr %156, align 4, !tbaa !20
  %157 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 6
  %158 = load i32, ptr %157, align 4, !tbaa !20
  %159 = icmp ne i32 %158, 8
  br i1 %159, label %160, label %168

160:                                              ; preds = %150
  %161 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 6
  %162 = load i32, ptr %161, align 4, !tbaa !20
  %163 = icmp ne i32 %162, 16
  br i1 %163, label %164, label %168

164:                                              ; preds = %160
  %165 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 6
  %166 = load i32, ptr %165, align 4, !tbaa !20
  %167 = icmp ne i32 %166, 32
  br i1 %167, label %176, label %168

168:                                              ; preds = %164, %160, %150
  %169 = load ptr, ptr %14, align 8, !tbaa !9
  %170 = icmp ne ptr %169, null
  br i1 %170, label %171, label %182

171:                                              ; preds = %168
  %172 = load ptr, ptr %14, align 8, !tbaa !9
  %173 = load i8, ptr %172, align 1, !tbaa !25
  %174 = sext i8 %173 to i32
  %175 = icmp ne i32 %174, 0
  br i1 %175, label %176, label %182

176:                                              ; preds = %171, %164
  %177 = load ptr, ptr @stderr, align 8, !tbaa !9
  %178 = load ptr, ptr %5, align 8, !tbaa !9
  %179 = getelementptr inbounds ptr, ptr %178, i64 1
  %180 = load ptr, ptr %179, align 8, !tbaa !9
  %181 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %177, ptr noundef @.str.10, ptr noundef %180) #7
  store i32 1, ptr %3, align 4
  store i32 1, ptr %13, align 4
  br label %352

182:                                              ; preds = %171, %168
  %183 = load ptr, ptr %5, align 8, !tbaa !9
  %184 = getelementptr inbounds ptr, ptr %183, i64 2
  store ptr %184, ptr %5, align 8, !tbaa !9
  %185 = load i32, ptr %4, align 4, !tbaa !5
  %186 = sub nsw i32 %185, 2
  store i32 %186, ptr %4, align 4, !tbaa !5
  br label %349

187:                                              ; preds = %135
  %188 = load ptr, ptr %5, align 8, !tbaa !9
  %189 = getelementptr inbounds ptr, ptr %188, i64 0
  %190 = load ptr, ptr %189, align 8, !tbaa !9
  %191 = call i32 @strcmp(ptr noundef %190, ptr noundef @.str.11) #8
  %192 = icmp eq i32 %191, 0
  br i1 %192, label %199, label %193

193:                                              ; preds = %187
  %194 = load ptr, ptr %5, align 8, !tbaa !9
  %195 = getelementptr inbounds ptr, ptr %194, i64 0
  %196 = load ptr, ptr %195, align 8, !tbaa !9
  %197 = call i32 @strcmp(ptr noundef %196, ptr noundef @.str.12) #8
  %198 = icmp eq i32 %197, 0
  br i1 %198, label %199, label %241

199:                                              ; preds = %193, %187
  %200 = load i32, ptr %4, align 4, !tbaa !5
  %201 = icmp slt i32 %200, 2
  br i1 %201, label %202, label %208

202:                                              ; preds = %199
  %203 = load ptr, ptr @stderr, align 8, !tbaa !9
  %204 = load ptr, ptr %5, align 8, !tbaa !9
  %205 = getelementptr inbounds ptr, ptr %204, i64 0
  %206 = load ptr, ptr %205, align 8, !tbaa !9
  %207 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %203, ptr noundef @.str.6, ptr noundef %206) #7
  store i32 1, ptr %3, align 4
  store i32 1, ptr %13, align 4
  br label %352

208:                                              ; preds = %199
  %209 = load ptr, ptr %5, align 8, !tbaa !9
  %210 = getelementptr inbounds ptr, ptr %209, i64 1
  %211 = load ptr, ptr %210, align 8, !tbaa !9
  %212 = call i64 @strtoul(ptr noundef %211, ptr noundef %14, i32 noundef 0) #7
  %213 = trunc i64 %212 to i32
  %214 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 7
  store i32 %213, ptr %214, align 8, !tbaa !21
  %215 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 7
  %216 = load i32, ptr %215, align 8, !tbaa !21
  %217 = icmp uge i32 %216, 8000
  br i1 %217, label %218, label %230

218:                                              ; preds = %208
  %219 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 7
  %220 = load i32, ptr %219, align 8, !tbaa !21
  %221 = icmp ule i32 %220, 96000
  br i1 %221, label %222, label %230

222:                                              ; preds = %218
  %223 = load ptr, ptr %14, align 8, !tbaa !9
  %224 = icmp ne ptr %223, null
  br i1 %224, label %225, label %236

225:                                              ; preds = %222
  %226 = load ptr, ptr %14, align 8, !tbaa !9
  %227 = load i8, ptr %226, align 1, !tbaa !25
  %228 = sext i8 %227 to i32
  %229 = icmp ne i32 %228, 0
  br i1 %229, label %230, label %236

230:                                              ; preds = %225, %218, %208
  %231 = load ptr, ptr @stderr, align 8, !tbaa !9
  %232 = load ptr, ptr %5, align 8, !tbaa !9
  %233 = getelementptr inbounds ptr, ptr %232, i64 1
  %234 = load ptr, ptr %233, align 8, !tbaa !9
  %235 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %231, ptr noundef @.str.13, ptr noundef %234) #7
  store i32 1, ptr %3, align 4
  store i32 1, ptr %13, align 4
  br label %352

236:                                              ; preds = %225, %222
  %237 = load ptr, ptr %5, align 8, !tbaa !9
  %238 = getelementptr inbounds ptr, ptr %237, i64 2
  store ptr %238, ptr %5, align 8, !tbaa !9
  %239 = load i32, ptr %4, align 4, !tbaa !5
  %240 = sub nsw i32 %239, 2
  store i32 %240, ptr %4, align 4, !tbaa !5
  br label %348

241:                                              ; preds = %193
  %242 = load ptr, ptr %5, align 8, !tbaa !9
  %243 = getelementptr inbounds ptr, ptr %242, i64 0
  %244 = load ptr, ptr %243, align 8, !tbaa !9
  %245 = call i32 @strcmp(ptr noundef %244, ptr noundef @.str.14) #8
  %246 = icmp eq i32 %245, 0
  br i1 %246, label %253, label %247

247:                                              ; preds = %241
  %248 = load ptr, ptr %5, align 8, !tbaa !9
  %249 = getelementptr inbounds ptr, ptr %248, i64 0
  %250 = load ptr, ptr %249, align 8, !tbaa !9
  %251 = call i32 @strcmp(ptr noundef %250, ptr noundef @.str.15) #8
  %252 = icmp eq i32 %251, 0
  br i1 %252, label %253, label %294

253:                                              ; preds = %247, %241
  %254 = load i32, ptr %4, align 4, !tbaa !5
  %255 = icmp slt i32 %254, 2
  br i1 %255, label %256, label %262

256:                                              ; preds = %253
  %257 = load ptr, ptr @stderr, align 8, !tbaa !9
  %258 = load ptr, ptr %5, align 8, !tbaa !9
  %259 = getelementptr inbounds ptr, ptr %258, i64 0
  %260 = load ptr, ptr %259, align 8, !tbaa !9
  %261 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %257, ptr noundef @.str.6, ptr noundef %260) #7
  store i32 1, ptr %3, align 4
  store i32 1, ptr %13, align 4
  br label %352

262:                                              ; preds = %253
  %263 = load ptr, ptr %5, align 8, !tbaa !9
  %264 = getelementptr inbounds ptr, ptr %263, i64 1
  %265 = load ptr, ptr %264, align 8, !tbaa !9
  %266 = call float @strtof(ptr noundef %265, ptr noundef %14) #7
  %267 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 4
  store float %266, ptr %267, align 4, !tbaa !18
  %268 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 4
  %269 = load float, ptr %268, align 4, !tbaa !18
  %270 = fcmp oge float %269, 1.000000e+00
  br i1 %270, label %271, label %283

271:                                              ; preds = %262
  %272 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 4
  %273 = load float, ptr %272, align 4, !tbaa !18
  %274 = fcmp ole float %273, 1.000000e+01
  br i1 %274, label %275, label %283

275:                                              ; preds = %271
  %276 = load ptr, ptr %14, align 8, !tbaa !9
  %277 = icmp ne ptr %276, null
  br i1 %277, label %278, label %289

278:                                              ; preds = %275
  %279 = load ptr, ptr %14, align 8, !tbaa !9
  %280 = load i8, ptr %279, align 1, !tbaa !25
  %281 = sext i8 %280 to i32
  %282 = icmp ne i32 %281, 0
  br i1 %282, label %283, label %289

283:                                              ; preds = %278, %271, %262
  %284 = load ptr, ptr @stderr, align 8, !tbaa !9
  %285 = load ptr, ptr %5, align 8, !tbaa !9
  %286 = getelementptr inbounds ptr, ptr %285, i64 1
  %287 = load ptr, ptr %286, align 8, !tbaa !9
  %288 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %284, ptr noundef @.str.16, ptr noundef %287) #7
  store i32 1, ptr %3, align 4
  store i32 1, ptr %13, align 4
  br label %352

289:                                              ; preds = %278, %275
  %290 = load ptr, ptr %5, align 8, !tbaa !9
  %291 = getelementptr inbounds ptr, ptr %290, i64 2
  store ptr %291, ptr %5, align 8, !tbaa !9
  %292 = load i32, ptr %4, align 4, !tbaa !5
  %293 = sub nsw i32 %292, 2
  store i32 %293, ptr %4, align 4, !tbaa !5
  br label %347

294:                                              ; preds = %247
  %295 = load ptr, ptr %5, align 8, !tbaa !9
  %296 = getelementptr inbounds ptr, ptr %295, i64 0
  %297 = load ptr, ptr %296, align 8, !tbaa !9
  %298 = call i32 @strcmp(ptr noundef %297, ptr noundef @.str.17) #8
  %299 = icmp eq i32 %298, 0
  br i1 %299, label %306, label %300

300:                                              ; preds = %294
  %301 = load ptr, ptr %5, align 8, !tbaa !9
  %302 = getelementptr inbounds ptr, ptr %301, i64 0
  %303 = load ptr, ptr %302, align 8, !tbaa !9
  %304 = call i32 @strcmp(ptr noundef %303, ptr noundef @.str.18) #8
  %305 = icmp eq i32 %304, 0
  br i1 %305, label %306, label %323

306:                                              ; preds = %300, %294
  %307 = load i32, ptr %4, align 4, !tbaa !5
  %308 = icmp slt i32 %307, 2
  br i1 %308, label %309, label %315

309:                                              ; preds = %306
  %310 = load ptr, ptr @stderr, align 8, !tbaa !9
  %311 = load ptr, ptr %5, align 8, !tbaa !9
  %312 = getelementptr inbounds ptr, ptr %311, i64 0
  %313 = load ptr, ptr %312, align 8, !tbaa !9
  %314 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %310, ptr noundef @.str.6, ptr noundef %313) #7
  store i32 1, ptr %3, align 4
  store i32 1, ptr %13, align 4
  br label %352

315:                                              ; preds = %306
  %316 = load ptr, ptr %5, align 8, !tbaa !9
  %317 = getelementptr inbounds ptr, ptr %316, i64 1
  %318 = load ptr, ptr %317, align 8, !tbaa !9
  store ptr %318, ptr %6, align 8, !tbaa !9
  %319 = load ptr, ptr %5, align 8, !tbaa !9
  %320 = getelementptr inbounds ptr, ptr %319, i64 2
  store ptr %320, ptr %5, align 8, !tbaa !9
  %321 = load i32, ptr %4, align 4, !tbaa !5
  %322 = sub nsw i32 %321, 2
  store i32 %322, ptr %4, align 4, !tbaa !5
  br label %346

323:                                              ; preds = %300
  %324 = load ptr, ptr %5, align 8, !tbaa !9
  %325 = getelementptr inbounds ptr, ptr %324, i64 0
  %326 = load ptr, ptr %325, align 8, !tbaa !9
  %327 = call i32 @strcmp(ptr noundef %326, ptr noundef @.str.19) #8
  %328 = icmp eq i32 %327, 0
  br i1 %328, label %335, label %329

329:                                              ; preds = %323
  %330 = load ptr, ptr %5, align 8, !tbaa !9
  %331 = getelementptr inbounds ptr, ptr %330, i64 0
  %332 = load ptr, ptr %331, align 8, !tbaa !9
  %333 = call i32 @strcmp(ptr noundef %332, ptr noundef @.str.20) #8
  %334 = icmp eq i32 %333, 0
  br i1 %334, label %335, label %339

335:                                              ; preds = %329, %323
  %336 = load ptr, ptr @stderr, align 8, !tbaa !9
  %337 = load ptr, ptr %8, align 8, !tbaa !9
  %338 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %336, ptr noundef @.str.1, ptr noundef %337, ptr noundef @main.optlist) #7
  store i32 0, ptr %3, align 4
  store i32 1, ptr %13, align 4
  br label %352

339:                                              ; preds = %329
  %340 = load ptr, ptr @stderr, align 8, !tbaa !9
  %341 = load ptr, ptr %5, align 8, !tbaa !9
  %342 = getelementptr inbounds ptr, ptr %341, i64 0
  %343 = load ptr, ptr %342, align 8, !tbaa !9
  %344 = load ptr, ptr %8, align 8, !tbaa !9
  %345 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %340, ptr noundef @.str.21, ptr noundef %343, ptr noundef %344, ptr noundef @main.optlist) #7
  store i32 0, ptr %3, align 4
  store i32 1, ptr %13, align 4
  br label %352

346:                                              ; preds = %315
  br label %347

347:                                              ; preds = %346, %289
  br label %348

348:                                              ; preds = %347, %236
  br label %349

349:                                              ; preds = %348, %182
  br label %350

350:                                              ; preds = %349, %124
  br label %351

351:                                              ; preds = %350
  store i32 0, ptr %13, align 4
  br label %352

352:                                              ; preds = %351, %339, %335, %309, %283, %256, %230, %202, %176, %144, %118, %90, %74
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  %353 = load i32, ptr %13, align 4
  switch i32 %353, label %717 [
    i32 0, label %354
    i32 3, label %355
  ]

354:                                              ; preds = %352
  br label %65, !llvm.loop !26

355:                                              ; preds = %352, %65
  %356 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 5
  %357 = load i32, ptr %356, align 8, !tbaa !19
  %358 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 6
  %359 = load i32, ptr %358, align 4, !tbaa !20
  %360 = mul i32 %357, %359
  %361 = udiv i32 %360, 8
  %362 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 8
  store i32 %361, ptr %362, align 4, !tbaa !22
  store i32 0, ptr %11, align 4, !tbaa !5
  %363 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 5
  %364 = load i32, ptr %363, align 8, !tbaa !19
  %365 = icmp eq i32 %364, 1
  br i1 %365, label %366, label %384

366:                                              ; preds = %355
  %367 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 6
  %368 = load i32, ptr %367, align 4, !tbaa !20
  %369 = icmp eq i32 %368, 8
  br i1 %369, label %370, label %371

370:                                              ; preds = %366
  store i32 4352, ptr %11, align 4, !tbaa !5
  br label %383

371:                                              ; preds = %366
  %372 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 6
  %373 = load i32, ptr %372, align 4, !tbaa !20
  %374 = icmp eq i32 %373, 16
  br i1 %374, label %375, label %376

375:                                              ; preds = %371
  store i32 4353, ptr %11, align 4, !tbaa !5
  br label %382

376:                                              ; preds = %371
  %377 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 6
  %378 = load i32, ptr %377, align 4, !tbaa !20
  %379 = icmp eq i32 %378, 32
  br i1 %379, label %380, label %381

380:                                              ; preds = %376
  store i32 65552, ptr %11, align 4, !tbaa !5
  br label %381

381:                                              ; preds = %380, %376
  br label %382

382:                                              ; preds = %381, %375
  br label %383

383:                                              ; preds = %382, %370
  br label %407

384:                                              ; preds = %355
  %385 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 5
  %386 = load i32, ptr %385, align 8, !tbaa !19
  %387 = icmp eq i32 %386, 2
  br i1 %387, label %388, label %406

388:                                              ; preds = %384
  %389 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 6
  %390 = load i32, ptr %389, align 4, !tbaa !20
  %391 = icmp eq i32 %390, 8
  br i1 %391, label %392, label %393

392:                                              ; preds = %388
  store i32 4354, ptr %11, align 4, !tbaa !5
  br label %405

393:                                              ; preds = %388
  %394 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 6
  %395 = load i32, ptr %394, align 4, !tbaa !20
  %396 = icmp eq i32 %395, 16
  br i1 %396, label %397, label %398

397:                                              ; preds = %393
  store i32 4355, ptr %11, align 4, !tbaa !5
  br label %404

398:                                              ; preds = %393
  %399 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 6
  %400 = load i32, ptr %399, align 4, !tbaa !20
  %401 = icmp eq i32 %400, 32
  br i1 %401, label %402, label %403

402:                                              ; preds = %398
  store i32 65553, ptr %11, align 4, !tbaa !5
  br label %403

403:                                              ; preds = %402, %398
  br label %404

404:                                              ; preds = %403, %397
  br label %405

405:                                              ; preds = %404, %392
  br label %406

406:                                              ; preds = %405, %384
  br label %407

407:                                              ; preds = %406, %383
  %408 = load ptr, ptr %7, align 8, !tbaa !9
  %409 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 7
  %410 = load i32, ptr %409, align 8, !tbaa !21
  %411 = load i32, ptr %11, align 4, !tbaa !5
  %412 = call ptr @alcCaptureOpenDevice(ptr noundef %408, i32 noundef %410, i32 noundef %411, i32 noundef 32768)
  %413 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 0
  store ptr %412, ptr %413, align 8, !tbaa !11
  %414 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 0
  %415 = load ptr, ptr %414, align 8, !tbaa !11
  %416 = icmp ne ptr %415, null
  br i1 %416, label %448, label %417

417:                                              ; preds = %407
  %418 = load ptr, ptr @stderr, align 8, !tbaa !9
  %419 = load ptr, ptr %7, align 8, !tbaa !9
  %420 = icmp ne ptr %419, null
  br i1 %420, label %421, label %423

421:                                              ; preds = %417
  %422 = load ptr, ptr %7, align 8, !tbaa !9
  br label %424

423:                                              ; preds = %417
  br label %424

424:                                              ; preds = %423, %421
  %425 = phi ptr [ %422, %421 ], [ @.str.23, %423 ]
  %426 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 6
  %427 = load i32, ptr %426, align 4, !tbaa !20
  %428 = icmp eq i32 %427, 32
  br i1 %428, label %429, label %430

429:                                              ; preds = %424
  br label %436

430:                                              ; preds = %424
  %431 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 6
  %432 = load i32, ptr %431, align 4, !tbaa !20
  %433 = icmp ne i32 %432, 8
  %434 = zext i1 %433 to i64
  %435 = select i1 %433, ptr @.str.25, ptr @.str.26
  br label %436

436:                                              ; preds = %430, %429
  %437 = phi ptr [ @.str.24, %429 ], [ %435, %430 ]
  %438 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 6
  %439 = load i32, ptr %438, align 4, !tbaa !20
  %440 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 5
  %441 = load i32, ptr %440, align 8, !tbaa !19
  %442 = icmp eq i32 %441, 1
  %443 = zext i1 %442 to i64
  %444 = select i1 %442, ptr @.str.27, ptr @.str.28
  %445 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 7
  %446 = load i32, ptr %445, align 8, !tbaa !21
  %447 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %418, ptr noundef @.str.22, ptr noundef %425, ptr noundef %437, i32 noundef %439, ptr noundef %444, i32 noundef %446, i32 noundef 32768) #7
  store i32 1, ptr %3, align 4
  store i32 1, ptr %13, align 4
  br label %717

448:                                              ; preds = %407
  %449 = load ptr, ptr @stderr, align 8, !tbaa !9
  %450 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 0
  %451 = load ptr, ptr %450, align 8, !tbaa !11
  %452 = call ptr @alcGetString(ptr noundef %451, i32 noundef 784)
  %453 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %449, ptr noundef @.str.29, ptr noundef %452) #7
  %454 = load ptr, ptr %6, align 8, !tbaa !9
  %455 = call noalias ptr @fopen(ptr noundef %454, ptr noundef @.str.30)
  %456 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  store ptr %455, ptr %456, align 8, !tbaa !15
  %457 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  %458 = load ptr, ptr %457, align 8, !tbaa !15
  %459 = icmp ne ptr %458, null
  br i1 %459, label %467, label %460

460:                                              ; preds = %448
  %461 = load ptr, ptr @stderr, align 8, !tbaa !9
  %462 = load ptr, ptr %6, align 8, !tbaa !9
  %463 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %461, ptr noundef @.str.31, ptr noundef %462) #7
  %464 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 0
  %465 = load ptr, ptr %464, align 8, !tbaa !11
  %466 = call signext i8 @alcCaptureCloseDevice(ptr noundef %465)
  store i32 1, ptr %3, align 4
  store i32 1, ptr %13, align 4
  br label %717

467:                                              ; preds = %448
  %468 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  %469 = load ptr, ptr %468, align 8, !tbaa !15
  %470 = call i32 @fputs(ptr noundef @.str.32, ptr noundef %469)
  %471 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  %472 = load ptr, ptr %471, align 8, !tbaa !15
  call void @fwrite32le(i32 noundef -1, ptr noundef %472)
  %473 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  %474 = load ptr, ptr %473, align 8, !tbaa !15
  %475 = call i32 @fputs(ptr noundef @.str.33, ptr noundef %474)
  %476 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  %477 = load ptr, ptr %476, align 8, !tbaa !15
  %478 = call i32 @fputs(ptr noundef @.str.34, ptr noundef %477)
  %479 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  %480 = load ptr, ptr %479, align 8, !tbaa !15
  call void @fwrite32le(i32 noundef 18, ptr noundef %480)
  %481 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 6
  %482 = load i32, ptr %481, align 4, !tbaa !20
  %483 = icmp eq i32 %482, 32
  %484 = zext i1 %483 to i64
  %485 = select i1 %483, i32 3, i32 1
  %486 = trunc i32 %485 to i16
  %487 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  %488 = load ptr, ptr %487, align 8, !tbaa !15
  call void @fwrite16le(i16 noundef zeroext %486, ptr noundef %488)
  %489 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 5
  %490 = load i32, ptr %489, align 8, !tbaa !19
  %491 = trunc i32 %490 to i16
  %492 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  %493 = load ptr, ptr %492, align 8, !tbaa !15
  call void @fwrite16le(i16 noundef zeroext %491, ptr noundef %493)
  %494 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 7
  %495 = load i32, ptr %494, align 8, !tbaa !21
  %496 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  %497 = load ptr, ptr %496, align 8, !tbaa !15
  call void @fwrite32le(i32 noundef %495, ptr noundef %497)
  %498 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 7
  %499 = load i32, ptr %498, align 8, !tbaa !21
  %500 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 8
  %501 = load i32, ptr %500, align 4, !tbaa !22
  %502 = mul i32 %499, %501
  %503 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  %504 = load ptr, ptr %503, align 8, !tbaa !15
  call void @fwrite32le(i32 noundef %502, ptr noundef %504)
  %505 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 8
  %506 = load i32, ptr %505, align 4, !tbaa !22
  %507 = trunc i32 %506 to i16
  %508 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  %509 = load ptr, ptr %508, align 8, !tbaa !15
  call void @fwrite16le(i16 noundef zeroext %507, ptr noundef %509)
  %510 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 6
  %511 = load i32, ptr %510, align 4, !tbaa !20
  %512 = trunc i32 %511 to i16
  %513 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  %514 = load ptr, ptr %513, align 8, !tbaa !15
  call void @fwrite16le(i16 noundef zeroext %512, ptr noundef %514)
  %515 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  %516 = load ptr, ptr %515, align 8, !tbaa !15
  call void @fwrite16le(i16 noundef zeroext 0, ptr noundef %516)
  %517 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  %518 = load ptr, ptr %517, align 8, !tbaa !15
  %519 = call i32 @fputs(ptr noundef @.str.35, ptr noundef %518)
  %520 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  %521 = load ptr, ptr %520, align 8, !tbaa !15
  call void @fwrite32le(i32 noundef -1, ptr noundef %521)
  %522 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  %523 = load ptr, ptr %522, align 8, !tbaa !15
  %524 = call i64 @ftell(ptr noundef %523)
  %525 = sub nsw i64 %524, 4
  %526 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 2
  store i64 %525, ptr %526, align 8, !tbaa !16
  %527 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  %528 = load ptr, ptr %527, align 8, !tbaa !15
  %529 = call i32 @ferror(ptr noundef %528) #7
  %530 = icmp ne i32 %529, 0
  br i1 %530, label %535, label %531

531:                                              ; preds = %467
  %532 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 2
  %533 = load i64, ptr %532, align 8, !tbaa !16
  %534 = icmp slt i64 %533, 0
  br i1 %534, label %535, label %547

535:                                              ; preds = %531, %467
  %536 = load ptr, ptr @stderr, align 8, !tbaa !9
  %537 = call ptr @__errno_location() #9
  %538 = load i32, ptr %537, align 4, !tbaa !5
  %539 = call ptr @strerror(i32 noundef %538) #7
  %540 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %536, ptr noundef @.str.36, ptr noundef %539) #7
  %541 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  %542 = load ptr, ptr %541, align 8, !tbaa !15
  %543 = call i32 @fclose(ptr noundef %542)
  %544 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 0
  %545 = load ptr, ptr %544, align 8, !tbaa !11
  %546 = call signext i8 @alcCaptureCloseDevice(ptr noundef %545)
  store i32 1, ptr %3, align 4
  store i32 1, ptr %13, align 4
  br label %717

547:                                              ; preds = %531
  %548 = load ptr, ptr @stderr, align 8, !tbaa !9
  %549 = load ptr, ptr %6, align 8, !tbaa !9
  %550 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 6
  %551 = load i32, ptr %550, align 4, !tbaa !20
  %552 = icmp eq i32 %551, 32
  br i1 %552, label %553, label %554

553:                                              ; preds = %547
  br label %560

554:                                              ; preds = %547
  %555 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 6
  %556 = load i32, ptr %555, align 4, !tbaa !20
  %557 = icmp ne i32 %556, 8
  %558 = zext i1 %557 to i64
  %559 = select i1 %557, ptr @.str.25, ptr @.str.26
  br label %560

560:                                              ; preds = %554, %553
  %561 = phi ptr [ @.str.24, %553 ], [ %559, %554 ]
  %562 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 6
  %563 = load i32, ptr %562, align 4, !tbaa !20
  %564 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 5
  %565 = load i32, ptr %564, align 8, !tbaa !19
  %566 = icmp eq i32 %565, 1
  %567 = zext i1 %566 to i64
  %568 = select i1 %566, ptr @.str.27, ptr @.str.28
  %569 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 7
  %570 = load i32, ptr %569, align 8, !tbaa !21
  %571 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 4
  %572 = load float, ptr %571, align 4, !tbaa !18
  %573 = fpext float %572 to double
  %574 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 4
  %575 = load float, ptr %574, align 4, !tbaa !18
  %576 = fcmp une float %575, 1.000000e+00
  %577 = zext i1 %576 to i64
  %578 = select i1 %576, ptr @.str.38, ptr @.str.39
  %579 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %548, ptr noundef @.str.37, ptr noundef %549, ptr noundef %561, i32 noundef %563, ptr noundef %568, i32 noundef %570, double noundef %573, ptr noundef %578) #7
  store i32 0, ptr %12, align 4, !tbaa !5
  %580 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 0
  %581 = load ptr, ptr %580, align 8, !tbaa !11
  call void @alcCaptureStart(ptr noundef %581)
  br label %582

582:                                              ; preds = %657, %655, %560
  %583 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 3
  %584 = load i32, ptr %583, align 8, !tbaa !17
  %585 = uitofp i32 %584 to double
  %586 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 7
  %587 = load i32, ptr %586, align 8, !tbaa !21
  %588 = uitofp i32 %587 to double
  %589 = fdiv double %585, %588
  %590 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 4
  %591 = load float, ptr %590, align 4, !tbaa !18
  %592 = fpext float %591 to double
  %593 = fcmp olt double %589, %592
  br i1 %593, label %594, label %605

594:                                              ; preds = %582
  %595 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 0
  %596 = load ptr, ptr %595, align 8, !tbaa !11
  %597 = call i32 @alcGetError(ptr noundef %596)
  store i32 %597, ptr %12, align 4, !tbaa !5
  %598 = icmp eq i32 %597, 0
  br i1 %598, label %599, label %605

599:                                              ; preds = %594
  %600 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  %601 = load ptr, ptr %600, align 8, !tbaa !15
  %602 = call i32 @ferror(ptr noundef %601) #7
  %603 = icmp ne i32 %602, 0
  %604 = xor i1 %603, true
  br label %605

605:                                              ; preds = %599, %594, %582
  %606 = phi i1 [ false, %594 ], [ false, %582 ], [ %604, %599 ]
  br i1 %606, label %607, label %658

607:                                              ; preds = %605
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #7
  store i32 0, ptr %15, align 4, !tbaa !5
  %608 = load ptr, ptr @stderr, align 8, !tbaa !9
  %609 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 3
  %610 = load i32, ptr %609, align 8, !tbaa !17
  %611 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %608, ptr noundef @.str.40, i32 noundef %610) #7
  %612 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 0
  %613 = load ptr, ptr %612, align 8, !tbaa !11
  call void @alcGetIntegerv(ptr noundef %613, i32 noundef 786, i32 noundef 1, ptr noundef %15)
  %614 = load i32, ptr %15, align 4, !tbaa !5
  %615 = icmp slt i32 %614, 1
  br i1 %615, label %616, label %617

616:                                              ; preds = %607
  call void @al_nssleep(i64 noundef 10000000)
  store i32 4, ptr %13, align 4
  br label %655, !llvm.loop !28

617:                                              ; preds = %607
  %618 = load i32, ptr %15, align 4, !tbaa !5
  %619 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 10
  %620 = load i32, ptr %619, align 8, !tbaa !24
  %621 = icmp sgt i32 %618, %620
  br i1 %621, label %622, label %635

622:                                              ; preds = %617
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  %623 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 8
  %624 = load i32, ptr %623, align 4, !tbaa !22
  %625 = zext i32 %624 to i64
  %626 = load i32, ptr %15, align 4, !tbaa !5
  %627 = zext i32 %626 to i64
  %628 = call noalias ptr @calloc(i64 noundef %625, i64 noundef %627) #10
  store ptr %628, ptr %16, align 8, !tbaa !9
  %629 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 9
  %630 = load ptr, ptr %629, align 8, !tbaa !23
  call void @free(ptr noundef %630) #7
  %631 = load ptr, ptr %16, align 8, !tbaa !9
  %632 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 9
  store ptr %631, ptr %632, align 8, !tbaa !23
  %633 = load i32, ptr %15, align 4, !tbaa !5
  %634 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 10
  store i32 %633, ptr %634, align 8, !tbaa !24
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  br label %635

635:                                              ; preds = %622, %617
  %636 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 0
  %637 = load ptr, ptr %636, align 8, !tbaa !11
  %638 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 9
  %639 = load ptr, ptr %638, align 8, !tbaa !23
  %640 = load i32, ptr %15, align 4, !tbaa !5
  call void @alcCaptureSamples(ptr noundef %637, ptr noundef %639, i32 noundef %640)
  %641 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 9
  %642 = load ptr, ptr %641, align 8, !tbaa !23
  %643 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 8
  %644 = load i32, ptr %643, align 4, !tbaa !22
  %645 = zext i32 %644 to i64
  %646 = load i32, ptr %15, align 4, !tbaa !5
  %647 = zext i32 %646 to i64
  %648 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  %649 = load ptr, ptr %648, align 8, !tbaa !15
  %650 = call i64 @fwrite(ptr noundef %642, i64 noundef %645, i64 noundef %647, ptr noundef %649)
  %651 = trunc i64 %650 to i32
  %652 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 3
  %653 = load i32, ptr %652, align 8, !tbaa !17
  %654 = add i32 %653, %651
  store i32 %654, ptr %652, align 8, !tbaa !17
  store i32 0, ptr %13, align 4
  br label %655

655:                                              ; preds = %635, %616
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  %656 = load i32, ptr %13, align 4
  switch i32 %656, label %719 [
    i32 0, label %657
    i32 4, label %582
  ]

657:                                              ; preds = %655
  br label %582, !llvm.loop !28

658:                                              ; preds = %605
  %659 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 0
  %660 = load ptr, ptr %659, align 8, !tbaa !11
  call void @alcCaptureStop(ptr noundef %660)
  %661 = load ptr, ptr @stderr, align 8, !tbaa !9
  %662 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 3
  %663 = load i32, ptr %662, align 8, !tbaa !17
  %664 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %661, ptr noundef @.str.41, i32 noundef %663) #7
  %665 = load i32, ptr %12, align 4, !tbaa !5
  %666 = icmp ne i32 %665, 0
  br i1 %666, label %667, label %675

667:                                              ; preds = %658
  %668 = load ptr, ptr @stderr, align 8, !tbaa !9
  %669 = load i32, ptr %12, align 4, !tbaa !5
  %670 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 0
  %671 = load ptr, ptr %670, align 8, !tbaa !11
  %672 = load i32, ptr %12, align 4, !tbaa !5
  %673 = call ptr @alcGetString(ptr noundef %671, i32 noundef %672)
  %674 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %668, ptr noundef @.str.42, i32 noundef %669, ptr noundef %673) #7
  br label %675

675:                                              ; preds = %667, %658
  %676 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 0
  %677 = load ptr, ptr %676, align 8, !tbaa !11
  %678 = call signext i8 @alcCaptureCloseDevice(ptr noundef %677)
  %679 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 0
  store ptr null, ptr %679, align 8, !tbaa !11
  %680 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 9
  %681 = load ptr, ptr %680, align 8, !tbaa !23
  call void @free(ptr noundef %681) #7
  %682 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 9
  store ptr null, ptr %682, align 8, !tbaa !23
  %683 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 10
  store i32 0, ptr %683, align 8, !tbaa !24
  %684 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  %685 = load ptr, ptr %684, align 8, !tbaa !15
  %686 = call i64 @ftell(ptr noundef %685)
  store i64 %686, ptr %10, align 8, !tbaa !29
  %687 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  %688 = load ptr, ptr %687, align 8, !tbaa !15
  %689 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 2
  %690 = load i64, ptr %689, align 8, !tbaa !16
  %691 = call i32 @fseek(ptr noundef %688, i64 noundef %690, i32 noundef 0)
  %692 = icmp eq i32 %691, 0
  br i1 %692, label %693, label %712

693:                                              ; preds = %675
  %694 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 3
  %695 = load i32, ptr %694, align 8, !tbaa !17
  %696 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 8
  %697 = load i32, ptr %696, align 4, !tbaa !22
  %698 = mul i32 %695, %697
  %699 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  %700 = load ptr, ptr %699, align 8, !tbaa !15
  call void @fwrite32le(i32 noundef %698, ptr noundef %700)
  %701 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  %702 = load ptr, ptr %701, align 8, !tbaa !15
  %703 = call i32 @fseek(ptr noundef %702, i64 noundef 4, i32 noundef 0)
  %704 = icmp eq i32 %703, 0
  br i1 %704, label %705, label %711

705:                                              ; preds = %693
  %706 = load i64, ptr %10, align 8, !tbaa !29
  %707 = trunc i64 %706 to i32
  %708 = sub i32 %707, 8
  %709 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  %710 = load ptr, ptr %709, align 8, !tbaa !15
  call void @fwrite32le(i32 noundef %708, ptr noundef %710)
  br label %711

711:                                              ; preds = %705, %693
  br label %712

712:                                              ; preds = %711, %675
  %713 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  %714 = load ptr, ptr %713, align 8, !tbaa !15
  %715 = call i32 @fclose(ptr noundef %714)
  %716 = getelementptr inbounds %struct.Recorder, ptr %9, i32 0, i32 1
  store ptr null, ptr %716, align 8, !tbaa !15
  store i32 0, ptr %3, align 4
  store i32 1, ptr %13, align 4
  br label %717

717:                                              ; preds = %712, %535, %460, %436, %352, %22
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #7
  %718 = load i32, ptr %3, align 4
  ret i32 %718

719:                                              ; preds = %655
  unreachable
}

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

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

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strcmp(ptr noundef, ptr noundef) #3

; Function Attrs: nounwind
declare i64 @strtoul(ptr noundef, ptr noundef, i32 noundef) #2

; Function Attrs: nounwind
declare float @strtof(ptr noundef, ptr noundef) #2

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

declare ptr @alcCaptureOpenDevice(ptr noundef, i32 noundef, i32 noundef, i32 noundef) #4

declare ptr @alcGetString(ptr noundef, i32 noundef) #4

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

declare signext i8 @alcCaptureCloseDevice(ptr noundef) #4

declare i32 @fputs(ptr noundef, ptr noundef) #4

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

; Function Attrs: nounwind uwtable
declare hidden void @fwrite16le(i16 noundef zeroext, ptr noundef) #0

declare i64 @ftell(ptr noundef) #4

; Function Attrs: nounwind
declare i32 @ferror(ptr noundef) #2

; Function Attrs: nounwind
declare ptr @strerror(i32 noundef) #2

; Function Attrs: nounwind willreturn memory(none)
declare ptr @__errno_location() #5

declare i32 @fclose(ptr noundef) #4

declare void @alcCaptureStart(ptr noundef) #4

declare i32 @alcGetError(ptr noundef) #4

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

declare void @al_nssleep(i64 noundef) #4

; Function Attrs: nounwind allocsize(0,1)
declare noalias ptr @calloc(i64 noundef, i64 noundef) #6

; Function Attrs: nounwind
declare void @free(ptr noundef) #2

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

declare i64 @fwrite(ptr noundef, i64 noundef, i64 noundef, ptr noundef) #4

declare void @alcCaptureStop(ptr noundef) #4

declare i32 @fseek(ptr noundef, i64 noundef, i32 noundef) #4

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

!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, !10, i64 0}
!12 = !{!"Recorder", !10, i64 0, !10, i64 8, !13, i64 16, !6, i64 24, !14, i64 28, !6, i64 32, !6, i64 36, !6, i64 40, !6, i64 44, !10, i64 48, !6, i64 56}
!13 = !{!"long", !7, i64 0}
!14 = !{!"float", !7, i64 0}
!15 = !{!12, !10, i64 8}
!16 = !{!12, !13, i64 16}
!17 = !{!12, !6, i64 24}
!18 = !{!12, !14, i64 28}
!19 = !{!12, !6, i64 32}
!20 = !{!12, !6, i64 36}
!21 = !{!12, !6, i64 40}
!22 = !{!12, !6, i64 44}
!23 = !{!12, !10, i64 48}
!24 = !{!12, !6, i64 56}
!25 = !{!7, !7, i64 0}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = distinct !{!28, !27}
!29 = !{!13, !13, 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"

@main.optlist = external hidden constant [316 x i8], align 16
@.str = external hidden unnamed_addr constant [11 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [29 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local range(i32 0, 2) i32 @main(i32 noundef %0, ptr nocapture noundef readonly %1) local_unnamed_addr #0 {
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = load ptr, ptr %1, align 8, !tbaa !5
  %6 = icmp slt i32 %0, 2
  br i1 %6, label %7, label %10

7:                                                ; preds = %2
  %8 = load ptr, ptr @stderr, align 8, !tbaa !5
  %9 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8, ptr noundef nonnull @.str.1, ptr noundef %5, ptr noundef nonnull @main.optlist) #11
  br label %265

10:                                               ; preds = %2
  %11 = getelementptr inbounds i8, ptr %1, i64 8
  %.not = icmp eq i32 %0, 2
  br i1 %.not, label %.lr.ph.preheader, label %12

12:                                               ; preds = %10
  %13 = add nsw i32 %0, -1
  %14 = load ptr, ptr %11, align 8, !tbaa !5
  %15 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %14, ptr noundef nonnull dereferenceable(1) @.str.2) #12
  %16 = icmp eq i32 %15, 0
  br i1 %16, label %17, label %.lr.ph.preheader

17:                                               ; preds = %12
  %18 = getelementptr inbounds i8, ptr %1, i64 16
  %19 = load ptr, ptr %18, align 8, !tbaa !5
  %20 = getelementptr inbounds i8, ptr %1, i64 24
  %21 = add nsw i32 %0, -3
  %.not528 = icmp eq i32 %21, 0
  br i1 %.not528, label %.thread442, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %10, %12, %17
  %.0174423 = phi i32 [ %21, %17 ], [ 1, %10 ], [ %13, %12 ]
  %.0177422 = phi ptr [ %20, %17 ], [ %11, %10 ], [ %11, %12 ]
  %.0185421 = phi ptr [ %19, %17 ], [ null, %10 ], [ null, %12 ]
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %154
  %.1175319 = phi i32 [ %.2176, %154 ], [ %.0174423, %.lr.ph.preheader ]
  %.sroa.56.0318 = phi float [ %.sroa.56.1, %154 ], [ 4.000000e+00, %.lr.ph.preheader ]
  %.sroa.63.0317 = phi i32 [ %.sroa.63.1, %154 ], [ 1, %.lr.ph.preheader ]
  %.sroa.74.0316 = phi i32 [ %.sroa.74.1, %154 ], [ 16, %.lr.ph.preheader ]
  %.sroa.95.0315 = phi i32 [ %.sroa.95.1, %154 ], [ 44100, %.lr.ph.preheader ]
  %.1178314 = phi ptr [ %.2179, %154 ], [ %.0177422, %.lr.ph.preheader ]
  %.0181313 = phi ptr [ %.1182, %154 ], [ @.str, %.lr.ph.preheader ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #13
  %22 = load ptr, ptr %.1178314, align 8, !tbaa !5
  %23 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %22, ptr noundef nonnull dereferenceable(1) @.str.3) #12
  %24 = icmp eq i32 %23, 0
  br i1 %24, label %.thread226, label %25

.thread226:                                       ; preds = %.lr.ph
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #13
  br label %.loopexit

25:                                               ; preds = %.lr.ph
  %26 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %22, ptr noundef nonnull dereferenceable(1) @.str.4) #12
  %27 = icmp eq i32 %26, 0
  br i1 %27, label %31, label %28

28:                                               ; preds = %25
  %29 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %22, ptr noundef nonnull dereferenceable(1) @.str.5) #12
  %30 = icmp eq i32 %29, 0
  br i1 %30, label %31, label %51

31:                                               ; preds = %28, %25
  %32 = icmp eq i32 %.1175319, 1
  br i1 %32, label %33, label %36

33:                                               ; preds = %31
  %34 = load ptr, ptr @stderr, align 8, !tbaa !5
  %35 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %34, ptr noundef nonnull @.str.6, ptr noundef %22) #11
  br label %.thread

36:                                               ; preds = %31
  %37 = getelementptr inbounds i8, ptr %.1178314, i64 8
  %38 = load ptr, ptr %37, align 8, !tbaa !5
  %39 = call i64 @strtoul(ptr noundef %38, ptr noundef nonnull %3, i32 noundef 0) #13
  %40 = trunc i64 %39 to i32
  %41 = add i32 %40, -3
  %or.cond = icmp ult i32 %41, -2
  br i1 %or.cond, label %46, label %42

42:                                               ; preds = %36
  %43 = load ptr, ptr %3, align 8, !tbaa !5
  %.not207 = icmp eq ptr %43, null
  br i1 %.not207, label %154, label %44

44:                                               ; preds = %42
  %45 = load i8, ptr %43, align 1, !tbaa !9
  %.not208 = icmp eq i8 %45, 0
  br i1 %.not208, label %154, label %46

46:                                               ; preds = %36, %44
  %47 = getelementptr inbounds i8, ptr %.1178314, i64 8
  %48 = load ptr, ptr @stderr, align 8, !tbaa !5
  %49 = load ptr, ptr %47, align 8, !tbaa !5
  %50 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %48, ptr noundef nonnull @.str.7, ptr noundef %49) #11
  br label %.thread

51:                                               ; preds = %28
  %52 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %22, ptr noundef nonnull dereferenceable(1) @.str.8) #12
  %53 = icmp eq i32 %52, 0
  br i1 %53, label %57, label %54

54:                                               ; preds = %51
  %55 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %22, ptr noundef nonnull dereferenceable(1) @.str.9) #12
  %56 = icmp eq i32 %55, 0
  br i1 %56, label %57, label %76

57:                                               ; preds = %54, %51
  %58 = icmp eq i32 %.1175319, 1
  br i1 %58, label %59, label %62

59:                                               ; preds = %57
  %60 = load ptr, ptr @stderr, align 8, !tbaa !5
  %61 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %60, ptr noundef nonnull @.str.6, ptr noundef %22) #11
  br label %.thread

62:                                               ; preds = %57
  %63 = getelementptr inbounds i8, ptr %.1178314, i64 8
  %64 = load ptr, ptr %63, align 8, !tbaa !5
  %65 = call i64 @strtoul(ptr noundef %64, ptr noundef nonnull %3, i32 noundef 0) #13
  %66 = trunc i64 %65 to i32
  switch i32 %66, label %71 [
    i32 32, label %67
    i32 16, label %67
    i32 8, label %67
  ]

67:                                               ; preds = %62, %62, %62
  %68 = load ptr, ptr %3, align 8, !tbaa !5
  %.not205 = icmp eq ptr %68, null
  br i1 %.not205, label %154, label %69

69:                                               ; preds = %67
  %70 = load i8, ptr %68, align 1, !tbaa !9
  %.not206 = icmp eq i8 %70, 0
  br i1 %.not206, label %154, label %71

71:                                               ; preds = %62, %69
  %72 = getelementptr inbounds i8, ptr %.1178314, i64 8
  %73 = load ptr, ptr @stderr, align 8, !tbaa !5
  %74 = load ptr, ptr %72, align 8, !tbaa !5
  %75 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %73, ptr noundef nonnull @.str.10, ptr noundef %74) #11
  br label %.thread

76:                                               ; preds = %54
  %77 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %22, ptr noundef nonnull dereferenceable(1) @.str.11) #12
  %78 = icmp eq i32 %77, 0
  br i1 %78, label %82, label %79

79:                                               ; preds = %76
  %80 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %22, ptr noundef nonnull dereferenceable(1) @.str.12) #12
  %81 = icmp eq i32 %80, 0
  br i1 %81, label %82, label %102

82:                                               ; preds = %79, %76
  %83 = icmp eq i32 %.1175319, 1
  br i1 %83, label %84, label %87

84:                                               ; preds = %82
  %85 = load ptr, ptr @stderr, align 8, !tbaa !5
  %86 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %85, ptr noundef nonnull @.str.6, ptr noundef %22) #11
  br label %.thread

87:                                               ; preds = %82
  %88 = getelementptr inbounds i8, ptr %.1178314, i64 8
  %89 = load ptr, ptr %88, align 8, !tbaa !5
  %90 = call i64 @strtoul(ptr noundef %89, ptr noundef nonnull %3, i32 noundef 0) #13
  %91 = trunc i64 %90 to i32
  %92 = add i32 %91, -8000
  %or.cond11 = icmp ult i32 %92, 88001
  br i1 %or.cond11, label %93, label %97

93:                                               ; preds = %87
  %94 = load ptr, ptr %3, align 8, !tbaa !5
  %.not203 = icmp eq ptr %94, null
  br i1 %.not203, label %154, label %95

95:                                               ; preds = %93
  %96 = load i8, ptr %94, align 1, !tbaa !9
  %.not204 = icmp eq i8 %96, 0
  br i1 %.not204, label %154, label %97

97:                                               ; preds = %95, %87
  %98 = getelementptr inbounds i8, ptr %.1178314, i64 8
  %99 = load ptr, ptr @stderr, align 8, !tbaa !5
  %100 = load ptr, ptr %98, align 8, !tbaa !5
  %101 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %99, ptr noundef nonnull @.str.13, ptr noundef %100) #11
  br label %.thread

102:                                              ; preds = %79
  %103 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %22, ptr noundef nonnull dereferenceable(1) @.str.14) #12
  %104 = icmp eq i32 %103, 0
  br i1 %104, label %108, label %105

105:                                              ; preds = %102
  %106 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %22, ptr noundef nonnull dereferenceable(1) @.str.15) #12
  %107 = icmp eq i32 %106, 0
  br i1 %107, label %108, label %128

108:                                              ; preds = %105, %102
  %109 = icmp eq i32 %.1175319, 1
  br i1 %109, label %110, label %113

110:                                              ; preds = %108
  %111 = load ptr, ptr @stderr, align 8, !tbaa !5
  %112 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %111, ptr noundef nonnull @.str.6, ptr noundef %22) #11
  br label %.thread

113:                                              ; preds = %108
  %114 = getelementptr inbounds i8, ptr %.1178314, i64 8
  %115 = load ptr, ptr %114, align 8, !tbaa !5
  %116 = call float @strtof(ptr noundef %115, ptr noundef nonnull %3) #13
  %117 = fcmp oge float %116, 1.000000e+00
  %118 = fcmp ole float %116, 1.000000e+01
  %or.cond14 = and i1 %117, %118
  br i1 %or.cond14, label %119, label %123

119:                                              ; preds = %113
  %120 = load ptr, ptr %3, align 8, !tbaa !5
  %.not201 = icmp eq ptr %120, null
  br i1 %.not201, label %154, label %121

121:                                              ; preds = %119
  %122 = load i8, ptr %120, align 1, !tbaa !9
  %.not202 = icmp eq i8 %122, 0
  br i1 %.not202, label %154, label %123

123:                                              ; preds = %121, %113
  %124 = getelementptr inbounds i8, ptr %.1178314, i64 8
  %125 = load ptr, ptr @stderr, align 8, !tbaa !5
  %126 = load ptr, ptr %124, align 8, !tbaa !5
  %127 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %125, ptr noundef nonnull @.str.16, ptr noundef %126) #11
  br label %.thread

128:                                              ; preds = %105
  %129 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %22, ptr noundef nonnull dereferenceable(1) @.str.17) #12
  %130 = icmp eq i32 %129, 0
  br i1 %130, label %134, label %131

131:                                              ; preds = %128
  %132 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %22, ptr noundef nonnull dereferenceable(1) @.str.18) #12
  %133 = icmp eq i32 %132, 0
  br i1 %133, label %134, label %142

134:                                              ; preds = %131, %128
  %135 = icmp eq i32 %.1175319, 1
  br i1 %135, label %136, label %139

136:                                              ; preds = %134
  %137 = load ptr, ptr @stderr, align 8, !tbaa !5
  %138 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %137, ptr noundef nonnull @.str.6, ptr noundef %22) #11
  br label %.thread

139:                                              ; preds = %134
  %140 = getelementptr inbounds i8, ptr %.1178314, i64 8
  %141 = load ptr, ptr %140, align 8, !tbaa !5
  br label %154

142:                                              ; preds = %131
  %143 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %22, ptr noundef nonnull dereferenceable(1) @.str.19) #12
  %144 = icmp eq i32 %143, 0
  br i1 %144, label %148, label %145

145:                                              ; preds = %142
  %146 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %22, ptr noundef nonnull dereferenceable(1) @.str.20) #12
  %147 = icmp eq i32 %146, 0
  br i1 %147, label %148, label %151

148:                                              ; preds = %145, %142
  %149 = load ptr, ptr @stderr, align 8, !tbaa !5
  %150 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %149, ptr noundef nonnull @.str.1, ptr noundef %5, ptr noundef nonnull @main.optlist) #11
  br label %.thread

151:                                              ; preds = %145
  %152 = load ptr, ptr @stderr, align 8, !tbaa !5
  %153 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %152, ptr noundef nonnull @.str.21, ptr noundef %22, ptr noundef %5, ptr noundef nonnull @main.optlist) #11
  br label %.thread

.thread:                                          ; preds = %33, %46, %59, %71, %84, %97, %110, %123, %136, %148, %151
  %.1.ph = phi i32 [ 0, %151 ], [ 0, %148 ], [ 1, %136 ], [ 1, %123 ], [ 1, %110 ], [ 1, %97 ], [ 1, %84 ], [ 1, %71 ], [ 1, %59 ], [ 1, %46 ], [ 1, %33 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #13
  br label %265

154:                                              ; preds = %139, %44, %42, %69, %67, %95, %93, %121, %119
  %.1182 = phi ptr [ %141, %139 ], [ %.0181313, %44 ], [ %.0181313, %42 ], [ %.0181313, %69 ], [ %.0181313, %67 ], [ %.0181313, %95 ], [ %.0181313, %93 ], [ %.0181313, %121 ], [ %.0181313, %119 ]
  %.sroa.95.1 = phi i32 [ %.sroa.95.0315, %139 ], [ %.sroa.95.0315, %44 ], [ %.sroa.95.0315, %42 ], [ %.sroa.95.0315, %69 ], [ %.sroa.95.0315, %67 ], [ %91, %95 ], [ %91, %93 ], [ %.sroa.95.0315, %121 ], [ %.sroa.95.0315, %119 ]
  %.sroa.74.1 = phi i32 [ %.sroa.74.0316, %139 ], [ %.sroa.74.0316, %44 ], [ %.sroa.74.0316, %42 ], [ %66, %69 ], [ %66, %67 ], [ %.sroa.74.0316, %95 ], [ %.sroa.74.0316, %93 ], [ %.sroa.74.0316, %121 ], [ %.sroa.74.0316, %119 ]
  %.sroa.63.1 = phi i32 [ %.sroa.63.0317, %139 ], [ %40, %44 ], [ %40, %42 ], [ %.sroa.63.0317, %69 ], [ %.sroa.63.0317, %67 ], [ %.sroa.63.0317, %95 ], [ %.sroa.63.0317, %93 ], [ %.sroa.63.0317, %121 ], [ %.sroa.63.0317, %119 ]
  %.sroa.56.1 = phi float [ %.sroa.56.0318, %139 ], [ %.sroa.56.0318, %44 ], [ %.sroa.56.0318, %42 ], [ %.sroa.56.0318, %69 ], [ %.sroa.56.0318, %67 ], [ %.sroa.56.0318, %95 ], [ %.sroa.56.0318, %93 ], [ %116, %121 ], [ %116, %119 ]
  %.2176 = add nsw i32 %.1175319, -2
  %.2179 = getelementptr inbounds i8, ptr %.1178314, i64 16
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #13
  %155 = icmp sgt i32 %.1175319, 2
  br i1 %155, label %.lr.ph, label %.loopexit

.loopexit:                                        ; preds = %154, %.thread226
  %.0181297 = phi ptr [ %.0181313, %.thread226 ], [ %.1182, %154 ]
  %.sroa.95.0285 = phi i32 [ %.sroa.95.0315, %.thread226 ], [ %.sroa.95.1, %154 ]
  %.sroa.74.0273 = phi i32 [ %.sroa.74.0316, %.thread226 ], [ %.sroa.74.1, %154 ]
  %.sroa.63.0261 = phi i32 [ %.sroa.63.0317, %.thread226 ], [ %.sroa.63.1, %154 ]
  %.sroa.56.0249 = phi float [ %.sroa.56.0318, %.thread226 ], [ %.sroa.56.1, %154 ]
  %156 = mul i32 %.sroa.63.0261, %.sroa.74.0273
  %157 = lshr i32 %156, 3
  switch i32 %.sroa.63.0261, label %.thread442 [
    i32 1, label %158
    i32 2, label %161
  ]

158:                                              ; preds = %.loopexit
  switch i32 %.sroa.74.0273, label %.fold.split [
    i32 8, label %.thread442
    i32 16, label %159
    i32 32, label %160
  ]

159:                                              ; preds = %158
  br label %.thread442

160:                                              ; preds = %158
  br label %.thread442

161:                                              ; preds = %.loopexit
  switch i32 %.sroa.74.0273, label %.fold.split216 [
    i32 8, label %.thread442
    i32 16, label %162
    i32 32, label %163
  ]

162:                                              ; preds = %161
  br label %.thread442

163:                                              ; preds = %161
  br label %.thread442

.fold.split:                                      ; preds = %158
  br label %.thread442

.fold.split216:                                   ; preds = %161
  br label %.thread442

.thread442:                                       ; preds = %.loopexit, %17, %161, %.fold.split216, %158, %.fold.split, %162, %163, %160, %159
  %164 = phi ptr [ @.str.27, %160 ], [ @.str.28, %162 ], [ @.str.28, %163 ], [ @.str.27, %158 ], [ @.str.27, %.fold.split ], [ @.str.28, %161 ], [ @.str.28, %.fold.split216 ], [ @.str.27, %159 ], [ @.str.27, %17 ], [ @.str.28, %.loopexit ]
  %165 = phi i32 [ %157, %160 ], [ %157, %162 ], [ %157, %163 ], [ %157, %158 ], [ %157, %.fold.split ], [ %157, %161 ], [ %157, %.fold.split216 ], [ %157, %159 ], [ 2, %17 ], [ %157, %.loopexit ]
  %.sroa.56.0249440 = phi float [ %.sroa.56.0249, %160 ], [ %.sroa.56.0249, %162 ], [ %.sroa.56.0249, %163 ], [ %.sroa.56.0249, %158 ], [ %.sroa.56.0249, %.fold.split ], [ %.sroa.56.0249, %161 ], [ %.sroa.56.0249, %.fold.split216 ], [ %.sroa.56.0249, %159 ], [ 4.000000e+00, %17 ], [ %.sroa.56.0249, %.loopexit ]
  %.sroa.63.0261438 = phi i32 [ 1, %160 ], [ 2, %162 ], [ 2, %163 ], [ 1, %158 ], [ 1, %.fold.split ], [ 2, %161 ], [ 2, %.fold.split216 ], [ 1, %159 ], [ 1, %17 ], [ %.sroa.63.0261, %.loopexit ]
  %.sroa.74.0273436 = phi i32 [ %.sroa.74.0273, %160 ], [ %.sroa.74.0273, %162 ], [ %.sroa.74.0273, %163 ], [ %.sroa.74.0273, %158 ], [ %.sroa.74.0273, %.fold.split ], [ %.sroa.74.0273, %161 ], [ %.sroa.74.0273, %.fold.split216 ], [ %.sroa.74.0273, %159 ], [ 16, %17 ], [ %.sroa.74.0273, %.loopexit ]
  %.sroa.95.0285434 = phi i32 [ %.sroa.95.0285, %160 ], [ %.sroa.95.0285, %162 ], [ %.sroa.95.0285, %163 ], [ %.sroa.95.0285, %158 ], [ %.sroa.95.0285, %.fold.split ], [ %.sroa.95.0285, %161 ], [ %.sroa.95.0285, %.fold.split216 ], [ %.sroa.95.0285, %159 ], [ 44100, %17 ], [ %.sroa.95.0285, %.loopexit ]
  %.0181297432 = phi ptr [ %.0181297, %160 ], [ %.0181297, %162 ], [ %.0181297, %163 ], [ %.0181297, %158 ], [ %.0181297, %.fold.split ], [ %.0181297, %161 ], [ %.0181297, %.fold.split216 ], [ %.0181297, %159 ], [ @.str, %17 ], [ %.0181297, %.loopexit ]
  %.0185420430 = phi ptr [ %.0185421, %160 ], [ %.0185421, %162 ], [ %.0185421, %163 ], [ %.0185421, %158 ], [ %.0185421, %.fold.split ], [ %.0185421, %161 ], [ %.0185421, %.fold.split216 ], [ %.0185421, %159 ], [ %19, %17 ], [ %.0185421, %.loopexit ]
  %.0173 = phi i32 [ 65552, %160 ], [ 4355, %162 ], [ 65553, %163 ], [ 4352, %158 ], [ 0, %.fold.split ], [ 4354, %161 ], [ 0, %.fold.split216 ], [ 4353, %159 ], [ 4353, %17 ], [ 0, %.loopexit ]
  %166 = tail call ptr @alcCaptureOpenDevice(ptr noundef %.0185420430, i32 noundef %.sroa.95.0285434, i32 noundef %.0173, i32 noundef 32768) #13
  %.not209 = icmp eq ptr %166, null
  %167 = load ptr, ptr @stderr, align 8, !tbaa !5
  br i1 %.not209, label %168, label %174

168:                                              ; preds = %.thread442
  %.not210 = icmp eq ptr %.0185420430, null
  %169 = select i1 %.not210, ptr @.str.23, ptr %.0185420430
  %170 = icmp eq i32 %.sroa.74.0273436, 32
  %.not211 = icmp eq i32 %.sroa.74.0273436, 8
  %171 = select i1 %.not211, ptr @.str.26, ptr @.str.25
  %172 = select i1 %170, ptr @.str.24, ptr %171
  %173 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %167, ptr noundef nonnull @.str.22, ptr noundef nonnull %169, ptr noundef nonnull %172, i32 noundef %.sroa.74.0273436, ptr noundef nonnull %164, i32 noundef %.sroa.95.0285434, i32 noundef 32768) #11
  br label %265

174:                                              ; preds = %.thread442
  %175 = tail call ptr @alcGetString(ptr noundef nonnull %166, i32 noundef 784) #13
  %176 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %167, ptr noundef nonnull @.str.29, ptr noundef %175) #11
  %177 = tail call noalias ptr @fopen(ptr noundef %.0181297432, ptr noundef nonnull @.str.30)
  %.not212 = icmp eq ptr %177, null
  br i1 %.not212, label %178, label %182

178:                                              ; preds = %174
  %179 = load ptr, ptr @stderr, align 8, !tbaa !5
  %180 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %179, ptr noundef nonnull @.str.31, ptr noundef %.0181297432) #11
  %181 = tail call signext i8 @alcCaptureCloseDevice(ptr noundef nonnull %166) #13
  br label %265

182:                                              ; preds = %174
  %183 = tail call i32 @fputs(ptr noundef nonnull @.str.32, ptr noundef nonnull %177)
  tail call void @fwrite32le(i32 noundef -1, ptr noundef nonnull %177)
  %184 = tail call i32 @fputs(ptr noundef nonnull @.str.33, ptr noundef nonnull %177)
  %185 = tail call i32 @fputs(ptr noundef nonnull @.str.34, ptr noundef nonnull %177)
  tail call void @fwrite32le(i32 noundef 18, ptr noundef nonnull %177)
  %186 = icmp eq i32 %.sroa.74.0273436, 32
  %187 = select i1 %186, i16 3, i16 1
  tail call void @fwrite16le(i16 noundef zeroext %187, ptr noundef nonnull %177)
  %188 = trunc i32 %.sroa.63.0261438 to i16
  tail call void @fwrite16le(i16 noundef zeroext %188, ptr noundef nonnull %177)
  tail call void @fwrite32le(i32 noundef %.sroa.95.0285434, ptr noundef nonnull %177)
  %189 = mul i32 %165, %.sroa.95.0285434
  tail call void @fwrite32le(i32 noundef %189, ptr noundef nonnull %177)
  %190 = trunc i32 %165 to i16
  tail call void @fwrite16le(i16 noundef zeroext %190, ptr noundef nonnull %177)
  %191 = trunc i32 %.sroa.74.0273436 to i16
  tail call void @fwrite16le(i16 noundef zeroext %191, ptr noundef nonnull %177)
  tail call void @fwrite16le(i16 noundef zeroext 0, ptr noundef nonnull %177)
  %192 = tail call i32 @fputs(ptr noundef nonnull @.str.35, ptr noundef nonnull %177)
  tail call void @fwrite32le(i32 noundef -1, ptr noundef nonnull %177)
  %193 = tail call i64 @ftell(ptr noundef nonnull %177)
  %194 = add nsw i64 %193, -4
  %195 = tail call i32 @ferror(ptr noundef nonnull %177) #13
  %196 = icmp ne i32 %195, 0
  %197 = icmp slt i64 %193, 4
  %or.cond17 = or i1 %197, %196
  %198 = load ptr, ptr @stderr, align 8, !tbaa !5
  br i1 %or.cond17, label %199, label %206

199:                                              ; preds = %182
  %200 = tail call ptr @__errno_location() #14
  %201 = load i32, ptr %200, align 4, !tbaa !10
  %202 = tail call ptr @strerror(i32 noundef %201) #13
  %203 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %198, ptr noundef nonnull @.str.36, ptr noundef %202) #11
  %204 = tail call i32 @fclose(ptr noundef nonnull %177)
  %205 = tail call signext i8 @alcCaptureCloseDevice(ptr noundef nonnull %166) #13
  br label %265

206:                                              ; preds = %182
  %.not213 = icmp eq i32 %.sroa.74.0273436, 8
  %207 = select i1 %.not213, ptr @.str.26, ptr @.str.25
  %208 = select i1 %186, ptr @.str.24, ptr %207
  %209 = fpext float %.sroa.56.0249440 to double
  %210 = fcmp une float %.sroa.56.0249440, 1.000000e+00
  %211 = select i1 %210, ptr @.str.38, ptr @.str.39
  %212 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %198, ptr noundef nonnull @.str.37, ptr noundef %.0181297432, ptr noundef nonnull %208, i32 noundef %.sroa.74.0273436, ptr noundef nonnull %164, i32 noundef %.sroa.95.0285434, double noundef %209, ptr noundef nonnull %211) #11
  tail call void @alcCaptureStart(ptr noundef nonnull %166) #13
  %213 = uitofp i32 %.sroa.95.0285434 to double
  %214 = fdiv double 0.000000e+00, %213
  %215 = fcmp olt double %214, %209
  br i1 %215, label %.lr.ph327, label %.critedge

.lr.ph327:                                        ; preds = %206
  %216 = zext nneg i32 %165 to i64
  br label %217

217:                                              ; preds = %.lr.ph327, %241
  %.sroa.49.0326 = phi i32 [ 0, %.lr.ph327 ], [ %.sroa.49.1, %241 ]
  %.sroa.112.0325 = phi ptr [ null, %.lr.ph327 ], [ %.sroa.112.2, %241 ]
  %.sroa.119.0324 = phi i32 [ 0, %.lr.ph327 ], [ %.sroa.119.2, %241 ]
  %218 = call i32 @alcGetError(ptr noundef nonnull %166) #13
  %219 = icmp eq i32 %218, 0
  br i1 %219, label %220, label %.critedge

220:                                              ; preds = %217
  %221 = call i32 @ferror(ptr noundef %177) #13
  %.not214 = icmp eq i32 %221, 0
  br i1 %.not214, label %222, label %.critedge

222:                                              ; preds = %220
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #13
  store i32 0, ptr %4, align 4, !tbaa !10
  %223 = load ptr, ptr @stderr, align 8, !tbaa !5
  %224 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %223, ptr noundef nonnull @.str.40, i32 noundef %.sroa.49.0326) #11
  call void @alcGetIntegerv(ptr noundef nonnull %166, i32 noundef 786, i32 noundef 1, ptr noundef nonnull %4) #13
  %225 = load i32, ptr %4, align 4, !tbaa !10
  %226 = icmp slt i32 %225, 1
  br i1 %226, label %227, label %228

227:                                              ; preds = %222
  call void @al_nssleep(i64 noundef 10000000) #13
  br label %241, !llvm.loop !12

228:                                              ; preds = %222
  %229 = icmp sgt i32 %225, %.sroa.119.0324
  br i1 %229, label %230, label %234

230:                                              ; preds = %228
  %231 = zext nneg i32 %225 to i64
  %232 = call noalias ptr @calloc(i64 noundef %216, i64 noundef %231) #15
  call void @free(ptr noundef %.sroa.112.0325) #13
  %233 = load i32, ptr %4, align 4, !tbaa !10
  br label %234

234:                                              ; preds = %230, %228
  %235 = phi i32 [ %233, %230 ], [ %225, %228 ]
  %.sroa.119.1 = phi i32 [ %233, %230 ], [ %.sroa.119.0324, %228 ]
  %.sroa.112.1 = phi ptr [ %232, %230 ], [ %.sroa.112.0325, %228 ]
  call void @alcCaptureSamples(ptr noundef nonnull %166, ptr noundef %.sroa.112.1, i32 noundef %235) #13
  %236 = load i32, ptr %4, align 4, !tbaa !10
  %237 = zext i32 %236 to i64
  %238 = call i64 @fwrite(ptr noundef %.sroa.112.1, i64 noundef %216, i64 noundef %237, ptr noundef %177)
  %239 = trunc i64 %238 to i32
  %240 = add i32 %.sroa.49.0326, %239
  br label %241

241:                                              ; preds = %234, %227
  %.sroa.119.2 = phi i32 [ %.sroa.119.0324, %227 ], [ %.sroa.119.1, %234 ]
  %.sroa.112.2 = phi ptr [ %.sroa.112.0325, %227 ], [ %.sroa.112.1, %234 ]
  %.sroa.49.1 = phi i32 [ %.sroa.49.0326, %227 ], [ %240, %234 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #13
  %242 = uitofp i32 %.sroa.49.1 to double
  %243 = fdiv double %242, %213
  %244 = fcmp olt double %243, %209
  br i1 %244, label %217, label %.critedge

.critedge:                                        ; preds = %220, %241, %217, %206
  %.sroa.112.0.lcssa = phi ptr [ null, %206 ], [ %.sroa.112.0325, %217 ], [ %.sroa.112.2, %241 ], [ %.sroa.112.0325, %220 ]
  %.sroa.49.0.lcssa = phi i32 [ 0, %206 ], [ %.sroa.49.0326, %217 ], [ %.sroa.49.1, %241 ], [ %.sroa.49.0326, %220 ]
  %.1172 = phi i32 [ 0, %206 ], [ %218, %217 ], [ 0, %241 ], [ 0, %220 ]
  call void @alcCaptureStop(ptr noundef nonnull %166) #13
  %245 = load ptr, ptr @stderr, align 8, !tbaa !5
  %246 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %245, ptr noundef nonnull @.str.41, i32 noundef %.sroa.49.0.lcssa) #11
  %.not215 = icmp eq i32 %.1172, 0
  br i1 %.not215, label %251, label %247

247:                                              ; preds = %.critedge
  %248 = load ptr, ptr @stderr, align 8, !tbaa !5
  %249 = call ptr @alcGetString(ptr noundef nonnull %166, i32 noundef %.1172) #13
  %250 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %248, ptr noundef nonnull @.str.42, i32 noundef %.1172, ptr noundef %249) #11
  br label %251

251:                                              ; preds = %247, %.critedge
  %252 = call signext i8 @alcCaptureCloseDevice(ptr noundef nonnull %166) #13
  call void @free(ptr noundef %.sroa.112.0.lcssa) #13
  %253 = call i64 @ftell(ptr noundef %177)
  %254 = call i32 @fseek(ptr noundef %177, i64 noundef %194, i32 noundef 0)
  %255 = icmp eq i32 %254, 0
  br i1 %255, label %256, label %263

256:                                              ; preds = %251
  %257 = mul i32 %.sroa.49.0.lcssa, %165
  call void @fwrite32le(i32 noundef %257, ptr noundef %177)
  %258 = call i32 @fseek(ptr noundef %177, i64 noundef 4, i32 noundef 0)
  %259 = icmp eq i32 %258, 0
  br i1 %259, label %260, label %263

260:                                              ; preds = %256
  %261 = trunc i64 %253 to i32
  %262 = add i32 %261, -8
  call void @fwrite32le(i32 noundef %262, ptr noundef %177)
  br label %263

263:                                              ; preds = %256, %260, %251
  %264 = call i32 @fclose(ptr noundef %177)
  br label %265

265:                                              ; preds = %.thread, %263, %199, %178, %168, %7
  %.2 = phi i32 [ 0, %7 ], [ 1, %199 ], [ 0, %263 ], [ 1, %178 ], [ 1, %168 ], [ %.1.ph, %.thread ]
  ret i32 %.2
}

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nofree nounwind willreturn
declare i64 @strtoul(ptr noundef readonly, ptr nocapture noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nofree nounwind willreturn
declare float @strtof(ptr noundef readonly, ptr nocapture noundef) local_unnamed_addr #4

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

declare ptr @alcCaptureOpenDevice(ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #5

declare ptr @alcGetString(ptr noundef, i32 noundef) local_unnamed_addr #5

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

declare signext i8 @alcCaptureCloseDevice(ptr noundef) local_unnamed_addr #5

; Function Attrs: nofree nounwind
declare noundef i32 @fputs(ptr nocapture noundef readonly, ptr nocapture noundef) local_unnamed_addr #2

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

; Function Attrs: nounwind uwtable
declare hidden void @fwrite16le(i16 noundef zeroext, ptr noundef) local_unnamed_addr #0

; Function Attrs: nofree nounwind
declare noundef i64 @ftell(ptr nocapture noundef) local_unnamed_addr #2

; Function Attrs: nofree nounwind memory(read)
declare noundef i32 @ferror(ptr nocapture noundef) local_unnamed_addr #6

; Function Attrs: nounwind
declare ptr @strerror(i32 noundef) local_unnamed_addr #7

; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(none)
declare ptr @__errno_location() local_unnamed_addr #8

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

declare void @alcCaptureStart(ptr noundef) local_unnamed_addr #5

declare i32 @alcGetError(ptr noundef) local_unnamed_addr #5

declare void @alcGetIntegerv(ptr noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #5

declare void @al_nssleep(i64 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @calloc(i64 noundef, i64 noundef) local_unnamed_addr #9

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #10

declare void @alcCaptureSamples(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #5

; Function Attrs: nofree nounwind
declare noundef i64 @fwrite(ptr nocapture noundef, i64 noundef, i64 noundef, ptr nocapture noundef) local_unnamed_addr #2

declare void @alcCaptureStop(ptr noundef) local_unnamed_addr #5

; Function Attrs: nofree nounwind
declare noundef i32 @fseek(ptr nocapture noundef, i64 noundef, i32 noundef) local_unnamed_addr #2

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { mustprogress nofree nounwind willreturn memory(argmem: read) "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 = { mustprogress nofree nounwind willreturn "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 = { "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 = { nofree nounwind memory(read) "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 = { 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 #8 = { mustprogress nofree nosync nounwind willreturn memory(none) "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 nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "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 #10 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "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 #11 = { cold nounwind }
attributes #12 = { nounwind willreturn memory(read) }
attributes #13 = { nounwind }
attributes #14 = { nounwind willreturn memory(none) }
attributes #15 = { nounwind allocsize(0,1) }

!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 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"int", !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}


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