; LLVM IR from dbry/wavpack-stream :: src (pack_utils)

; 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.anon.1 = type { i8, i8 }
%struct.WavpackStreamConfig = type { float, float, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [16 x i8], i8, i32, ptr }
%struct.WavpackContext = type { %struct.WavpackStreamConfig, ptr, i32, i32, ptr, i32, ptr, ptr, ptr, ptr, ptr, ptr, i64, i64, i64, i64, i64, i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, i8, ptr, ptr, i32, i32, ptr, [8 x i8], ptr, [80 x i8] }
%struct.WavpackStream = type { %struct.WavpackHeader, %struct.words_data, ptr, ptr, ptr, ptr, ptr, i64, i64, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, %struct.bs, %struct.bs, %struct.bs, float, i8, i8, i8, i8, i8, i8, i8, i8, %struct.anon, [16 x %struct.decorr_pass], %struct.decorr_pass, ptr, %struct.anon.0 }
%struct.WavpackHeader = type { [4 x i8], i16, i16, i32 }
%struct.words_data = type { [2 x i32], [2 x i32], i32, i32, i32, i32, i32, [2 x %struct.entropy_data] }
%struct.entropy_data = type { [3 x i32], i32, i32 }
%struct.bs = type { ptr, ptr, ptr, ptr, i32, i32, i32 }
%struct.anon = type { [2 x i32], [2 x i32], [2 x i32], double, double, double, ptr, ptr, i32 }
%struct.decorr_pass = type { i32, i32, i32, i32, [8 x i32], [8 x i32], i32, i32, i32, i32 }
%struct.anon.0 = type { ptr, ptr, ptr, ptr, ptr, i8, i8, i32, i32, i32, ptr, i32, i32, i32, [2 x %struct.DSDfilters], ptr }
%struct.DSDfilters = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }

@.str.1 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [35 x i8], align 1
@sample_rates = external constant [16 x i32], align 16
@.str.6 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [35 x i8], align 1
@stereo_pairs = external hidden constant [18 x %struct.anon.1], align 16
@.str.11 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [43 x i8], align 1

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

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

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

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

; Function Attrs: nounwind willreturn memory(read)
declare i64 @strlen(ptr noundef) #3

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

; Function Attrs: nounwind uwtable
define dso_local i32 @WavpackStreamSetConfiguration64(ptr noundef %0, ptr noundef %1, i64 noundef %2, ptr noundef %3) #5 {
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i64, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca i8, align 1
  %20 = alloca i8, align 1
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store i64 %2, ptr %8, align 8, !tbaa !9
  store ptr %3, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #9
  store i32 0, ptr %11, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #9
  %23 = load ptr, ptr %7, align 8, !tbaa !5
  %24 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %23, i32 0, i32 13
  %25 = load i32, ptr %24, align 4, !tbaa !13
  store i32 %25, ptr %12, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #9
  %26 = load ptr, ptr %7, align 8, !tbaa !5
  %27 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %26, i32 0, i32 7
  %28 = load i32, ptr %27, align 4, !tbaa !16
  store i32 %28, ptr %13, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #9
  %29 = load ptr, ptr %7, align 8, !tbaa !5
  %30 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %29, i32 0, i32 12
  %31 = load i32, ptr %30, align 8, !tbaa !17
  %32 = icmp sle i32 %31, 0
  br i1 %32, label %33, label %38

33:                                               ; preds = %4
  %34 = load ptr, ptr %6, align 8, !tbaa !5
  %35 = getelementptr inbounds %struct.WavpackContext, ptr %34, i32 0, i32 46
  %36 = getelementptr inbounds [80 x i8], ptr %35, i64 0, i64 0
  %37 = call ptr @strcpy(ptr noundef %36, ptr noundef @.str.1) #9
  store i32 0, ptr %5, align 4
  store i32 1, ptr %15, align 4
  br label %844

38:                                               ; preds = %4
  %39 = load i32, ptr %13, align 4, !tbaa !11
  %40 = icmp sle i32 %39, 0
  br i1 %40, label %44, label %41

41:                                               ; preds = %38
  %42 = load i32, ptr %13, align 4, !tbaa !11
  %43 = icmp sgt i32 %42, 8192
  br i1 %43, label %44, label %49

44:                                               ; preds = %41, %38
  %45 = load ptr, ptr %6, align 8, !tbaa !5
  %46 = getelementptr inbounds %struct.WavpackContext, ptr %45, i32 0, i32 46
  %47 = getelementptr inbounds [80 x i8], ptr %46, i64 0, i64 0
  %48 = call ptr @strcpy(ptr noundef %47, ptr noundef @.str.2) #9
  store i32 0, ptr %5, align 4
  store i32 1, ptr %15, align 4
  br label %844

49:                                               ; preds = %41
  %50 = load ptr, ptr %7, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %50, i32 0, i32 9
  %52 = load i32, ptr %51, align 4, !tbaa !18
  %53 = icmp ne i32 %52, 0
  br i1 %53, label %54, label %69

54:                                               ; preds = %49
  %55 = load ptr, ptr %7, align 8, !tbaa !5
  %56 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %55, i32 0, i32 9
  %57 = load i32, ptr %56, align 4, !tbaa !18
  %58 = icmp slt i32 %57, 50
  br i1 %58, label %64, label %59

59:                                               ; preds = %54
  %60 = load ptr, ptr %7, align 8, !tbaa !5
  %61 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %60, i32 0, i32 9
  %62 = load i32, ptr %61, align 4, !tbaa !18
  %63 = icmp sgt i32 %62, 8000
  br i1 %63, label %64, label %69

64:                                               ; preds = %59, %54
  %65 = load ptr, ptr %6, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.WavpackContext, ptr %65, i32 0, i32 46
  %67 = getelementptr inbounds [80 x i8], ptr %66, i64 0, i64 0
  %68 = call ptr @strcpy(ptr noundef %67, ptr noundef @.str.3) #9
  store i32 0, ptr %5, align 4
  store i32 1, ptr %15, align 4
  br label %844

69:                                               ; preds = %59, %49
  %70 = load ptr, ptr %7, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %70, i32 0, i32 10
  %72 = load i32, ptr %71, align 8, !tbaa !19
  %73 = icmp ne i32 %72, 0
  br i1 %73, label %74, label %89

74:                                               ; preds = %69
  %75 = load ptr, ptr %7, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %75, i32 0, i32 10
  %77 = load i32, ptr %76, align 8, !tbaa !19
  %78 = icmp slt i32 %77, 256
  br i1 %78, label %84, label %79

79:                                               ; preds = %74
  %80 = load ptr, ptr %7, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %80, i32 0, i32 10
  %82 = load i32, ptr %81, align 8, !tbaa !19
  %83 = icmp sgt i32 %82, 16384
  br i1 %83, label %84, label %89

84:                                               ; preds = %79, %74
  %85 = load ptr, ptr %6, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct.WavpackContext, ptr %85, i32 0, i32 46
  %87 = getelementptr inbounds [80 x i8], ptr %86, i64 0, i64 0
  %88 = call ptr @strcpy(ptr noundef %87, ptr noundef @.str.4) #9
  store i32 0, ptr %5, align 4
  store i32 1, ptr %15, align 4
  br label %844

89:                                               ; preds = %79, %69
  %90 = load ptr, ptr %7, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %90, i32 0, i32 4
  %92 = load i32, ptr %91, align 8, !tbaa !20
  %93 = and i32 %92, 48
  %94 = icmp ne i32 %93, 0
  br i1 %94, label %95, label %110

95:                                               ; preds = %89
  %96 = load ptr, ptr %7, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %96, i32 0, i32 3
  %98 = load i32, ptr %97, align 4, !tbaa !21
  %99 = icmp eq i32 %98, 1
  br i1 %99, label %100, label %110

100:                                              ; preds = %95
  %101 = load ptr, ptr %7, align 8, !tbaa !5
  %102 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %101, i32 0, i32 2
  %103 = load i32, ptr %102, align 8, !tbaa !22
  %104 = icmp eq i32 %103, 8
  br i1 %104, label %105, label %110

105:                                              ; preds = %100
  %106 = load ptr, ptr %6, align 8, !tbaa !5
  %107 = getelementptr inbounds %struct.WavpackContext, ptr %106, i32 0, i32 46
  %108 = getelementptr inbounds [80 x i8], ptr %107, i64 0, i64 0
  %109 = call ptr @strcpy(ptr noundef %108, ptr noundef @.str.5) #9
  store i32 0, ptr %5, align 4
  store i32 1, ptr %15, align 4
  br label %844

110:                                              ; preds = %100, %95, %89
  %111 = load ptr, ptr %7, align 8, !tbaa !5
  %112 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %111, i32 0, i32 3
  %113 = load i32, ptr %112, align 4, !tbaa !21
  %114 = sub nsw i32 %113, 1
  store i32 %114, ptr %10, align 4, !tbaa !11
  br label %115

115:                                              ; preds = %110
  %116 = load i64, ptr %8, align 8, !tbaa !9
  %117 = load ptr, ptr %6, align 8, !tbaa !5
  %118 = getelementptr inbounds %struct.WavpackContext, ptr %117, i32 0, i32 16
  store i64 %116, ptr %118, align 8, !tbaa !23
  %119 = load ptr, ptr %7, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %119, i32 0, i32 12
  %121 = load i32, ptr %120, align 8, !tbaa !17
  %122 = load ptr, ptr %6, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.WavpackContext, ptr %122, i32 0, i32 0
  %124 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %123, i32 0, i32 12
  store i32 %121, ptr %124, align 8, !tbaa !25
  %125 = load ptr, ptr %7, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %125, i32 0, i32 7
  %127 = load i32, ptr %126, align 4, !tbaa !16
  %128 = load ptr, ptr %6, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.WavpackContext, ptr %128, i32 0, i32 0
  %130 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %129, i32 0, i32 7
  store i32 %127, ptr %130, align 4, !tbaa !26
  %131 = load ptr, ptr %7, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %131, i32 0, i32 13
  %133 = load i32, ptr %132, align 4, !tbaa !13
  %134 = load ptr, ptr %6, align 8, !tbaa !5
  %135 = getelementptr inbounds %struct.WavpackContext, ptr %134, i32 0, i32 0
  %136 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %135, i32 0, i32 13
  store i32 %133, ptr %136, align 4, !tbaa !27
  %137 = load ptr, ptr %7, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %137, i32 0, i32 2
  %139 = load i32, ptr %138, align 8, !tbaa !22
  %140 = load ptr, ptr %6, align 8, !tbaa !5
  %141 = getelementptr inbounds %struct.WavpackContext, ptr %140, i32 0, i32 0
  %142 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %141, i32 0, i32 2
  store i32 %139, ptr %142, align 8, !tbaa !28
  %143 = load ptr, ptr %7, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %143, i32 0, i32 3
  %145 = load i32, ptr %144, align 4, !tbaa !21
  %146 = load ptr, ptr %6, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.WavpackContext, ptr %146, i32 0, i32 0
  %148 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %147, i32 0, i32 3
  store i32 %145, ptr %148, align 4, !tbaa !29
  %149 = load ptr, ptr %7, align 8, !tbaa !5
  %150 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %149, i32 0, i32 9
  %151 = load i32, ptr %150, align 4, !tbaa !18
  %152 = load ptr, ptr %6, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.WavpackContext, ptr %152, i32 0, i32 0
  %154 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %153, i32 0, i32 9
  store i32 %151, ptr %154, align 4, !tbaa !30
  %155 = load ptr, ptr %7, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %155, i32 0, i32 10
  %157 = load i32, ptr %156, align 8, !tbaa !19
  %158 = load ptr, ptr %6, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.WavpackContext, ptr %158, i32 0, i32 0
  %160 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %159, i32 0, i32 10
  store i32 %157, ptr %160, align 8, !tbaa !31
  %161 = load ptr, ptr %7, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %161, i32 0, i32 5
  %163 = load i32, ptr %162, align 4, !tbaa !32
  %164 = load ptr, ptr %6, align 8, !tbaa !5
  %165 = getelementptr inbounds %struct.WavpackContext, ptr %164, i32 0, i32 0
  %166 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %165, i32 0, i32 5
  store i32 %163, ptr %166, align 4, !tbaa !33
  %167 = load ptr, ptr %7, align 8, !tbaa !5
  %168 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %167, i32 0, i32 4
  %169 = load i32, ptr %168, align 8, !tbaa !20
  %170 = load ptr, ptr %6, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.WavpackContext, ptr %170, i32 0, i32 0
  %172 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %171, i32 0, i32 4
  store i32 %169, ptr %172, align 8, !tbaa !34
  %173 = load ptr, ptr %7, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %173, i32 0, i32 5
  %175 = load i32, ptr %174, align 4, !tbaa !32
  %176 = and i32 %175, 4096
  %177 = icmp ne i32 %176, 0
  br i1 %177, label %178, label %184

178:                                              ; preds = %115
  %179 = load ptr, ptr %6, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.WavpackContext, ptr %179, i32 0, i32 0
  %181 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %180, i32 0, i32 5
  %182 = load i32, ptr %181, align 4, !tbaa !33
  %183 = or i32 %182, 2048
  store i32 %183, ptr %181, align 4, !tbaa !33
  br label %184

184:                                              ; preds = %178, %115
  store i32 0, ptr %14, align 4, !tbaa !11
  br label %185

185:                                              ; preds = %200, %184
  %186 = load i32, ptr %14, align 4, !tbaa !11
  %187 = icmp slt i32 %186, 15
  br i1 %187, label %188, label %203

188:                                              ; preds = %185
  %189 = load ptr, ptr %6, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.WavpackContext, ptr %189, i32 0, i32 0
  %191 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %190, i32 0, i32 12
  %192 = load i32, ptr %191, align 8, !tbaa !25
  %193 = load i32, ptr %14, align 4, !tbaa !11
  %194 = sext i32 %193 to i64
  %195 = getelementptr inbounds [16 x i32], ptr @sample_rates, i64 0, i64 %194
  %196 = load i32, ptr %195, align 4, !tbaa !11
  %197 = icmp eq i32 %192, %196
  br i1 %197, label %198, label %199

198:                                              ; preds = %188
  br label %203

199:                                              ; preds = %188
  br label %200

200:                                              ; preds = %199
  %201 = load i32, ptr %14, align 4, !tbaa !11
  %202 = add nsw i32 %201, 1
  store i32 %202, ptr %14, align 4, !tbaa !11
  br label %185, !llvm.loop !35

