; LLVM IR from dbry/wavpack-stream :: cli (caff)

; 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 = type { i32, i32, ptr, ptr }
%struct.CAFFileHeader = type { [4 x i8], i16, i16 }
%struct.CAFChunkHeader = type <{ [4 x i8], i64 }>
%struct.CAFAudioFormat = type { double, [4 x i8], i32, i32, i32, i32, i32 }
%struct.WavpackStreamConfig = type { float, float, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [16 x i8], i8, i32, ptr }
%struct.CAFChannelLayout = type { i32, i32, i32 }
%struct.CAFChannelDescription = type { i32, i32, [3 x float] }

@.str = external hidden unnamed_addr constant [29 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [8 x i8], align 1
@debug_logging_mode = external global i32, align 4
@.str.7 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [83 x i8], align 1
@__const.ParseCaffHeaderConfig.reorder_string = external hidden unnamed_addr constant [9 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [56 x i8], align 1
@layouts = external hidden global [47 x %struct.anon], align 16
@.str.29 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [56 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @ParseCaffHeaderConfig(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4) #0 {
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca %struct.CAFFileHeader, align 2
  %21 = alloca %struct.CAFChunkHeader, align 4
  %22 = alloca %struct.CAFAudioFormat, align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca [5 x i8], align 1
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca [9 x i8], align 1
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca ptr, align 8
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #9
  store i32 0, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #9
  store i32 0, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #9
  store i32 0, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #9
  store ptr null, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #9
  store ptr null, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #9
  store i64 0, ptr %18, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr %21) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #9
  %38 = load ptr, ptr %7, align 8, !tbaa !5
  %39 = call i64 @DoGetFileSize(ptr noundef %38)
  store i64 %39, ptr %19, align 8, !tbaa !11
  %40 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %20, ptr align 1 %40, i64 4, i1 false)
  %41 = load ptr, ptr %7, align 8, !tbaa !5
  %42 = getelementptr inbounds i8, ptr %20, i64 4
  %43 = call i32 @DoReadFile(ptr noundef %41, ptr noundef %42, i32 noundef 4, ptr noundef %15)
  %44 = icmp ne i32 %43, 0
  br i1 %44, label %45, label %49

45:                                               ; preds = %5
  %46 = load i32, ptr %15, align 4, !tbaa !9
  %47 = zext i32 %46 to i64
  %48 = icmp ne i64 %47, 4
  br i1 %48, label %49, label %51

49:                                               ; preds = %45, %5
  %50 = load ptr, ptr %8, align 8, !tbaa !5
  call void (ptr, ...) @error_line(ptr noundef @.str, ptr noundef %50)
  store i32 1, ptr %6, align 4
  store i32 1, ptr %24, align 4
  br label %1077

51:                                               ; preds = %45
  %52 = load ptr, ptr %11, align 8, !tbaa !5
  %53 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %52, i32 0, i32 4
  %54 = load i32, ptr %53, align 8, !tbaa !13
  %55 = and i32 %54, 512
  %56 = icmp ne i32 %55, 0
  br i1 %56, label %64, label %57

57:                                               ; preds = %51
  %58 = load ptr, ptr %10, align 8, !tbaa !5
  %59 = call i32 @WavpackStreamAddWrapper(ptr noundef %58, ptr noundef %20, i32 noundef 8)
  %60 = icmp ne i32 %59, 0
  br i1 %60, label %64, label %61

61:                                               ; preds = %57
  %62 = load ptr, ptr %10, align 8, !tbaa !5
  %63 = call ptr @WavpackStreamGetErrorMessage(ptr noundef %62)
  call void (ptr, ...) @error_line(ptr noundef @.str.1, ptr noundef %63)
  store i32 1, ptr %6, align 4
  store i32 1, ptr %24, align 4
  br label %1077

64:                                               ; preds = %57, %51
  br label %65

65:                                               ; preds = %64
  call void @WavpackStreamBigEndianToNative(ptr noundef %20, ptr noundef @.str.2)
  %66 = getelementptr inbounds %struct.CAFFileHeader, ptr %20, i32 0, i32 1
  %67 = load i16, ptr %66, align 2, !tbaa !16
  %68 = zext i16 %67 to i32
  %69 = icmp ne i32 %68, 1
  br i1 %69, label %70, label %75

70:                                               ; preds = %65
  %71 = load ptr, ptr %8, align 8, !tbaa !5
  %72 = getelementptr inbounds %struct.CAFFileHeader, ptr %20, i32 0, i32 1
  %73 = load i16, ptr %72, align 2, !tbaa !16
  %74 = zext i16 %73 to i32
  call void (ptr, ...) @error_line(ptr noundef @.str.3, ptr noundef %71, i32 noundef %74)
  store i32 1, ptr %6, align 4
  store i32 1, ptr %24, align 4
  br label %1077

75:                                               ; preds = %65
  br label %76

76:                                               ; preds = %1015, %75
  br label %77

77:                                               ; preds = %76
  %78 = load ptr, ptr %7, align 8, !tbaa !5
  %79 = call i32 @DoReadFile(ptr noundef %78, ptr noundef %21, i32 noundef 12, ptr noundef %15)
  %80 = icmp ne i32 %79, 0
  br i1 %80, label %81, label %85

81:                                               ; preds = %77
  %82 = load i32, ptr %15, align 4, !tbaa !9
  %83 = zext i32 %82 to i64
  %84 = icmp ne i64 %83, 12
  br i1 %84, label %85, label %87

85:                                               ; preds = %81, %77
  %86 = load ptr, ptr %8, align 8, !tbaa !5
  call void (ptr, ...) @error_line(ptr noundef @.str, ptr noundef %86)
  store i32 1, ptr %6, align 4
  store i32 1, ptr %24, align 4
  br label %1077

87:                                               ; preds = %81
  %88 = load ptr, ptr %11, align 8, !tbaa !5
  %89 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %88, i32 0, i32 4
  %90 = load i32, ptr %89, align 8, !tbaa !13
  %91 = and i32 %90, 512
  %92 = icmp ne i32 %91, 0
  br i1 %92, label %100, label %93

93:                                               ; preds = %87
  %94 = load ptr, ptr %10, align 8, !tbaa !5
  %95 = call i32 @WavpackStreamAddWrapper(ptr noundef %94, ptr noundef %21, i32 noundef 12)
  %96 = icmp ne i32 %95, 0
  br i1 %96, label %100, label %97

97:                                               ; preds = %93
  %98 = load ptr, ptr %10, align 8, !tbaa !5
  %99 = call ptr @WavpackStreamGetErrorMessage(ptr noundef %98)
  call void (ptr, ...) @error_line(ptr noundef @.str.1, ptr noundef %99)
  store i32 1, ptr %6, align 4
  store i32 1, ptr %24, align 4
  br label %1077

100:                                              ; preds = %93, %87
  br label %101

101:                                              ; preds = %100
  call void @WavpackStreamBigEndianToNative(ptr noundef %21, ptr noundef @.str.4)
  %102 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 0
  %103 = getelementptr inbounds [4 x i8], ptr %102, i64 0, i64 0
  %104 = call i32 @strncmp(ptr noundef %103, ptr noundef @.str.5, i64 noundef 4) #10
  %105 = icmp ne i32 %104, 0
  br i1 %105, label %344, label %106

106:                                              ; preds = %101
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #9
  store i32 1, ptr %25, align 4, !tbaa !9
  %107 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 1
  %108 = load i64, ptr %107, align 4, !tbaa !19
  %109 = icmp ne i64 %108, 32
  br i1 %109, label %123, label %110

110:                                              ; preds = %106
  %111 = load ptr, ptr %7, align 8, !tbaa !5
  %112 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 1
  %113 = load i64, ptr %112, align 4, !tbaa !19
  %114 = trunc i64 %113 to i32
  %115 = call i32 @DoReadFile(ptr noundef %111, ptr noundef %22, i32 noundef %114, ptr noundef %15)
  %116 = icmp ne i32 %115, 0
  br i1 %116, label %117, label %123

117:                                              ; preds = %110
  %118 = load i32, ptr %15, align 4, !tbaa !9
  %119 = zext i32 %118 to i64
  %120 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 1
  %121 = load i64, ptr %120, align 4, !tbaa !19
  %122 = icmp ne i64 %119, %121
  br i1 %122, label %123, label %125

123:                                              ; preds = %117, %110, %106
  %124 = load ptr, ptr %8, align 8, !tbaa !5
  call void (ptr, ...) @error_line(ptr noundef @.str, ptr noundef %124)
  store i32 1, ptr %6, align 4
  store i32 1, ptr %24, align 4
  br label %341

125:                                              ; preds = %117
  %126 = load ptr, ptr %11, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %126, i32 0, i32 4
  %128 = load i32, ptr %127, align 8, !tbaa !13
  %129 = and i32 %128, 512
  %130 = icmp ne i32 %129, 0
  br i1 %130, label %141, label %131

131:                                              ; preds = %125
  %132 = load ptr, ptr %10, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 1
  %134 = load i64, ptr %133, align 4, !tbaa !19
  %135 = trunc i64 %134 to i32
  %136 = call i32 @WavpackStreamAddWrapper(ptr noundef %132, ptr noundef %22, i32 noundef %135)
  %137 = icmp ne i32 %136, 0
  br i1 %137, label %141, label %138

138:                                              ; preds = %131
  %139 = load ptr, ptr %10, align 8, !tbaa !5
  %140 = call ptr @WavpackStreamGetErrorMessage(ptr noundef %139)
  call void (ptr, ...) @error_line(ptr noundef @.str.1, ptr noundef %140)
  store i32 1, ptr %6, align 4
  store i32 1, ptr %24, align 4
  br label %341

141:                                              ; preds = %131, %125
  br label %142

142:                                              ; preds = %141
  call void @WavpackStreamBigEndianToNative(ptr noundef %22, ptr noundef @.str.6)
  store i32 1, ptr %13, align 4, !tbaa !9
  %143 = load i32, ptr @debug_logging_mode, align 4, !tbaa !9
  %144 = icmp ne i32 %143, 0
  br i1 %144, label %145, label %163

145:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 5, ptr %26) #9
  %146 = getelementptr inbounds [5 x i8], ptr %26, i64 0, i64 0
  %147 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 1
  %148 = getelementptr inbounds [4 x i8], ptr %147, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %146, ptr align 8 %148, i64 4, i1 false)
  %149 = getelementptr inbounds [5 x i8], ptr %26, i64 0, i64 4
  store i8 0, ptr %149, align 1, !tbaa !21
  %150 = getelementptr inbounds [5 x i8], ptr %26, i64 0, i64 0
  %151 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 2
  %152 = load i32, ptr %151, align 4, !tbaa !22
  %153 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 0
  %154 = load double, ptr %153, align 8, !tbaa !25
  call void (ptr, ...) @error_line(ptr noundef @.str.7, ptr noundef %150, i32 noundef %152, double noundef %154)
  %155 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 3
  %156 = load i32, ptr %155, align 8, !tbaa !26
  %157 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 4
  %158 = load i32, ptr %157, align 4, !tbaa !27
  call void (ptr, ...) @error_line(ptr noundef @.str.8, i32 noundef %156, i32 noundef %158)
  %159 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 5
  %160 = load i32, ptr %159, align 8, !tbaa !28
  %161 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 6
  %162 = load i32, ptr %161, align 4, !tbaa !29
  call void (ptr, ...) @error_line(ptr noundef @.str.9, i32 noundef %160, i32 noundef %162)
  call void @llvm.lifetime.end.p0(i64 5, ptr %26) #9
  br label %163

163:                                              ; preds = %145, %142
  %164 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 1
  %165 = getelementptr inbounds [4 x i8], ptr %164, i64 0, i64 0
  %166 = call i32 @strncmp(ptr noundef %165, ptr noundef @.str.10, i64 noundef 4) #10
  %167 = icmp ne i32 %166, 0
  br i1 %167, label %173, label %168

168:                                              ; preds = %163
  %169 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 2
  %170 = load i32, ptr %169, align 4, !tbaa !22
  %171 = and i32 %170, -4
  %172 = icmp ne i32 %171, 0
  br i1 %172, label %173, label %174

173:                                              ; preds = %168, %163
  store i32 0, ptr %25, align 4, !tbaa !9
  br label %251

174:                                              ; preds = %168
  %175 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 0
  %176 = load double, ptr %175, align 8, !tbaa !25
  %177 = fcmp olt double %176, 1.000000e+00
  br i1 %177, label %189, label %178

178:                                              ; preds = %174
  %179 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 0
  %180 = load double, ptr %179, align 8, !tbaa !25
  %181 = fcmp ogt double %180, 0x416FFFFFE0000000
  br i1 %181, label %189, label %182

182:                                              ; preds = %178
  %183 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 0
  %184 = load double, ptr %183, align 8, !tbaa !25
  %185 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 0
  %186 = load double, ptr %185, align 8, !tbaa !25
  %187 = call double @llvm.floor.f64(double %186)
  %188 = fcmp une double %184, %187
  br i1 %188, label %189, label %190

189:                                              ; preds = %182, %178, %174
  store i32 0, ptr %25, align 4, !tbaa !9
  br label %250

190:                                              ; preds = %182
  %191 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 5
  %192 = load i32, ptr %191, align 8, !tbaa !28
  %193 = icmp ne i32 %192, 0
  br i1 %193, label %194, label %198

194:                                              ; preds = %190
  %195 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 5
  %196 = load i32, ptr %195, align 8, !tbaa !28
  %197 = icmp ugt i32 %196, 256
  br i1 %197, label %198, label %199

198:                                              ; preds = %194, %190
  store i32 0, ptr %25, align 4, !tbaa !9
  br label %249

199:                                              ; preds = %194
  %200 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 6
  %201 = load i32, ptr %200, align 4, !tbaa !29
  %202 = icmp ult i32 %201, 1
  br i1 %202, label %216, label %203

203:                                              ; preds = %199
  %204 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 6
  %205 = load i32, ptr %204, align 4, !tbaa !29
  %206 = icmp ugt i32 %205, 32
  br i1 %206, label %216, label %207

207:                                              ; preds = %203
  %208 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 2
  %209 = load i32, ptr %208, align 4, !tbaa !22
  %210 = and i32 %209, 1
  %211 = icmp ne i32 %210, 0
  br i1 %211, label %212, label %217

212:                                              ; preds = %207
  %213 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 6
  %214 = load i32, ptr %213, align 4, !tbaa !29
  %215 = icmp ne i32 %214, 32
  br i1 %215, label %216, label %217

216:                                              ; preds = %212, %203, %199
  store i32 0, ptr %25, align 4, !tbaa !9
  br label %248

217:                                              ; preds = %212, %207
  %218 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 4
  %219 = load i32, ptr %218, align 4, !tbaa !27
  %220 = icmp ne i32 %219, 1
  br i1 %220, label %246, label %221

221:                                              ; preds = %217
  %222 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 3
  %223 = load i32, ptr %222, align 8, !tbaa !26
  %224 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 5
  %225 = load i32, ptr %224, align 8, !tbaa !28
  %226 = udiv i32 %223, %225
  %227 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 6
  %228 = load i32, ptr %227, align 4, !tbaa !29
  %229 = add i32 %228, 7
  %230 = udiv i32 %229, 8
  %231 = icmp ult i32 %226, %230
  br i1 %231, label %246, label %232

232:                                              ; preds = %221
  %233 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 3
  %234 = load i32, ptr %233, align 8, !tbaa !26
  %235 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 5
  %236 = load i32, ptr %235, align 8, !tbaa !28
  %237 = udiv i32 %234, %236
  %238 = icmp ugt i32 %237, 4
  br i1 %238, label %246, label %239

239:                                              ; preds = %232
  %240 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 3
  %241 = load i32, ptr %240, align 8, !tbaa !26
  %242 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 5
  %243 = load i32, ptr %242, align 8, !tbaa !28
  %244 = urem i32 %241, %243
  %245 = icmp ne i32 %244, 0
  br i1 %245, label %246, label %247

246:                                              ; preds = %239, %232, %221, %217
  store i32 0, ptr %25, align 4, !tbaa !9
  br label %247

247:                                              ; preds = %246, %239
  br label %248

248:                                              ; preds = %247, %216
  br label %249

249:                                              ; preds = %248, %198
  br label %250

250:                                              ; preds = %249, %189
  br label %251

251:                                              ; preds = %250, %173
  %252 = load i32, ptr %25, align 4, !tbaa !9
  %253 = icmp ne i32 %252, 0
  br i1 %253, label %256, label %254

254:                                              ; preds = %251
  %255 = load ptr, ptr %8, align 8, !tbaa !5
  call void (ptr, ...) @error_line(ptr noundef @.str.11, ptr noundef %255)
  store i32 1, ptr %6, align 4
  store i32 1, ptr %24, align 4
  br label %341

256:                                              ; preds = %251
  %257 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 3
  %258 = load i32, ptr %257, align 8, !tbaa !26
  %259 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 5
  %260 = load i32, ptr %259, align 8, !tbaa !28
  %261 = udiv i32 %258, %260
  %262 = load ptr, ptr %11, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %262, i32 0, i32 3
  store i32 %261, ptr %263, align 4, !tbaa !30
  %264 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 2
  %265 = load i32, ptr %264, align 4, !tbaa !22
  %266 = and i32 %265, 1
  %267 = icmp ne i32 %266, 0
  %268 = zext i1 %267 to i64
  %269 = select i1 %267, i32 127, i32 0
  %270 = load ptr, ptr %11, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %270, i32 0, i32 8
  store i32 %269, ptr %271, align 8, !tbaa !31
  %272 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 6
  %273 = load i32, ptr %272, align 4, !tbaa !29
  %274 = load ptr, ptr %11, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %274, i32 0, i32 2
  store i32 %273, ptr %275, align 8, !tbaa !32
  %276 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 5
  %277 = load i32, ptr %276, align 8, !tbaa !28
  %278 = load ptr, ptr %11, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %278, i32 0, i32 7
  store i32 %277, ptr %279, align 4, !tbaa !33
  %280 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 0
  %281 = load double, ptr %280, align 8, !tbaa !25
  %282 = fptosi double %281 to i32
  %283 = load ptr, ptr %11, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %283, i32 0, i32 12
  store i32 %282, ptr %284, align 8, !tbaa !34
  %285 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 2
  %286 = load i32, ptr %285, align 4, !tbaa !22
  %287 = and i32 %286, 2
  %288 = icmp ne i32 %287, 0
  br i1 %288, label %299, label %289

