; LLVM IR from Try/Tempest :: Engine/thirdparty/openal-soft/examples (alrecord)

; 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 %716

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 = %353, %64
  %66 = load i32, ptr %4, align 4, !tbaa !5
  %67 = icmp sgt i32 %66, 0
  br i1 %67, label %68, label %354

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 %351

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 %351

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 %351

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 %351

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 %351

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 %351

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 %351

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 %351

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 %351

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 %351

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 %351

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 %351

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
  store i32 0, ptr %13, align 4
  br label %351

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

353:                                              ; preds = %351
  br label %65, !llvm.loop !26

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

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

369:                                              ; preds = %365
  store i32 4352, ptr %11, align 4, !tbaa !5
  br label %382

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

374:                                              ; preds = %370
  store i32 4353, ptr %11, align 4, !tbaa !5
  br label %381

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

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

380:                                              ; preds = %379, %375
  br label %381

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

382:                                              ; preds = %381, %369
  br label %406

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

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

391:                                              ; preds = %387
  store i32 4354, ptr %11, align 4, !tbaa !5
  br label %404

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

396:                                              ; preds = %392
  store i32 4355, ptr %11, align 4, !tbaa !5
  br label %403

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

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

402:                                              ; preds = %401, %397
  br label %403

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

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

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

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

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

420:                                              ; preds = %416
  %421 = load ptr, ptr %7, align 8, !tbaa !9
  br label %423

422:                                              ; preds = %416
  br label %423

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

428:                                              ; preds = %423
  br label %435

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

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

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

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

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

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

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

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

552:                                              ; preds = %546
  br label %559

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

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

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

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

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

604:                                              ; preds = %598, %593, %581
  %605 = phi i1 [ false, %593 ], [ false, %581 ], [ %603, %598 ]
  br i1 %605, label %606, label %657

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

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

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

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

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

654:                                              ; preds = %634, %615
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  %655 = load i32, ptr %13, align 4
  switch i32 %655, label %718 [
    i32 0, label %656
    i32 4, label %581
  ]

656:                                              ; preds = %654
  br label %581, !llvm.loop !28

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

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

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

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

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

710:                                              ; preds = %704, %692
  br label %711

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

716:                                              ; preds = %711, %534, %459, %435, %351, %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
  %717 = load i32, ptr %3, align 4
  ret i32 %717

718:                                              ; preds = %654
  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