203:                                              ; preds = %198, %185
  %204 = load i32, ptr %14, align 4, !tbaa !11
  %205 = shl i32 %204, 23
  %206 = load i32, ptr %10, align 4, !tbaa !11
  %207 = or i32 %206, %205
  store i32 %207, ptr %10, align 4, !tbaa !11
  %208 = load i32, ptr %10, align 4, !tbaa !11
  %209 = and i32 %208, -2147483648
  %210 = icmp ne i32 %209, 0
  br i1 %210, label %427, label %211

211:                                              ; preds = %203
  %212 = load ptr, ptr %7, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %212, i32 0, i32 8
  %214 = load i32, ptr %213, align 8, !tbaa !37
  %215 = icmp ne i32 %214, 0
  br i1 %215, label %216, label %245

216:                                              ; preds = %211
  %217 = load ptr, ptr %7, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %217, i32 0, i32 3
  %219 = load i32, ptr %218, align 4, !tbaa !21
  %220 = icmp ne i32 %219, 4
  br i1 %220, label %226, label %221

221:                                              ; preds = %216
  %222 = load ptr, ptr %7, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %222, i32 0, i32 2
  %224 = load i32, ptr %223, align 8, !tbaa !22
  %225 = icmp ne i32 %224, 32
  br i1 %225, label %226, label %231

226:                                              ; preds = %221, %216
  %227 = load ptr, ptr %6, align 8, !tbaa !5
  %228 = getelementptr inbounds %struct.WavpackContext, ptr %227, i32 0, i32 46
  %229 = getelementptr inbounds [80 x i8], ptr %228, i64 0, i64 0
  %230 = call ptr @strcpy(ptr noundef %229, ptr noundef @.str.6) #9
  store i32 0, ptr %5, align 4
  store i32 1, ptr %15, align 4
  br label %844

231:                                              ; preds = %221
  %232 = load ptr, ptr %7, align 8, !tbaa !5
  %233 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %232, i32 0, i32 8
  %234 = load i32, ptr %233, align 8, !tbaa !37
  %235 = load ptr, ptr %6, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.WavpackContext, ptr %235, i32 0, i32 0
  %237 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %236, i32 0, i32 8
  store i32 %234, ptr %237, align 8, !tbaa !38
  %238 = load ptr, ptr %6, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.WavpackContext, ptr %238, i32 0, i32 0
  %240 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %239, i32 0, i32 5
  %241 = load i32, ptr %240, align 4, !tbaa !33
  %242 = or i32 %241, 128
  store i32 %242, ptr %240, align 4, !tbaa !33
  %243 = load i32, ptr %10, align 4, !tbaa !11
  %244 = or i32 %243, 128
  store i32 %244, ptr %10, align 4, !tbaa !11
  br label %291

245:                                              ; preds = %211
  %246 = load ptr, ptr %7, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %246, i32 0, i32 3
  %248 = load i32, ptr %247, align 4, !tbaa !21
  %249 = icmp slt i32 %248, 1
  br i1 %249, label %255, label %250

250:                                              ; preds = %245
  %251 = load ptr, ptr %7, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %251, i32 0, i32 3
  %253 = load i32, ptr %252, align 4, !tbaa !21
  %254 = icmp sgt i32 %253, 4
  br i1 %254, label %255, label %260

255:                                              ; preds = %250, %245
  %256 = load ptr, ptr %6, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.WavpackContext, ptr %256, i32 0, i32 46
  %258 = getelementptr inbounds [80 x i8], ptr %257, i64 0, i64 0
  %259 = call ptr @strcpy(ptr noundef %258, ptr noundef @.str.7) #9
  store i32 0, ptr %5, align 4
  store i32 1, ptr %15, align 4
  br label %844

260:                                              ; preds = %250
  %261 = load ptr, ptr %7, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %261, i32 0, i32 2
  %263 = load i32, ptr %262, align 8, !tbaa !22
  %264 = icmp slt i32 %263, 1
  br i1 %264, label %274, label %265

265:                                              ; preds = %260
  %266 = load ptr, ptr %7, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %266, i32 0, i32 2
  %268 = load i32, ptr %267, align 8, !tbaa !22
  %269 = load ptr, ptr %7, align 8, !tbaa !5
  %270 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %269, i32 0, i32 3
  %271 = load i32, ptr %270, align 4, !tbaa !21
  %272 = mul nsw i32 %271, 8
  %273 = icmp sgt i32 %268, %272
  br i1 %273, label %274, label %279

274:                                              ; preds = %265, %260
  %275 = load ptr, ptr %6, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.WavpackContext, ptr %275, i32 0, i32 46
  %277 = getelementptr inbounds [80 x i8], ptr %276, i64 0, i64 0
  %278 = call ptr @strcpy(ptr noundef %277, ptr noundef @.str.8) #9
  store i32 0, ptr %5, align 4
  store i32 1, ptr %15, align 4
  br label %844

279:                                              ; preds = %265
  %280 = load ptr, ptr %7, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %280, i32 0, i32 3
  %282 = load i32, ptr %281, align 4, !tbaa !21
  %283 = mul nsw i32 %282, 8
  %284 = load ptr, ptr %7, align 8, !tbaa !5
  %285 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %284, i32 0, i32 2
  %286 = load i32, ptr %285, align 8, !tbaa !22
  %287 = sub nsw i32 %283, %286
  %288 = shl i32 %287, 13
  %289 = load i32, ptr %10, align 4, !tbaa !11
  %290 = or i32 %289, %288
  store i32 %290, ptr %10, align 4, !tbaa !11
  br label %291

291:                                              ; preds = %279, %231
  %292 = load ptr, ptr %7, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %292, i32 0, i32 10
  %294 = load i32, ptr %293, align 8, !tbaa !19
  %295 = icmp ne i32 %294, 0
  br i1 %295, label %296, label %311

296:                                              ; preds = %291
  %297 = load ptr, ptr %7, align 8, !tbaa !5
  %298 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %297, i32 0, i32 8
  %299 = load i32, ptr %298, align 8, !tbaa !37
  %300 = icmp ne i32 %299, 0
  br i1 %300, label %306, label %301

301:                                              ; preds = %296
  %302 = load ptr, ptr %7, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %302, i32 0, i32 2
  %304 = load i32, ptr %303, align 8, !tbaa !22
  %305 = icmp sgt i32 %304, 24
  br i1 %305, label %306, label %311

306:                                              ; preds = %301, %296
  %307 = load ptr, ptr %6, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.WavpackContext, ptr %307, i32 0, i32 46
  %309 = getelementptr inbounds [80 x i8], ptr %308, i64 0, i64 0
  %310 = call ptr @strcpy(ptr noundef %309, ptr noundef @.str.9) #9
  store i32 0, ptr %5, align 4
  store i32 1, ptr %15, align 4
  br label %844

311:                                              ; preds = %301, %291
  %312 = load ptr, ptr %7, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %312, i32 0, i32 5
  %314 = load i32, ptr %313, align 4, !tbaa !32
  %315 = and i32 %314, 8
  %316 = icmp ne i32 %315, 0
  br i1 %316, label %317, label %399

317:                                              ; preds = %311
  %318 = load i32, ptr %10, align 4, !tbaa !11
  %319 = or i32 %318, 1544
  store i32 %319, ptr %10, align 4, !tbaa !11
  %320 = load ptr, ptr %6, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct.WavpackContext, ptr %320, i32 0, i32 0
  %322 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %321, i32 0, i32 5
  %323 = load i32, ptr %322, align 4, !tbaa !33
  %324 = and i32 %323, 32768
  %325 = icmp ne i32 %324, 0
  br i1 %325, label %334, label %326

326:                                              ; preds = %317
  %327 = load ptr, ptr %6, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.WavpackContext, ptr %327, i32 0, i32 0
  %329 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %328, i32 0, i32 5
  %330 = load i32, ptr %329, align 4, !tbaa !33
  %331 = or i32 %330, 16448
  store i32 %331, ptr %329, align 4, !tbaa !33
  %332 = load i32, ptr %10, align 4, !tbaa !11
  %333 = or i32 %332, 536870976
  store i32 %333, ptr %10, align 4, !tbaa !11
  br label %351

334:                                              ; preds = %317
  %335 = load ptr, ptr %6, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.WavpackContext, ptr %335, i32 0, i32 0
  %337 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %336, i32 0, i32 5
  %338 = load i32, ptr %337, align 4, !tbaa !33
  %339 = and i32 %338, 64
  %340 = icmp ne i32 %339, 0
  br i1 %340, label %341, label %350

341:                                              ; preds = %334
  %342 = load ptr, ptr %7, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %342, i32 0, i32 1
  %344 = load float, ptr %343, align 4, !tbaa !39
  %345 = load ptr, ptr %6, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.WavpackContext, ptr %345, i32 0, i32 0
  %347 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %346, i32 0, i32 1
  store float %344, ptr %347, align 4, !tbaa !40
  %348 = load i32, ptr %10, align 4, !tbaa !11
  %349 = or i32 %348, 536870976
  store i32 %349, ptr %10, align 4, !tbaa !11
  br label %350

350:                                              ; preds = %341, %334
  br label %351

351:                                              ; preds = %350, %326
  %352 = load ptr, ptr %6, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.WavpackContext, ptr %352, i32 0, i32 0
  %354 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %353, i32 0, i32 5
  %355 = load i32, ptr %354, align 4, !tbaa !33
  %356 = and i32 %355, 1048608
  %357 = icmp ne i32 %356, 0
  br i1 %357, label %358, label %361

358:                                              ; preds = %351
  %359 = load i32, ptr %10, align 4, !tbaa !11
  %360 = or i32 %359, 32
  store i32 %360, ptr %10, align 4, !tbaa !11
  br label %361

361:                                              ; preds = %358, %351
  %362 = load ptr, ptr %7, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %362, i32 0, i32 5
  %364 = load i32, ptr %363, align 4, !tbaa !32
  %365 = and i32 %364, 8192
  %366 = icmp ne i32 %365, 0
  br i1 %366, label %367, label %390

367:                                              ; preds = %361
  %368 = load ptr, ptr %7, align 8, !tbaa !5
  %369 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %368, i32 0, i32 0
  %370 = load float, ptr %369, align 8, !tbaa !41
  %371 = fpext float %370 to double
  %372 = fmul double %371, 2.560000e+05
  %373 = load ptr, ptr %7, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %373, i32 0, i32 12
  %375 = load i32, ptr %374, align 8, !tbaa !17
  %376 = sitofp i32 %375 to double
  %377 = fdiv double %372, %376
  %378 = load ptr, ptr %7, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %378, i32 0, i32 7
  %380 = load i32, ptr %379, align 4, !tbaa !16
  %381 = sitofp i32 %380 to double
  %382 = fdiv double %377, %381
  %383 = fadd double %382, 5.000000e-01
  %384 = call double @llvm.floor.f64(double %383)
  %385 = fptoui double %384 to i32
  store i32 %385, ptr %11, align 4, !tbaa !11
  %386 = load i32, ptr %11, align 4, !tbaa !11
  %387 = icmp ugt i32 %386, 16384
  br i1 %387, label %388, label %389

388:                                              ; preds = %367
  store i32 16384, ptr %11, align 4, !tbaa !11
  br label %389

389:                                              ; preds = %388, %367
  br label %398

390:                                              ; preds = %361
  %391 = load ptr, ptr %7, align 8, !tbaa !5
  %392 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %391, i32 0, i32 0
  %393 = load float, ptr %392, align 8, !tbaa !41
  %394 = fpext float %393 to double
  %395 = call double @llvm.fmuladd.f64(double %394, double 2.560000e+02, double 5.000000e-01)
  %396 = call double @llvm.floor.f64(double %395)
  %397 = fptoui double %396 to i32
  store i32 %397, ptr %11, align 4, !tbaa !11
  br label %398

398:                                              ; preds = %390, %389
  br label %402

399:                                              ; preds = %311
  %400 = load i32, ptr %10, align 4, !tbaa !11
  %401 = or i32 %400, 32
  store i32 %401, ptr %10, align 4, !tbaa !11
  br label %402

402:                                              ; preds = %399, %398
  %403 = load ptr, ptr %7, align 8, !tbaa !5
  %404 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %403, i32 0, i32 5
  %405 = load i32, ptr %404, align 4, !tbaa !32
  %406 = and i32 %405, 65536
  %407 = icmp ne i32 %406, 0
  br i1 %407, label %408, label %414

408:                                              ; preds = %402
  %409 = load ptr, ptr %7, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %409, i32 0, i32 5
  %411 = load i32, ptr %410, align 4, !tbaa !32
  %412 = and i32 %411, 16
  %413 = icmp ne i32 %412, 0
  br i1 %413, label %414, label %417

414:                                              ; preds = %408, %402
  %415 = load i32, ptr %10, align 4, !tbaa !11
  %416 = or i32 %415, 16
  store i32 %416, ptr %10, align 4, !tbaa !11
  br label %417

417:                                              ; preds = %414, %408
  %418 = load ptr, ptr %7, align 8, !tbaa !5
  %419 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %418, i32 0, i32 5
  %420 = load i32, ptr %419, align 4, !tbaa !32
  %421 = and i32 %420, 524288
  %422 = icmp ne i32 %421, 0
  br i1 %422, label %423, label %426

423:                                              ; preds = %417
  %424 = load ptr, ptr %6, align 8, !tbaa !5
  %425 = getelementptr inbounds %struct.WavpackContext, ptr %424, i32 0, i32 20
  store i32 1, ptr %425, align 8, !tbaa !42
  br label %426

426:                                              ; preds = %423, %417
  br label %427

427:                                              ; preds = %426, %203
  %428 = load ptr, ptr %9, align 8, !tbaa !5
  %429 = icmp ne ptr %428, null
  br i1 %429, label %430, label %511

430:                                              ; preds = %427
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #9
  store i32 0, ptr %16, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #9
  %431 = load i32, ptr %12, align 4, !tbaa !11
  store i32 %431, ptr %17, align 4, !tbaa !11
  %432 = load ptr, ptr %9, align 8, !tbaa !5
  %433 = call i64 @strlen(ptr noundef %432) #10
  %434 = trunc i64 %433 to i32
  %435 = load i32, ptr %13, align 4, !tbaa !11
  %436 = icmp sgt i32 %434, %435
  br i1 %436, label %437, label %442

437:                                              ; preds = %430
  %438 = load ptr, ptr %6, align 8, !tbaa !5
  %439 = getelementptr inbounds %struct.WavpackContext, ptr %438, i32 0, i32 46
  %440 = getelementptr inbounds [80 x i8], ptr %439, i64 0, i64 0
  %441 = call ptr @strcpy(ptr noundef %440, ptr noundef @.str.10) #9
  store i32 0, ptr %5, align 4
  store i32 1, ptr %15, align 4
  br label %508