289:                                              ; preds = %256
  %290 = load ptr, ptr %11, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %290, i32 0, i32 3
  %292 = load i32, ptr %291, align 4, !tbaa !30
  %293 = icmp sgt i32 %292, 1
  br i1 %293, label %294, label %299

294:                                              ; preds = %289
  %295 = load ptr, ptr %11, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %295, i32 0, i32 4
  %297 = load i32, ptr %296, align 8, !tbaa !13
  %298 = or i32 %297, 1
  store i32 %298, ptr %296, align 8, !tbaa !13
  br label %299

299:                                              ; preds = %294, %289, %256
  %300 = load ptr, ptr %11, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %300, i32 0, i32 3
  %302 = load i32, ptr %301, align 4, !tbaa !30
  %303 = icmp eq i32 %302, 1
  br i1 %303, label %304, label %309

304:                                              ; preds = %299
  %305 = load ptr, ptr %11, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %305, i32 0, i32 4
  %307 = load i32, ptr %306, align 8, !tbaa !13
  %308 = or i32 %307, 2
  store i32 %308, ptr %306, align 8, !tbaa !13
  br label %309

309:                                              ; preds = %304, %299
  %310 = load i32, ptr @debug_logging_mode, align 4, !tbaa !9
  %311 = icmp ne i32 %310, 0
  br i1 %311, label %312, label %340

312:                                              ; preds = %309
  %313 = load ptr, ptr %11, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %313, i32 0, i32 8
  %315 = load i32, ptr %314, align 8, !tbaa !31
  %316 = icmp eq i32 %315, 127
  br i1 %316, label %317, label %325

317:                                              ; preds = %312
  %318 = load ptr, ptr %11, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %318, i32 0, i32 4
  %320 = load i32, ptr %319, align 8, !tbaa !13
  %321 = and i32 %320, 1
  %322 = icmp ne i32 %321, 0
  %323 = zext i1 %322 to i64
  %324 = select i1 %322, ptr @.str.13, ptr @.str.14
  call void (ptr, ...) @error_line(ptr noundef @.str.12, ptr noundef %324)
  br label %339

325:                                              ; preds = %312
  %326 = load ptr, ptr %11, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %326, i32 0, i32 2
  %328 = load i32, ptr %327, align 8, !tbaa !32
  %329 = load ptr, ptr %11, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %329, i32 0, i32 4
  %331 = load i32, ptr %330, align 8, !tbaa !13
  %332 = and i32 %331, 1
  %333 = icmp ne i32 %332, 0
  %334 = zext i1 %333 to i64
  %335 = select i1 %333, ptr @.str.13, ptr @.str.14
  %336 = load ptr, ptr %11, align 8, !tbaa !5
  %337 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %336, i32 0, i32 3
  %338 = load i32, ptr %337, align 4, !tbaa !30
  call void (ptr, ...) @error_line(ptr noundef @.str.15, i32 noundef %328, ptr noundef %335, i32 noundef %338)
  br label %339

339:                                              ; preds = %325, %317
  br label %340

340:                                              ; preds = %339, %309
  store i32 0, ptr %24, align 4
  br label %341

341:                                              ; preds = %340, %254, %138, %123
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #9
  %342 = load i32, ptr %24, align 4
  switch i32 %342, label %1077 [
    i32 0, label %343
  ]

343:                                              ; preds = %341
  br label %1015

344:                                              ; preds = %101
  %345 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 0
  %346 = getelementptr inbounds [4 x i8], ptr %345, i64 0, i64 0
  %347 = call i32 @strncmp(ptr noundef %346, ptr noundef @.str.16, i64 noundef 4) #10
  %348 = icmp ne i32 %347, 0
  br i1 %348, label %818, label %349

349:                                              ; preds = %344
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #9
  %350 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 1
  %351 = load i64, ptr %350, align 4, !tbaa !19
  %352 = icmp slt i64 %351, 0
  br i1 %352, label %361, label %353

353:                                              ; preds = %349
  %354 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 1
  %355 = load i64, ptr %354, align 4, !tbaa !19
  %356 = icmp sgt i64 %355, 1024
  br i1 %356, label %361, label %357

357:                                              ; preds = %353
  %358 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 1
  %359 = load i64, ptr %358, align 4, !tbaa !19
  %360 = icmp ult i64 %359, 12
  br i1 %360, label %361, label %362

361:                                              ; preds = %357, %353, %349
  call void (ptr, ...) @error_line(ptr noundef @.str.17)
  store i32 1, ptr %6, align 4
  store i32 1, ptr %24, align 4
  br label %815

362:                                              ; preds = %357
  %363 = load i32, ptr @debug_logging_mode, align 4, !tbaa !9
  %364 = icmp ne i32 %363, 0
  br i1 %364, label %365, label %369

365:                                              ; preds = %362
  %366 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 1
  %367 = load i64, ptr %366, align 4, !tbaa !19
  %368 = trunc i64 %367 to i32
  call void (ptr, ...) @error_line(ptr noundef @.str.18, i32 noundef %368)
  br label %369

369:                                              ; preds = %365, %362
  %370 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 1
  %371 = load i64, ptr %370, align 4, !tbaa !19
  %372 = call noalias ptr @malloc(i64 noundef %371) #11
  store ptr %372, ptr %27, align 8, !tbaa !5
  %373 = load ptr, ptr %7, align 8, !tbaa !5
  %374 = load ptr, ptr %27, align 8, !tbaa !5
  %375 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 1
  %376 = load i64, ptr %375, align 4, !tbaa !19
  %377 = trunc i64 %376 to i32
  %378 = call i32 @DoReadFile(ptr noundef %373, ptr noundef %374, i32 noundef %377, ptr noundef %15)
  %379 = icmp ne i32 %378, 0
  br i1 %379, label %380, label %386

380:                                              ; preds = %369
  %381 = load i32, ptr %15, align 4, !tbaa !9
  %382 = zext i32 %381 to i64
  %383 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 1
  %384 = load i64, ptr %383, align 4, !tbaa !19
  %385 = icmp ne i64 %382, %384
  br i1 %385, label %386, label %389

386:                                              ; preds = %380, %369
  %387 = load ptr, ptr %8, align 8, !tbaa !5
  call void (ptr, ...) @error_line(ptr noundef @.str, ptr noundef %387)
  %388 = load ptr, ptr %27, align 8, !tbaa !5
  call void @free(ptr noundef %388) #9
  store i32 1, ptr %6, align 4
  store i32 1, ptr %24, align 4
  br label %815

389:                                              ; preds = %380
  %390 = load ptr, ptr %11, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %390, i32 0, i32 4
  %392 = load i32, ptr %391, align 8, !tbaa !13
  %393 = and i32 %392, 512
  %394 = icmp ne i32 %393, 0
  br i1 %394, label %407, label %395

395:                                              ; preds = %389
  %396 = load ptr, ptr %10, align 8, !tbaa !5
  %397 = load ptr, ptr %27, align 8, !tbaa !5
  %398 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 1
  %399 = load i64, ptr %398, align 4, !tbaa !19
  %400 = trunc i64 %399 to i32
  %401 = call i32 @WavpackStreamAddWrapper(ptr noundef %396, ptr noundef %397, i32 noundef %400)
  %402 = icmp ne i32 %401, 0
  br i1 %402, label %407, label %403

403:                                              ; preds = %395
  %404 = load ptr, ptr %10, align 8, !tbaa !5
  %405 = call ptr @WavpackStreamGetErrorMessage(ptr noundef %404)
  call void (ptr, ...) @error_line(ptr noundef @.str.1, ptr noundef %405)
  %406 = load ptr, ptr %27, align 8, !tbaa !5
  call void @free(ptr noundef %406) #9
  store i32 1, ptr %6, align 4
  store i32 1, ptr %24, align 4
  br label %815

407:                                              ; preds = %395, %389
  br label %408

408:                                              ; preds = %407
  %409 = load ptr, ptr %27, align 8, !tbaa !5
  call void @WavpackStreamBigEndianToNative(ptr noundef %409, ptr noundef @.str.19)
  store i32 1, ptr %12, align 4, !tbaa !9
  %410 = load ptr, ptr %11, align 8, !tbaa !5
  %411 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %410, i32 0, i32 13
  %412 = load i32, ptr %411, align 4, !tbaa !35
  %413 = icmp ne i32 %412, 0
  br i1 %413, label %420, label %414

414:                                              ; preds = %408
  %415 = load ptr, ptr %11, align 8, !tbaa !5
  %416 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %415, i32 0, i32 4
  %417 = load i32, ptr %416, align 8, !tbaa !13
  %418 = and i32 %417, 1024
  %419 = icmp ne i32 %418, 0
  br i1 %419, label %420, label %422

420:                                              ; preds = %414, %408
  call void (ptr, ...) @error_line(ptr noundef @.str.20)
  %421 = load ptr, ptr %27, align 8, !tbaa !5
  call void @free(ptr noundef %421) #9
  store i32 1, ptr %6, align 4
  store i32 1, ptr %24, align 4
  br label %815

422:                                              ; preds = %414
  %423 = load ptr, ptr %27, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.CAFChannelLayout, ptr %423, i32 0, i32 0
  %425 = load i32, ptr %424, align 4, !tbaa !36
  switch i32 %425, label %721 [
    i32 0, label %426
    i32 65536, label %705
  ]

426:                                              ; preds = %422
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #9
  %427 = load ptr, ptr %27, align 8, !tbaa !5
  %428 = getelementptr inbounds %struct.CAFChannelLayout, ptr %427, i64 1
  store ptr %428, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #9
  %429 = load ptr, ptr %27, align 8, !tbaa !5
  %430 = getelementptr inbounds %struct.CAFChannelLayout, ptr %429, i32 0, i32 2
  %431 = load i32, ptr %430, align 4, !tbaa !38
  store i32 %431, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #9
  store i32 0, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #9
  store i32 0, ptr %32, align 4, !tbaa !9
  %432 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 1
  %433 = load i64, ptr %432, align 4, !tbaa !19
  %434 = load i32, ptr %29, align 4, !tbaa !9
  %435 = sext i32 %434 to i64
  %436 = mul i64 20, %435
  %437 = add i64 12, %436
  %438 = icmp ne i64 %433, %437
  br i1 %438, label %445, label %439

439:                                              ; preds = %426
  %440 = load i32, ptr %29, align 4, !tbaa !9
  %441 = load ptr, ptr %11, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %441, i32 0, i32 7
  %443 = load i32, ptr %442, align 4, !tbaa !33
  %444 = icmp ne i32 %440, %443
  br i1 %444, label %445, label %447

445:                                              ; preds = %439, %426
  call void (ptr, ...) @error_line(ptr noundef @.str.21)
  %446 = load ptr, ptr %27, align 8, !tbaa !5
  call void @free(ptr noundef %446) #9
  store i32 1, ptr %6, align 4
  store i32 1, ptr %24, align 4
  br label %702

447:                                              ; preds = %439
  %448 = load i32, ptr %29, align 4, !tbaa !9
  %449 = icmp sge i32 %448, 256
  br i1 %449, label %450, label %451

450:                                              ; preds = %447
  call void (ptr, ...) @error_line(ptr noundef @.str.22)
  store i32 4, ptr %24, align 4
  br label %702

451:                                              ; preds = %447
  %452 = load i32, ptr %29, align 4, !tbaa !9
  %453 = sext i32 %452 to i64
  %454 = call noalias ptr @malloc(i64 noundef %453) #11
  store ptr %454, ptr %17, align 8, !tbaa !5
  %455 = load ptr, ptr %17, align 8, !tbaa !5
  %456 = load i32, ptr %29, align 4, !tbaa !9
  %457 = sext i32 %456 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %455, i8 -1, i64 %457, i1 false)
  %458 = load i32, ptr %29, align 4, !tbaa !9
  %459 = add nsw i32 %458, 1
  %460 = sext i32 %459 to i64
  %461 = call noalias ptr @malloc(i64 noundef %460) #11
  store ptr %461, ptr %16, align 8, !tbaa !5
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %462

462:                                              ; preds = %483, %451
  %463 = load i32, ptr %23, align 4, !tbaa !9
  %464 = load i32, ptr %29, align 4, !tbaa !9
  %465 = icmp slt i32 %463, %464
  br i1 %465, label %466, label %486

466:                                              ; preds = %462
  %467 = load ptr, ptr %28, align 8, !tbaa !5
  %468 = load i32, ptr %23, align 4, !tbaa !9
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds %struct.CAFChannelDescription, ptr %467, i64 %469
  call void @WavpackStreamBigEndianToNative(ptr noundef %470, ptr noundef @.str.23)
  %471 = load i32, ptr @debug_logging_mode, align 4, !tbaa !9
  %472 = icmp ne i32 %471, 0
  br i1 %472, label %473, label %482

473:                                              ; preds = %466
  %474 = load i32, ptr %23, align 4, !tbaa !9
  %475 = add nsw i32 %474, 1
  %476 = load ptr, ptr %28, align 8, !tbaa !5
  %477 = load i32, ptr %23, align 4, !tbaa !9
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds %struct.CAFChannelDescription, ptr %476, i64 %478
  %480 = getelementptr inbounds %struct.CAFChannelDescription, ptr %479, i32 0, i32 0
  %481 = load i32, ptr %480, align 4, !tbaa !39
  call void (ptr, ...) @error_line(ptr noundef @.str.24, i32 noundef %475, i32 noundef %481)
  br label %482

482:                                              ; preds = %473, %466
  br label %483

483:                                              ; preds = %482
  %484 = load i32, ptr %23, align 4, !tbaa !9
  %485 = add nsw i32 %484, 1
  store i32 %485, ptr %23, align 4, !tbaa !9
  br label %462, !llvm.loop !41

486:                                              ; preds = %462
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %487

487:                                              ; preds = %524, %486
  %488 = load i32, ptr %30, align 4, !tbaa !9
  %489 = icmp sle i32 %488, 18
  br i1 %489, label %490, label %527

490:                                              ; preds = %487
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %491

491:                                              ; preds = %520, %490
  %492 = load i32, ptr %23, align 4, !tbaa !9
  %493 = load i32, ptr %29, align 4, !tbaa !9
  %494 = icmp slt i32 %492, %493
  br i1 %494, label %495, label %523

495:                                              ; preds = %491
  %496 = load ptr, ptr %28, align 8, !tbaa !5
  %497 = load i32, ptr %23, align 4, !tbaa !9
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds %struct.CAFChannelDescription, ptr %496, i64 %498
  %500 = getelementptr inbounds %struct.CAFChannelDescription, ptr %499, i32 0, i32 0
  %501 = load i32, ptr %500, align 4, !tbaa !39
  %502 = load i32, ptr %30, align 4, !tbaa !9
  %503 = icmp eq i32 %501, %502
  br i1 %503, label %504, label %519

504:                                              ; preds = %495
  %505 = load i32, ptr %30, align 4, !tbaa !9
  %506 = sub nsw i32 %505, 1
  %507 = shl i32 1, %506
  %508 = load ptr, ptr %11, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %508, i32 0, i32 13
  %510 = load i32, ptr %509, align 4, !tbaa !35
  %511 = or i32 %510, %507
  store i32 %511, ptr %509, align 4, !tbaa !35
  %512 = load i32, ptr %31, align 4, !tbaa !9
  %513 = add nsw i32 %512, 1
  store i32 %513, ptr %31, align 4, !tbaa !9
  %514 = trunc i32 %512 to i8
  %515 = load ptr, ptr %17, align 8, !tbaa !5
  %516 = load i32, ptr %23, align 4, !tbaa !9
  %517 = sext i32 %516 to i64
  %518 = getelementptr inbounds i8, ptr %515, i64 %517
  store i8 %514, ptr %518, align 1, !tbaa !21
  br label %523

519:                                              ; preds = %495
  br label %520

520:                                              ; preds = %519
  %521 = load i32, ptr %23, align 4, !tbaa !9
  %522 = add nsw i32 %521, 1
  store i32 %522, ptr %23, align 4, !tbaa !9
  br label %491, !llvm.loop !43

523:                                              ; preds = %504, %491
  br label %524

524:                                              ; preds = %523
  %525 = load i32, ptr %30, align 4, !tbaa !9
  %526 = add nsw i32 %525, 1
  store i32 %526, ptr %30, align 4, !tbaa !9
  br label %487, !llvm.loop !44

527:                                              ; preds = %487
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %528

528:                                              ; preds = %612, %527
  %529 = load i32, ptr %23, align 4, !tbaa !9
  %530 = load i32, ptr %29, align 4, !tbaa !9
  %531 = icmp slt i32 %529, %530
  br i1 %531, label %532, label %615

532:                                              ; preds = %528
  %533 = load ptr, ptr %17, align 8, !tbaa !5
  %534 = load i32, ptr %23, align 4, !tbaa !9
  %535 = sext i32 %534 to i64
  %536 = getelementptr inbounds i8, ptr %533, i64 %535
  %537 = load i8, ptr %536, align 1, !tbaa !21
  %538 = zext i8 %537 to i32
  %539 = icmp eq i32 %538, 255
  br i1 %539, label %540, label %611

540:                                              ; preds = %532
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #9
  %541 = load ptr, ptr %28, align 8, !tbaa !5
  %542 = load i32, ptr %23, align 4, !tbaa !9
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds %struct.CAFChannelDescription, ptr %541, i64 %543
  %545 = getelementptr inbounds %struct.CAFChannelDescription, ptr %544, i32 0, i32 0
  %546 = load i32, ptr %545, align 4, !tbaa !39
  store i32 %546, ptr %33, align 4, !tbaa !9
  %547 = load i32, ptr %33, align 4, !tbaa !9
  %548 = icmp eq i32 %547, 0
  br i1 %548, label %555, label %549

549:                                              ; preds = %540
  %550 = load i32, ptr %33, align 4, !tbaa !9
  %551 = icmp eq i32 %550, -1
  br i1 %551, label %555, label %552

552:                                              ; preds = %549
  %553 = load i32, ptr %33, align 4, !tbaa !9
  %554 = icmp eq i32 %553, 100
  br i1 %554, label %555, label %561

555:                                              ; preds = %552, %549, %540
  %556 = load ptr, ptr %16, align 8, !tbaa !5
  %557 = load i32, ptr %32, align 4, !tbaa !9
  %558 = add nsw i32 %557, 1
  store i32 %558, ptr %32, align 4, !tbaa !9
  %559 = sext i32 %557 to i64
  %560 = getelementptr inbounds i8, ptr %556, i64 %559
  store i8 -1, ptr %560, align 1, !tbaa !21
  br label %603

561:                                              ; preds = %552
  %562 = load i32, ptr %33, align 4, !tbaa !9
  %563 = icmp uge i32 %562, 33
  br i1 %563, label %564, label %567

564:                                              ; preds = %561
  %565 = load i32, ptr %33, align 4, !tbaa !9
  %566 = icmp ule i32 %565, 44
  br i1 %566, label %579, label %567

567:                                              ; preds = %564, %561
  %568 = load i32, ptr %33, align 4, !tbaa !9
  %569 = icmp uge i32 %568, 200
  br i1 %569, label %570, label %573

570:                                              ; preds = %567
  %571 = load i32, ptr %33, align 4, !tbaa !9
  %572 = icmp ule i32 %571, 207
  br i1 %572, label %579, label %573

573:                                              ; preds = %570, %567
  %574 = load i32, ptr %33, align 4, !tbaa !9
  %575 = icmp uge i32 %574, 301
  br i1 %575, label %576, label %595

576:                                              ; preds = %573
  %577 = load i32, ptr %33, align 4, !tbaa !9
  %578 = icmp ule i32 %577, 305
  br i1 %578, label %579, label %595

579:                                              ; preds = %576, %570, %564
  %580 = load i32, ptr %33, align 4, !tbaa !9
  %581 = icmp uge i32 %580, 301
  br i1 %581, label %582, label %585

582:                                              ; preds = %579
  %583 = load i32, ptr %33, align 4, !tbaa !9
  %584 = sub i32 %583, 80
  br label %587

585:                                              ; preds = %579
  %586 = load i32, ptr %33, align 4, !tbaa !9
  br label %587

587:                                              ; preds = %585, %582
  %588 = phi i32 [ %584, %582 ], [ %586, %585 ]
  %589 = trunc i32 %588 to i8
  %590 = load ptr, ptr %16, align 8, !tbaa !5
  %591 = load i32, ptr %32, align 4, !tbaa !9
  %592 = add nsw i32 %591, 1
  store i32 %592, ptr %32, align 4, !tbaa !9
  %593 = sext i32 %591 to i64
  %594 = getelementptr inbounds i8, ptr %590, i64 %593
  store i8 %589, ptr %594, align 1, !tbaa !21
  br label %602

595:                                              ; preds = %576, %573
  %596 = load i32, ptr %33, align 4, !tbaa !9
  call void (ptr, ...) @error_line(ptr noundef @.str.25, i32 noundef %596)
  %597 = load ptr, ptr %16, align 8, !tbaa !5
  %598 = load i32, ptr %32, align 4, !tbaa !9
  %599 = add nsw i32 %598, 1
  store i32 %599, ptr %32, align 4, !tbaa !9
  %600 = sext i32 %598 to i64
  %601 = getelementptr inbounds i8, ptr %597, i64 %600
  store i8 -1, ptr %601, align 1, !tbaa !21
  br label %602

602:                                              ; preds = %595, %587
  br label %603

603:                                              ; preds = %602, %555
  %604 = load i32, ptr %31, align 4, !tbaa !9
  %605 = add nsw i32 %604, 1
  store i32 %605, ptr %31, align 4, !tbaa !9
  %606 = trunc i32 %604 to i8
  %607 = load ptr, ptr %17, align 8, !tbaa !5
  %608 = load i32, ptr %23, align 4, !tbaa !9
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds i8, ptr %607, i64 %609
  store i8 %606, ptr %610, align 1, !tbaa !21
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #9
  br label %611

611:                                              ; preds = %603, %532
  br label %612

612:                                              ; preds = %611
  %613 = load i32, ptr %23, align 4, !tbaa !9
  %614 = add nsw i32 %613, 1
  store i32 %614, ptr %23, align 4, !tbaa !9
  br label %528, !llvm.loop !45

615:                                              ; preds = %528
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %616

616:                                              ; preds = %631, %615
  %617 = load i32, ptr %23, align 4, !tbaa !9
  %618 = load i32, ptr %29, align 4, !tbaa !9
  %619 = icmp slt i32 %617, %618
  br i1 %619, label %620, label %634

620:                                              ; preds = %616
  %621 = load ptr, ptr %17, align 8, !tbaa !5
  %622 = load i32, ptr %23, align 4, !tbaa !9
  %623 = sext i32 %622 to i64
  %624 = getelementptr inbounds i8, ptr %621, i64 %623
  %625 = load i8, ptr %624, align 1, !tbaa !21
  %626 = zext i8 %625 to i32
  %627 = load i32, ptr %23, align 4, !tbaa !9
  %628 = icmp ne i32 %626, %627
  br i1 %628, label %629, label %630

629:                                              ; preds = %620
  br label %634

630:                                              ; preds = %620
  br label %631

631:                                              ; preds = %630
  %632 = load i32, ptr %23, align 4, !tbaa !9
  %633 = add nsw i32 %632, 1
  store i32 %633, ptr %23, align 4, !tbaa !9
  br label %616, !llvm.loop !46

634:                                              ; preds = %629, %616
  %635 = load i32, ptr %23, align 4, !tbaa !9
  %636 = load i32, ptr %29, align 4, !tbaa !9
  %637 = icmp eq i32 %635, %636
  br i1 %637, label %638, label %640

638:                                              ; preds = %634
  %639 = load ptr, ptr %17, align 8, !tbaa !5
  call void @free(ptr noundef %639) #9
  store ptr null, ptr %17, align 8, !tbaa !5
  br label %646

640:                                              ; preds = %634
  %641 = load ptr, ptr %11, align 8, !tbaa !5
  %642 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %641, i32 0, i32 4
  %643 = load i32, ptr %642, align 8, !tbaa !13
  %644 = or i32 %643, 8
  store i32 %644, ptr %642, align 8, !tbaa !13
  %645 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %645, ptr %14, align 4, !tbaa !9
  br label %646

646:                                              ; preds = %640, %638
  %647 = load i32, ptr %32, align 4, !tbaa !9
  %648 = icmp ne i32 %647, 0
  br i1 %648, label %651, label %649

649:                                              ; preds = %646
  %650 = load ptr, ptr %16, align 8, !tbaa !5
  call void @free(ptr noundef %650) #9
  store ptr null, ptr %16, align 8, !tbaa !5
  br label %656

651:                                              ; preds = %646
  %652 = load ptr, ptr %16, align 8, !tbaa !5
  %653 = load i32, ptr %32, align 4, !tbaa !9
  %654 = sext i32 %653 to i64
  %655 = getelementptr inbounds i8, ptr %652, i64 %654
  store i8 0, ptr %655, align 1, !tbaa !21
  br label %656

656:                                              ; preds = %651, %649
  %657 = load i32, ptr @debug_logging_mode, align 4, !tbaa !9
  %658 = icmp ne i32 %657, 0
  br i1 %658, label %659, label %701

659:                                              ; preds = %656
  %660 = load ptr, ptr %27, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.CAFChannelLayout, ptr %660, i32 0, i32 0
  %662 = load i32, ptr %661, align 4, !tbaa !36
  %663 = load ptr, ptr %11, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %663, i32 0, i32 13
  %665 = load i32, ptr %664, align 4, !tbaa !35
  %666 = load ptr, ptr %27, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct.CAFChannelLayout, ptr %666, i32 0, i32 2
  %668 = load i32, ptr %667, align 4, !tbaa !38
  %669 = load i32, ptr %32, align 4, !tbaa !9
  call void (ptr, ...) @error_line(ptr noundef @.str.26, i32 noundef %662, i32 noundef %665, i32 noundef %668, i32 noundef %669)
  %670 = load ptr, ptr %17, align 8, !tbaa !5
  %671 = icmp ne ptr %670, null
  br i1 %671, label %672, label %700

672:                                              ; preds = %659
  %673 = load i32, ptr %29, align 4, !tbaa !9
  %674 = icmp sle i32 %673, 8
  br i1 %674, label %675, label %700

675:                                              ; preds = %672
  call void @llvm.lifetime.start.p0(i64 9, ptr %34) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %34, ptr align 1 @__const.ParseCaffHeaderConfig.reorder_string, i64 9, i1 false)
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %676

676:                                              ; preds = %692, %675
  %677 = load i32, ptr %23, align 4, !tbaa !9
  %678 = load i32, ptr %29, align 4, !tbaa !9
  %679 = icmp slt i32 %677, %678
  br i1 %679, label %680, label %695

680:                                              ; preds = %676
  %681 = load ptr, ptr %17, align 8, !tbaa !5
  %682 = load i32, ptr %23, align 4, !tbaa !9
  %683 = sext i32 %682 to i64
  %684 = getelementptr inbounds i8, ptr %681, i64 %683
  %685 = load i8, ptr %684, align 1, !tbaa !21
  %686 = zext i8 %685 to i32
  %687 = add nsw i32 %686, 49
  %688 = trunc i32 %687 to i8
  %689 = load i32, ptr %23, align 4, !tbaa !9
  %690 = sext i32 %689 to i64
  %691 = getelementptr inbounds [9 x i8], ptr %34, i64 0, i64 %690
  store i8 %688, ptr %691, align 1, !tbaa !21
  br label %692

692:                                              ; preds = %680
  %693 = load i32, ptr %23, align 4, !tbaa !9
  %694 = add nsw i32 %693, 1
  store i32 %694, ptr %23, align 4, !tbaa !9
  br label %676, !llvm.loop !47

695:                                              ; preds = %676
  %696 = load i32, ptr %23, align 4, !tbaa !9
  %697 = sext i32 %696 to i64
  %698 = getelementptr inbounds [9 x i8], ptr %34, i64 0, i64 %697
  store i8 0, ptr %698, align 1, !tbaa !21
  %699 = getelementptr inbounds [9 x i8], ptr %34, i64 0, i64 0
  call void (ptr, ...) @error_line(ptr noundef @.str.27, ptr noundef %699)
  call void @llvm.lifetime.end.p0(i64 9, ptr %34) #9
  br label %700

700:                                              ; preds = %695, %672, %659
  br label %701

701:                                              ; preds = %700, %656
  store i32 0, ptr %24, align 4
  br label %702

702:                                              ; preds = %701, %450, %445
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  %703 = load i32, ptr %24, align 4
  switch i32 %703, label %815 [
    i32 0, label %704
    i32 4, label %813
  ]

704:                                              ; preds = %702
  br label %813

705:                                              ; preds = %422
  %706 = load ptr, ptr %27, align 8, !tbaa !5
  %707 = getelementptr inbounds %struct.CAFChannelLayout, ptr %706, i32 0, i32 1
  %708 = load i32, ptr %707, align 4, !tbaa !48
  %709 = load ptr, ptr %11, align 8, !tbaa !5
  %710 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %709, i32 0, i32 13
  store i32 %708, ptr %710, align 4, !tbaa !35
  %711 = load i32, ptr @debug_logging_mode, align 4, !tbaa !9
  %712 = icmp ne i32 %711, 0
  br i1 %712, label %713, label %720

713:                                              ; preds = %705
  %714 = load ptr, ptr %27, align 8, !tbaa !5
  %715 = getelementptr inbounds %struct.CAFChannelLayout, ptr %714, i32 0, i32 0
  %716 = load i32, ptr %715, align 4, !tbaa !36
  %717 = load ptr, ptr %27, align 8, !tbaa !5
  %718 = getelementptr inbounds %struct.CAFChannelLayout, ptr %717, i32 0, i32 1
  %719 = load i32, ptr %718, align 4, !tbaa !48
  call void (ptr, ...) @error_line(ptr noundef @.str.28, i32 noundef %716, i32 noundef %719)
  br label %720

720:                                              ; preds = %713, %705
  br label %813

721:                                              ; preds = %422
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %722

722:                                              ; preds = %798, %721
  %723 = load i32, ptr %23, align 4, !tbaa !9
  %724 = sext i32 %723 to i64
  %725 = icmp ult i64 %724, 47
  br i1 %725, label %726, label %801

726:                                              ; preds = %722
  %727 = load ptr, ptr %27, align 8, !tbaa !5
  %728 = getelementptr inbounds %struct.CAFChannelLayout, ptr %727, i32 0, i32 0
  %729 = load i32, ptr %728, align 4, !tbaa !36
  %730 = load i32, ptr %23, align 4, !tbaa !9
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds [47 x %struct.anon], ptr @layouts, i64 0, i64 %731
  %733 = getelementptr inbounds %struct.anon, ptr %732, i32 0, i32 0
  %734 = load i32, ptr %733, align 8, !tbaa !49
  %735 = icmp eq i32 %729, %734
  br i1 %735, label %736, label %797

736:                                              ; preds = %726
  %737 = load i32, ptr %23, align 4, !tbaa !9
  %738 = sext i32 %737 to i64
  %739 = getelementptr inbounds [47 x %struct.anon], ptr @layouts, i64 0, i64 %738
  %740 = getelementptr inbounds %struct.anon, ptr %739, i32 0, i32 1
  %741 = load i32, ptr %740, align 4, !tbaa !51
  %742 = load ptr, ptr %11, align 8, !tbaa !5
  %743 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %742, i32 0, i32 13
  store i32 %741, ptr %743, align 4, !tbaa !35
  %744 = load i32, ptr %23, align 4, !tbaa !9
  %745 = sext i32 %744 to i64
  %746 = getelementptr inbounds [47 x %struct.anon], ptr @layouts, i64 0, i64 %745
  %747 = getelementptr inbounds %struct.anon, ptr %746, i32 0, i32 0
  %748 = load i32, ptr %747, align 8, !tbaa !49
  store i32 %748, ptr %14, align 4, !tbaa !9
  %749 = load i32, ptr %23, align 4, !tbaa !9
  %750 = sext i32 %749 to i64
  %751 = getelementptr inbounds [47 x %struct.anon], ptr @layouts, i64 0, i64 %750
  %752 = getelementptr inbounds %struct.anon, ptr %751, i32 0, i32 2
  %753 = load ptr, ptr %752, align 8, !tbaa !52
  %754 = icmp ne ptr %753, null
  br i1 %754, label %755, label %766

755:                                              ; preds = %736
  %756 = load i32, ptr %23, align 4, !tbaa !9
  %757 = sext i32 %756 to i64
  %758 = getelementptr inbounds [47 x %struct.anon], ptr @layouts, i64 0, i64 %757
  %759 = getelementptr inbounds %struct.anon, ptr %758, i32 0, i32 2
  %760 = load ptr, ptr %759, align 8, !tbaa !52
  %761 = call noalias ptr @strdup(ptr noundef %760) #9
  store ptr %761, ptr %17, align 8, !tbaa !5
  %762 = load ptr, ptr %11, align 8, !tbaa !5
  %763 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %762, i32 0, i32 4
  %764 = load i32, ptr %763, align 8, !tbaa !13
  %765 = or i32 %764, 8
  store i32 %765, ptr %763, align 8, !tbaa !13
  br label %766

766:                                              ; preds = %755, %736
  %767 = load i32, ptr %23, align 4, !tbaa !9
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds [47 x %struct.anon], ptr @layouts, i64 0, i64 %768
  %770 = getelementptr inbounds %struct.anon, ptr %769, i32 0, i32 3
  %771 = load ptr, ptr %770, align 8, !tbaa !53
  %772 = icmp ne ptr %771, null
  br i1 %772, label %773, label %780

773:                                              ; preds = %766
  %774 = load i32, ptr %23, align 4, !tbaa !9
  %775 = sext i32 %774 to i64
  %776 = getelementptr inbounds [47 x %struct.anon], ptr @layouts, i64 0, i64 %775
  %777 = getelementptr inbounds %struct.anon, ptr %776, i32 0, i32 3
  %778 = load ptr, ptr %777, align 8, !tbaa !53
  %779 = call noalias ptr @strdup(ptr noundef %778) #9
  store ptr %779, ptr %16, align 8, !tbaa !5
  br label %780

780:                                              ; preds = %773, %766
  %781 = load i32, ptr @debug_logging_mode, align 4, !tbaa !9
  %782 = icmp ne i32 %781, 0
  br i1 %782, label %783, label %796

783:                                              ; preds = %780
  %784 = load i32, ptr %14, align 4, !tbaa !9
  %785 = load ptr, ptr %11, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %785, i32 0, i32 13
  %787 = load i32, ptr %786, align 4, !tbaa !35
  %788 = load ptr, ptr %17, align 8, !tbaa !5
  %789 = icmp ne ptr %788, null
  %790 = zext i1 %789 to i64
  %791 = select i1 %789, ptr @.str.30, ptr @.str.31
  %792 = load ptr, ptr %16, align 8, !tbaa !5
  %793 = icmp ne ptr %792, null
  %794 = zext i1 %793 to i64
  %795 = select i1 %793, ptr @.str.30, ptr @.str.31
  call void (ptr, ...) @error_line(ptr noundef @.str.29, i32 noundef %784, i32 noundef %787, ptr noundef %791, ptr noundef %795)
  br label %796

796:                                              ; preds = %783, %780
  br label %801

797:                                              ; preds = %726
  br label %798

798:                                              ; preds = %797
  %799 = load i32, ptr %23, align 4, !tbaa !9
  %800 = add nsw i32 %799, 1
  store i32 %800, ptr %23, align 4, !tbaa !9
  br label %722, !llvm.loop !54

801:                                              ; preds = %796, %722
  %802 = load i32, ptr %23, align 4, !tbaa !9
  %803 = sext i32 %802 to i64
  %804 = icmp eq i64 %803, 47
  br i1 %804, label %805, label %812

805:                                              ; preds = %801
  %806 = load i32, ptr @debug_logging_mode, align 4, !tbaa !9
  %807 = icmp ne i32 %806, 0
  br i1 %807, label %808, label %812

808:                                              ; preds = %805
  %809 = load ptr, ptr %27, align 8, !tbaa !5
  %810 = getelementptr inbounds %struct.CAFChannelLayout, ptr %809, i32 0, i32 0
  %811 = load i32, ptr %810, align 4, !tbaa !36
  call void (ptr, ...) @error_line(ptr noundef @.str.32, i32 noundef %811)
  br label %812

812:                                              ; preds = %808, %805, %801
  br label %813

813:                                              ; preds = %812, %720, %704, %702
  %814 = load ptr, ptr %27, align 8, !tbaa !5
  call void @free(ptr noundef %814) #9
  store i32 0, ptr %24, align 4
  br label %815

815:                                              ; preds = %813, %702, %420, %403, %386, %361
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  %816 = load i32, ptr %24, align 4
  switch i32 %816, label %1077 [
    i32 0, label %817
  ]