442:                                              ; preds = %430
  br label %443

443:                                              ; preds = %481, %442
  %444 = load ptr, ptr %9, align 8, !tbaa !5
  %445 = load i8, ptr %444, align 1, !tbaa !43
  %446 = icmp ne i8 %445, 0
  br i1 %446, label %447, label %482

447:                                              ; preds = %443
  %448 = load ptr, ptr %9, align 8, !tbaa !5
  %449 = load i8, ptr %448, align 1, !tbaa !43
  %450 = zext i8 %449 to i32
  %451 = icmp sle i32 %450, 32
  br i1 %451, label %452, label %480

452:                                              ; preds = %447
  %453 = load ptr, ptr %9, align 8, !tbaa !5
  %454 = load i8, ptr %453, align 1, !tbaa !43
  %455 = zext i8 %454 to i32
  %456 = load i32, ptr %16, align 4, !tbaa !11
  %457 = icmp sgt i32 %455, %456
  br i1 %457, label %458, label %480

458:                                              ; preds = %452
  %459 = load i32, ptr %17, align 4, !tbaa !11
  %460 = load ptr, ptr %9, align 8, !tbaa !5
  %461 = load i8, ptr %460, align 1, !tbaa !43
  %462 = zext i8 %461 to i32
  %463 = sub nsw i32 %462, 1
  %464 = shl i32 1, %463
  %465 = and i32 %459, %464
  %466 = icmp ne i32 %465, 0
  br i1 %466, label %467, label %480

467:                                              ; preds = %458
  %468 = load ptr, ptr %9, align 8, !tbaa !5
  %469 = load i8, ptr %468, align 1, !tbaa !43
  %470 = zext i8 %469 to i32
  %471 = sub nsw i32 %470, 1
  %472 = shl i32 1, %471
  %473 = xor i32 %472, -1
  %474 = load i32, ptr %17, align 4, !tbaa !11
  %475 = and i32 %474, %473
  store i32 %475, ptr %17, align 4, !tbaa !11
  %476 = load ptr, ptr %9, align 8, !tbaa !5
  %477 = getelementptr inbounds i8, ptr %476, i32 1
  store ptr %477, ptr %9, align 8, !tbaa !5
  %478 = load i8, ptr %476, align 1, !tbaa !43
  %479 = zext i8 %478 to i32
  store i32 %479, ptr %16, align 4, !tbaa !11
  br label %481

480:                                              ; preds = %458, %452, %447
  br label %482

481:                                              ; preds = %467
  br label %443, !llvm.loop !44

482:                                              ; preds = %480, %443
  store i32 0, ptr %14, align 4, !tbaa !11
  br label %483

483:                                              ; preds = %504, %482
  %484 = load ptr, ptr %9, align 8, !tbaa !5
  %485 = load i32, ptr %14, align 4, !tbaa !11
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds i8, ptr %484, i64 %486
  %488 = load i8, ptr %487, align 1, !tbaa !43
  %489 = icmp ne i8 %488, 0
  br i1 %489, label %490, label %507

490:                                              ; preds = %483
  %491 = load ptr, ptr %9, align 8, !tbaa !5
  %492 = load i32, ptr %14, align 4, !tbaa !11
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds i8, ptr %491, i64 %493
  %495 = load i8, ptr %494, align 1, !tbaa !43
  %496 = zext i8 %495 to i32
  %497 = icmp ne i32 %496, 255
  br i1 %497, label %498, label %503

498:                                              ; preds = %490
  %499 = load ptr, ptr %9, align 8, !tbaa !5
  %500 = call noalias ptr @strdup(ptr noundef %499) #9
  %501 = load ptr, ptr %6, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.WavpackContext, ptr %501, i32 0, i32 40
  store ptr %500, ptr %502, align 8, !tbaa !45
  br label %507

503:                                              ; preds = %490
  br label %504

504:                                              ; preds = %503
  %505 = load i32, ptr %14, align 4, !tbaa !11
  %506 = add nsw i32 %505, 1
  store i32 %506, ptr %14, align 4, !tbaa !11
  br label %483, !llvm.loop !46

507:                                              ; preds = %498, %483
  store i32 0, ptr %15, align 4
  br label %508

508:                                              ; preds = %507, %437
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  %509 = load i32, ptr %15, align 4
  switch i32 %509, label %844 [
    i32 0, label %510
  ]

510:                                              ; preds = %508
  br label %511

511:                                              ; preds = %510, %427
  %512 = load ptr, ptr %6, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct.WavpackContext, ptr %512, i32 0, i32 33
  store i32 0, ptr %513, align 4, !tbaa !47
  br label %514

514:                                              ; preds = %777, %511
  %515 = load i32, ptr %13, align 4, !tbaa !11
  %516 = icmp ne i32 %515, 0
  br i1 %516, label %517, label %782

517:                                              ; preds = %514
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #9
  %518 = call noalias ptr @malloc(i64 noundef 2240) #11
  store ptr %518, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #9
  store i8 0, ptr %19, align 1, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #9
  store i8 0, ptr %20, align 1, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #9
  store i32 1, ptr %22, align 4, !tbaa !11
  %519 = load ptr, ptr %6, align 8, !tbaa !5
  %520 = getelementptr inbounds %struct.WavpackContext, ptr %519, i32 0, i32 36
  %521 = load ptr, ptr %520, align 8, !tbaa !48
  %522 = load ptr, ptr %6, align 8, !tbaa !5
  %523 = getelementptr inbounds %struct.WavpackContext, ptr %522, i32 0, i32 33
  %524 = load i32, ptr %523, align 4, !tbaa !47
  %525 = add nsw i32 %524, 1
  %526 = sext i32 %525 to i64
  %527 = mul i64 %526, 8
  %528 = call ptr @realloc(ptr noundef %521, i64 noundef %527) #12
  %529 = load ptr, ptr %6, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct.WavpackContext, ptr %529, i32 0, i32 36
  store ptr %528, ptr %530, align 8, !tbaa !48
  %531 = load ptr, ptr %18, align 8, !tbaa !5
  %532 = load ptr, ptr %6, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.WavpackContext, ptr %532, i32 0, i32 36
  %534 = load ptr, ptr %533, align 8, !tbaa !48
  %535 = load ptr, ptr %6, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.WavpackContext, ptr %535, i32 0, i32 33
  %537 = load i32, ptr %536, align 4, !tbaa !47
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds ptr, ptr %534, i64 %538
  store ptr %531, ptr %539, align 8, !tbaa !5
  %540 = load ptr, ptr %18, align 8, !tbaa !5
  call void @llvm.memset.p0.i64(ptr align 8 %540, i8 0, i64 2240, i1 false)
  %541 = load i32, ptr %12, align 4, !tbaa !11
  %542 = icmp ne i32 %541, 0
  br i1 %542, label %543, label %575

543:                                              ; preds = %517
  store i32 0, ptr %21, align 4, !tbaa !11
  br label %544

544:                                              ; preds = %571, %543
  %545 = load i32, ptr %21, align 4, !tbaa !11
  %546 = icmp slt i32 %545, 32
  br i1 %546, label %547, label %574

547:                                              ; preds = %544
  %548 = load i32, ptr %12, align 4, !tbaa !11
  %549 = load i32, ptr %21, align 4, !tbaa !11
  %550 = shl i32 1, %549
  %551 = and i32 %548, %550
  %552 = icmp ne i32 %551, 0
  br i1 %552, label %553, label %570

553:                                              ; preds = %547
  %554 = load i8, ptr %19, align 1, !tbaa !43
  %555 = icmp ne i8 %554, 0
  br i1 %555, label %556, label %560

556:                                              ; preds = %553
  %557 = load i32, ptr %21, align 4, !tbaa !11
  %558 = add nsw i32 %557, 1
  %559 = trunc i32 %558 to i8
  store i8 %559, ptr %20, align 1, !tbaa !43
  br label %574

560:                                              ; preds = %553
  %561 = load i32, ptr %21, align 4, !tbaa !11
  %562 = shl i32 1, %561
  %563 = xor i32 %562, -1
  %564 = load i32, ptr %12, align 4, !tbaa !11
  %565 = and i32 %564, %563
  store i32 %565, ptr %12, align 4, !tbaa !11
  %566 = load i32, ptr %21, align 4, !tbaa !11
  %567 = add nsw i32 %566, 1
  %568 = trunc i32 %567 to i8
  store i8 %568, ptr %19, align 1, !tbaa !43
  br label %569

569:                                              ; preds = %560
  br label %570

570:                                              ; preds = %569, %547
  br label %571

571:                                              ; preds = %570
  %572 = load i32, ptr %21, align 4, !tbaa !11
  %573 = add nsw i32 %572, 1
  store i32 %573, ptr %21, align 4, !tbaa !11
  br label %544, !llvm.loop !49

574:                                              ; preds = %556, %544
  br label %575

575:                                              ; preds = %574, %517
  br label %576

576:                                              ; preds = %599, %575
  %577 = load i8, ptr %20, align 1, !tbaa !43
  %578 = icmp ne i8 %577, 0
  br i1 %578, label %587, label %579

579:                                              ; preds = %576
  %580 = load ptr, ptr %9, align 8, !tbaa !5
  %581 = icmp ne ptr %580, null
  br i1 %581, label %582, label %587

582:                                              ; preds = %579
  %583 = load ptr, ptr %9, align 8, !tbaa !5
  %584 = load i8, ptr %583, align 1, !tbaa !43
  %585 = zext i8 %584 to i32
  %586 = icmp ne i32 %585, 0
  br label %587

587:                                              ; preds = %582, %579, %576
  %588 = phi i1 [ false, %579 ], [ false, %576 ], [ %586, %582 ]
  br i1 %588, label %589, label %600

589:                                              ; preds = %587
  %590 = load i8, ptr %19, align 1, !tbaa !43
  %591 = icmp ne i8 %590, 0
  br i1 %591, label %592, label %595

592:                                              ; preds = %589
  %593 = load ptr, ptr %9, align 8, !tbaa !5
  %594 = load i8, ptr %593, align 1, !tbaa !43
  store i8 %594, ptr %20, align 1, !tbaa !43
  br label %599

595:                                              ; preds = %589
  %596 = load ptr, ptr %9, align 8, !tbaa !5
  %597 = getelementptr inbounds i8, ptr %596, i32 1
  store ptr %597, ptr %9, align 8, !tbaa !5
  %598 = load i8, ptr %596, align 1, !tbaa !43
  store i8 %598, ptr %19, align 1, !tbaa !43
  br label %599

599:                                              ; preds = %595, %592
  br label %576, !llvm.loop !50

600:                                              ; preds = %587
  %601 = load i8, ptr %19, align 1, !tbaa !43
  %602 = icmp ne i8 %601, 0
  br i1 %602, label %604, label %603

603:                                              ; preds = %600
  store i8 -1, ptr %20, align 1, !tbaa !43
  store i8 -1, ptr %19, align 1, !tbaa !43
  br label %609

604:                                              ; preds = %600
  %605 = load i8, ptr %20, align 1, !tbaa !43
  %606 = icmp ne i8 %605, 0
  br i1 %606, label %608, label %607

607:                                              ; preds = %604
  store i8 -1, ptr %20, align 1, !tbaa !43
  br label %608

608:                                              ; preds = %607, %604
  br label %609

609:                                              ; preds = %608, %603
  %610 = load i32, ptr %13, align 4, !tbaa !11
  %611 = icmp sge i32 %610, 2
  br i1 %611, label %612, label %713

612:                                              ; preds = %609
  %613 = load ptr, ptr %7, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %613, i32 0, i32 5
  %615 = load i32, ptr %614, align 4, !tbaa !32
  %616 = and i32 %615, 536870912
  %617 = icmp ne i32 %616, 0
  br i1 %617, label %618, label %627

618:                                              ; preds = %612
  %619 = load i8, ptr %19, align 1, !tbaa !43
  %620 = zext i8 %619 to i32
  %621 = icmp eq i32 %620, 255
  br i1 %621, label %622, label %627

622:                                              ; preds = %618
  %623 = load i8, ptr %20, align 1, !tbaa !43
  %624 = zext i8 %623 to i32
  %625 = icmp eq i32 %624, 255
  br i1 %625, label %626, label %627

626:                                              ; preds = %622
  store i32 2, ptr %22, align 4, !tbaa !11
  br label %712

627:                                              ; preds = %622, %618, %612
  store i32 0, ptr %14, align 4, !tbaa !11
  br label %628

628:                                              ; preds = %708, %627
  %629 = load i32, ptr %14, align 4, !tbaa !11
  %630 = sext i32 %629 to i64
  %631 = icmp ult i64 %630, 18
  br i1 %631, label %632, label %711

632:                                              ; preds = %628
  %633 = load i8, ptr %19, align 1, !tbaa !43
  %634 = zext i8 %633 to i32
  %635 = load i32, ptr %14, align 4, !tbaa !11
  %636 = sext i32 %635 to i64
  %637 = getelementptr inbounds [18 x %struct.anon.1], ptr @stereo_pairs, i64 0, i64 %636
  %638 = getelementptr inbounds %struct.anon.1, ptr %637, i32 0, i32 0
  %639 = load i8, ptr %638, align 2, !tbaa !51
  %640 = zext i8 %639 to i32
  %641 = icmp eq i32 %634, %640
  br i1 %641, label %642, label %652

642:                                              ; preds = %632
  %643 = load i8, ptr %20, align 1, !tbaa !43
  %644 = zext i8 %643 to i32
  %645 = load i32, ptr %14, align 4, !tbaa !11
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds [18 x %struct.anon.1], ptr @stereo_pairs, i64 0, i64 %646
  %648 = getelementptr inbounds %struct.anon.1, ptr %647, i32 0, i32 1
  %649 = load i8, ptr %648, align 1, !tbaa !53
  %650 = zext i8 %649 to i32
  %651 = icmp eq i32 %644, %650
  br i1 %651, label %672, label %652

652:                                              ; preds = %642, %632
  %653 = load i8, ptr %19, align 1, !tbaa !43
  %654 = zext i8 %653 to i32
  %655 = load i32, ptr %14, align 4, !tbaa !11
  %656 = sext i32 %655 to i64
  %657 = getelementptr inbounds [18 x %struct.anon.1], ptr @stereo_pairs, i64 0, i64 %656
  %658 = getelementptr inbounds %struct.anon.1, ptr %657, i32 0, i32 1
  %659 = load i8, ptr %658, align 1, !tbaa !53
  %660 = zext i8 %659 to i32
  %661 = icmp eq i32 %654, %660
  br i1 %661, label %662, label %707