817:                                              ; preds = %815
  br label %1014

818:                                              ; preds = %344
  %819 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 0
  %820 = getelementptr inbounds [4 x i8], ptr %819, i64 0, i64 0
  %821 = call i32 @strncmp(ptr noundef %820, ptr noundef @.str.33, i64 noundef 4) #10
  %822 = icmp ne i32 %821, 0
  br i1 %822, label %944, label %823

823:                                              ; preds = %818
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #9
  %824 = load i32, ptr %13, align 4, !tbaa !9
  %825 = icmp ne i32 %824, 0
  br i1 %825, label %826, label %834

826:                                              ; preds = %823
  %827 = load ptr, ptr %7, align 8, !tbaa !5
  %828 = call i32 @DoReadFile(ptr noundef %827, ptr noundef %35, i32 noundef 4, ptr noundef %15)
  %829 = icmp ne i32 %828, 0
  br i1 %829, label %830, label %834

830:                                              ; preds = %826
  %831 = load i32, ptr %15, align 4, !tbaa !9
  %832 = zext i32 %831 to i64
  %833 = icmp ne i64 %832, 4
  br i1 %833, label %834, label %836

834:                                              ; preds = %830, %826, %823
  %835 = load ptr, ptr %8, align 8, !tbaa !5
  call void (ptr, ...) @error_line(ptr noundef @.str, ptr noundef %835)
  store i32 1, ptr %6, align 4
  store i32 1, ptr %24, align 4
  br label %942

836:                                              ; preds = %830
  %837 = load ptr, ptr %11, align 8, !tbaa !5
  %838 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %837, i32 0, i32 4
  %839 = load i32, ptr %838, align 8, !tbaa !13
  %840 = and i32 %839, 512
  %841 = icmp ne i32 %840, 0
  br i1 %841, label %849, label %842

842:                                              ; preds = %836
  %843 = load ptr, ptr %10, align 8, !tbaa !5
  %844 = call i32 @WavpackStreamAddWrapper(ptr noundef %843, ptr noundef %35, i32 noundef 4)
  %845 = icmp ne i32 %844, 0
  br i1 %845, label %849, label %846

846:                                              ; preds = %842
  %847 = load ptr, ptr %10, align 8, !tbaa !5
  %848 = call ptr @WavpackStreamGetErrorMessage(ptr noundef %847)
  call void (ptr, ...) @error_line(ptr noundef @.str.1, ptr noundef %848)
  store i32 1, ptr %6, align 4
  store i32 1, ptr %24, align 4
  br label %942

849:                                              ; preds = %842, %836
  br label %850

850:                                              ; preds = %849
  %851 = load ptr, ptr %11, align 8, !tbaa !5
  %852 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %851, i32 0, i32 4
  %853 = load i32, ptr %852, align 8, !tbaa !13
  %854 = and i32 %853, 2048
  %855 = icmp ne i32 %854, 0
  br i1 %855, label %860, label %856

856:                                              ; preds = %850
  %857 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 1
  %858 = load i64, ptr %857, align 4, !tbaa !19
  %859 = icmp eq i64 %858, -1
  br i1 %859, label %860, label %902

860:                                              ; preds = %856, %850
  %861 = load ptr, ptr %11, align 8, !tbaa !5
  %862 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %861, i32 0, i32 4
  %863 = load i32, ptr %862, align 8, !tbaa !13
  %864 = or i32 %863, 2048
  store i32 %864, ptr %862, align 8, !tbaa !13
  %865 = load i64, ptr %19, align 8, !tbaa !11
  %866 = icmp ne i64 %865, 0
  br i1 %866, label %867, label %900

867:                                              ; preds = %860
  %868 = load ptr, ptr %7, align 8, !tbaa !5
  %869 = call i64 @DoGetFilePosition(ptr noundef %868)
  %870 = icmp ne i64 %869, -1
  br i1 %870, label %871, label %900

871:                                              ; preds = %867
  %872 = load i64, ptr %19, align 8, !tbaa !11
  %873 = load ptr, ptr %7, align 8, !tbaa !5
  %874 = call i64 @DoGetFilePosition(ptr noundef %873)
  %875 = sub nsw i64 %872, %874
  %876 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 3
  %877 = load i32, ptr %876, align 8, !tbaa !26
  %878 = zext i32 %877 to i64
  %879 = sdiv i64 %875, %878
  store i64 %879, ptr %18, align 8, !tbaa !11
  %880 = load i64, ptr %19, align 8, !tbaa !11
  %881 = load ptr, ptr %7, align 8, !tbaa !5
  %882 = call i64 @DoGetFilePosition(ptr noundef %881)
  %883 = sub nsw i64 %880, %882
  %884 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 3
  %885 = load i32, ptr %884, align 8, !tbaa !26
  %886 = zext i32 %885 to i64
  %887 = srem i64 %883, %886
  %888 = icmp ne i64 %887, 0
  br i1 %888, label %889, label %899

889:                                              ; preds = %871
  %890 = load i64, ptr %19, align 8, !tbaa !11
  %891 = load ptr, ptr %7, align 8, !tbaa !5
  %892 = call i64 @DoGetFilePosition(ptr noundef %891)
  %893 = sub nsw i64 %890, %892
  %894 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 3
  %895 = load i32, ptr %894, align 8, !tbaa !26
  %896 = zext i32 %895 to i64
  %897 = srem i64 %893, %896
  %898 = trunc i64 %897 to i32
  call void (ptr, ...) @error_line(ptr noundef @.str.34, i32 noundef %898)
  br label %899

899:                                              ; preds = %889, %871
  br label %901

900:                                              ; preds = %867, %860
  store i64 -1, ptr %18, align 8, !tbaa !11
  br label %901

901:                                              ; preds = %900, %899
  br label %941

902:                                              ; preds = %856
  %903 = load i64, ptr %19, align 8, !tbaa !11
  %904 = icmp ne i64 %903, 0
  br i1 %904, label %905, label %913

905:                                              ; preds = %902
  %906 = load i64, ptr %19, align 8, !tbaa !11
  %907 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 1
  %908 = load i64, ptr %907, align 4, !tbaa !19
  %909 = sub nsw i64 %906, %908
  %910 = icmp sgt i64 %909, 16777216
  br i1 %910, label %911, label %913

911:                                              ; preds = %905
  %912 = load ptr, ptr %8, align 8, !tbaa !5
  call void (ptr, ...) @error_line(ptr noundef @.str.35, ptr noundef %912)
  store i32 1, ptr %6, align 4
  store i32 1, ptr %24, align 4
  br label %942

913:                                              ; preds = %905, %902
  %914 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 1
  %915 = load i64, ptr %914, align 4, !tbaa !19
  %916 = sub nsw i64 %915, 4
  %917 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 3
  %918 = load i32, ptr %917, align 8, !tbaa !26
  %919 = zext i32 %918 to i64
  %920 = srem i64 %916, %919
  %921 = icmp ne i64 %920, 0
  br i1 %921, label %922, label %924

922:                                              ; preds = %913
  %923 = load ptr, ptr %8, align 8, !tbaa !5
  call void (ptr, ...) @error_line(ptr noundef @.str.36, ptr noundef %923)
  store i32 1, ptr %6, align 4
  store i32 1, ptr %24, align 4
  br label %942

924:                                              ; preds = %913
  %925 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 1
  %926 = load i64, ptr %925, align 4, !tbaa !19
  %927 = sub nsw i64 %926, 4
  %928 = getelementptr inbounds %struct.CAFAudioFormat, ptr %22, i32 0, i32 3
  %929 = load i32, ptr %928, align 8, !tbaa !26
  %930 = zext i32 %929 to i64
  %931 = sdiv i64 %927, %930
  store i64 %931, ptr %18, align 8, !tbaa !11
  %932 = load i64, ptr %18, align 8, !tbaa !11
  %933 = icmp ne i64 %932, 0
  br i1 %933, label %935, label %934

934:                                              ; preds = %924
  call void (ptr, ...) @error_line(ptr noundef @.str.37)
  store i32 1, ptr %6, align 4
  store i32 1, ptr %24, align 4
  br label %942

935:                                              ; preds = %924
  %936 = load i64, ptr %18, align 8, !tbaa !11
  %937 = icmp sgt i64 %936, 1099511627519
  br i1 %937, label %938, label %940

938:                                              ; preds = %935
  %939 = load ptr, ptr %8, align 8, !tbaa !5
  call void (ptr, ...) @error_line(ptr noundef @.str.38, ptr noundef %939)
  store i32 1, ptr %6, align 4
  store i32 1, ptr %24, align 4
  br label %942

940:                                              ; preds = %935
  br label %941

941:                                              ; preds = %940, %901
  store i32 3, ptr %24, align 4
  br label %942

942:                                              ; preds = %941, %938, %934, %922, %911, %846, %834
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #9
  %943 = load i32, ptr %24, align 4
  switch i32 %943, label %1077 [
    i32 3, label %1016
  ]

944:                                              ; preds = %818
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #9
  %945 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 1
  %946 = load i64, ptr %945, align 4, !tbaa !19
  %947 = trunc i64 %946 to i32
  store i32 %947, ptr %36, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #9
  %948 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 1
  %949 = load i64, ptr %948, align 4, !tbaa !19
  %950 = icmp slt i64 %949, 0
  br i1 %950, label %955, label %951

951:                                              ; preds = %944
  %952 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 1
  %953 = load i64, ptr %952, align 4, !tbaa !19
  %954 = icmp sgt i64 %953, 1048576
  br i1 %954, label %955, label %957

955:                                              ; preds = %951, %944
  %956 = load ptr, ptr %8, align 8, !tbaa !5
  call void (ptr, ...) @error_line(ptr noundef @.str, ptr noundef %956)
  store i32 1, ptr %6, align 4
  store i32 1, ptr %24, align 4
  br label %1010

957:                                              ; preds = %951
  %958 = load i32, ptr %36, align 4, !tbaa !9
  %959 = zext i32 %958 to i64
  %960 = call noalias ptr @malloc(i64 noundef %959) #11
  store ptr %960, ptr %37, align 8, !tbaa !5
  %961 = load i32, ptr @debug_logging_mode, align 4, !tbaa !9
  %962 = icmp ne i32 %961, 0
  br i1 %962, label %963, label %982

963:                                              ; preds = %957
  %964 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 0
  %965 = getelementptr inbounds [4 x i8], ptr %964, i64 0, i64 0
  %966 = load i8, ptr %965, align 4, !tbaa !21
  %967 = sext i8 %966 to i32
  %968 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 0
  %969 = getelementptr inbounds [4 x i8], ptr %968, i64 0, i64 1
  %970 = load i8, ptr %969, align 1, !tbaa !21
  %971 = sext i8 %970 to i32
  %972 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 0
  %973 = getelementptr inbounds [4 x i8], ptr %972, i64 0, i64 2
  %974 = load i8, ptr %973, align 2, !tbaa !21
  %975 = sext i8 %974 to i32
  %976 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 0
  %977 = getelementptr inbounds [4 x i8], ptr %976, i64 0, i64 3
  %978 = load i8, ptr %977, align 1, !tbaa !21
  %979 = sext i8 %978 to i32
  %980 = getelementptr inbounds %struct.CAFChunkHeader, ptr %21, i32 0, i32 1
  %981 = load i64, ptr %980, align 4, !tbaa !19
  call void (ptr, ...) @error_line(ptr noundef @.str.39, i32 noundef %967, i32 noundef %971, i32 noundef %975, i32 noundef %979, i64 noundef %981)
  br label %982

982:                                              ; preds = %963, %957
  %983 = load ptr, ptr %7, align 8, !tbaa !5
  %984 = load ptr, ptr %37, align 8, !tbaa !5
  %985 = load i32, ptr %36, align 4, !tbaa !9
  %986 = call i32 @DoReadFile(ptr noundef %983, ptr noundef %984, i32 noundef %985, ptr noundef %15)
  %987 = icmp ne i32 %986, 0
  br i1 %987, label %988, label %1004

988:                                              ; preds = %982
  %989 = load i32, ptr %15, align 4, !tbaa !9
  %990 = load i32, ptr %36, align 4, !tbaa !9
  %991 = icmp ne i32 %989, %990
  br i1 %991, label %1004, label %992

992:                                              ; preds = %988
  %993 = load ptr, ptr %11, align 8, !tbaa !5
  %994 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %993, i32 0, i32 4
  %995 = load i32, ptr %994, align 8, !tbaa !13
  %996 = and i32 %995, 512
  %997 = icmp ne i32 %996, 0
  br i1 %997, label %1008, label %998

998:                                              ; preds = %992
  %999 = load ptr, ptr %10, align 8, !tbaa !5
  %1000 = load ptr, ptr %37, align 8, !tbaa !5
  %1001 = load i32, ptr %36, align 4, !tbaa !9
  %1002 = call i32 @WavpackStreamAddWrapper(ptr noundef %999, ptr noundef %1000, i32 noundef %1001)
  %1003 = icmp ne i32 %1002, 0
  br i1 %1003, label %1008, label %1004

1004:                                             ; preds = %998, %988, %982
  %1005 = load ptr, ptr %10, align 8, !tbaa !5
  %1006 = call ptr @WavpackStreamGetErrorMessage(ptr noundef %1005)
  call void (ptr, ...) @error_line(ptr noundef @.str.1, ptr noundef %1006)
  %1007 = load ptr, ptr %37, align 8, !tbaa !5
  call void @free(ptr noundef %1007) #9
  store i32 1, ptr %6, align 4
  store i32 1, ptr %24, align 4
  br label %1010

1008:                                             ; preds = %998, %992
  %1009 = load ptr, ptr %37, align 8, !tbaa !5
  call void @free(ptr noundef %1009) #9
  store i32 0, ptr %24, align 4
  br label %1010

1010:                                             ; preds = %1008, %1004, %955
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #9
  %1011 = load i32, ptr %24, align 4
  switch i32 %1011, label %1077 [
    i32 0, label %1012
  ]

1012:                                             ; preds = %1010
  br label %1013

1013:                                             ; preds = %1012
  br label %1014

1014:                                             ; preds = %1013, %817
  br label %1015

1015:                                             ; preds = %1014, %343
  br label %76

1016:                                             ; preds = %942
  %1017 = load i32, ptr %12, align 4, !tbaa !9
  %1018 = icmp ne i32 %1017, 0
  br i1 %1018, label %1042, label %1019

1019:                                             ; preds = %1016
  %1020 = load ptr, ptr %11, align 8, !tbaa !5
  %1021 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %1020, i32 0, i32 13
  %1022 = load i32, ptr %1021, align 4, !tbaa !35
  %1023 = icmp ne i32 %1022, 0
  br i1 %1023, label %1042, label %1024

1024:                                             ; preds = %1019
  %1025 = load ptr, ptr %11, align 8, !tbaa !5
  %1026 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %1025, i32 0, i32 7
  %1027 = load i32, ptr %1026, align 4, !tbaa !33
  %1028 = icmp sle i32 %1027, 2
  br i1 %1028, label %1029, label %1042

1029:                                             ; preds = %1024
  %1030 = load ptr, ptr %11, align 8, !tbaa !5
  %1031 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %1030, i32 0, i32 4
  %1032 = load i32, ptr %1031, align 8, !tbaa !13
  %1033 = and i32 %1032, 1024
  %1034 = icmp ne i32 %1033, 0
  br i1 %1034, label %1042, label %1035

1035:                                             ; preds = %1029
  %1036 = load ptr, ptr %11, align 8, !tbaa !5
  %1037 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %1036, i32 0, i32 7
  %1038 = load i32, ptr %1037, align 4, !tbaa !33
  %1039 = sub nsw i32 5, %1038
  %1040 = load ptr, ptr %11, align 8, !tbaa !5
  %1041 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %1040, i32 0, i32 13
  store i32 %1039, ptr %1041, align 4, !tbaa !35
  br label %1042

1042:                                             ; preds = %1035, %1029, %1024, %1019, %1016
  %1043 = load ptr, ptr %10, align 8, !tbaa !5
  %1044 = load ptr, ptr %11, align 8, !tbaa !5
  %1045 = load i64, ptr %18, align 8, !tbaa !11
  %1046 = load ptr, ptr %16, align 8, !tbaa !5
  %1047 = call i32 @WavpackStreamSetConfiguration64(ptr noundef %1043, ptr noundef %1044, i64 noundef %1045, ptr noundef %1046)
  %1048 = icmp ne i32 %1047, 0
  br i1 %1048, label %1052, label %1049

1049:                                             ; preds = %1042
  %1050 = load ptr, ptr %10, align 8, !tbaa !5
  %1051 = call ptr @WavpackStreamGetErrorMessage(ptr noundef %1050)
  call void (ptr, ...) @error_line(ptr noundef @.str.1, ptr noundef %1051)
  store i32 1, ptr %6, align 4
  store i32 1, ptr %24, align 4
  br label %1077

1052:                                             ; preds = %1042
  %1053 = load ptr, ptr %16, align 8, !tbaa !5
  %1054 = icmp ne ptr %1053, null
  br i1 %1054, label %1055, label %1057

1055:                                             ; preds = %1052
  %1056 = load ptr, ptr %16, align 8, !tbaa !5
  call void @free(ptr noundef %1056) #9
  br label %1057

1057:                                             ; preds = %1055, %1052
  %1058 = load i32, ptr %14, align 4, !tbaa !9
  %1059 = icmp ne i32 %1058, 0
  br i1 %1059, label %1063, label %1060

1060:                                             ; preds = %1057
  %1061 = load ptr, ptr %17, align 8, !tbaa !5
  %1062 = icmp ne ptr %1061, null
  br i1 %1062, label %1063, label %1076

1063:                                             ; preds = %1060, %1057
  %1064 = load ptr, ptr %10, align 8, !tbaa !5
  %1065 = load i32, ptr %14, align 4, !tbaa !9
  %1066 = load ptr, ptr %17, align 8, !tbaa !5
  %1067 = call i32 @WavpackStreamSetChannelLayout(ptr noundef %1064, i32 noundef %1065, ptr noundef %1066)
  %1068 = icmp ne i32 %1067, 0
  br i1 %1068, label %1070, label %1069

1069:                                             ; preds = %1063
  call void (ptr, ...) @error_line(ptr noundef @.str.40)
  store i32 1, ptr %6, align 4
  store i32 1, ptr %24, align 4
  br label %1077

1070:                                             ; preds = %1063
  %1071 = load ptr, ptr %17, align 8, !tbaa !5
  %1072 = icmp ne ptr %1071, null
  br i1 %1072, label %1073, label %1075