662:                                              ; preds = %652
  %663 = load i8, ptr %20, align 1, !tbaa !43
  %664 = zext i8 %663 to i32
  %665 = load i32, ptr %14, align 4, !tbaa !11
  %666 = sext i32 %665 to i64
  %667 = getelementptr inbounds [18 x %struct.anon.1], ptr @stereo_pairs, i64 0, i64 %666
  %668 = getelementptr inbounds %struct.anon.1, ptr %667, i32 0, i32 0
  %669 = load i8, ptr %668, align 2, !tbaa !51
  %670 = zext i8 %669 to i32
  %671 = icmp eq i32 %664, %670
  br i1 %671, label %672, label %707

672:                                              ; preds = %662, %642
  %673 = load i8, ptr %20, align 1, !tbaa !43
  %674 = zext i8 %673 to i32
  %675 = icmp sle i32 %674, 32
  br i1 %675, label %676, label %692

676:                                              ; preds = %672
  %677 = load i32, ptr %12, align 4, !tbaa !11
  %678 = load i8, ptr %20, align 1, !tbaa !43
  %679 = zext i8 %678 to i32
  %680 = sub nsw i32 %679, 1
  %681 = shl i32 1, %680
  %682 = and i32 %677, %681
  %683 = icmp ne i32 %682, 0
  br i1 %683, label %684, label %692

684:                                              ; preds = %676
  %685 = load i8, ptr %20, align 1, !tbaa !43
  %686 = zext i8 %685 to i32
  %687 = sub nsw i32 %686, 1
  %688 = shl i32 1, %687
  %689 = xor i32 %688, -1
  %690 = load i32, ptr %12, align 4, !tbaa !11
  %691 = and i32 %690, %689
  store i32 %691, ptr %12, align 4, !tbaa !11
  br label %706

692:                                              ; preds = %676, %672
  %693 = load ptr, ptr %9, align 8, !tbaa !5
  %694 = icmp ne ptr %693, null
  br i1 %694, label %695, label %705

695:                                              ; preds = %692
  %696 = load ptr, ptr %9, align 8, !tbaa !5
  %697 = load i8, ptr %696, align 1, !tbaa !43
  %698 = zext i8 %697 to i32
  %699 = load i8, ptr %20, align 1, !tbaa !43
  %700 = zext i8 %699 to i32
  %701 = icmp eq i32 %698, %700
  br i1 %701, label %702, label %705

702:                                              ; preds = %695
  %703 = load ptr, ptr %9, align 8, !tbaa !5
  %704 = getelementptr inbounds i8, ptr %703, i32 1
  store ptr %704, ptr %9, align 8, !tbaa !5
  br label %705

705:                                              ; preds = %702, %695, %692
  br label %706

706:                                              ; preds = %705, %684
  store i32 2, ptr %22, align 4, !tbaa !11
  br label %711

707:                                              ; preds = %662, %652
  br label %708

708:                                              ; preds = %707
  %709 = load i32, ptr %14, align 4, !tbaa !11
  %710 = add nsw i32 %709, 1
  store i32 %710, ptr %14, align 4, !tbaa !11
  br label %628, !llvm.loop !54

711:                                              ; preds = %706, %628
  br label %712

712:                                              ; preds = %711, %626
  br label %713

713:                                              ; preds = %712, %609
  %714 = load i32, ptr %22, align 4, !tbaa !11
  %715 = load i32, ptr %13, align 4, !tbaa !11
  %716 = sub nsw i32 %715, %714
  store i32 %716, ptr %13, align 4, !tbaa !11
  %717 = load i32, ptr %13, align 4, !tbaa !11
  %718 = icmp ne i32 %717, 0
  br i1 %718, label %719, label %725

719:                                              ; preds = %713
  %720 = load ptr, ptr %6, align 8, !tbaa !5
  %721 = getelementptr inbounds %struct.WavpackContext, ptr %720, i32 0, i32 33
  %722 = load i32, ptr %721, align 4, !tbaa !47
  %723 = icmp eq i32 %722, 4095
  br i1 %723, label %724, label %725

724:                                              ; preds = %719
  store i32 10, ptr %15, align 4
  br label %774

725:                                              ; preds = %719, %713
  %726 = load ptr, ptr %18, align 8, !tbaa !5
  %727 = getelementptr inbounds %struct.WavpackStream, ptr %726, i32 0, i32 0
  %728 = getelementptr inbounds %struct.WavpackHeader, ptr %727, i32 0, i32 0
  %729 = getelementptr inbounds [4 x i8], ptr %728, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %729, ptr align 1 @.str.11, i64 4, i1 false)
  %730 = load ptr, ptr %18, align 8, !tbaa !5
  %731 = getelementptr inbounds %struct.WavpackStream, ptr %730, i32 0, i32 0
  %732 = getelementptr inbounds %struct.WavpackHeader, ptr %731, i32 0, i32 1
  store i16 6, ptr %732, align 4, !tbaa !55
  %733 = load i32, ptr %10, align 4, !tbaa !11
  %734 = load ptr, ptr %18, align 8, !tbaa !5
  %735 = getelementptr inbounds %struct.WavpackStream, ptr %734, i32 0, i32 0
  %736 = getelementptr inbounds %struct.WavpackHeader, ptr %735, i32 0, i32 3
  store i32 %733, ptr %736, align 8, !tbaa !65
  %737 = load i32, ptr %11, align 4, !tbaa !11
  %738 = load ptr, ptr %18, align 8, !tbaa !5
  %739 = getelementptr inbounds %struct.WavpackStream, ptr %738, i32 0, i32 9
  store i32 %737, ptr %739, align 8, !tbaa !66
  %740 = load ptr, ptr %6, align 8, !tbaa !5
  %741 = getelementptr inbounds %struct.WavpackContext, ptr %740, i32 0, i32 33
  %742 = load i32, ptr %741, align 4, !tbaa !47
  %743 = icmp ne i32 %742, 0
  br i1 %743, label %750, label %744

744:                                              ; preds = %725
  %745 = load ptr, ptr %18, align 8, !tbaa !5
  %746 = getelementptr inbounds %struct.WavpackStream, ptr %745, i32 0, i32 0
  %747 = getelementptr inbounds %struct.WavpackHeader, ptr %746, i32 0, i32 3
  %748 = load i32, ptr %747, align 8, !tbaa !65
  %749 = or i32 %748, 2048
  store i32 %749, ptr %747, align 8, !tbaa !65
  br label %750

750:                                              ; preds = %744, %725
  %751 = load i32, ptr %13, align 4, !tbaa !11
  %752 = icmp ne i32 %751, 0
  br i1 %752, label %759, label %753

753:                                              ; preds = %750
  %754 = load ptr, ptr %18, align 8, !tbaa !5
  %755 = getelementptr inbounds %struct.WavpackStream, ptr %754, i32 0, i32 0
  %756 = getelementptr inbounds %struct.WavpackHeader, ptr %755, i32 0, i32 3
  %757 = load i32, ptr %756, align 8, !tbaa !65
  %758 = or i32 %757, 4096
  store i32 %758, ptr %756, align 8, !tbaa !65
  br label %759

759:                                              ; preds = %753, %750
  %760 = load i32, ptr %22, align 4, !tbaa !11
  %761 = icmp eq i32 %760, 1
  br i1 %761, label %762, label %773

762:                                              ; preds = %759
  %763 = load ptr, ptr %18, align 8, !tbaa !5
  %764 = getelementptr inbounds %struct.WavpackStream, ptr %763, i32 0, i32 0
  %765 = getelementptr inbounds %struct.WavpackHeader, ptr %764, i32 0, i32 3
  %766 = load i32, ptr %765, align 8, !tbaa !65
  %767 = and i32 %766, -1073
  store i32 %767, ptr %765, align 8, !tbaa !65
  %768 = load ptr, ptr %18, align 8, !tbaa !5
  %769 = getelementptr inbounds %struct.WavpackStream, ptr %768, i32 0, i32 0
  %770 = getelementptr inbounds %struct.WavpackHeader, ptr %769, i32 0, i32 3
  %771 = load i32, ptr %770, align 8, !tbaa !65
  %772 = or i32 %771, 4
  store i32 %772, ptr %770, align 8, !tbaa !65
  br label %773

773:                                              ; preds = %762, %759
  store i32 0, ptr %15, align 4
  br label %774

774:                                              ; preds = %773, %724
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  %775 = load i32, ptr %15, align 4
  switch i32 %775, label %846 [
    i32 0, label %776
    i32 10, label %782
  ]

776:                                              ; preds = %774
  br label %777

777:                                              ; preds = %776
  %778 = load ptr, ptr %6, align 8, !tbaa !5
  %779 = getelementptr inbounds %struct.WavpackContext, ptr %778, i32 0, i32 33
  %780 = load i32, ptr %779, align 4, !tbaa !47
  %781 = add nsw i32 %780, 1
  store i32 %781, ptr %779, align 4, !tbaa !47
  br label %514, !llvm.loop !67

782:                                              ; preds = %774, %514
  %783 = load ptr, ptr %6, align 8, !tbaa !5
  %784 = getelementptr inbounds %struct.WavpackContext, ptr %783, i32 0, i32 33
  %785 = load i32, ptr %784, align 4, !tbaa !47
  %786 = load ptr, ptr %6, align 8, !tbaa !5
  %787 = getelementptr inbounds %struct.WavpackContext, ptr %786, i32 0, i32 34
  store i32 %785, ptr %787, align 8, !tbaa !68
  %788 = load ptr, ptr %6, align 8, !tbaa !5
  %789 = getelementptr inbounds %struct.WavpackContext, ptr %788, i32 0, i32 33
  store i32 0, ptr %789, align 4, !tbaa !47
  %790 = load ptr, ptr %7, align 8, !tbaa !5
  %791 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %790, i32 0, i32 10
  %792 = load i32, ptr %791, align 8, !tbaa !19
  %793 = icmp ne i32 %792, 0
  br i1 %793, label %794, label %804

794:                                              ; preds = %782
  %795 = load ptr, ptr %6, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.WavpackContext, ptr %795, i32 0, i32 34
  %797 = load i32, ptr %796, align 8, !tbaa !68
  %798 = icmp sgt i32 %797, 1
  br i1 %798, label %799, label %804

799:                                              ; preds = %794
  %800 = load ptr, ptr %6, align 8, !tbaa !5
  %801 = getelementptr inbounds %struct.WavpackContext, ptr %800, i32 0, i32 46
  %802 = getelementptr inbounds [80 x i8], ptr %801, i64 0, i64 0
  %803 = call ptr @strcpy(ptr noundef %802, ptr noundef @.str.12) #9
  store i32 0, ptr %5, align 4
  store i32 1, ptr %15, align 4
  br label %844

804:                                              ; preds = %794, %782
  %805 = load i32, ptr %13, align 4, !tbaa !11
  %806 = icmp ne i32 %805, 0
  br i1 %806, label %807, label %812

807:                                              ; preds = %804
  %808 = load ptr, ptr %6, align 8, !tbaa !5
  %809 = getelementptr inbounds %struct.WavpackContext, ptr %808, i32 0, i32 46
  %810 = getelementptr inbounds [80 x i8], ptr %809, i64 0, i64 0
  %811 = call ptr @strcpy(ptr noundef %810, ptr noundef @.str.13) #9
  store i32 0, ptr %5, align 4
  store i32 1, ptr %15, align 4
  br label %844

812:                                              ; preds = %804
  %813 = load ptr, ptr %7, align 8, !tbaa !5
  %814 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %813, i32 0, i32 5
  %815 = load i32, ptr %814, align 4, !tbaa !32
  %816 = and i32 %815, 33554432
  %817 = icmp ne i32 %816, 0
  br i1 %817, label %818, label %843

818:                                              ; preds = %812
  %819 = load ptr, ptr %7, align 8, !tbaa !5
  %820 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %819, i32 0, i32 10
  %821 = load i32, ptr %820, align 8, !tbaa !19
  %822 = icmp ne i32 %821, 0
  br i1 %822, label %823, label %828

823:                                              ; preds = %818
  %824 = load ptr, ptr %6, align 8, !tbaa !5
  %825 = getelementptr inbounds %struct.WavpackContext, ptr %824, i32 0, i32 46
  %826 = getelementptr inbounds [80 x i8], ptr %825, i64 0, i64 0
  %827 = call ptr @strcpy(ptr noundef %826, ptr noundef @.str.14) #9
  store i32 0, ptr %5, align 4
  store i32 1, ptr %15, align 4
  br label %844

828:                                              ; preds = %818
  %829 = load ptr, ptr %7, align 8, !tbaa !5
  %830 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %829, i32 0, i32 6
  %831 = load i32, ptr %830, align 8, !tbaa !69
  %832 = icmp ne i32 %831, 0
  br i1 %832, label %833, label %837

833:                                              ; preds = %828
  %834 = load ptr, ptr %7, align 8, !tbaa !5
  %835 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %834, i32 0, i32 6
  %836 = load i32, ptr %835, align 8, !tbaa !69
  br label %838

837:                                              ; preds = %828
  br label %838

838:                                              ; preds = %837, %833
  %839 = phi i32 [ %836, %833 ], [ 1, %837 ]
  %840 = load ptr, ptr %6, align 8, !tbaa !5
  %841 = getelementptr inbounds %struct.WavpackContext, ptr %840, i32 0, i32 0
  %842 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %841, i32 0, i32 6
  store i32 %839, ptr %842, align 8, !tbaa !70
  br label %843

843:                                              ; preds = %838, %812
  store i32 1, ptr %5, align 4
  store i32 1, ptr %15, align 4
  br label %844

844:                                              ; preds = %843, %823, %807, %799, %508, %306, %274, %255, %226, %105, %84, %64, %44, %33
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #9
  %845 = load i32, ptr %5, align 4
  ret i32 %845

846:                                              ; preds = %774
  unreachable
}

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

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

; Function Attrs: nounwind
declare noalias ptr @strdup(ptr noundef) #4

; Function Attrs: nounwind allocsize(1)
declare ptr @realloc(ptr noundef, i64 noundef) #7

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nounwind allocsize(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 #2 = { nocallback nofree nounwind willreturn memory(argmem: write) }
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 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { nounwind allocsize(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 #8 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #9 = { nounwind }
attributes #10 = { nounwind willreturn memory(read) }
attributes #11 = { nounwind allocsize(0) }
attributes #12 = { nounwind allocsize(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 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !12, i64 52}
!14 = !{!"", !15, i64 0, !15, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !7, i64 56, !7, i64 72, !12, i64 76, !6, i64 80}
!15 = !{!"float", !7, i64 0}
!16 = !{!14, !12, i64 28}
!17 = !{!14, !12, i64 48}
!18 = !{!14, !12, i64 36}
!19 = !{!14, !12, i64 40}
!20 = !{!14, !12, i64 16}
!21 = !{!14, !12, i64 12}
!22 = !{!14, !12, i64 8}
!23 = !{!24, !10, i64 200}
!24 = !{!"WavpackContext", !14, i64 0, !6, i64 88, !12, i64 96, !12, i64 100, !6, i64 104, !12, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !10, i64 168, !10, i64 176, !10, i64 184, !10, i64 192, !10, i64 200, !10, i64 208, !12, i64 216, !12, i64 220, !12, i64 224, !12, i64 228, !12, i64 232, !12, i64 236, !12, i64 240, !12, i64 244, !12, i64 248, !12, i64 252, !12, i64 256, !12, i64 260, !12, i64 264, !12, i64 268, !12, i64 272, !12, i64 276, !12, i64 280, !12, i64 284, !6, i64 288, !6, i64 296, !7, i64 304, !6, i64 312, !6, i64 320, !12, i64 328, !12, i64 332, !6, i64 336, !7, i64 344, !6, i64 352, !7, i64 360}
!25 = !{!24, !12, i64 48}
!26 = !{!24, !12, i64 28}
!27 = !{!24, !12, i64 52}
!28 = !{!24, !12, i64 8}
!29 = !{!24, !12, i64 12}
!30 = !{!24, !12, i64 36}
!31 = !{!24, !12, i64 40}
!32 = !{!14, !12, i64 20}
!33 = !{!24, !12, i64 20}
!34 = !{!24, !12, i64 16}
!35 = distinct !{!35, !36}
!36 = !{!"llvm.loop.mustprogress"}
!37 = !{!14, !12, i64 32}
!38 = !{!24, !12, i64 32}
!39 = !{!14, !15, i64 4}
!40 = !{!24, !15, i64 4}
!41 = !{!14, !15, i64 0}
!42 = !{!24, !12, i64 224}
!43 = !{!7, !7, i64 0}
!44 = distinct !{!44, !36}
!45 = !{!24, !6, i64 320}
!46 = distinct !{!46, !36}
!47 = !{!24, !12, i64 276}
!48 = !{!24, !6, i64 288}
!49 = distinct !{!49, !36}
!50 = distinct !{!50, !36}
!51 = !{!52, !7, i64 0}
!52 = !{!"", !7, i64 0, !7, i64 1}
!53 = !{!52, !7, i64 1}
!54 = distinct !{!54, !36}
!55 = !{!56, !58, i64 4}
!56 = !{!"", !57, i64 0, !59, i64 12, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !10, i64 128, !10, i64 136, !12, i64 144, !12, i64 148, !12, i64 152, !7, i64 156, !7, i64 157, !7, i64 158, !7, i64 159, !7, i64 160, !7, i64 161, !7, i64 162, !12, i64 164, !12, i64 168, !12, i64 172, !12, i64 176, !12, i64 180, !12, i64 184, !12, i64 188, !12, i64 192, !60, i64 200, !60, i64 248, !60, i64 296, !15, i64 344, !7, i64 348, !7, i64 349, !7, i64 350, !7, i64 351, !7, i64 352, !7, i64 353, !7, i64 354, !7, i64 355, !61, i64 360, !7, i64 432, !63, i64 1968, !6, i64 2064, !64, i64 2072}
!57 = !{!"", !7, i64 0, !58, i64 4, !58, i64 6, !12, i64 8}
!58 = !{!"short", !7, i64 0}
!59 = !{!"words_data", !7, i64 0, !7, i64 8, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !7, i64 36}
!60 = !{!"bs", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !12, i64 32, !12, i64 36, !12, i64 40}
!61 = !{!"", !7, i64 0, !7, i64 8, !7, i64 16, !62, i64 24, !62, i64 32, !62, i64 40, !6, i64 48, !6, i64 56, !12, i64 64}
!62 = !{!"double", !7, i64 0}
!63 = !{!"decorr_pass", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !7, i64 16, !7, i64 48, !12, i64 80, !12, i64 84, !12, i64 88, !12, i64 92}
!64 = !{!"", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !7, i64 40, !7, i64 41, !12, i64 44, !12, i64 48, !12, i64 52, !6, i64 56, !12, i64 64, !12, i64 68, !12, i64 72, !7, i64 76, !6, i64 160}
!65 = !{!56, !12, i64 8}
!66 = !{!56, !12, i64 144}
!67 = distinct !{!67, !36}
!68 = !{!24, !12, i64 280}
!69 = !{!14, !12, i64 24}
!70 = !{!24, !12, i64 24}


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

%struct.anon.1 = type { i8, i8 }

@.str.1 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [35 x i8], align 1
@sample_rates = external local_unnamed_addr constant [16 x i32], align 16
@.str.6 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [35 x i8], align 1
@stereo_pairs = external hidden local_unnamed_addr constant [18 x %struct.anon.1], align 16
@.str.11 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [43 x i8], align 1

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: readwrite)
declare ptr @strcpy(ptr noalias noundef returned writeonly, ptr noalias nocapture noundef readonly) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local range(i32 0, 2) i32 @WavpackStreamSetConfiguration64(ptr noundef %0, ptr nocapture noundef readonly %1, i64 noundef %2, ptr noundef readonly %3) local_unnamed_addr #2 {
  %5 = getelementptr inbounds i8, ptr %1, i64 52
  %6 = load i32, ptr %5, align 4, !tbaa !5
  %7 = getelementptr inbounds i8, ptr %1, i64 28
  %8 = load i32, ptr %7, align 4, !tbaa !12
  %9 = getelementptr inbounds i8, ptr %1, i64 48
  %10 = load i32, ptr %9, align 8, !tbaa !13
  %11 = icmp slt i32 %10, 1
  br i1 %11, label %12, label %15

12:                                               ; preds = %4
  %13 = getelementptr inbounds i8, ptr %0, i64 360
  %14 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %13, ptr noundef nonnull dereferenceable(1) @.str.1) #8
  br label %435

15:                                               ; preds = %4
  %16 = add i32 %8, -8193
  %or.cond = icmp ult i32 %16, -8192
  br i1 %or.cond, label %17, label %20

17:                                               ; preds = %15
  %18 = getelementptr inbounds i8, ptr %0, i64 360
  %19 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %18, ptr noundef nonnull dereferenceable(1) @.str.2) #8
  br label %435

20:                                               ; preds = %15
  %21 = getelementptr inbounds i8, ptr %1, i64 36
  %22 = load i32, ptr %21, align 4, !tbaa !14
  %.not = icmp ne i32 %22, 0
  %23 = add i32 %22, -8001
  %or.cond300 = icmp ult i32 %23, -7951
  %or.cond314 = and i1 %.not, %or.cond300
  br i1 %or.cond314, label %24, label %27

24:                                               ; preds = %20
  %25 = getelementptr inbounds i8, ptr %0, i64 360
  %26 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %25, ptr noundef nonnull dereferenceable(1) @.str.3) #8
  br label %435

27:                                               ; preds = %20
  %28 = getelementptr inbounds i8, ptr %1, i64 40
  %29 = load i32, ptr %28, align 8, !tbaa !15
  %.not261 = icmp ne i32 %29, 0
  %30 = add i32 %29, -16385
  %or.cond301 = icmp ult i32 %30, -16129
  %or.cond315 = and i1 %.not261, %or.cond301
  br i1 %or.cond315, label %31, label %34

31:                                               ; preds = %27
  %32 = getelementptr inbounds i8, ptr %0, i64 360
  %33 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %32, ptr noundef nonnull dereferenceable(1) @.str.4) #8
  br label %435

34:                                               ; preds = %27
  %35 = getelementptr inbounds i8, ptr %1, i64 16
  %36 = load i32, ptr %35, align 8, !tbaa !16
  %37 = and i32 %36, 48
  %.not262 = icmp ne i32 %37, 0
  %.phi.trans.insert = getelementptr inbounds i8, ptr %1, i64 12
  %.pre = load i32, ptr %.phi.trans.insert, align 4, !tbaa !17
  %38 = icmp eq i32 %.pre, 1
  %or.cond424 = select i1 %.not262, i1 %38, i1 false
  br i1 %or.cond424, label %39, label %._crit_edge380

39:                                               ; preds = %34
  %40 = getelementptr inbounds i8, ptr %1, i64 8
  %41 = load i32, ptr %40, align 8, !tbaa !18
  %42 = icmp eq i32 %41, 8
  br i1 %42, label %43, label %._crit_edge380

43:                                               ; preds = %39
  %44 = getelementptr inbounds i8, ptr %0, i64 360
  %45 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %44, ptr noundef nonnull dereferenceable(1) @.str.5) #8
  br label %435

._crit_edge380:                                   ; preds = %34, %39
  %46 = phi i32 [ 1, %39 ], [ %.pre, %34 ]
  %47 = getelementptr inbounds i8, ptr %1, i64 12
  %48 = add nsw i32 %46, -1
  %49 = getelementptr inbounds i8, ptr %0, i64 200
  store i64 %2, ptr %49, align 8, !tbaa !19
  %50 = getelementptr inbounds i8, ptr %0, i64 48
  store i32 %10, ptr %50, align 8, !tbaa !22
  %51 = getelementptr inbounds i8, ptr %0, i64 28
  store i32 %8, ptr %51, align 4, !tbaa !23
  %52 = getelementptr inbounds i8, ptr %0, i64 52
  store i32 %6, ptr %52, align 4, !tbaa !24
  %53 = getelementptr inbounds i8, ptr %1, i64 8
  %54 = load i32, ptr %53, align 8, !tbaa !18
  %55 = getelementptr inbounds i8, ptr %0, i64 8
  store i32 %54, ptr %55, align 8, !tbaa !25
  %56 = getelementptr inbounds i8, ptr %0, i64 12
  store i32 %46, ptr %56, align 4, !tbaa !26
  %57 = getelementptr inbounds i8, ptr %0, i64 36
  store i32 %22, ptr %57, align 4, !tbaa !27
  %58 = getelementptr inbounds i8, ptr %0, i64 40
  store i32 %29, ptr %58, align 8, !tbaa !28
  %59 = getelementptr inbounds i8, ptr %1, i64 20
  %60 = load i32, ptr %59, align 4, !tbaa !29
  %61 = getelementptr inbounds i8, ptr %0, i64 20
  store i32 %60, ptr %61, align 4, !tbaa !30
  %62 = getelementptr inbounds i8, ptr %0, i64 16
  store i32 %36, ptr %62, align 8, !tbaa !31
  %63 = and i32 %60, 4096
  %.not263 = icmp eq i32 %63, 0
  br i1 %.not263, label %66, label %64

64:                                               ; preds = %._crit_edge380
  %65 = or i32 %60, 2048
  store i32 %65, ptr %61, align 4, !tbaa !30
  br label %66

66:                                               ; preds = %64, %._crit_edge380
  %67 = phi i32 [ %65, %64 ], [ %60, %._crit_edge380 ]
  %68 = load i32, ptr @sample_rates, align 16, !tbaa !32
  %69 = icmp eq i32 %10, %68
  br i1 %69, label %112, label %70

70:                                               ; preds = %66
  %71 = load i32, ptr getelementptr inbounds (i8, ptr @sample_rates, i64 4), align 4, !tbaa !32
  %72 = icmp eq i32 %10, %71
  br i1 %72, label %112, label %73

73:                                               ; preds = %70
  %74 = load i32, ptr getelementptr inbounds (i8, ptr @sample_rates, i64 8), align 8, !tbaa !32
  %75 = icmp eq i32 %10, %74
  br i1 %75, label %112, label %76

76:                                               ; preds = %73
  %77 = load i32, ptr getelementptr inbounds (i8, ptr @sample_rates, i64 12), align 4, !tbaa !32
  %78 = icmp eq i32 %10, %77
  br i1 %78, label %112, label %79

79:                                               ; preds = %76
  %80 = load i32, ptr getelementptr inbounds (i8, ptr @sample_rates, i64 16), align 16, !tbaa !32
  %81 = icmp eq i32 %10, %80
  br i1 %81, label %112, label %82

82:                                               ; preds = %79
  %83 = load i32, ptr getelementptr inbounds (i8, ptr @sample_rates, i64 20), align 4, !tbaa !32
  %84 = icmp eq i32 %10, %83
  br i1 %84, label %112, label %85

85:                                               ; preds = %82
  %86 = load i32, ptr getelementptr inbounds (i8, ptr @sample_rates, i64 24), align 8, !tbaa !32
  %87 = icmp eq i32 %10, %86
  br i1 %87, label %112, label %88

88:                                               ; preds = %85
  %89 = load i32, ptr getelementptr inbounds (i8, ptr @sample_rates, i64 28), align 4, !tbaa !32
  %90 = icmp eq i32 %10, %89
  br i1 %90, label %112, label %91

91:                                               ; preds = %88
  %92 = load i32, ptr getelementptr inbounds (i8, ptr @sample_rates, i64 32), align 16, !tbaa !32
  %93 = icmp eq i32 %10, %92
  br i1 %93, label %112, label %94

94:                                               ; preds = %91
  %95 = load i32, ptr getelementptr inbounds (i8, ptr @sample_rates, i64 36), align 4, !tbaa !32
  %96 = icmp eq i32 %10, %95
  br i1 %96, label %112, label %97

97:                                               ; preds = %94
  %98 = load i32, ptr getelementptr inbounds (i8, ptr @sample_rates, i64 40), align 8, !tbaa !32
  %99 = icmp eq i32 %10, %98
  br i1 %99, label %112, label %100

100:                                              ; preds = %97
  %101 = load i32, ptr getelementptr inbounds (i8, ptr @sample_rates, i64 44), align 4, !tbaa !32
  %102 = icmp eq i32 %10, %101
  br i1 %102, label %112, label %103

103:                                              ; preds = %100
  %104 = load i32, ptr getelementptr inbounds (i8, ptr @sample_rates, i64 48), align 16, !tbaa !32
  %105 = icmp eq i32 %10, %104
  br i1 %105, label %112, label %106

106:                                              ; preds = %103
  %107 = load i32, ptr getelementptr inbounds (i8, ptr @sample_rates, i64 52), align 4, !tbaa !32
  %108 = icmp eq i32 %10, %107
  br i1 %108, label %112, label %109

109:                                              ; preds = %106
  %110 = load i32, ptr getelementptr inbounds (i8, ptr @sample_rates, i64 56), align 8, !tbaa !32
  %111 = icmp eq i32 %10, %110
  %spec.select425 = select i1 %111, i32 117440512, i32 125829120
  br label %112