1073:                                             ; preds = %1070
  %1074 = load ptr, ptr %17, align 8, !tbaa !5
  call void @free(ptr noundef %1074) #9
  br label %1075

1075:                                             ; preds = %1073, %1070
  br label %1076

1076:                                             ; preds = %1075, %1060
  store i32 0, ptr %6, align 4
  store i32 1, ptr %24, align 4
  br label %1077

1077:                                             ; preds = %1076, %1069, %1049, %1010, %942, %815, %341, %97, %85, %70, %61, %49
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #9
  %1078 = load i32, ptr %6, align 4
  ret i32 %1078
}

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

declare i64 @DoGetFileSize(ptr noundef) #2

; 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) #3

declare i32 @DoReadFile(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #2

declare void @error_line(ptr noundef, ...) #2

declare i32 @WavpackStreamAddWrapper(ptr noundef, ptr noundef, i32 noundef) #2

declare ptr @WavpackStreamGetErrorMessage(ptr noundef) #2

declare void @WavpackStreamBigEndianToNative(ptr noundef, ptr noundef) #2

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strncmp(ptr noundef, ptr noundef, i64 noundef) #4

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

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

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

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

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

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

declare i64 @DoGetFilePosition(ptr noundef) #2

declare i32 @WavpackStreamSetConfiguration64(ptr noundef, ptr noundef, i64 noundef, ptr noundef) #2

declare i32 @WavpackStreamSetChannelLayout(ptr noundef, i32 noundef, ptr noundef) #2

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

!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 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !10, i64 16}
!14 = !{!"", !15, i64 0, !15, 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, !7, i64 56, !7, i64 72, !10, i64 76, !6, i64 80}
!15 = !{!"float", !7, i64 0}
!16 = !{!17, !18, i64 4}
!17 = !{!"", !7, i64 0, !18, i64 4, !18, i64 6}
!18 = !{!"short", !7, i64 0}
!19 = !{!20, !12, i64 4}
!20 = !{!"", !7, i64 0, !12, i64 4}
!21 = !{!7, !7, i64 0}
!22 = !{!23, !10, i64 12}
!23 = !{!"", !24, i64 0, !7, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!24 = !{!"double", !7, i64 0}
!25 = !{!23, !24, i64 0}
!26 = !{!23, !10, i64 16}
!27 = !{!23, !10, i64 20}
!28 = !{!23, !10, i64 24}
!29 = !{!23, !10, i64 28}
!30 = !{!14, !10, i64 12}
!31 = !{!14, !10, i64 32}
!32 = !{!14, !10, i64 8}
!33 = !{!14, !10, i64 28}
!34 = !{!14, !10, i64 48}
!35 = !{!14, !10, i64 52}
!36 = !{!37, !10, i64 0}
!37 = !{!"", !10, i64 0, !10, i64 4, !10, i64 8}
!38 = !{!37, !10, i64 8}
!39 = !{!40, !10, i64 0}
!40 = !{!"", !10, i64 0, !10, i64 4, !7, i64 8}
!41 = distinct !{!41, !42}
!42 = !{!"llvm.loop.mustprogress"}
!43 = distinct !{!43, !42}
!44 = distinct !{!44, !42}
!45 = distinct !{!45, !42}
!46 = distinct !{!46, !42}
!47 = distinct !{!47, !42}
!48 = !{!37, !10, i64 4}
!49 = !{!50, !10, i64 0}
!50 = !{!"", !10, i64 0, !10, i64 4, !6, i64 8, !6, i64 16}
!51 = !{!50, !10, i64 4}
!52 = !{!50, !6, i64 8}
!53 = !{!50, !6, i64 16}
!54 = distinct !{!54, !42}


; 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 = type { i32, i32, ptr, ptr }
%struct.CAFFileHeader = type { [4 x i8], i16, i16 }
%struct.CAFChunkHeader = type <{ [4 x i8], i64 }>
%struct.CAFAudioFormat = type { double, [4 x i8], i32, i32, i32, i32, i32 }
%struct.CAFChannelDescription = type { i32, i32, [3 x float] }

@.str = external hidden unnamed_addr constant [29 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [8 x i8], align 1
@debug_logging_mode = external local_unnamed_addr global i32, align 4
@.str.7 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [83 x i8], align 1
@__const.ParseCaffHeaderConfig.reorder_string = external hidden unnamed_addr constant [9 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [56 x i8], align 1
@layouts = external hidden local_unnamed_addr global [47 x %struct.anon], align 16
@.str.29 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [56 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @ParseCaffHeaderConfig(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr noundef %3, ptr noundef %4) local_unnamed_addr #0 {
  %6 = alloca i32, align 4
  %7 = alloca %struct.CAFFileHeader, align 4
  %8 = alloca %struct.CAFChunkHeader, align 4
  %9 = alloca %struct.CAFAudioFormat, align 8
  %10 = alloca [5 x i8], align 4
  %11 = alloca [9 x i8], align 1
  %12 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #10
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %8) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #10
  %13 = tail call i64 @DoGetFileSize(ptr noundef %0) #10
  %14 = load i32, ptr %2, align 1
  store i32 %14, ptr %7, align 4
  %15 = getelementptr inbounds i8, ptr %7, i64 4
  %16 = call i32 @DoReadFile(ptr noundef %0, ptr noundef nonnull %15, i32 noundef 4, ptr noundef nonnull %6) #10
  %17 = icmp eq i32 %16, 0
  %18 = load i32, ptr %6, align 4
  %19 = icmp ne i32 %18, 4
  %or.cond = select i1 %17, i1 true, i1 %19
  br i1 %or.cond, label %20, label %21

20:                                               ; preds = %5
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str, ptr noundef %1) #10
  br label %.critedge415

21:                                               ; preds = %5
  %22 = getelementptr inbounds i8, ptr %4, i64 16
  %23 = load i32, ptr %22, align 8, !tbaa !5
  %24 = and i32 %23, 512
  %.not = icmp eq i32 %24, 0
  br i1 %.not, label %25, label %29

25:                                               ; preds = %21
  %26 = call i32 @WavpackStreamAddWrapper(ptr noundef %3, ptr noundef nonnull %7, i32 noundef 8) #10
  %.not344 = icmp eq i32 %26, 0
  br i1 %.not344, label %27, label %29

27:                                               ; preds = %25
  %28 = call ptr @WavpackStreamGetErrorMessage(ptr noundef %3) #10
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.1, ptr noundef %28) #10
  br label %.critedge415

29:                                               ; preds = %21, %25
  call void @WavpackStreamBigEndianToNative(ptr noundef nonnull %7, ptr noundef nonnull @.str.2) #10
  %30 = load i16, ptr %15, align 4, !tbaa !12
  %.not345 = icmp eq i16 %30, 1
  br i1 %.not345, label %.preheader453, label %59

.preheader453:                                    ; preds = %29
  %31 = call i32 @DoReadFile(ptr noundef %0, ptr noundef nonnull %8, i32 noundef 12, ptr noundef nonnull %6) #10
  %32 = icmp eq i32 %31, 0
  %33 = load i32, ptr %6, align 4
  %34 = icmp ne i32 %33, 12
  %or.cond8543 = select i1 %32, i1 true, i1 %34
  br i1 %or.cond8543, label %._crit_edge550, label %.lr.ph549

.lr.ph549:                                        ; preds = %.preheader453
  %35 = getelementptr inbounds i8, ptr %8, i64 4
  %36 = getelementptr inbounds i8, ptr %8, i64 1
  %37 = getelementptr inbounds i8, ptr %8, i64 2
  %38 = getelementptr inbounds i8, ptr %8, i64 3
  %39 = getelementptr inbounds i8, ptr %4, i64 52
  %40 = getelementptr inbounds i8, ptr %4, i64 28
  %41 = getelementptr inbounds i8, ptr %9, i64 8
  %42 = getelementptr inbounds i8, ptr %10, i64 4
  %43 = getelementptr inbounds i8, ptr %9, i64 12
  %44 = getelementptr inbounds i8, ptr %9, i64 16
  %45 = getelementptr inbounds i8, ptr %9, i64 20
  %46 = getelementptr inbounds i8, ptr %9, i64 24
  %47 = getelementptr inbounds i8, ptr %9, i64 28
  %48 = getelementptr inbounds i8, ptr %4, i64 12
  %49 = getelementptr inbounds i8, ptr %4, i64 32
  %50 = getelementptr inbounds i8, ptr %4, i64 8
  %51 = getelementptr inbounds i8, ptr %4, i64 48
  %52 = getelementptr inbounds i8, ptr %11, i64 1
  %53 = getelementptr inbounds i8, ptr %11, i64 2
  %54 = getelementptr inbounds i8, ptr %11, i64 3
  %55 = getelementptr inbounds i8, ptr %11, i64 4
  %56 = getelementptr inbounds i8, ptr %11, i64 5
  %57 = getelementptr inbounds i8, ptr %11, i64 6
  %58 = getelementptr inbounds i8, ptr %11, i64 7
  br label %61

59:                                               ; preds = %29
  %60 = zext i16 %30 to i32
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.3, ptr noundef %1, i32 noundef %60) #10
  br label %.critedge415

._crit_edge550:                                   ; preds = %.thread419, %.preheader453
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str, ptr noundef %1) #10
  br label %.critedge415

61:                                               ; preds = %.lr.ph549, %.thread419
  %.0272548 = phi i32 [ 0, %.lr.ph549 ], [ %.2274, %.thread419 ]
  %.0275547 = phi i32 [ 0, %.lr.ph549 ], [ %.2277, %.thread419 ]
  %.0286546 = phi i32 [ 0, %.lr.ph549 ], [ %.6292, %.thread419 ]
  %.0293545 = phi ptr [ null, %.lr.ph549 ], [ %.7300, %.thread419 ]
  %.0301544 = phi ptr [ null, %.lr.ph549 ], [ %.7308, %.thread419 ]
  %62 = load i32, ptr %22, align 8, !tbaa !5
  %63 = and i32 %62, 512
  %.not346 = icmp eq i32 %63, 0
  br i1 %.not346, label %64, label %68

64:                                               ; preds = %61
  %65 = call i32 @WavpackStreamAddWrapper(ptr noundef %3, ptr noundef nonnull %8, i32 noundef 12) #10
  %.not347 = icmp eq i32 %65, 0
  br i1 %.not347, label %66, label %68

66:                                               ; preds = %64
  %67 = call ptr @WavpackStreamGetErrorMessage(ptr noundef %3) #10
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.1, ptr noundef %67) #10
  br label %.critedge415

68:                                               ; preds = %61, %64
  call void @WavpackStreamBigEndianToNative(ptr noundef nonnull %8, ptr noundef nonnull @.str.4) #10
  %69 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %8, ptr noundef nonnull dereferenceable(1) @.str.5, i64 noundef 4) #11
  %.not348 = icmp eq i32 %69, 0
  br i1 %.not348, label %70, label %142

70:                                               ; preds = %68
  %71 = load i64, ptr %35, align 4, !tbaa !15
  %.not349 = icmp eq i64 %71, 32
  br i1 %.not349, label %72, label %78

72:                                               ; preds = %70
  %73 = call i32 @DoReadFile(ptr noundef %0, ptr noundef nonnull %9, i32 noundef 32, ptr noundef nonnull %6) #10
  %.not350 = icmp eq i32 %73, 0
  br i1 %.not350, label %78, label %74

74:                                               ; preds = %72
  %75 = load i32, ptr %6, align 4, !tbaa !18
  %76 = zext i32 %75 to i64
  %77 = load i64, ptr %35, align 4, !tbaa !15
  %.not351 = icmp eq i64 %77, %76
  br i1 %.not351, label %79, label %78

78:                                               ; preds = %74, %72, %70
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str, ptr noundef %1) #10
  br label %.critedge415

79:                                               ; preds = %74
  %80 = load i32, ptr %22, align 8, !tbaa !5
  %81 = and i32 %80, 512
  %.not352 = icmp eq i32 %81, 0
  br i1 %.not352, label %82, label %86

82:                                               ; preds = %79
  %83 = call i32 @WavpackStreamAddWrapper(ptr noundef %3, ptr noundef nonnull %9, i32 noundef %75) #10
  %.not353 = icmp eq i32 %83, 0
  br i1 %.not353, label %84, label %86

84:                                               ; preds = %82
  %85 = call ptr @WavpackStreamGetErrorMessage(ptr noundef %3) #10
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.1, ptr noundef %85) #10
  br label %.critedge415

86:                                               ; preds = %79, %82
  call void @WavpackStreamBigEndianToNative(ptr noundef nonnull %9, ptr noundef nonnull @.str.6) #10
  %87 = load i32, ptr @debug_logging_mode, align 4, !tbaa !18
  %.not354 = icmp eq i32 %87, 0
  br i1 %.not354, label %96, label %88

88:                                               ; preds = %86
  call void @llvm.lifetime.start.p0(i64 5, ptr nonnull %10) #10
  %89 = load i32, ptr %41, align 8
  store i32 %89, ptr %10, align 4
  store i8 0, ptr %42, align 4, !tbaa !19
  %90 = load i32, ptr %43, align 4, !tbaa !20
  %91 = load double, ptr %9, align 8, !tbaa !23
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.7, ptr noundef nonnull %10, i32 noundef %90, double noundef %91) #10
  %92 = load i32, ptr %44, align 8, !tbaa !24
  %93 = load i32, ptr %45, align 4, !tbaa !25
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.8, i32 noundef %92, i32 noundef %93) #10
  %94 = load i32, ptr %46, align 8, !tbaa !26
  %95 = load i32, ptr %47, align 4, !tbaa !27
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.9, i32 noundef %94, i32 noundef %95) #10
  call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %10) #10
  br label %96

96:                                               ; preds = %88, %86
  %97 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %41, ptr noundef nonnull dereferenceable(1) @.str.10, i64 noundef 4) #11
  %.not355 = icmp eq i32 %97, 0
  br i1 %.not355, label %98, label %.critedge

98:                                               ; preds = %96
  %99 = load i32, ptr %43, align 4, !tbaa !20
  %.not356 = icmp ult i32 %99, 4
  br i1 %.not356, label %100, label %.critedge

100:                                              ; preds = %98
  %101 = load double, ptr %9, align 8
  %102 = fcmp olt double %101, 1.000000e+00
  %103 = fcmp ogt double %101, 0x416FFFFFE0000000
  %or.cond11 = or i1 %102, %103
  %104 = call double @llvm.floor.f64(double %101)
  %105 = fcmp une double %101, %104
  %or.cond407 = or i1 %or.cond11, %105
  br i1 %or.cond407, label %.critedge, label %106

106:                                              ; preds = %100
  %107 = load i32, ptr %46, align 8
  %108 = add i32 %107, -257
  %or.cond14 = icmp ult i32 %108, -256
  br i1 %or.cond14, label %.critedge, label %109

109:                                              ; preds = %106
  %110 = load i32, ptr %47, align 4
  %111 = add i32 %110, -33
  %or.cond17 = icmp ult i32 %111, -32
  br i1 %or.cond17, label %.critedge, label %112

112:                                              ; preds = %109
  %113 = and i32 %99, 1
  %114 = icmp eq i32 %113, 0
  %115 = icmp eq i32 %110, 32
  %or.cond20.not448 = or i1 %114, %115
  %116 = load i32, ptr %45, align 4
  %.not357 = icmp eq i32 %116, 1
  %or.cond417 = select i1 %or.cond20.not448, i1 %.not357, i1 false
  br i1 %or.cond417, label %117, label %.critedge

117:                                              ; preds = %112
  %118 = load i32, ptr %44, align 8, !tbaa !24
  %119 = udiv i32 %118, %107
  %120 = urem i32 %118, %107
  %121 = add nuw nsw i32 %110, 7
  %122 = lshr i32 %121, 3
  %123 = icmp ult i32 %119, %122
  %124 = icmp ugt i32 %119, 4
  %or.cond408 = or i1 %123, %124
  %or.cond408.not = xor i1 %or.cond408, true
  %.not358 = icmp eq i32 %120, 0
  %or.cond930 = and i1 %or.cond408.not, %.not358
  br i1 %or.cond930, label %125, label %.critedge

.critedge:                                        ; preds = %117, %109, %112, %106, %100, %96, %98
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.11, ptr noundef %1) #10
  br label %.critedge415

125:                                              ; preds = %117
  store i32 %119, ptr %48, align 4, !tbaa !28
  %126 = select i1 %114, i32 0, i32 127
  store i32 %126, ptr %49, align 8, !tbaa !29
  store i32 %110, ptr %50, align 8, !tbaa !30
  store i32 %107, ptr %40, align 4, !tbaa !31
  %127 = fptosi double %101 to i32
  store i32 %127, ptr %51, align 8, !tbaa !32
  %.not361 = icmp ult i32 %99, 2
  br i1 %.not361, label %128, label %130

128:                                              ; preds = %125
  %129 = icmp ugt i32 %119, 1
  br i1 %129, label %.sink.split, label %.thread

130:                                              ; preds = %125
  %131 = icmp eq i32 %119, 1
  br i1 %131, label %.thread, label %134

.thread:                                          ; preds = %128, %130
  br label %.sink.split

.sink.split:                                      ; preds = %128, %.thread
  %.sink729 = phi i32 [ 2, %.thread ], [ 1, %128 ]
  %132 = load i32, ptr %22, align 8, !tbaa !5
  %133 = or i32 %132, %.sink729
  store i32 %133, ptr %22, align 8, !tbaa !5
  br label %134

134:                                              ; preds = %.sink.split, %130
  %135 = load i32, ptr @debug_logging_mode, align 4, !tbaa !18
  %.not362 = icmp eq i32 %135, 0
  br i1 %.not362, label %.thread419, label %136

136:                                              ; preds = %134
  %137 = load i32, ptr %22, align 8, !tbaa !5
  %138 = and i32 %137, 1
  %.not363 = icmp eq i32 %138, 0
  %139 = select i1 %.not363, ptr @.str.14, ptr @.str.13
  br i1 %114, label %141, label %140

140:                                              ; preds = %136
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.12, ptr noundef nonnull %139) #10
  br label %.thread419

141:                                              ; preds = %136
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.15, i32 noundef %110, ptr noundef nonnull %139, i32 noundef %119) #10
  br label %.thread419

142:                                              ; preds = %68
  %143 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %8, ptr noundef nonnull dereferenceable(1) @.str.16, i64 noundef 4) #11
  %.not365 = icmp eq i32 %143, 0
  br i1 %.not365, label %144, label %406