112:                                              ; preds = %109, %106, %103, %100, %97, %94, %91, %88, %85, %82, %79, %76, %73, %70, %66
  %.0221.lcssa = phi i32 [ 0, %66 ], [ 8388608, %70 ], [ 16777216, %73 ], [ 25165824, %76 ], [ 33554432, %79 ], [ 41943040, %82 ], [ 50331648, %85 ], [ 58720256, %88 ], [ 67108864, %91 ], [ 75497472, %94 ], [ 83886080, %97 ], [ 92274688, %100 ], [ 100663296, %103 ], [ 109051904, %106 ], [ %spec.select425, %109 ]
  %113 = or i32 %.0221.lcssa, %48
  %.not264 = icmp sgt i32 %46, 0
  br i1 %.not264, label %114, label %200

114:                                              ; preds = %112
  %115 = getelementptr inbounds i8, ptr %1, i64 32
  %116 = load i32, ptr %115, align 8, !tbaa !33
  %.not265 = icmp eq i32 %116, 0
  %117 = load i32, ptr %47, align 4, !tbaa !17
  br i1 %.not265, label %126, label %118

118:                                              ; preds = %114
  %.not266 = icmp eq i32 %117, 4
  %.not267 = icmp eq i32 %54, 32
  %or.cond426 = select i1 %.not266, i1 %.not267, i1 false
  br i1 %or.cond426, label %122, label %119

119:                                              ; preds = %118
  %120 = getelementptr inbounds i8, ptr %0, i64 360
  %121 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %120, ptr noundef nonnull dereferenceable(1) @.str.6) #8
  br label %435

122:                                              ; preds = %118
  %123 = getelementptr inbounds i8, ptr %0, i64 32
  store i32 %116, ptr %123, align 8, !tbaa !34
  %124 = or i32 %67, 128
  store i32 %124, ptr %61, align 4, !tbaa !30
  %125 = or i32 %113, 128
  br label %143

126:                                              ; preds = %114
  %127 = add i32 %117, -5
  %or.cond302 = icmp ult i32 %127, -4
  br i1 %or.cond302, label %128, label %131

128:                                              ; preds = %126
  %129 = getelementptr inbounds i8, ptr %0, i64 360
  %130 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %129, ptr noundef nonnull dereferenceable(1) @.str.7) #8
  br label %435

131:                                              ; preds = %126
  %132 = icmp slt i32 %54, 1
  br i1 %132, label %136, label %133

133:                                              ; preds = %131
  %134 = shl nuw nsw i32 %117, 3
  %135 = icmp ugt i32 %54, %134
  br i1 %135, label %136, label %139

136:                                              ; preds = %133, %131
  %137 = getelementptr inbounds i8, ptr %0, i64 360
  %138 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %137, ptr noundef nonnull dereferenceable(1) @.str.8) #8
  br label %435

139:                                              ; preds = %133
  %140 = sub nsw i32 %134, %54
  %141 = shl nsw i32 %140, 13
  %142 = or i32 %141, %113
  br label %143

143:                                              ; preds = %139, %122
  %144 = phi i32 [ %124, %122 ], [ %67, %139 ]
  %.0234 = phi i32 [ %125, %122 ], [ %142, %139 ]
  %145 = load i32, ptr %28, align 8, !tbaa !15
  %.not268 = icmp eq i32 %145, 0
  br i1 %.not268, label %152, label %146

146:                                              ; preds = %143
  %147 = load i32, ptr %115, align 8, !tbaa !33
  %.not269 = icmp ne i32 %147, 0
  %148 = icmp ugt i32 %54, 24
  %or.cond427 = select i1 %.not269, i1 true, i1 %148
  br i1 %or.cond427, label %149, label %152

149:                                              ; preds = %146
  %150 = getelementptr inbounds i8, ptr %0, i64 360
  %151 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %150, ptr noundef nonnull dereferenceable(1) @.str.9) #8
  br label %435

152:                                              ; preds = %146, %143
  %153 = load i32, ptr %59, align 4, !tbaa !29
  %154 = and i32 %153, 8
  %.not270 = icmp eq i32 %154, 0
  br i1 %.not270, label %191, label %155

155:                                              ; preds = %152
  %156 = and i32 %144, 32768
  %.not271 = icmp eq i32 %156, 0
  br i1 %.not271, label %157, label %160

157:                                              ; preds = %155
  %158 = or i32 %144, 16448
  store i32 %158, ptr %61, align 4, !tbaa !30
  %159 = or i32 %.0234, 536872520
  %.pre381 = load i32, ptr %59, align 4, !tbaa !29
  br label %168

160:                                              ; preds = %155
  %161 = or i32 %.0234, 1544
  %162 = and i32 %144, 64
  %.not272 = icmp eq i32 %162, 0
  br i1 %.not272, label %168, label %163

163:                                              ; preds = %160
  %164 = getelementptr inbounds i8, ptr %1, i64 4
  %165 = load float, ptr %164, align 4, !tbaa !35
  %166 = getelementptr inbounds i8, ptr %0, i64 4
  store float %165, ptr %166, align 4, !tbaa !36
  %167 = or i32 %.0234, 536872520
  br label %168

168:                                              ; preds = %160, %163, %157
  %169 = phi i32 [ %153, %163 ], [ %153, %160 ], [ %.pre381, %157 ]
  %170 = phi i32 [ %144, %163 ], [ %144, %160 ], [ %158, %157 ]
  %.1235 = phi i32 [ %167, %163 ], [ %161, %160 ], [ %159, %157 ]
  %171 = and i32 %170, 1048608
  %.not273 = icmp eq i32 %171, 0
  %172 = or i32 %.1235, 32
  %spec.select = select i1 %.not273, i32 %.1235, i32 %172
  %173 = and i32 %169, 8192
  %.not274 = icmp eq i32 %173, 0
  %174 = load float, ptr %1, align 8, !tbaa !37
  %175 = fpext float %174 to double
  br i1 %.not274, label %187, label %176

176:                                              ; preds = %168
  %177 = fmul double %175, 2.560000e+05
  %178 = load i32, ptr %9, align 8, !tbaa !13
  %179 = sitofp i32 %178 to double
  %180 = fdiv double %177, %179
  %181 = load i32, ptr %7, align 4, !tbaa !12
  %182 = sitofp i32 %181 to double
  %183 = fdiv double %180, %182
  %184 = fadd double %183, 5.000000e-01
  %185 = tail call double @llvm.floor.f64(double %184)
  %186 = fptoui double %185 to i32
  %spec.store.select = tail call i32 @llvm.umin.i32(i32 %186, i32 16384)
  br label %193

187:                                              ; preds = %168
  %188 = tail call double @llvm.fmuladd.f64(double %175, double 2.560000e+02, double 5.000000e-01)
  %189 = tail call double @llvm.floor.f64(double %188)
  %190 = fptoui double %189 to i32
  br label %193

191:                                              ; preds = %152
  %192 = or i32 %.0234, 32
  br label %193

193:                                              ; preds = %176, %187, %191
  %194 = phi i32 [ %169, %176 ], [ %169, %187 ], [ %153, %191 ]
  %.3237 = phi i32 [ %spec.select, %176 ], [ %spec.select, %187 ], [ %192, %191 ]
  %.0232 = phi i32 [ %spec.store.select, %176 ], [ %190, %187 ], [ 0, %191 ]
  %195 = and i32 %194, 65552
  %or.cond303 = icmp eq i32 %195, 65536
  %196 = or i32 %.3237, 16
  %.4238 = select i1 %or.cond303, i32 %.3237, i32 %196
  %197 = and i32 %194, 524288
  %.not277 = icmp eq i32 %197, 0
  br i1 %.not277, label %200, label %198

198:                                              ; preds = %193
  %199 = getelementptr inbounds i8, ptr %0, i64 224
  store i32 1, ptr %199, align 8, !tbaa !38
  br label %200

200:                                              ; preds = %193, %198, %112
  %.5239 = phi i32 [ %113, %112 ], [ %.4238, %198 ], [ %.4238, %193 ]
  %.1233 = phi i32 [ 0, %112 ], [ %.0232, %198 ], [ %.0232, %193 ]
  %.not278 = icmp eq ptr %3, null
  br i1 %.not278, label %.loopexit319.thread, label %202

.loopexit319.thread:                              ; preds = %200
  %201 = getelementptr inbounds i8, ptr %0, i64 276
  store i32 0, ptr %201, align 4, !tbaa !39
  br label %.lr.ph365

202:                                              ; preds = %200
  %203 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %3) #9
  %204 = trunc i64 %203 to i32
  %.not283 = icmp slt i32 %8, %204
  br i1 %.not283, label %.thread, label %.preheader320

.preheader320:                                    ; preds = %202
  %205 = load i8, ptr %3, align 1, !tbaa !40
  %.not279329 = icmp eq i8 %205, 0
  br i1 %.not279329, label %._crit_edge, label %.lr.ph

.thread:                                          ; preds = %202
  %206 = getelementptr inbounds i8, ptr %0, i64 360
  %207 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %206, ptr noundef nonnull dereferenceable(1) @.str.10) #8
  br label %435

.lr.ph:                                           ; preds = %.preheader320, %216
  %208 = phi i8 [ %220, %216 ], [ %205, %.preheader320 ]
  %.0217332 = phi i32 [ %218, %216 ], [ %6, %.preheader320 ]
  %.0218331 = phi i32 [ %209, %216 ], [ 0, %.preheader320 ]
  %.0240330 = phi ptr [ %219, %216 ], [ %3, %.preheader320 ]
  %209 = zext i8 %208 to i32
  %210 = icmp ult i8 %208, 33
  %211 = icmp ult i32 %.0218331, %209
  %or.cond304 = and i1 %210, %211
  br i1 %or.cond304, label %212, label %._crit_edge

212:                                              ; preds = %.lr.ph
  %213 = add nsw i32 %209, -1
  %214 = shl nuw i32 1, %213
  %215 = and i32 %214, %.0217332
  %.not280 = icmp eq i32 %215, 0
  br i1 %.not280, label %._crit_edge, label %216

216:                                              ; preds = %212
  %217 = xor i32 %214, -1
  %218 = and i32 %.0217332, %217
  %219 = getelementptr inbounds i8, ptr %.0240330, i64 1
  %220 = load i8, ptr %219, align 1, !tbaa !40
  %.not279 = icmp eq i8 %220, 0
  br i1 %.not279, label %._crit_edge, label %.lr.ph, !llvm.loop !41

._crit_edge:                                      ; preds = %216, %212, %.lr.ph, %.preheader320
  %221 = phi i8 [ 0, %.preheader320 ], [ %208, %.lr.ph ], [ %208, %212 ], [ 0, %216 ]
  %.0240.lcssa = phi ptr [ %3, %.preheader320 ], [ %.0240330, %.lr.ph ], [ %.0240330, %212 ], [ %219, %216 ]
  br label %222

222:                                              ; preds = %227, %._crit_edge
  %223 = phi i8 [ %.pre383, %227 ], [ %221, %._crit_edge ]
  %indvars.iv = phi i64 [ %indvars.iv.next, %227 ], [ 0, %._crit_edge ]
  switch i8 %223, label %224 [
    i8 0, label %.loopexit319
    i8 -1, label %227
  ]

224:                                              ; preds = %222
  %225 = tail call noalias ptr @strdup(ptr noundef nonnull %.0240.lcssa) #8
  %226 = getelementptr inbounds i8, ptr %0, i64 320
  store ptr %225, ptr %226, align 8, !tbaa !43
  br label %.loopexit319

227:                                              ; preds = %222
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %.phi.trans.insert382 = getelementptr inbounds i8, ptr %.0240.lcssa, i64 %indvars.iv.next
  %.pre383 = load i8, ptr %.phi.trans.insert382, align 1, !tbaa !40
  br label %222, !llvm.loop !44

.loopexit319:                                     ; preds = %222, %224
  %228 = getelementptr inbounds i8, ptr %0, i64 276
  store i32 0, ptr %228, align 4, !tbaa !39
  %.not284358 = icmp eq i32 %8, 0
  br i1 %.not284358, label %.thread417, label %.lr.ph365

.thread417:                                       ; preds = %.loopexit319
  %229 = getelementptr inbounds i8, ptr %0, i64 280
  store i32 0, ptr %229, align 8, !tbaa !45
  %230 = load i32, ptr %28, align 8, !tbaa !15
  %.not294413 = icmp ne i32 %230, 0
  br label %424

.lr.ph365:                                        ; preds = %.loopexit319.thread, %.loopexit319
  %231 = phi ptr [ %201, %.loopexit319.thread ], [ %228, %.loopexit319 ]
  %.2242406 = phi ptr [ null, %.loopexit319.thread ], [ %.0240.lcssa, %.loopexit319 ]
  %232 = getelementptr inbounds i8, ptr %0, i64 288
  %233 = load i32, ptr @.str.11, align 1
  %234 = or i32 %.5239, 2048
  %.pre384 = load ptr, ptr %232, align 8, !tbaa !46
  %235 = load i8, ptr @stereo_pairs, align 16
  %.pre386 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 1), align 1
  %236 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 2), align 2
  %.pre387 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 3), align 1
  %237 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 4), align 4
  %.pre388 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 5), align 1
  %238 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 6), align 2
  %.pre389 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 7), align 1
  %239 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 8), align 8
  %.pre390 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 9), align 1
  %240 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 10), align 2
  %.pre391 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 11), align 1
  %241 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 12), align 4
  %.pre392 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 13), align 1
  %242 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 14), align 2
  %.pre393 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 15), align 1
  %243 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 16), align 16
  %.pre394 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 17), align 1
  %244 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 18), align 2
  %.pre395 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 19), align 1
  %245 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 20), align 4
  %.pre396 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 21), align 1
  %246 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 22), align 2
  %.pre397 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 23), align 1
  %247 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 24), align 8
  %.pre398 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 25), align 1
  %248 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 26), align 2
  %.pre399 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 27), align 1
  %249 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 28), align 4
  %.pre400 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 29), align 1
  %250 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 30), align 2
  %.pre401 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 31), align 1
  %251 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 32), align 16
  %.pre402 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 33), align 1
  %252 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 34), align 2
  %.pre403 = load i8, ptr getelementptr inbounds (i8, ptr @stereo_pairs, i64 35), align 1
  br label %253