144:                                              ; preds = %142
  %145 = load i64, ptr %35, align 4
  %146 = add i64 %145, -1025
  %or.cond26 = icmp ult i64 %146, -1013
  br i1 %or.cond26, label %147, label %148

147:                                              ; preds = %144
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.17) #10
  br label %.critedge415

148:                                              ; preds = %144
  %149 = load i32, ptr @debug_logging_mode, align 4, !tbaa !18
  %.not366 = icmp eq i32 %149, 0
  br i1 %.not366, label %152, label %150

150:                                              ; preds = %148
  %151 = trunc nuw nsw i64 %145 to i32
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.18, i32 noundef %151) #10
  %.pre651 = load i64, ptr %35, align 4, !tbaa !15
  br label %152

152:                                              ; preds = %150, %148
  %153 = phi i64 [ %.pre651, %150 ], [ %145, %148 ]
  %154 = call noalias ptr @malloc(i64 noundef %153) #12
  %155 = trunc i64 %153 to i32
  %156 = call i32 @DoReadFile(ptr noundef %0, ptr noundef %154, i32 noundef %155, ptr noundef nonnull %6) #10
  %.not367 = icmp eq i32 %156, 0
  br i1 %.not367, label %161, label %157

157:                                              ; preds = %152
  %158 = load i32, ptr %6, align 4, !tbaa !18
  %159 = zext i32 %158 to i64
  %160 = load i64, ptr %35, align 4, !tbaa !15
  %.not368 = icmp eq i64 %160, %159
  br i1 %.not368, label %162, label %161

161:                                              ; preds = %157, %152
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str, ptr noundef %1) #10
  call void @free(ptr noundef %154) #10
  br label %.critedge415

162:                                              ; preds = %157
  %163 = load i32, ptr %22, align 8, !tbaa !5
  %164 = and i32 %163, 512
  %.not369 = icmp eq i32 %164, 0
  br i1 %.not369, label %165, label %169

165:                                              ; preds = %162
  %166 = call i32 @WavpackStreamAddWrapper(ptr noundef %3, ptr noundef %154, i32 noundef %158) #10
  %.not370 = icmp eq i32 %166, 0
  br i1 %.not370, label %167, label %169

167:                                              ; preds = %165
  %168 = call ptr @WavpackStreamGetErrorMessage(ptr noundef %3) #10
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.1, ptr noundef %168) #10
  call void @free(ptr noundef %154) #10
  br label %.critedge415

169:                                              ; preds = %162, %165
  call void @WavpackStreamBigEndianToNative(ptr noundef %154, ptr noundef nonnull @.str.19) #10
  %170 = load i32, ptr %39, align 4, !tbaa !33
  %.not371 = icmp eq i32 %170, 0
  br i1 %.not371, label %171, label %174

171:                                              ; preds = %169
  %172 = load i32, ptr %22, align 8, !tbaa !5
  %173 = and i32 %172, 1024
  %.not372 = icmp eq i32 %173, 0
  br i1 %.not372, label %175, label %174

174:                                              ; preds = %171, %169
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.20) #10
  call void @free(ptr noundef %154) #10
  br label %.critedge415

175:                                              ; preds = %171
  %176 = load i32, ptr %154, align 4, !tbaa !34
  switch i32 %176, label %.preheader449.preheader [
    i32 0, label %179
    i32 65536, label %288
  ]

.preheader449.preheader:                          ; preds = %175
  %177 = load i32, ptr @layouts, align 16, !tbaa !36
  %178 = icmp eq i32 %176, %177
  br i1 %178, label %293, label %.preheader449.1

179:                                              ; preds = %175
  %180 = getelementptr inbounds i8, ptr %154, i64 12
  %181 = getelementptr inbounds i8, ptr %154, i64 8
  %182 = load i32, ptr %181, align 4, !tbaa !38
  %183 = load i64, ptr %35, align 4, !tbaa !15
  %184 = sext i32 %182 to i64
  %185 = mul nsw i64 %184, 20
  %186 = add nsw i64 %185, 12
  %.not374 = icmp eq i64 %183, %186
  br i1 %.not374, label %187, label %287

187:                                              ; preds = %179
  %188 = load i32, ptr %40, align 4, !tbaa !31
  %.not375 = icmp eq i32 %182, %188
  br i1 %.not375, label %189, label %287

189:                                              ; preds = %187
  %190 = icmp sgt i32 %182, 255
  br i1 %190, label %191, label %192

191:                                              ; preds = %189
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.22) #10
  br label %.thread423

192:                                              ; preds = %189
  %193 = call noalias ptr @malloc(i64 noundef %184) #12
  call void @llvm.memset.p0.i64(ptr align 1 %193, i8 -1, i64 %184, i1 false)
  %194 = add nsw i32 %182, 1
  %195 = sext i32 %194 to i64
  %196 = call noalias ptr @malloc(i64 noundef %195) #12
  %197 = icmp sgt i32 %182, 0
  br i1 %197, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %192
  %wide.trip.count = zext nneg i32 %182 to i64
  br label %.lr.ph

.preheader452:                                    ; preds = %.lr.ph._crit_edge
  br i1 %197, label %.preheader.us.preheader, label %._crit_edge

.preheader.us.preheader:                          ; preds = %.preheader452
  %wide.trip.count628 = zext nneg i32 %182 to i64
  br label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.us.preheader, %..loopexit_crit_edge.us
  %.0281527.us = phi i32 [ %.1282.us, %..loopexit_crit_edge.us ], [ 0, %.preheader.us.preheader ]
  %.0285525.us = phi i32 [ %211, %..loopexit_crit_edge.us ], [ 1, %.preheader.us.preheader ]
  br label %199

198:                                              ; preds = %199
  %indvars.iv.next626 = add nuw nsw i64 %indvars.iv625, 1
  %exitcond629.not = icmp eq i64 %indvars.iv.next626, %wide.trip.count628
  br i1 %exitcond629.not, label %..loopexit_crit_edge.us, label %199, !llvm.loop !39

199:                                              ; preds = %.preheader.us, %198
  %indvars.iv625 = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next626, %198 ]
  %200 = getelementptr inbounds %struct.CAFChannelDescription, ptr %180, i64 %indvars.iv625
  %201 = load i32, ptr %200, align 4, !tbaa !41
  %202 = icmp eq i32 %201, %.0285525.us
  br i1 %202, label %203, label %198

203:                                              ; preds = %199
  %204 = add nsw i32 %.0285525.us, -1
  %205 = shl nuw nsw i32 1, %204
  %206 = load i32, ptr %39, align 4, !tbaa !33
  %207 = or i32 %206, %205
  store i32 %207, ptr %39, align 4, !tbaa !33
  %208 = add nsw i32 %.0281527.us, 1
  %209 = trunc i32 %.0281527.us to i8
  %210 = getelementptr inbounds i8, ptr %193, i64 %indvars.iv625
  store i8 %209, ptr %210, align 1, !tbaa !19
  br label %..loopexit_crit_edge.us

..loopexit_crit_edge.us:                          ; preds = %198, %203
  %.1282.us = phi i32 [ %208, %203 ], [ %.0281527.us, %198 ]
  %211 = add nuw nsw i32 %.0285525.us, 1
  %exitcond630.not = icmp eq i32 %211, 19
  br i1 %exitcond630.not, label %.preheader451, label %.preheader.us, !llvm.loop !43

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph._crit_edge
  %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %.pre652, %.lr.ph._crit_edge ]
  %212 = getelementptr inbounds %struct.CAFChannelDescription, ptr %180, i64 %indvars.iv
  call void @WavpackStreamBigEndianToNative(ptr noundef nonnull %212, ptr noundef nonnull @.str.23) #10
  %213 = load i32, ptr @debug_logging_mode, align 4, !tbaa !18
  %.not379 = icmp eq i32 %213, 0
  %.pre652 = add nuw nsw i64 %indvars.iv, 1
  br i1 %.not379, label %.lr.ph._crit_edge, label %214

214:                                              ; preds = %.lr.ph
  %215 = load i32, ptr %212, align 4, !tbaa !41
  %216 = trunc nuw nsw i64 %.pre652 to i32
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.24, i32 noundef %216, i32 noundef %215) #10
  br label %.lr.ph._crit_edge

.lr.ph._crit_edge:                                ; preds = %.lr.ph, %214
  %exitcond.not = icmp eq i64 %.pre652, %wide.trip.count
  br i1 %exitcond.not, label %.preheader452, label %.lr.ph, !llvm.loop !44

.preheader451:                                    ; preds = %..loopexit_crit_edge.us
  br i1 %197, label %.lr.ph531.preheader, label %._crit_edge

.lr.ph531.preheader:                              ; preds = %.preheader451
  %wide.trip.count634 = zext nneg i32 %182 to i64
  br label %.lr.ph531

.preheader450:                                    ; preds = %238
  br i1 %197, label %.lr.ph533.preheader, label %._crit_edge

.lr.ph533.preheader:                              ; preds = %.preheader450
  %wide.trip.count639 = zext nneg i32 %182 to i64
  br label %.lr.ph533

.lr.ph531:                                        ; preds = %.lr.ph531.preheader, %238
  %indvars.iv631 = phi i64 [ 0, %.lr.ph531.preheader ], [ %indvars.iv.next632, %238 ]
  %.0278530 = phi i32 [ 0, %.lr.ph531.preheader ], [ %.2280, %238 ]
  %.2283529 = phi i32 [ %.1282.us, %.lr.ph531.preheader ], [ %.3284, %238 ]
  %217 = getelementptr inbounds i8, ptr %193, i64 %indvars.iv631
  %218 = load i8, ptr %217, align 1, !tbaa !19
  %219 = icmp eq i8 %218, -1
  br i1 %219, label %220, label %238

220:                                              ; preds = %.lr.ph531
  %221 = getelementptr inbounds %struct.CAFChannelDescription, ptr %180, i64 %indvars.iv631
  %222 = load i32, ptr %221, align 4, !tbaa !41
  switch i32 %222, label %223 [
    i32 -1, label %233
    i32 100, label %233
    i32 0, label %233
  ]

223:                                              ; preds = %220
  %224 = add i32 %222, -33
  %or.cond32 = icmp ult i32 %224, 12
  %225 = and i32 %222, -8
  %or.cond34 = icmp eq i32 %225, 200
  %or.cond409 = or i1 %or.cond32, %or.cond34
  %226 = add i32 %222, -301
  %or.cond36 = icmp ult i32 %226, 5
  %or.cond410 = or i1 %or.cond36, %or.cond409
  br i1 %or.cond410, label %227, label %232

227:                                              ; preds = %223
  %228 = icmp ugt i32 %222, 300
  %229 = add nuw nsw i32 %222, 176
  %230 = select i1 %228, i32 %229, i32 %222
  %231 = trunc i32 %230 to i8
  br label %233

232:                                              ; preds = %223
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.25, i32 noundef %222) #10
  br label %233

233:                                              ; preds = %220, %220, %220, %227, %232
  %.sink = phi i8 [ %231, %227 ], [ -1, %232 ], [ -1, %220 ], [ -1, %220 ], [ -1, %220 ]
  %234 = sext i32 %.0278530 to i64
  %235 = getelementptr inbounds i8, ptr %196, i64 %234
  store i8 %.sink, ptr %235, align 1, !tbaa !19
  %.1279 = add nsw i32 %.0278530, 1
  %236 = add nsw i32 %.2283529, 1
  %237 = trunc i32 %.2283529 to i8
  store i8 %237, ptr %217, align 1, !tbaa !19
  br label %238

238:                                              ; preds = %.lr.ph531, %233
  %.3284 = phi i32 [ %236, %233 ], [ %.2283529, %.lr.ph531 ]
  %.2280 = phi i32 [ %.1279, %233 ], [ %.0278530, %.lr.ph531 ]
  %indvars.iv.next632 = add nuw nsw i64 %indvars.iv631, 1
  %exitcond635.not = icmp eq i64 %indvars.iv.next632, %wide.trip.count634
  br i1 %exitcond635.not, label %.preheader450, label %.lr.ph531, !llvm.loop !45

.lr.ph533:                                        ; preds = %.lr.ph533.preheader, %242
  %indvars.iv636 = phi i64 [ 0, %.lr.ph533.preheader ], [ %indvars.iv.next637, %242 ]
  %239 = getelementptr inbounds i8, ptr %193, i64 %indvars.iv636
  %240 = load i8, ptr %239, align 1, !tbaa !19
  %241 = zext i8 %240 to i64
  %.not376 = icmp eq i64 %indvars.iv636, %241
  br i1 %.not376, label %242, label %._crit_edge.loopexit

242:                                              ; preds = %.lr.ph533
  %indvars.iv.next637 = add nuw nsw i64 %indvars.iv636, 1
  %exitcond640.not = icmp eq i64 %indvars.iv.next637, %wide.trip.count639
  br i1 %exitcond640.not, label %._crit_edge.thread, label %.lr.ph533, !llvm.loop !46

._crit_edge.loopexit:                             ; preds = %.lr.ph533
  %243 = trunc nuw nsw i64 %indvars.iv636 to i32
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %192, %.preheader452, %.preheader451, %.preheader450
  %.0278.lcssa656 = phi i32 [ %.2280, %.preheader450 ], [ 0, %.preheader451 ], [ 0, %.preheader452 ], [ 0, %192 ], [ %.2280, %._crit_edge.loopexit ]
  %.3318.lcssa = phi i32 [ 0, %.preheader450 ], [ 0, %.preheader451 ], [ 0, %.preheader452 ], [ 0, %192 ], [ %243, %._crit_edge.loopexit ]
  %244 = icmp eq i32 %.3318.lcssa, %182
  br i1 %244, label %._crit_edge.thread, label %245

._crit_edge.thread:                               ; preds = %242, %._crit_edge
  %.0278.lcssa656660 = phi i32 [ %.0278.lcssa656, %._crit_edge ], [ %.2280, %242 ]
  call void @free(ptr noundef %193) #10
  br label %248

245:                                              ; preds = %._crit_edge
  %246 = load i32, ptr %22, align 8, !tbaa !5
  %247 = or i32 %246, 8
  store i32 %247, ptr %22, align 8, !tbaa !5
  br label %248

248:                                              ; preds = %245, %._crit_edge.thread
  %.0278.lcssa656659 = phi i32 [ %.0278.lcssa656660, %._crit_edge.thread ], [ %.0278.lcssa656, %245 ]
  %.1302 = phi ptr [ null, %._crit_edge.thread ], [ %193, %245 ]
  %.1287 = phi i32 [ %.0286546, %._crit_edge.thread ], [ %182, %245 ]
  %.not377 = icmp eq i32 %.0278.lcssa656659, 0
  br i1 %.not377, label %249, label %250

249:                                              ; preds = %248
  call void @free(ptr noundef %196) #10
  br label %253

250:                                              ; preds = %248
  %251 = sext i32 %.0278.lcssa656659 to i64
  %252 = getelementptr inbounds i8, ptr %196, i64 %251
  store i8 0, ptr %252, align 1, !tbaa !19
  br label %253

253:                                              ; preds = %250, %249
  %.1294 = phi ptr [ %196, %250 ], [ null, %249 ]
  %254 = load i32, ptr @debug_logging_mode, align 4, !tbaa !18
  %.not378 = icmp eq i32 %254, 0
  br i1 %.not378, label %.thread423, label %255

255:                                              ; preds = %253
  %256 = load i32, ptr %154, align 4, !tbaa !34
  %257 = load i32, ptr %39, align 4, !tbaa !33
  %258 = load i32, ptr %181, align 4, !tbaa !38
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.26, i32 noundef %256, i32 noundef %257, i32 noundef %258, i32 noundef %.0278.lcssa656659) #10
  %259 = icmp ne ptr %.1302, null
  %260 = icmp slt i32 %182, 9
  %or.cond38 = and i1 %260, %259
  br i1 %or.cond38, label %261, label %.thread423

261:                                              ; preds = %255
  call void @llvm.lifetime.start.p0(i64 9, ptr nonnull %11) #10
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(9) %11, ptr noundef nonnull align 1 dereferenceable(9) @__const.ParseCaffHeaderConfig.reorder_string, i64 9, i1 false)
  br i1 %197, label %.lr.ph539, label %._crit_edge540

.lr.ph539:                                        ; preds = %261
  %262 = load i8, ptr %.1302, align 1, !tbaa !19
  %263 = add i8 %262, 49
  store i8 %263, ptr %11, align 1, !tbaa !19
  %exitcond645.not = icmp eq i32 %182, 1
  br i1 %exitcond645.not, label %._crit_edge540, label %.lr.ph539.1, !llvm.loop !47

.lr.ph539.1:                                      ; preds = %.lr.ph539
  %264 = getelementptr inbounds i8, ptr %.1302, i64 1
  %265 = load i8, ptr %264, align 1, !tbaa !19
  %266 = add i8 %265, 49
  store i8 %266, ptr %52, align 1, !tbaa !19
  %exitcond645.not.1 = icmp eq i32 %182, 2
  br i1 %exitcond645.not.1, label %._crit_edge540, label %.lr.ph539.2, !llvm.loop !47

.lr.ph539.2:                                      ; preds = %.lr.ph539.1
  %267 = getelementptr inbounds i8, ptr %.1302, i64 2
  %268 = load i8, ptr %267, align 1, !tbaa !19
  %269 = add i8 %268, 49
  store i8 %269, ptr %53, align 1, !tbaa !19
  %exitcond645.not.2 = icmp eq i32 %182, 3
  br i1 %exitcond645.not.2, label %._crit_edge540, label %.lr.ph539.3, !llvm.loop !47

.lr.ph539.3:                                      ; preds = %.lr.ph539.2
  %270 = getelementptr inbounds i8, ptr %.1302, i64 3
  %271 = load i8, ptr %270, align 1, !tbaa !19
  %272 = add i8 %271, 49
  store i8 %272, ptr %54, align 1, !tbaa !19
  %exitcond645.not.3 = icmp eq i32 %182, 4
  br i1 %exitcond645.not.3, label %._crit_edge540, label %.lr.ph539.4, !llvm.loop !47

.lr.ph539.4:                                      ; preds = %.lr.ph539.3
  %273 = getelementptr inbounds i8, ptr %.1302, i64 4
  %274 = load i8, ptr %273, align 1, !tbaa !19
  %275 = add i8 %274, 49
  store i8 %275, ptr %55, align 1, !tbaa !19
  %exitcond645.not.4 = icmp eq i32 %182, 5
  br i1 %exitcond645.not.4, label %._crit_edge540, label %.lr.ph539.5, !llvm.loop !47

.lr.ph539.5:                                      ; preds = %.lr.ph539.4
  %276 = getelementptr inbounds i8, ptr %.1302, i64 5
  %277 = load i8, ptr %276, align 1, !tbaa !19
  %278 = add i8 %277, 49
  store i8 %278, ptr %56, align 1, !tbaa !19
  %exitcond645.not.5 = icmp eq i32 %182, 6
  br i1 %exitcond645.not.5, label %._crit_edge540, label %.lr.ph539.6, !llvm.loop !47

.lr.ph539.6:                                      ; preds = %.lr.ph539.5
  %279 = getelementptr inbounds i8, ptr %.1302, i64 6
  %280 = load i8, ptr %279, align 1, !tbaa !19
  %281 = add i8 %280, 49
  store i8 %281, ptr %57, align 1, !tbaa !19
  %exitcond645.not.6 = icmp eq i32 %182, 7
  br i1 %exitcond645.not.6, label %._crit_edge540, label %.lr.ph539.7, !llvm.loop !47

.lr.ph539.7:                                      ; preds = %.lr.ph539.6
  %282 = getelementptr inbounds i8, ptr %.1302, i64 7
  %283 = load i8, ptr %282, align 1, !tbaa !19
  %284 = add i8 %283, 49
  store i8 %284, ptr %58, align 1, !tbaa !19
  br label %._crit_edge540

._crit_edge540:                                   ; preds = %.lr.ph539, %.lr.ph539.1, %.lr.ph539.2, %.lr.ph539.3, %.lr.ph539.4, %.lr.ph539.5, %.lr.ph539.6, %.lr.ph539.7, %261
  %.4319.lcssa = phi i32 [ 0, %261 ], [ %182, %.lr.ph539.7 ], [ %182, %.lr.ph539.6 ], [ %182, %.lr.ph539.5 ], [ %182, %.lr.ph539.4 ], [ %182, %.lr.ph539.3 ], [ %182, %.lr.ph539.2 ], [ %182, %.lr.ph539.1 ], [ %182, %.lr.ph539 ]
  %285 = zext nneg i32 %.4319.lcssa to i64
  %286 = getelementptr inbounds [9 x i8], ptr %11, i64 0, i64 %285
  store i8 0, ptr %286, align 1, !tbaa !19
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.27, ptr noundef nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 9, ptr nonnull %11) #10
  br label %.thread423

287:                                              ; preds = %179, %187
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.21) #10
  call void @free(ptr noundef nonnull %154) #10
  br label %.critedge415

288:                                              ; preds = %175
  %289 = getelementptr inbounds i8, ptr %154, i64 4
  %290 = load i32, ptr %289, align 4, !tbaa !48
  store i32 %290, ptr %39, align 4, !tbaa !33
  %291 = load i32, ptr @debug_logging_mode, align 4, !tbaa !18
  %.not373 = icmp eq i32 %291, 0
  br i1 %.not373, label %.thread423, label %292

292:                                              ; preds = %288
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.28, i32 noundef 65536, i32 noundef %290) #10
  br label %.thread423

293:                                              ; preds = %.preheader449.46, %.preheader449.45, %.preheader449.44, %.preheader449.43, %.preheader449.42, %.preheader449.41, %.preheader449.40, %.preheader449.39, %.preheader449.38, %.preheader449.37, %.preheader449.36, %.preheader449.35, %.preheader449.34, %.preheader449.33, %.preheader449.32, %.preheader449.31, %.preheader449.30, %.preheader449.29, %.preheader449.28, %.preheader449.27, %.preheader449.26, %.preheader449.25, %.preheader449.24, %.preheader449.23, %.preheader449.22, %.preheader449.21, %.preheader449.20, %.preheader449.19, %.preheader449.18, %.preheader449.17, %.preheader449.16, %.preheader449.15, %.preheader449.14, %.preheader449.13, %.preheader449.12, %.preheader449.11, %.preheader449.10, %.preheader449.9, %.preheader449.8, %.preheader449.7, %.preheader449.6, %.preheader449.5, %.preheader449.4, %.preheader449.3, %.preheader449.2, %.preheader449.1, %.preheader449.preheader
  %.lcssa556 = phi ptr [ @layouts, %.preheader449.preheader ], [ getelementptr inbounds (i8, ptr @layouts, i64 24), %.preheader449.1 ], [ getelementptr inbounds (i8, ptr @layouts, i64 48), %.preheader449.2 ], [ getelementptr inbounds (i8, ptr @layouts, i64 72), %.preheader449.3 ], [ getelementptr inbounds (i8, ptr @layouts, i64 96), %.preheader449.4 ], [ getelementptr inbounds (i8, ptr @layouts, i64 120), %.preheader449.5 ], [ getelementptr inbounds (i8, ptr @layouts, i64 144), %.preheader449.6 ], [ getelementptr inbounds (i8, ptr @layouts, i64 168), %.preheader449.7 ], [ getelementptr inbounds (i8, ptr @layouts, i64 192), %.preheader449.8 ], [ getelementptr inbounds (i8, ptr @layouts, i64 216), %.preheader449.9 ], [ getelementptr inbounds (i8, ptr @layouts, i64 240), %.preheader449.10 ], [ getelementptr inbounds (i8, ptr @layouts, i64 264), %.preheader449.11 ], [ getelementptr inbounds (i8, ptr @layouts, i64 288), %.preheader449.12 ], [ getelementptr inbounds (i8, ptr @layouts, i64 312), %.preheader449.13 ], [ getelementptr inbounds (i8, ptr @layouts, i64 336), %.preheader449.14 ], [ getelementptr inbounds (i8, ptr @layouts, i64 360), %.preheader449.15 ], [ getelementptr inbounds (i8, ptr @layouts, i64 384), %.preheader449.16 ], [ getelementptr inbounds (i8, ptr @layouts, i64 408), %.preheader449.17 ], [ getelementptr inbounds (i8, ptr @layouts, i64 432), %.preheader449.18 ], [ getelementptr inbounds (i8, ptr @layouts, i64 456), %.preheader449.19 ], [ getelementptr inbounds (i8, ptr @layouts, i64 480), %.preheader449.20 ], [ getelementptr inbounds (i8, ptr @layouts, i64 504), %.preheader449.21 ], [ getelementptr inbounds (i8, ptr @layouts, i64 528), %.preheader449.22 ], [ getelementptr inbounds (i8, ptr @layouts, i64 552), %.preheader449.23 ], [ getelementptr inbounds (i8, ptr @layouts, i64 576), %.preheader449.24 ], [ getelementptr inbounds (i8, ptr @layouts, i64 600), %.preheader449.25 ], [ getelementptr inbounds (i8, ptr @layouts, i64 624), %.preheader449.26 ], [ getelementptr inbounds (i8, ptr @layouts, i64 648), %.preheader449.27 ], [ getelementptr inbounds (i8, ptr @layouts, i64 672), %.preheader449.28 ], [ getelementptr inbounds (i8, ptr @layouts, i64 696), %.preheader449.29 ], [ getelementptr inbounds (i8, ptr @layouts, i64 720), %.preheader449.30 ], [ getelementptr inbounds (i8, ptr @layouts, i64 744), %.preheader449.31 ], [ getelementptr inbounds (i8, ptr @layouts, i64 768), %.preheader449.32 ], [ getelementptr inbounds (i8, ptr @layouts, i64 792), %.preheader449.33 ], [ getelementptr inbounds (i8, ptr @layouts, i64 816), %.preheader449.34 ], [ getelementptr inbounds (i8, ptr @layouts, i64 840), %.preheader449.35 ], [ getelementptr inbounds (i8, ptr @layouts, i64 864), %.preheader449.36 ], [ getelementptr inbounds (i8, ptr @layouts, i64 888), %.preheader449.37 ], [ getelementptr inbounds (i8, ptr @layouts, i64 912), %.preheader449.38 ], [ getelementptr inbounds (i8, ptr @layouts, i64 936), %.preheader449.39 ], [ getelementptr inbounds (i8, ptr @layouts, i64 960), %.preheader449.40 ], [ getelementptr inbounds (i8, ptr @layouts, i64 984), %.preheader449.41 ], [ getelementptr inbounds (i8, ptr @layouts, i64 1008), %.preheader449.42 ], [ getelementptr inbounds (i8, ptr @layouts, i64 1032), %.preheader449.43 ], [ getelementptr inbounds (i8, ptr @layouts, i64 1056), %.preheader449.44 ], [ getelementptr inbounds (i8, ptr @layouts, i64 1080), %.preheader449.45 ], [ getelementptr inbounds (i8, ptr @layouts, i64 1104), %.preheader449.46 ]
  %294 = getelementptr inbounds i8, ptr %.lcssa556, i64 4
  %295 = load i32, ptr %294, align 4, !tbaa !49
  store i32 %295, ptr %39, align 4, !tbaa !33
  %296 = getelementptr inbounds i8, ptr %.lcssa556, i64 8
  %297 = load ptr, ptr %296, align 8, !tbaa !50
  %.not380 = icmp eq ptr %297, null
  br i1 %.not380, label %301, label %298

298:                                              ; preds = %293
  %299 = call noalias ptr @strdup(ptr noundef nonnull %297) #10
  %300 = or i32 %172, 8
  store i32 %300, ptr %22, align 8, !tbaa !5
  br label %301

301:                                              ; preds = %298, %293
  %.3304 = phi ptr [ %299, %298 ], [ %.0301544, %293 ]
  %302 = getelementptr inbounds i8, ptr %.lcssa556, i64 16
  %303 = load ptr, ptr %302, align 8, !tbaa !51
  %.not381 = icmp eq ptr %303, null
  br i1 %.not381, label %306, label %304

304:                                              ; preds = %301
  %305 = call noalias ptr @strdup(ptr noundef nonnull %303) #10
  br label %306

306:                                              ; preds = %304, %301
  %.3296 = phi ptr [ %305, %304 ], [ %.0293545, %301 ]
  %307 = load i32, ptr @debug_logging_mode, align 4, !tbaa !18
  %.not382 = icmp eq i32 %307, 0
  br i1 %.not382, label %.thread423, label %308

308:                                              ; preds = %306
  %.not383 = icmp eq ptr %.3304, null
  %309 = select i1 %.not383, ptr @.str.31, ptr @.str.30
  %.not384 = icmp eq ptr %.3296, null
  %310 = select i1 %.not384, ptr @.str.31, ptr @.str.30
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.29, i32 noundef %176, i32 noundef %295, ptr noundef nonnull %309, ptr noundef nonnull %310) #10
  br label %.thread423

.preheader449.1:                                  ; preds = %.preheader449.preheader
  %311 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 24), align 8, !tbaa !36
  %312 = icmp eq i32 %176, %311
  br i1 %312, label %293, label %.preheader449.2

.preheader449.2:                                  ; preds = %.preheader449.1
  %313 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 48), align 16, !tbaa !36
  %314 = icmp eq i32 %176, %313
  br i1 %314, label %293, label %.preheader449.3

.preheader449.3:                                  ; preds = %.preheader449.2
  %315 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 72), align 8, !tbaa !36
  %316 = icmp eq i32 %176, %315
  br i1 %316, label %293, label %.preheader449.4

.preheader449.4:                                  ; preds = %.preheader449.3
  %317 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 96), align 16, !tbaa !36
  %318 = icmp eq i32 %176, %317
  br i1 %318, label %293, label %.preheader449.5

.preheader449.5:                                  ; preds = %.preheader449.4
  %319 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 120), align 8, !tbaa !36
  %320 = icmp eq i32 %176, %319
  br i1 %320, label %293, label %.preheader449.6

.preheader449.6:                                  ; preds = %.preheader449.5
  %321 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 144), align 16, !tbaa !36
  %322 = icmp eq i32 %176, %321
  br i1 %322, label %293, label %.preheader449.7

.preheader449.7:                                  ; preds = %.preheader449.6
  %323 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 168), align 8, !tbaa !36
  %324 = icmp eq i32 %176, %323
  br i1 %324, label %293, label %.preheader449.8

.preheader449.8:                                  ; preds = %.preheader449.7
  %325 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 192), align 16, !tbaa !36
  %326 = icmp eq i32 %176, %325
  br i1 %326, label %293, label %.preheader449.9

.preheader449.9:                                  ; preds = %.preheader449.8
  %327 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 216), align 8, !tbaa !36
  %328 = icmp eq i32 %176, %327
  br i1 %328, label %293, label %.preheader449.10

.preheader449.10:                                 ; preds = %.preheader449.9
  %329 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 240), align 16, !tbaa !36
  %330 = icmp eq i32 %176, %329
  br i1 %330, label %293, label %.preheader449.11

.preheader449.11:                                 ; preds = %.preheader449.10
  %331 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 264), align 8, !tbaa !36
  %332 = icmp eq i32 %176, %331
  br i1 %332, label %293, label %.preheader449.12

.preheader449.12:                                 ; preds = %.preheader449.11
  %333 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 288), align 16, !tbaa !36
  %334 = icmp eq i32 %176, %333
  br i1 %334, label %293, label %.preheader449.13

.preheader449.13:                                 ; preds = %.preheader449.12
  %335 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 312), align 8, !tbaa !36
  %336 = icmp eq i32 %176, %335
  br i1 %336, label %293, label %.preheader449.14

.preheader449.14:                                 ; preds = %.preheader449.13
  %337 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 336), align 16, !tbaa !36
  %338 = icmp eq i32 %176, %337
  br i1 %338, label %293, label %.preheader449.15

.preheader449.15:                                 ; preds = %.preheader449.14
  %339 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 360), align 8, !tbaa !36
  %340 = icmp eq i32 %176, %339
  br i1 %340, label %293, label %.preheader449.16

.preheader449.16:                                 ; preds = %.preheader449.15
  %341 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 384), align 16, !tbaa !36
  %342 = icmp eq i32 %176, %341
  br i1 %342, label %293, label %.preheader449.17

.preheader449.17:                                 ; preds = %.preheader449.16
  %343 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 408), align 8, !tbaa !36
  %344 = icmp eq i32 %176, %343
  br i1 %344, label %293, label %.preheader449.18

.preheader449.18:                                 ; preds = %.preheader449.17
  %345 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 432), align 16, !tbaa !36
  %346 = icmp eq i32 %176, %345
  br i1 %346, label %293, label %.preheader449.19

.preheader449.19:                                 ; preds = %.preheader449.18
  %347 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 456), align 8, !tbaa !36
  %348 = icmp eq i32 %176, %347
  br i1 %348, label %293, label %.preheader449.20

.preheader449.20:                                 ; preds = %.preheader449.19
  %349 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 480), align 16, !tbaa !36
  %350 = icmp eq i32 %176, %349
  br i1 %350, label %293, label %.preheader449.21

.preheader449.21:                                 ; preds = %.preheader449.20
  %351 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 504), align 8, !tbaa !36
  %352 = icmp eq i32 %176, %351
  br i1 %352, label %293, label %.preheader449.22

.preheader449.22:                                 ; preds = %.preheader449.21
  %353 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 528), align 16, !tbaa !36
  %354 = icmp eq i32 %176, %353
  br i1 %354, label %293, label %.preheader449.23

.preheader449.23:                                 ; preds = %.preheader449.22
  %355 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 552), align 8, !tbaa !36
  %356 = icmp eq i32 %176, %355
  br i1 %356, label %293, label %.preheader449.24

.preheader449.24:                                 ; preds = %.preheader449.23
  %357 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 576), align 16, !tbaa !36
  %358 = icmp eq i32 %176, %357
  br i1 %358, label %293, label %.preheader449.25

.preheader449.25:                                 ; preds = %.preheader449.24
  %359 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 600), align 8, !tbaa !36
  %360 = icmp eq i32 %176, %359
  br i1 %360, label %293, label %.preheader449.26

.preheader449.26:                                 ; preds = %.preheader449.25
  %361 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 624), align 16, !tbaa !36
  %362 = icmp eq i32 %176, %361
  br i1 %362, label %293, label %.preheader449.27

.preheader449.27:                                 ; preds = %.preheader449.26
  %363 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 648), align 8, !tbaa !36
  %364 = icmp eq i32 %176, %363
  br i1 %364, label %293, label %.preheader449.28

.preheader449.28:                                 ; preds = %.preheader449.27
  %365 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 672), align 16, !tbaa !36
  %366 = icmp eq i32 %176, %365
  br i1 %366, label %293, label %.preheader449.29

.preheader449.29:                                 ; preds = %.preheader449.28
  %367 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 696), align 8, !tbaa !36
  %368 = icmp eq i32 %176, %367
  br i1 %368, label %293, label %.preheader449.30

.preheader449.30:                                 ; preds = %.preheader449.29
  %369 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 720), align 16, !tbaa !36
  %370 = icmp eq i32 %176, %369
  br i1 %370, label %293, label %.preheader449.31

.preheader449.31:                                 ; preds = %.preheader449.30
  %371 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 744), align 8, !tbaa !36
  %372 = icmp eq i32 %176, %371
  br i1 %372, label %293, label %.preheader449.32

.preheader449.32:                                 ; preds = %.preheader449.31
  %373 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 768), align 16, !tbaa !36
  %374 = icmp eq i32 %176, %373
  br i1 %374, label %293, label %.preheader449.33

.preheader449.33:                                 ; preds = %.preheader449.32
  %375 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 792), align 8, !tbaa !36
  %376 = icmp eq i32 %176, %375
  br i1 %376, label %293, label %.preheader449.34

.preheader449.34:                                 ; preds = %.preheader449.33
  %377 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 816), align 16, !tbaa !36
  %378 = icmp eq i32 %176, %377
  br i1 %378, label %293, label %.preheader449.35

.preheader449.35:                                 ; preds = %.preheader449.34
  %379 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 840), align 8, !tbaa !36
  %380 = icmp eq i32 %176, %379
  br i1 %380, label %293, label %.preheader449.36

.preheader449.36:                                 ; preds = %.preheader449.35
  %381 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 864), align 16, !tbaa !36
  %382 = icmp eq i32 %176, %381
  br i1 %382, label %293, label %.preheader449.37

.preheader449.37:                                 ; preds = %.preheader449.36
  %383 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 888), align 8, !tbaa !36
  %384 = icmp eq i32 %176, %383
  br i1 %384, label %293, label %.preheader449.38

.preheader449.38:                                 ; preds = %.preheader449.37
  %385 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 912), align 16, !tbaa !36
  %386 = icmp eq i32 %176, %385
  br i1 %386, label %293, label %.preheader449.39