253:                                              ; preds = %.lr.ph365, %411
  %254 = phi ptr [ %.pre384, %.lr.ph365 ], [ %258, %411 ]
  %.0224362 = phi i32 [ %8, %.lr.ph365 ], [ %399, %411 ]
  %.0226361 = phi i32 [ %6, %.lr.ph365 ], [ %.5231, %411 ]
  %.3243360 = phi ptr [ %.2242406, %.lr.ph365 ], [ %.7, %411 ]
  %storemerge359 = phi i32 [ 0, %.lr.ph365 ], [ %412, %411 ]
  %calloc = tail call dereferenceable_or_null(2240) ptr @calloc(i64 1, i64 2240)
  %255 = add nsw i32 %storemerge359, 1
  %256 = sext i32 %255 to i64
  %257 = shl nsw i64 %256, 3
  %258 = tail call ptr @realloc(ptr noundef %254, i64 noundef %257) #10
  store ptr %258, ptr %232, align 8, !tbaa !46
  %259 = load i32, ptr %231, align 4, !tbaa !39
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds ptr, ptr %258, i64 %260
  store ptr %calloc, ptr %261, align 8, !tbaa !47
  %.not285 = icmp eq i32 %.0226361, 0
  br i1 %.not285, label %.loopexit317, label %.preheader316

.preheader316:                                    ; preds = %253, %282
  %.0209339 = phi i32 [ %283, %282 ], [ 0, %253 ]
  %.0211338 = phi i8 [ %.1212.1, %282 ], [ 0, %253 ]
  %.1227337 = phi i32 [ %.2228.1, %282 ], [ %.0226361, %253 ]
  %262 = shl nuw i32 1, %.0209339
  %263 = and i32 %262, %.1227337
  %.not286 = icmp eq i32 %263, 0
  br i1 %.not286, label %.preheader316.1, label %264

264:                                              ; preds = %.preheader316
  %.not287 = icmp eq i8 %.0211338, 0
  br i1 %.not287, label %268, label %.loopexit317.thread

.loopexit317.thread:                              ; preds = %276, %264
  %.0209339.lcssa = phi i32 [ %.0209339, %264 ], [ %273, %276 ]
  %.0211338.lcssa = phi i8 [ %.0211338, %264 ], [ %.1212, %276 ]
  %.1227337.lcssa = phi i32 [ %.1227337, %264 ], [ %.2228, %276 ]
  %265 = trunc nuw i32 %.0209339.lcssa to i8
  %266 = add nuw nsw i8 %265, 1
  %267 = icmp ne ptr %.3243360, null
  br label %.critedge

268:                                              ; preds = %264
  %269 = xor i32 %262, -1
  %270 = and i32 %.1227337, %269
  %271 = trunc nuw i32 %.0209339 to i8
  %272 = or disjoint i8 %271, 1
  br label %.preheader316.1

.preheader316.1:                                  ; preds = %.preheader316, %268
  %.2228 = phi i32 [ %270, %268 ], [ %.1227337, %.preheader316 ]
  %.1212 = phi i8 [ %272, %268 ], [ %.0211338, %.preheader316 ]
  %273 = or disjoint i32 %.0209339, 1
  %274 = shl nuw i32 2, %.0209339
  %275 = and i32 %274, %.2228
  %.not286.1 = icmp eq i32 %275, 0
  br i1 %.not286.1, label %282, label %276

276:                                              ; preds = %.preheader316.1
  %.not287.1 = icmp eq i8 %.1212, 0
  br i1 %.not287.1, label %277, label %.loopexit317.thread

277:                                              ; preds = %276
  %278 = xor i32 %274, -1
  %279 = and i32 %.2228, %278
  %280 = trunc nuw i32 %273 to i8
  %281 = add nuw nsw i8 %280, 1
  br label %282

282:                                              ; preds = %277, %.preheader316.1
  %.2228.1 = phi i32 [ %279, %277 ], [ %.2228, %.preheader316.1 ]
  %.1212.1 = phi i8 [ %281, %277 ], [ %.1212, %.preheader316.1 ]
  %283 = add nuw nsw i32 %.0209339, 2
  %exitcond.not.1 = icmp eq i32 %283, 32
  br i1 %exitcond.not.1, label %.loopexit317, label %.preheader316, !llvm.loop !48

.loopexit317:                                     ; preds = %282, %253
  %.3229 = phi i32 [ 0, %253 ], [ %.2228.1, %282 ]
  %.2213 = phi i8 [ 0, %253 ], [ %.1212.1, %282 ]
  %284 = icmp ne ptr %.3243360, null
  br i1 %284, label %.lr.ph345.preheader, label %.critedge

.lr.ph345.preheader:                              ; preds = %.loopexit317
  %285 = load i8, ptr %.3243360, align 1, !tbaa !40
  %.not288.peel = icmp eq i8 %285, 0
  br i1 %.not288.peel, label %.critedge, label %286

286:                                              ; preds = %.lr.ph345.preheader
  %.not299.peel = icmp eq i8 %.2213, 0
  %.5245.idx.peel = zext i1 %.not299.peel to i64
  %.5245.peel = getelementptr inbounds i8, ptr %.3243360, i64 %.5245.idx.peel
  br i1 %.not299.peel, label %.lr.ph345, label %.critedge

.lr.ph345:                                        ; preds = %286
  %.pre385 = load i8, ptr %.5245.peel, align 1, !tbaa !40
  %.not288 = icmp eq i8 %.pre385, 0
  br label %.critedge

.critedge:                                        ; preds = %.lr.ph345, %.lr.ph345.preheader, %286, %.loopexit317.thread, %.loopexit317
  %.3229411 = phi i32 [ %.3229, %.loopexit317 ], [ %.1227337.lcssa, %.loopexit317.thread ], [ %.3229, %286 ], [ %.3229, %.lr.ph345.preheader ], [ %.3229, %.lr.ph345 ]
  %.4244.lcssa = phi ptr [ %.3243360, %.loopexit317 ], [ %.3243360, %.loopexit317.thread ], [ %.5245.peel, %286 ], [ %.3243360, %.lr.ph345.preheader ], [ %.5245.peel, %.lr.ph345 ]
  %.3214.lcssa = phi i8 [ %.2213, %.loopexit317 ], [ %.0211338.lcssa, %.loopexit317.thread ], [ %.2213, %286 ], [ %.2213, %.lr.ph345.preheader ], [ %285, %.lr.ph345 ]
  %.1.lcssa = phi i8 [ 0, %.loopexit317 ], [ %266, %.loopexit317.thread ], [ %285, %286 ], [ 0, %.lr.ph345.preheader ], [ %.pre385, %.lr.ph345 ]
  %.lcssa324 = phi i1 [ true, %.loopexit317 ], [ false, %.loopexit317.thread ], [ false, %286 ], [ true, %.lr.ph345.preheader ], [ %.not288, %.lr.ph345 ]
  %.lcssa = phi i1 [ %284, %.loopexit317 ], [ %267, %.loopexit317.thread ], [ true, %286 ], [ true, %.lr.ph345.preheader ], [ true, %.lr.ph345 ]
  %.not289 = icmp eq i8 %.3214.lcssa, 0
  %.5 = select i1 %.not289, i8 -1, i8 %.3214.lcssa
  %287 = or i1 %.not289, %.lcssa324
  %.3 = select i1 %287, i8 -1, i8 %.1.lcssa
  %288 = icmp sgt i32 %.0224362, 1
  br i1 %288, label %289, label %.loopexit

289:                                              ; preds = %.critedge
  %290 = load i32, ptr %59, align 4, !tbaa !29
  %291 = and i32 %290, 536870912
  %292 = icmp ne i32 %291, 0
  %293 = zext i8 %.3 to i32
  %294 = and i8 %.3, %.5
  %295 = icmp eq i8 %294, -1
  %or.cond10 = select i1 %292, i1 %295, i1 false
  br i1 %or.cond10, label %.loopexit, label %.preheader.preheader

.preheader.preheader:                             ; preds = %289
  %296 = icmp eq i8 %.5, %235
  %297 = icmp eq i8 %.3, %.pre386
  %or.cond447 = select i1 %296, i1 %297, i1 false
  br i1 %or.cond447, label %386, label %383

.preheader.1:                                     ; preds = %383
  %298 = icmp eq i8 %.5, %236
  %299 = icmp eq i8 %.3, %.pre387
  %or.cond430 = select i1 %298, i1 %299, i1 false
  br i1 %or.cond430, label %386, label %300

300:                                              ; preds = %.preheader.1
  %301 = icmp eq i8 %.5, %.pre387
  %302 = icmp eq i8 %.3, %236
  %or.cond311.1 = and i1 %302, %301
  br i1 %or.cond311.1, label %386, label %.preheader.2

.preheader.2:                                     ; preds = %300
  %303 = icmp eq i8 %.5, %237
  %304 = icmp eq i8 %.3, %.pre388
  %or.cond431 = select i1 %303, i1 %304, i1 false
  br i1 %or.cond431, label %386, label %305

305:                                              ; preds = %.preheader.2
  %306 = icmp eq i8 %.5, %.pre388
  %307 = icmp eq i8 %.3, %237
  %or.cond311.2 = and i1 %307, %306
  br i1 %or.cond311.2, label %386, label %.preheader.3

.preheader.3:                                     ; preds = %305
  %308 = icmp eq i8 %.5, %238
  %309 = icmp eq i8 %.3, %.pre389
  %or.cond432 = select i1 %308, i1 %309, i1 false
  br i1 %or.cond432, label %386, label %310

310:                                              ; preds = %.preheader.3
  %311 = icmp eq i8 %.5, %.pre389
  %312 = icmp eq i8 %.3, %238
  %or.cond311.3 = and i1 %312, %311
  br i1 %or.cond311.3, label %386, label %.preheader.4

.preheader.4:                                     ; preds = %310
  %313 = icmp eq i8 %.5, %239
  %314 = icmp eq i8 %.3, %.pre390
  %or.cond433 = select i1 %313, i1 %314, i1 false
  br i1 %or.cond433, label %386, label %315

315:                                              ; preds = %.preheader.4
  %316 = icmp eq i8 %.5, %.pre390
  %317 = icmp eq i8 %.3, %239
  %or.cond311.4 = and i1 %317, %316
  br i1 %or.cond311.4, label %386, label %.preheader.5

.preheader.5:                                     ; preds = %315
  %318 = icmp eq i8 %.5, %240
  %319 = icmp eq i8 %.3, %.pre391
  %or.cond434 = select i1 %318, i1 %319, i1 false
  br i1 %or.cond434, label %386, label %320

320:                                              ; preds = %.preheader.5
  %321 = icmp eq i8 %.5, %.pre391
  %322 = icmp eq i8 %.3, %240
  %or.cond311.5 = and i1 %322, %321
  br i1 %or.cond311.5, label %386, label %.preheader.6

.preheader.6:                                     ; preds = %320
  %323 = icmp eq i8 %.5, %241
  %324 = icmp eq i8 %.3, %.pre392
  %or.cond435 = select i1 %323, i1 %324, i1 false
  br i1 %or.cond435, label %386, label %325

325:                                              ; preds = %.preheader.6
  %326 = icmp eq i8 %.5, %.pre392
  %327 = icmp eq i8 %.3, %241
  %or.cond311.6 = and i1 %327, %326
  br i1 %or.cond311.6, label %386, label %.preheader.7

.preheader.7:                                     ; preds = %325
  %328 = icmp eq i8 %.5, %242
  %329 = icmp eq i8 %.3, %.pre393
  %or.cond436 = select i1 %328, i1 %329, i1 false
  br i1 %or.cond436, label %386, label %330

330:                                              ; preds = %.preheader.7
  %331 = icmp eq i8 %.5, %.pre393
  %332 = icmp eq i8 %.3, %242
  %or.cond311.7 = and i1 %332, %331
  br i1 %or.cond311.7, label %386, label %.preheader.8

.preheader.8:                                     ; preds = %330
  %333 = icmp eq i8 %.5, %243
  %334 = icmp eq i8 %.3, %.pre394
  %or.cond437 = select i1 %333, i1 %334, i1 false
  br i1 %or.cond437, label %386, label %335

335:                                              ; preds = %.preheader.8
  %336 = icmp eq i8 %.5, %.pre394
  %337 = icmp eq i8 %.3, %243
  %or.cond311.8 = and i1 %337, %336
  br i1 %or.cond311.8, label %386, label %.preheader.9

.preheader.9:                                     ; preds = %335
  %338 = icmp eq i8 %.5, %244
  %339 = icmp eq i8 %.3, %.pre395
  %or.cond438 = select i1 %338, i1 %339, i1 false
  br i1 %or.cond438, label %386, label %340

340:                                              ; preds = %.preheader.9
  %341 = icmp eq i8 %.5, %.pre395
  %342 = icmp eq i8 %.3, %244
  %or.cond311.9 = and i1 %342, %341
  br i1 %or.cond311.9, label %386, label %.preheader.10

.preheader.10:                                    ; preds = %340
  %343 = icmp eq i8 %.5, %245
  %344 = icmp eq i8 %.3, %.pre396
  %or.cond439 = select i1 %343, i1 %344, i1 false
  br i1 %or.cond439, label %386, label %345

345:                                              ; preds = %.preheader.10
  %346 = icmp eq i8 %.5, %.pre396
  %347 = icmp eq i8 %.3, %245
  %or.cond311.10 = and i1 %347, %346
  br i1 %or.cond311.10, label %386, label %.preheader.11

.preheader.11:                                    ; preds = %345
  %348 = icmp eq i8 %.5, %246
  %349 = icmp eq i8 %.3, %.pre397
  %or.cond440 = select i1 %348, i1 %349, i1 false
  br i1 %or.cond440, label %386, label %350

350:                                              ; preds = %.preheader.11
  %351 = icmp eq i8 %.5, %.pre397
  %352 = icmp eq i8 %.3, %246
  %or.cond311.11 = and i1 %352, %351
  br i1 %or.cond311.11, label %386, label %.preheader.12

.preheader.12:                                    ; preds = %350
  %353 = icmp eq i8 %.5, %247
  %354 = icmp eq i8 %.3, %.pre398
  %or.cond441 = select i1 %353, i1 %354, i1 false
  br i1 %or.cond441, label %386, label %355

355:                                              ; preds = %.preheader.12
  %356 = icmp eq i8 %.5, %.pre398
  %357 = icmp eq i8 %.3, %247
  %or.cond311.12 = and i1 %357, %356
  br i1 %or.cond311.12, label %386, label %.preheader.13

.preheader.13:                                    ; preds = %355
  %358 = icmp eq i8 %.5, %248
  %359 = icmp eq i8 %.3, %.pre399
  %or.cond442 = select i1 %358, i1 %359, i1 false
  br i1 %or.cond442, label %386, label %360

360:                                              ; preds = %.preheader.13
  %361 = icmp eq i8 %.5, %.pre399
  %362 = icmp eq i8 %.3, %248
  %or.cond311.13 = and i1 %362, %361
  br i1 %or.cond311.13, label %386, label %.preheader.14

.preheader.14:                                    ; preds = %360
  %363 = icmp eq i8 %.5, %249
  %364 = icmp eq i8 %.3, %.pre400
  %or.cond443 = select i1 %363, i1 %364, i1 false
  br i1 %or.cond443, label %386, label %365

365:                                              ; preds = %.preheader.14
  %366 = icmp eq i8 %.5, %.pre400
  %367 = icmp eq i8 %.3, %249
  %or.cond311.14 = and i1 %367, %366
  br i1 %or.cond311.14, label %386, label %.preheader.15

.preheader.15:                                    ; preds = %365
  %368 = icmp eq i8 %.5, %250
  %369 = icmp eq i8 %.3, %.pre401
  %or.cond444 = select i1 %368, i1 %369, i1 false
  br i1 %or.cond444, label %386, label %370

370:                                              ; preds = %.preheader.15
  %371 = icmp eq i8 %.5, %.pre401
  %372 = icmp eq i8 %.3, %250
  %or.cond311.15 = and i1 %372, %371
  br i1 %or.cond311.15, label %386, label %.preheader.16

.preheader.16:                                    ; preds = %370
  %373 = icmp eq i8 %.5, %251
  %374 = icmp eq i8 %.3, %.pre402
  %or.cond445 = select i1 %373, i1 %374, i1 false
  br i1 %or.cond445, label %386, label %375

375:                                              ; preds = %.preheader.16
  %376 = icmp eq i8 %.5, %.pre402
  %377 = icmp eq i8 %.3, %251
  %or.cond311.16 = and i1 %377, %376
  br i1 %or.cond311.16, label %386, label %.preheader.17

.preheader.17:                                    ; preds = %375
  %378 = icmp eq i8 %.5, %252
  %379 = icmp eq i8 %.3, %.pre403
  %or.cond446 = select i1 %378, i1 %379, i1 false
  br i1 %or.cond446, label %386, label %380

380:                                              ; preds = %.preheader.17
  %381 = icmp eq i8 %.5, %.pre403
  %382 = icmp eq i8 %.3, %252
  %or.cond311.17 = and i1 %382, %381
  br i1 %or.cond311.17, label %386, label %.loopexit

383:                                              ; preds = %.preheader.preheader
  %384 = icmp eq i8 %.5, %.pre386
  %385 = icmp eq i8 %.3, %235
  %or.cond311 = and i1 %385, %384
  br i1 %or.cond311, label %386, label %.preheader.1

386:                                              ; preds = %.preheader.preheader, %.preheader.17, %.preheader.16, %.preheader.15, %.preheader.14, %.preheader.13, %.preheader.12, %.preheader.11, %.preheader.10, %.preheader.9, %.preheader.8, %.preheader.7, %.preheader.6, %.preheader.5, %.preheader.4, %.preheader.3, %.preheader.2, %.preheader.1, %380, %375, %370, %365, %360, %355, %350, %345, %340, %335, %330, %325, %320, %315, %310, %305, %300, %383
  %387 = icmp ult i8 %.3, 33
  br i1 %387, label %388, label %395

388:                                              ; preds = %386
  %389 = add nsw i32 %293, -1
  %390 = shl nuw i32 1, %389
  %391 = and i32 %390, %.3229411
  %.not291 = icmp eq i32 %391, 0
  br i1 %.not291, label %395, label %392

392:                                              ; preds = %388
  %393 = xor i32 %390, -1
  %394 = and i32 %.3229411, %393
  br label %.loopexit

395:                                              ; preds = %388, %386
  br i1 %.lcssa, label %396, label %.loopexit

396:                                              ; preds = %395
  %397 = load i8, ptr %.4244.lcssa, align 1, !tbaa !40
  %398 = icmp eq i8 %397, %.3
  %spec.select305.idx = zext i1 %398 to i64
  %spec.select305 = getelementptr inbounds i8, ptr %.4244.lcssa, i64 %spec.select305.idx
  br label %.loopexit

.loopexit:                                        ; preds = %380, %396, %392, %395, %289, %.critedge
  %.7 = phi ptr [ %.4244.lcssa, %.critedge ], [ %.4244.lcssa, %289 ], [ %.4244.lcssa, %392 ], [ null, %395 ], [ %spec.select305, %396 ], [ %.4244.lcssa, %380 ]
  %.5231 = phi i32 [ %.3229411, %.critedge ], [ %.3229411, %289 ], [ %394, %392 ], [ %.3229411, %395 ], [ %.3229411, %396 ], [ %.3229411, %380 ]
  %.not449 = phi i1 [ false, %.critedge ], [ true, %289 ], [ true, %392 ], [ true, %395 ], [ true, %396 ], [ false, %380 ]
  %.0.neg = phi i32 [ -1, %.critedge ], [ -2, %289 ], [ -2, %392 ], [ -2, %395 ], [ -2, %396 ], [ -1, %380 ]
  %399 = add i32 %.0.neg, %.0224362
  %.not292 = icmp ne i32 %399, 0
  %400 = icmp eq i32 %259, 4095
  %or.cond312 = and i1 %400, %.not292
  br i1 %or.cond312, label %.loopexit318, label %401

401:                                              ; preds = %.loopexit
  store i32 %233, ptr %calloc, align 8
  %402 = getelementptr inbounds i8, ptr %calloc, i64 4
  store i16 6, ptr %402, align 4, !tbaa !49
  %403 = getelementptr inbounds i8, ptr %calloc, i64 8
  store i32 %.5239, ptr %403, align 8, !tbaa !59
  %404 = getelementptr inbounds i8, ptr %calloc, i64 144
  store i32 %.1233, ptr %404, align 8, !tbaa !60
  %.not293.not = icmp ne i32 %259, 0
  %.not448 = and i1 %.not293.not, %.not292
  %.not450 = and i1 %.not449, %.not448
  br i1 %.not450, label %411, label %405

405:                                              ; preds = %401
  %406 = select i1 %.not293.not, i32 %.5239, i32 %234
  %407 = or i32 %406, 4096
  %408 = select i1 %.not292, i32 %406, i32 %407
  %409 = and i32 %408, -1077
  %410 = or disjoint i32 %409, 4
  %simplifycfg.merge = select i1 %.not449, i32 %408, i32 %410
  store i32 %simplifycfg.merge, ptr %403, align 8, !tbaa !59
  br label %411

411:                                              ; preds = %401, %405
  %412 = add nsw i32 %259, 1
  store i32 %412, ptr %231, align 4, !tbaa !39
  %.not284 = icmp eq i32 %399, 0
  br i1 %.not284, label %.loopexit318, label %253, !llvm.loop !61

.loopexit318:                                     ; preds = %411, %.loopexit
  %413 = phi i32 [ 4095, %.loopexit ], [ %412, %411 ]
  %414 = getelementptr inbounds i8, ptr %0, i64 280
  store i32 %413, ptr %414, align 8, !tbaa !45
  store i32 0, ptr %231, align 4, !tbaa !39
  %415 = load i32, ptr %28, align 8, !tbaa !15
  %.not294 = icmp ne i32 %415, 0
  %416 = icmp sgt i32 %413, 1
  %or.cond313 = select i1 %.not294, i1 %416, i1 false
  br i1 %or.cond313, label %417, label %420

417:                                              ; preds = %.loopexit318
  %418 = getelementptr inbounds i8, ptr %0, i64 360
  %419 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %418, ptr noundef nonnull dereferenceable(1) @.str.12) #8
  br label %435

420:                                              ; preds = %.loopexit318
  br i1 %or.cond312, label %421, label %424

421:                                              ; preds = %420
  %422 = getelementptr inbounds i8, ptr %0, i64 360
  %423 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %422, ptr noundef nonnull dereferenceable(1) @.str.13) #8
  br label %435

424:                                              ; preds = %.thread417, %420
  %.not294416420 = phi i1 [ %.not294413, %.thread417 ], [ %.not294, %420 ]
  %425 = load i32, ptr %59, align 4, !tbaa !29
  %426 = and i32 %425, 33554432
  %.not296 = icmp eq i32 %426, 0
  br i1 %.not296, label %435, label %427

427:                                              ; preds = %424
  br i1 %.not294416420, label %428, label %431

428:                                              ; preds = %427
  %429 = getelementptr inbounds i8, ptr %0, i64 360
  %430 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %429, ptr noundef nonnull dereferenceable(1) @.str.14) #8
  br label %435

431:                                              ; preds = %427
  %432 = getelementptr inbounds i8, ptr %1, i64 24
  %433 = load i32, ptr %432, align 8, !tbaa !62
  %spec.select306 = tail call i32 @llvm.umax.i32(i32 %433, i32 1)
  %434 = getelementptr inbounds i8, ptr %0, i64 24
  store i32 %spec.select306, ptr %434, align 8, !tbaa !63
  br label %435

435:                                              ; preds = %.thread, %424, %431, %428, %421, %417, %149, %136, %128, %119, %43, %31, %24, %17, %12
  %.1216 = phi i32 [ 0, %12 ], [ 0, %17 ], [ 0, %24 ], [ 0, %31 ], [ 0, %43 ], [ 0, %417 ], [ 0, %421 ], [ 0, %428 ], [ 0, %119 ], [ 0, %149 ], [ 0, %128 ], [ 0, %136 ], [ 1, %431 ], [ 1, %424 ], [ 0, %.thread ]
  ret i32 %.1216
}

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite)
declare noalias ptr @strdup(ptr nocapture noundef readonly) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite)
declare noalias noundef ptr @realloc(ptr allocptr nocapture noundef, i64 noundef) local_unnamed_addr #5

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

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

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

attributes #0 = { 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 #1 = { mustprogress nofree nounwind willreturn memory(argmem: readwrite) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { mustprogress nofree nounwind willreturn 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 #5 = { mustprogress nounwind willreturn allockind("realloc") allocsize(1) 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 #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" }
attributes #8 = { nounwind }
attributes #9 = { nounwind willreturn memory(read) }
attributes #10 = { nounwind allocsize(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, !10, i64 52}
!6 = !{!"", !7, i64 0, !7, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !8, i64 56, !8, i64 72, !10, i64 76, !11, i64 80}
!7 = !{!"float", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"any pointer", !8, i64 0}
!12 = !{!6, !10, i64 28}
!13 = !{!6, !10, i64 48}
!14 = !{!6, !10, i64 36}
!15 = !{!6, !10, i64 40}
!16 = !{!6, !10, i64 16}
!17 = !{!6, !10, i64 12}
!18 = !{!6, !10, i64 8}
!19 = !{!20, !21, i64 200}
!20 = !{!"WavpackContext", !6, i64 0, !11, i64 88, !10, i64 96, !10, i64 100, !11, i64 104, !10, i64 112, !11, i64 120, !11, i64 128, !11, i64 136, !11, i64 144, !11, i64 152, !11, i64 160, !21, i64 168, !21, i64 176, !21, i64 184, !21, i64 192, !21, i64 200, !21, i64 208, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !10, i64 236, !10, i64 240, !10, i64 244, !10, i64 248, !10, i64 252, !10, i64 256, !10, i64 260, !10, i64 264, !10, i64 268, !10, i64 272, !10, i64 276, !10, i64 280, !10, i64 284, !11, i64 288, !11, i64 296, !8, i64 304, !11, i64 312, !11, i64 320, !10, i64 328, !10, i64 332, !11, i64 336, !8, i64 344, !11, i64 352, !8, i64 360}
!21 = !{!"long", !8, i64 0}
!22 = !{!20, !10, i64 48}
!23 = !{!20, !10, i64 28}
!24 = !{!20, !10, i64 52}
!25 = !{!20, !10, i64 8}
!26 = !{!20, !10, i64 12}
!27 = !{!20, !10, i64 36}
!28 = !{!20, !10, i64 40}
!29 = !{!6, !10, i64 20}
!30 = !{!20, !10, i64 20}
!31 = !{!20, !10, i64 16}
!32 = !{!10, !10, i64 0}
!33 = !{!6, !10, i64 32}
!34 = !{!20, !10, i64 32}
!35 = !{!6, !7, i64 4}
!36 = !{!20, !7, i64 4}
!37 = !{!6, !7, i64 0}
!38 = !{!20, !10, i64 224}
!39 = !{!20, !10, i64 276}
!40 = !{!8, !8, i64 0}
!41 = distinct !{!41, !42}
!42 = !{!"llvm.loop.mustprogress"}
!43 = !{!20, !11, i64 320}
!44 = distinct !{!44, !42}
!45 = !{!20, !10, i64 280}
!46 = !{!20, !11, i64 288}
!47 = !{!11, !11, i64 0}
!48 = distinct !{!48, !42}
!49 = !{!50, !52, i64 4}
!50 = !{!"", !51, i64 0, !53, i64 12, !11, i64 88, !11, i64 96, !11, i64 104, !11, i64 112, !11, i64 120, !21, i64 128, !21, i64 136, !10, i64 144, !10, i64 148, !10, i64 152, !8, i64 156, !8, i64 157, !8, i64 158, !8, i64 159, !8, i64 160, !8, i64 161, !8, i64 162, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !54, i64 200, !54, i64 248, !54, i64 296, !7, i64 344, !8, i64 348, !8, i64 349, !8, i64 350, !8, i64 351, !8, i64 352, !8, i64 353, !8, i64 354, !8, i64 355, !55, i64 360, !8, i64 432, !57, i64 1968, !11, i64 2064, !58, i64 2072}
!51 = !{!"", !8, i64 0, !52, i64 4, !52, i64 6, !10, i64 8}
!52 = !{!"short", !8, i64 0}
!53 = !{!"words_data", !8, i64 0, !8, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !8, i64 36}
!54 = !{!"bs", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !10, i64 32, !10, i64 36, !10, i64 40}
!55 = !{!"", !8, i64 0, !8, i64 8, !8, i64 16, !56, i64 24, !56, i64 32, !56, i64 40, !11, i64 48, !11, i64 56, !10, i64 64}
!56 = !{!"double", !8, i64 0}
!57 = !{!"decorr_pass", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !8, i64 16, !8, i64 48, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92}
!58 = !{!"", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !8, i64 40, !8, i64 41, !10, i64 44, !10, i64 48, !10, i64 52, !11, i64 56, !10, i64 64, !10, i64 68, !10, i64 72, !8, i64 76, !11, i64 160}
!59 = !{!50, !10, i64 8}
!60 = !{!50, !10, i64 144}
!61 = distinct !{!61, !42}
!62 = !{!6, !10, i64 24}
!63 = !{!20, !10, i64 24}


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