.preheader449.39:                                 ; preds = %.preheader449.38
  %387 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 936), align 8, !tbaa !36
  %388 = icmp eq i32 %176, %387
  br i1 %388, label %293, label %.preheader449.40

.preheader449.40:                                 ; preds = %.preheader449.39
  %389 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 960), align 16, !tbaa !36
  %390 = icmp eq i32 %176, %389
  br i1 %390, label %293, label %.preheader449.41

.preheader449.41:                                 ; preds = %.preheader449.40
  %391 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 984), align 8, !tbaa !36
  %392 = icmp eq i32 %176, %391
  br i1 %392, label %293, label %.preheader449.42

.preheader449.42:                                 ; preds = %.preheader449.41
  %393 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 1008), align 16, !tbaa !36
  %394 = icmp eq i32 %176, %393
  br i1 %394, label %293, label %.preheader449.43

.preheader449.43:                                 ; preds = %.preheader449.42
  %395 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 1032), align 8, !tbaa !36
  %396 = icmp eq i32 %176, %395
  br i1 %396, label %293, label %.preheader449.44

.preheader449.44:                                 ; preds = %.preheader449.43
  %397 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 1056), align 16, !tbaa !36
  %398 = icmp eq i32 %176, %397
  br i1 %398, label %293, label %.preheader449.45

.preheader449.45:                                 ; preds = %.preheader449.44
  %399 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 1080), align 8, !tbaa !36
  %400 = icmp eq i32 %176, %399
  br i1 %400, label %293, label %.preheader449.46

.preheader449.46:                                 ; preds = %.preheader449.45
  %401 = load i32, ptr getelementptr inbounds (i8, ptr @layouts, i64 1104), align 16, !tbaa !36
  %402 = icmp eq i32 %176, %401
  br i1 %402, label %293, label %403

403:                                              ; preds = %.preheader449.46
  %404 = load i32, ptr @debug_logging_mode, align 4
  %.not653 = icmp eq i32 %404, 0
  br i1 %.not653, label %.thread423, label %405

405:                                              ; preds = %403
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.32, i32 noundef %176) #10
  br label %.thread423

.thread423:                                       ; preds = %308, %306, %253, %._crit_edge540, %255, %191, %292, %288, %405, %403
  %.5306 = phi ptr [ %.0301544, %405 ], [ %.0301544, %403 ], [ %.0301544, %292 ], [ %.0301544, %288 ], [ %.1302, %253 ], [ %.1302, %._crit_edge540 ], [ %.1302, %255 ], [ %.0301544, %191 ], [ %.3304, %306 ], [ %.3304, %308 ]
  %.5298 = phi ptr [ %.0293545, %405 ], [ %.0293545, %403 ], [ %.0293545, %292 ], [ %.0293545, %288 ], [ %.1294, %253 ], [ %.1294, %._crit_edge540 ], [ %.1294, %255 ], [ %.0293545, %191 ], [ %.3296, %306 ], [ %.3296, %308 ]
  %.4290 = phi i32 [ %.0286546, %405 ], [ %.0286546, %403 ], [ %.0286546, %292 ], [ %.0286546, %288 ], [ %.1287, %253 ], [ %.1287, %._crit_edge540 ], [ %.1287, %255 ], [ %.0286546, %191 ], [ %176, %306 ], [ %176, %308 ]
  call void @free(ptr noundef %154) #10
  br label %.thread419

406:                                              ; preds = %142
  %407 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %8, ptr noundef nonnull dereferenceable(1) @.str.33, i64 noundef 4) #11
  %.not385 = icmp eq i32 %407, 0
  br i1 %.not385, label %408, label %466

408:                                              ; preds = %406
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #10
  %.not386 = icmp eq i32 %.0275547, 0
  br i1 %.not386, label %414, label %409

409:                                              ; preds = %408
  %410 = call i32 @DoReadFile(ptr noundef %0, ptr noundef nonnull %12, i32 noundef 4, ptr noundef nonnull %6) #10
  %411 = icmp eq i32 %410, 0
  %412 = load i32, ptr %6, align 4
  %413 = icmp ne i32 %412, 4
  %or.cond43 = select i1 %411, i1 true, i1 %413
  br i1 %or.cond43, label %414, label %415

414:                                              ; preds = %409, %408
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str, ptr noundef %1) #10
  br label %.thread443

415:                                              ; preds = %409
  %416 = load i32, ptr %22, align 8, !tbaa !5
  %417 = and i32 %416, 512
  %.not387 = icmp eq i32 %417, 0
  br i1 %.not387, label %418, label %422

418:                                              ; preds = %415
  %419 = call i32 @WavpackStreamAddWrapper(ptr noundef %3, ptr noundef nonnull %12, i32 noundef 4) #10
  %.not388 = icmp eq i32 %419, 0
  br i1 %.not388, label %420, label %._crit_edge650

._crit_edge650:                                   ; preds = %418
  %.pre = load i32, ptr %22, align 8, !tbaa !5
  br label %422

420:                                              ; preds = %418
  %421 = call ptr @WavpackStreamGetErrorMessage(ptr noundef %3) #10
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.1, ptr noundef %421) #10
  br label %.thread443

422:                                              ; preds = %._crit_edge650, %415
  %423 = phi i32 [ %.pre, %._crit_edge650 ], [ %416, %415 ]
  %424 = and i32 %423, 2048
  %425 = icmp ne i32 %424, 0
  %426 = load i64, ptr %35, align 4
  %427 = icmp eq i64 %426, -1
  %or.cond46 = select i1 %425, i1 true, i1 %427
  br i1 %or.cond46, label %428, label %450

428:                                              ; preds = %422
  %429 = or i32 %423, 2048
  store i32 %429, ptr %22, align 8, !tbaa !5
  %.not392 = icmp eq i64 %13, 0
  br i1 %.not392, label %497, label %430

430:                                              ; preds = %428
  %431 = call i64 @DoGetFilePosition(ptr noundef %0) #10
  %.not393 = icmp eq i64 %431, -1
  br i1 %.not393, label %497, label %432

432:                                              ; preds = %430
  %433 = call i64 @DoGetFilePosition(ptr noundef %0) #10
  %434 = sub nsw i64 %13, %433
  %435 = load i32, ptr %44, align 8, !tbaa !24
  %436 = zext i32 %435 to i64
  %437 = sdiv i64 %434, %436
  %438 = call i64 @DoGetFilePosition(ptr noundef %0) #10
  %439 = sub nsw i64 %13, %438
  %440 = load i32, ptr %44, align 8, !tbaa !24
  %441 = zext i32 %440 to i64
  %442 = srem i64 %439, %441
  %.not394 = icmp eq i64 %442, 0
  br i1 %.not394, label %497, label %443

443:                                              ; preds = %432
  %444 = call i64 @DoGetFilePosition(ptr noundef %0) #10
  %445 = sub nsw i64 %13, %444
  %446 = load i32, ptr %44, align 8, !tbaa !24
  %447 = zext i32 %446 to i64
  %448 = srem i64 %445, %447
  %449 = trunc i64 %448 to i32
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.34, i32 noundef %449) #10
  br label %497

450:                                              ; preds = %422
  %.not389 = icmp ne i64 %13, 0
  %451 = sub nsw i64 %13, %426
  %452 = icmp sgt i64 %451, 16777216
  %or.cond412 = select i1 %.not389, i1 %452, i1 false
  br i1 %or.cond412, label %453, label %454

453:                                              ; preds = %450
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.35, ptr noundef %1) #10
  br label %.thread443

454:                                              ; preds = %450
  %455 = add nsw i64 %426, -4
  %456 = load i32, ptr %44, align 8, !tbaa !24
  %457 = zext i32 %456 to i64
  %458 = srem i64 %455, %457
  %459 = sdiv i64 %455, %457
  %.not390 = icmp eq i64 %458, 0
  br i1 %.not390, label %461, label %460

460:                                              ; preds = %454
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.36, ptr noundef %1) #10
  br label %.thread443

461:                                              ; preds = %454
  %.not391 = icmp eq i64 %459, 0
  br i1 %.not391, label %462, label %463

462:                                              ; preds = %461
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.37) #10
  br label %.thread443

463:                                              ; preds = %461
  %464 = icmp sgt i64 %459, 1099511627519
  br i1 %464, label %465, label %497

465:                                              ; preds = %463
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.38, ptr noundef %1) #10
  br label %.thread443

.thread443:                                       ; preds = %414, %453, %460, %465, %462, %420
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #10
  br label %.critedge415

466:                                              ; preds = %406
  %467 = load i64, ptr %35, align 4
  %468 = trunc i64 %467 to i32
  %or.cond49 = icmp ugt i64 %467, 1048576
  br i1 %or.cond49, label %469, label %470

469:                                              ; preds = %466
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str, ptr noundef %1) #10
  br label %.critedge415

470:                                              ; preds = %466
  %471 = call noalias ptr @malloc(i64 noundef %467) #12
  %472 = load i32, ptr @debug_logging_mode, align 4, !tbaa !18
  %.not401 = icmp eq i32 %472, 0
  br i1 %.not401, label %482, label %473

473:                                              ; preds = %470
  %474 = load i8, ptr %8, align 4, !tbaa !19
  %475 = sext i8 %474 to i32
  %476 = load i8, ptr %36, align 1, !tbaa !19
  %477 = sext i8 %476 to i32
  %478 = load i8, ptr %37, align 2, !tbaa !19
  %479 = sext i8 %478 to i32
  %480 = load i8, ptr %38, align 1, !tbaa !19
  %481 = sext i8 %480 to i32
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.39, i32 noundef %475, i32 noundef %477, i32 noundef %479, i32 noundef %481, i64 noundef %467) #10
  br label %482

482:                                              ; preds = %473, %470
  %483 = call i32 @DoReadFile(ptr noundef %0, ptr noundef %471, i32 noundef %468, ptr noundef nonnull %6) #10
  %.not402 = icmp ne i32 %483, 0
  %484 = load i32, ptr %6, align 4
  %.not403 = icmp eq i32 %484, %468
  %or.cond413 = select i1 %.not402, i1 %.not403, i1 false
  br i1 %or.cond413, label %485, label %490

485:                                              ; preds = %482
  %486 = load i32, ptr %22, align 8, !tbaa !5
  %487 = and i32 %486, 512
  %.not404 = icmp eq i32 %487, 0
  br i1 %.not404, label %488, label %492

488:                                              ; preds = %485
  %489 = call i32 @WavpackStreamAddWrapper(ptr noundef %3, ptr noundef %471, i32 noundef %468) #10
  %.not405 = icmp eq i32 %489, 0
  br i1 %.not405, label %490, label %492

490:                                              ; preds = %488, %482
  %491 = call ptr @WavpackStreamGetErrorMessage(ptr noundef %3) #10
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.1, ptr noundef %491) #10
  call void @free(ptr noundef %471) #10
  br label %.critedge415

492:                                              ; preds = %488, %485
  call void @free(ptr noundef %471) #10
  br label %.thread419

.thread419:                                       ; preds = %134, %141, %140, %.thread423, %492
  %.7308 = phi ptr [ %.0301544, %492 ], [ %.5306, %.thread423 ], [ %.0301544, %140 ], [ %.0301544, %141 ], [ %.0301544, %134 ]
  %.7300 = phi ptr [ %.0293545, %492 ], [ %.5298, %.thread423 ], [ %.0293545, %140 ], [ %.0293545, %141 ], [ %.0293545, %134 ]
  %.6292 = phi i32 [ %.0286546, %492 ], [ %.4290, %.thread423 ], [ %.0286546, %140 ], [ %.0286546, %141 ], [ %.0286546, %134 ]
  %.2277 = phi i32 [ %.0275547, %492 ], [ %.0275547, %.thread423 ], [ 1, %140 ], [ 1, %141 ], [ 1, %134 ]
  %.2274 = phi i32 [ %.0272548, %492 ], [ 1, %.thread423 ], [ %.0272548, %140 ], [ %.0272548, %141 ], [ %.0272548, %134 ]
  %493 = call i32 @DoReadFile(ptr noundef %0, ptr noundef nonnull %8, i32 noundef 12, ptr noundef nonnull %6) #10
  %494 = icmp eq i32 %493, 0
  %495 = load i32, ptr %6, align 4
  %496 = icmp ne i32 %495, 12
  %or.cond8 = select i1 %494, i1 true, i1 %496
  br i1 %or.cond8, label %._crit_edge550, label %61

497:                                              ; preds = %428, %430, %463, %443, %432
  %.1322 = phi i64 [ %437, %443 ], [ %437, %432 ], [ %459, %463 ], [ -1, %430 ], [ -1, %428 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #10
  %.not395 = icmp eq i32 %.0272548, 0
  br i1 %.not395, label %498, label %508

498:                                              ; preds = %497
  %499 = load i32, ptr %39, align 4, !tbaa !33
  %.not396 = icmp eq i32 %499, 0
  br i1 %.not396, label %500, label %508

500:                                              ; preds = %498
  %501 = load i32, ptr %40, align 4, !tbaa !31
  %502 = icmp slt i32 %501, 3
  br i1 %502, label %503, label %508

503:                                              ; preds = %500
  %504 = load i32, ptr %22, align 8, !tbaa !5
  %505 = and i32 %504, 1024
  %.not397 = icmp eq i32 %505, 0
  br i1 %.not397, label %506, label %508

506:                                              ; preds = %503
  %507 = sub nsw i32 5, %501
  store i32 %507, ptr %39, align 4, !tbaa !33
  br label %508

508:                                              ; preds = %506, %503, %500, %498, %497
  %509 = call i32 @WavpackStreamSetConfiguration64(ptr noundef %3, ptr noundef nonnull %4, i64 noundef %.1322, ptr noundef %.0293545) #10
  %.not398 = icmp eq i32 %509, 0
  br i1 %.not398, label %510, label %512

510:                                              ; preds = %508
  %511 = call ptr @WavpackStreamGetErrorMessage(ptr noundef %3) #10
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.1, ptr noundef %511) #10
  br label %.critedge415

512:                                              ; preds = %508
  %.not399 = icmp eq ptr %.0293545, null
  br i1 %.not399, label %514, label %513

513:                                              ; preds = %512
  call void @free(ptr noundef nonnull %.0293545) #10
  br label %514

514:                                              ; preds = %513, %512
  %515 = icmp ne i32 %.0286546, 0
  %516 = icmp ne ptr %.0301544, null
  %or.cond51 = select i1 %515, i1 true, i1 %516
  br i1 %or.cond51, label %517, label %.critedge415

517:                                              ; preds = %514
  %518 = call i32 @WavpackStreamSetChannelLayout(ptr noundef %3, i32 noundef %.0286546, ptr noundef %.0301544) #10
  %.not400 = icmp eq i32 %518, 0
  br i1 %.not400, label %519, label %520

519:                                              ; preds = %517
  call void (ptr, ...) @error_line(ptr noundef nonnull @.str.40) #10
  br label %.critedge415

520:                                              ; preds = %517
  br i1 %516, label %521, label %.critedge415

521:                                              ; preds = %520
  call void @free(ptr noundef nonnull %.0301544) #10
  br label %.critedge415

.critedge415:                                     ; preds = %167, %287, %174, %161, %147, %.thread443, %78, %84, %.critedge, %469, %490, %514, %521, %520, %519, %510, %66, %._crit_edge550, %59, %27, %20
  %.8 = phi i32 [ 1, %20 ], [ 1, %59 ], [ 1, %._crit_edge550 ], [ 1, %519 ], [ 1, %510 ], [ 1, %66 ], [ 1, %27 ], [ 0, %520 ], [ 0, %521 ], [ 0, %514 ], [ 1, %490 ], [ 1, %469 ], [ 1, %.critedge ], [ 1, %84 ], [ 1, %78 ], [ 1, %.thread443 ], [ 1, %147 ], [ 1, %161 ], [ 1, %174 ], [ 1, %287 ], [ 1, %167 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #10
  ret i32 %.8
}

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

declare i64 @DoGetFileSize(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress 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) #3

declare i32 @DoReadFile(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

declare void @error_line(ptr noundef, ...) local_unnamed_addr #2

declare i32 @WavpackStreamAddWrapper(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

declare ptr @WavpackStreamGetErrorMessage(ptr noundef) local_unnamed_addr #2

declare void @WavpackStreamBigEndianToNative(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #6

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

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

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

declare i64 @DoGetFilePosition(ptr noundef) local_unnamed_addr #2

declare i32 @WavpackStreamSetConfiguration64(ptr noundef, ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

declare i32 @WavpackStreamSetChannelLayout(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

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

!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 16}
!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 = !{!13, !14, i64 4}
!13 = !{!"", !8, i64 0, !14, i64 4, !14, i64 6}
!14 = !{!"short", !8, i64 0}
!15 = !{!16, !17, i64 4}
!16 = !{!"", !8, i64 0, !17, i64 4}
!17 = !{!"long", !8, i64 0}
!18 = !{!10, !10, i64 0}
!19 = !{!8, !8, i64 0}
!20 = !{!21, !10, i64 12}
!21 = !{!"", !22, i64 0, !8, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!22 = !{!"double", !8, i64 0}
!23 = !{!21, !22, i64 0}
!24 = !{!21, !10, i64 16}
!25 = !{!21, !10, i64 20}
!26 = !{!21, !10, i64 24}
!27 = !{!21, !10, i64 28}
!28 = !{!6, !10, i64 12}
!29 = !{!6, !10, i64 32}
!30 = !{!6, !10, i64 8}
!31 = !{!6, !10, i64 28}
!32 = !{!6, !10, i64 48}
!33 = !{!6, !10, i64 52}
!34 = !{!35, !10, i64 0}
!35 = !{!"", !10, i64 0, !10, i64 4, !10, i64 8}
!36 = !{!37, !10, i64 0}
!37 = !{!"", !10, i64 0, !10, i64 4, !11, i64 8, !11, i64 16}
!38 = !{!35, !10, i64 8}
!39 = distinct !{!39, !40}
!40 = !{!"llvm.loop.mustprogress"}
!41 = !{!42, !10, i64 0}
!42 = !{!"", !10, i64 0, !10, i64 4, !8, i64 8}
!43 = distinct !{!43, !40}
!44 = distinct !{!44, !40}
!45 = distinct !{!45, !40}
!46 = distinct !{!46, !40}
!47 = distinct !{!47, !40}
!48 = !{!35, !10, i64 4}
!49 = !{!37, !10, i64 4}
!50 = !{!37, !11, i64 8}
!51 = !{!37, !11, i64 16}


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