; LLVM IR from reworks-org/galaxy :: deps/sfml_deps/flac-src/oss-fuzz (encoder_v2)

; 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.FLAC__StreamMetadata_VorbisComment_Entry = type { i32, ptr }
%struct.FLAC__StreamMetadata = type { i32, i32, i32, %union.anon }
%union.anon = type { %struct.FLAC__StreamMetadata_CueSheet }
%struct.FLAC__StreamMetadata_CueSheet = type { [129 x i8], i64, i32, i32, ptr }
%struct.FLAC__StreamMetadata_CueSheet_Track = type { i64, i8, [13 x i8], i8, i8, ptr }
%struct.FLAC__StreamMetadata_Unknown = type { ptr }

@alloc_check_threshold = external dso_local global i32, align 4
@alloc_check_counter = external dso_local global i32, align 4
@stderr = external global ptr, align 8
@.str = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [71 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local i32 @LLVMFuzzerTestOneInput(ptr noundef %0, i64 noundef %1) #0 {
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca i64, align 8
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca [16 x ptr], align 16
  %10 = alloca i32, align 4
  %11 = alloca %struct.FLAC__StreamMetadata_VorbisComment_Entry, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca [24 x i32], align 16
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca ptr, align 8
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i8, align 1
  %36 = alloca %struct.FLAC__StreamMetadata_VorbisComment_Entry, align 8
  %37 = alloca %struct.FLAC__StreamMetadata_VorbisComment_Entry, align 8
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca i32, align 4
  %43 = alloca [8 x ptr], align 8
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store i64 %1, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #10
  store i32 1, ptr %6, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #10
  store ptr null, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #10
  call void @llvm.lifetime.start.p0(i64 128, ptr %9) #10
  call void @llvm.memset.p0.i64(ptr align 16 %9, i8 0, i64 128, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #10
  store i32 0, ptr %10, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %11) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #10
  call void @llvm.lifetime.start.p0(i64 96, ptr %29) #10
  %50 = load i64, ptr %5, align 8, !tbaa !9
  %51 = icmp ult i64 %50, 3
  br i1 %51, label %52, label %53

52:                                               ; preds = %2
  store i32 0, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %1060

53:                                               ; preds = %2
  %54 = load ptr, ptr %4, align 8, !tbaa !5
  %55 = getelementptr inbounds i8, ptr %54, i64 2
  %56 = load i8, ptr %55, align 1, !tbaa !13
  %57 = zext i8 %56 to i32
  store i32 %57, ptr @alloc_check_threshold, align 4, !tbaa !11
  store i32 0, ptr @alloc_check_counter, align 4, !tbaa !11
  %58 = call ptr @FLAC__stream_encoder_new()
  store ptr %58, ptr %7, align 8, !tbaa !5
  %59 = icmp eq ptr %58, null
  br i1 %59, label %60, label %63

60:                                               ; preds = %53
  %61 = load ptr, ptr @stderr, align 8, !tbaa !5
  %62 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %61, ptr noundef @.str) #10
  store i32 1, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %1060

63:                                               ; preds = %53
  %64 = load i64, ptr %5, align 8, !tbaa !9
  %65 = icmp ult i64 %64, 20
  br i1 %65, label %66, label %68

66:                                               ; preds = %63
  %67 = load ptr, ptr %7, align 8, !tbaa !5
  call void @FLAC__stream_encoder_delete(ptr noundef %67)
  store i32 0, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %1060

68:                                               ; preds = %63
  %69 = load ptr, ptr %4, align 8, !tbaa !5
  %70 = getelementptr inbounds i8, ptr %69, i64 0
  %71 = load i8, ptr %70, align 1, !tbaa !13
  %72 = zext i8 %71 to i32
  %73 = shl i32 %72, 16
  %74 = load ptr, ptr %4, align 8, !tbaa !5
  %75 = getelementptr inbounds i8, ptr %74, i64 1
  %76 = load i8, ptr %75, align 1, !tbaa !13
  %77 = zext i8 %76 to i32
  %78 = shl i32 %77, 8
  %79 = add i32 %73, %78
  %80 = load ptr, ptr %4, align 8, !tbaa !5
  %81 = getelementptr inbounds i8, ptr %80, i64 2
  %82 = load i8, ptr %81, align 1, !tbaa !13
  %83 = zext i8 %82 to i32
  %84 = add i32 %79, %83
  store i32 %84, ptr %12, align 4, !tbaa !11
  %85 = load ptr, ptr %4, align 8, !tbaa !5
  %86 = getelementptr inbounds i8, ptr %85, i64 3
  %87 = load i8, ptr %86, align 1, !tbaa !13
  %88 = zext i8 %87 to i32
  store i32 %88, ptr %13, align 4, !tbaa !11
  %89 = load ptr, ptr %4, align 8, !tbaa !5
  %90 = getelementptr inbounds i8, ptr %89, i64 4
  %91 = load i8, ptr %90, align 1, !tbaa !13
  %92 = zext i8 %91 to i32
  store i32 %92, ptr %14, align 4, !tbaa !11
  %93 = load ptr, ptr %4, align 8, !tbaa !5
  %94 = getelementptr inbounds i8, ptr %93, i64 5
  %95 = load i8, ptr %94, align 1, !tbaa !13
  %96 = zext i8 %95 to i64
  %97 = shl i64 %96, 32
  %98 = load ptr, ptr %4, align 8, !tbaa !5
  %99 = getelementptr inbounds i8, ptr %98, i64 6
  %100 = load i8, ptr %99, align 1, !tbaa !13
  %101 = zext i8 %100 to i32
  %102 = shl i32 %101, 24
  %103 = zext i32 %102 to i64
  %104 = add i64 %97, %103
  %105 = load ptr, ptr %4, align 8, !tbaa !5
  %106 = getelementptr inbounds i8, ptr %105, i64 7
  %107 = load i8, ptr %106, align 1, !tbaa !13
  %108 = zext i8 %107 to i32
  %109 = shl i32 %108, 16
  %110 = zext i32 %109 to i64
  %111 = add i64 %104, %110
  %112 = load ptr, ptr %4, align 8, !tbaa !5
  %113 = getelementptr inbounds i8, ptr %112, i64 8
  %114 = load i8, ptr %113, align 1, !tbaa !13
  %115 = zext i8 %114 to i32
  %116 = shl i32 %115, 8
  %117 = zext i32 %116 to i64
  %118 = add i64 %111, %117
  %119 = load ptr, ptr %4, align 8, !tbaa !5
  %120 = getelementptr inbounds i8, ptr %119, i64 9
  %121 = load i8, ptr %120, align 1, !tbaa !13
  %122 = zext i8 %121 to i64
  %123 = add i64 %118, %122
  store i64 %123, ptr %15, align 8, !tbaa !9
  %124 = load ptr, ptr %4, align 8, !tbaa !5
  %125 = getelementptr inbounds i8, ptr %124, i64 10
  %126 = load i8, ptr %125, align 1, !tbaa !13
  %127 = zext i8 %126 to i32
  %128 = and i32 %127, 15
  store i32 %128, ptr %17, align 4, !tbaa !11
  %129 = load ptr, ptr %4, align 8, !tbaa !5
  %130 = getelementptr inbounds i8, ptr %129, i64 10
  %131 = load i8, ptr %130, align 1, !tbaa !13
  %132 = zext i8 %131 to i32
  %133 = ashr i32 %132, 4
  %134 = srem i32 %133, 4
  %135 = add nsw i32 1, %134
  store i32 %135, ptr %18, align 4, !tbaa !11
  %136 = load i64, ptr %5, align 8, !tbaa !9
  %137 = sub i64 %136, 20
  %138 = load i32, ptr %18, align 4, !tbaa !11
  %139 = zext i32 %138 to i64
  %140 = udiv i64 %137, %139
  store i64 %140, ptr %16, align 8, !tbaa !9
  %141 = load ptr, ptr %4, align 8, !tbaa !5
  %142 = getelementptr inbounds i8, ptr %141, i64 11
  %143 = load i8, ptr %142, align 1, !tbaa !13
  %144 = zext i8 %143 to i32
  %145 = shl i32 %144, 8
  %146 = load ptr, ptr %4, align 8, !tbaa !5
  %147 = getelementptr inbounds i8, ptr %146, i64 12
  %148 = load i8, ptr %147, align 1, !tbaa !13
  %149 = zext i8 %148 to i32
  %150 = add i32 %145, %149
  store i32 %150, ptr %19, align 4, !tbaa !11
  %151 = load ptr, ptr %4, align 8, !tbaa !5
  %152 = getelementptr inbounds i8, ptr %151, i64 13
  %153 = load i8, ptr %152, align 1, !tbaa !13
  %154 = zext i8 %153 to i32
  store i32 %154, ptr %20, align 4, !tbaa !11
  %155 = load ptr, ptr %4, align 8, !tbaa !5
  %156 = getelementptr inbounds i8, ptr %155, i64 14
  %157 = load i8, ptr %156, align 1, !tbaa !13
  %158 = zext i8 %157 to i32
  store i32 %158, ptr %21, align 4, !tbaa !11
  %159 = load ptr, ptr %4, align 8, !tbaa !5
  %160 = getelementptr inbounds i8, ptr %159, i64 15
  %161 = load i8, ptr %160, align 1, !tbaa !13
  %162 = zext i8 %161 to i32
  %163 = and i32 %162, 15
  store i32 %163, ptr %22, align 4, !tbaa !11
  %164 = load ptr, ptr %4, align 8, !tbaa !5
  %165 = getelementptr inbounds i8, ptr %164, i64 15
  %166 = load i8, ptr %165, align 1, !tbaa !13
  %167 = zext i8 %166 to i32
  %168 = and i32 %167, 240
  store i32 %168, ptr %23, align 4, !tbaa !11
  %169 = load ptr, ptr %4, align 8, !tbaa !5
  %170 = getelementptr inbounds i8, ptr %169, i64 16
  %171 = load i8, ptr %170, align 1, !tbaa !13
  %172 = zext i8 %171 to i32
  store i32 %172, ptr %24, align 4, !tbaa !11
  %173 = load ptr, ptr %4, align 8, !tbaa !5
  %174 = getelementptr inbounds i8, ptr %173, i64 17
  %175 = load i8, ptr %174, align 1, !tbaa !13
  %176 = zext i8 %175 to i32
  store i32 %176, ptr %25, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #10
  store i32 0, ptr %31, align 4, !tbaa !11
  br label %177

177:                                              ; preds = %197, %68
  %178 = load i32, ptr %31, align 4, !tbaa !11
  %179 = icmp slt i32 %178, 16
  br i1 %179, label %181, label %180

180:                                              ; preds = %177
  store i32 2, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #10
  br label %200

181:                                              ; preds = %177
  %182 = load ptr, ptr %4, align 8, !tbaa !5
  %183 = load i32, ptr %31, align 4, !tbaa !11
  %184 = sdiv i32 %183, 8
  %185 = add nsw i32 18, %184
  %186 = sext i32 %185 to i64
  %187 = getelementptr inbounds i8, ptr %182, i64 %186
  %188 = load i8, ptr %187, align 1, !tbaa !13
  %189 = zext i8 %188 to i32
  %190 = load i32, ptr %31, align 4, !tbaa !11
  %191 = srem i32 %190, 8
  %192 = shl i32 1, %191
  %193 = and i32 %189, %192
  %194 = load i32, ptr %31, align 4, !tbaa !11
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds [24 x i32], ptr %29, i64 0, i64 %195
  store i32 %193, ptr %196, align 4, !tbaa !11
  br label %197

197:                                              ; preds = %181
  %198 = load i32, ptr %31, align 4, !tbaa !11
  %199 = add nsw i32 %198, 1
  store i32 %199, ptr %31, align 4, !tbaa !11
  br label %177, !llvm.loop !14

200:                                              ; preds = %180
  %201 = getelementptr inbounds [24 x i32], ptr %29, i64 0, i64 0
  %202 = load i32, ptr %201, align 16, !tbaa !11
  store i32 %202, ptr %26, align 4, !tbaa !11
  %203 = getelementptr inbounds [24 x i32], ptr %29, i64 0, i64 1
  %204 = load i32, ptr %203, align 4, !tbaa !11
  store i32 %204, ptr %28, align 4, !tbaa !11
  %205 = getelementptr inbounds [24 x i32], ptr %29, i64 0, i64 13
  %206 = load i32, ptr %205, align 4, !tbaa !11
  store i32 %206, ptr %27, align 4, !tbaa !11
  %207 = load ptr, ptr %7, align 8, !tbaa !5
  %208 = getelementptr inbounds [24 x i32], ptr %29, i64 0, i64 2
  %209 = load i32, ptr %208, align 8, !tbaa !11
  %210 = call i32 @FLAC__stream_encoder_set_verify(ptr noundef %207, i32 noundef %209)
  %211 = load i32, ptr %6, align 4, !tbaa !11
  %212 = and i32 %211, %210
  store i32 %212, ptr %6, align 4, !tbaa !11
  %213 = load ptr, ptr %7, align 8, !tbaa !5
  %214 = load i32, ptr %13, align 4, !tbaa !11
  %215 = call i32 @FLAC__stream_encoder_set_channels(ptr noundef %213, i32 noundef %214)
  %216 = load i32, ptr %6, align 4, !tbaa !11
  %217 = and i32 %216, %215
  store i32 %217, ptr %6, align 4, !tbaa !11
  %218 = load ptr, ptr %7, align 8, !tbaa !5
  %219 = load i32, ptr %14, align 4, !tbaa !11
  %220 = call i32 @FLAC__stream_encoder_set_bits_per_sample(ptr noundef %218, i32 noundef %219)
  %221 = load i32, ptr %6, align 4, !tbaa !11
  %222 = and i32 %221, %220
  store i32 %222, ptr %6, align 4, !tbaa !11
  %223 = load ptr, ptr %7, align 8, !tbaa !5
  %224 = load i32, ptr %12, align 4, !tbaa !11
  %225 = call i32 @FLAC__stream_encoder_set_sample_rate(ptr noundef %223, i32 noundef %224)
  %226 = load i32, ptr %6, align 4, !tbaa !11
  %227 = and i32 %226, %225
  store i32 %227, ptr %6, align 4, !tbaa !11
  %228 = load ptr, ptr %7, align 8, !tbaa !5
  %229 = load i64, ptr %15, align 8, !tbaa !9
  %230 = call i32 @FLAC__stream_encoder_set_total_samples_estimate(ptr noundef %228, i64 noundef %229)
  %231 = load i32, ptr %6, align 4, !tbaa !11
  %232 = and i32 %231, %230
  store i32 %232, ptr %6, align 4, !tbaa !11
  %233 = load ptr, ptr %7, align 8, !tbaa !5
  %234 = load i32, ptr %25, align 4, !tbaa !11
  %235 = call i32 @FLAC__stream_encoder_disable_instruction_set(ptr noundef %233, i32 noundef %234)
  %236 = load i32, ptr %6, align 4, !tbaa !11
  %237 = and i32 %236, %235
  store i32 %237, ptr %6, align 4, !tbaa !11
  %238 = load ptr, ptr %7, align 8, !tbaa !5
  %239 = getelementptr inbounds [24 x i32], ptr %29, i64 0, i64 15
  %240 = load i32, ptr %239, align 4, !tbaa !11
  %241 = call i32 @FLAC__stream_encoder_set_limit_min_bitrate(ptr noundef %238, i32 noundef %240)
  %242 = load i32, ptr %6, align 4, !tbaa !11
  %243 = and i32 %242, %241
  store i32 %243, ptr %6, align 4, !tbaa !11
  %244 = load ptr, ptr %7, align 8, !tbaa !5
  %245 = load i32, ptr %17, align 4, !tbaa !11
  %246 = call i32 @FLAC__stream_encoder_set_compression_level(ptr noundef %244, i32 noundef %245)
  %247 = load i32, ptr %6, align 4, !tbaa !11
  %248 = and i32 %247, %246
  store i32 %248, ptr %6, align 4, !tbaa !11
  %249 = getelementptr inbounds [24 x i32], ptr %29, i64 0, i64 3
  %250 = load i32, ptr %249, align 4, !tbaa !11
  %251 = icmp ne i32 %250, 0
  br i1 %251, label %252, label %398

252:                                              ; preds = %200
  %253 = load ptr, ptr %7, align 8, !tbaa !5
  %254 = load i32, ptr %19, align 4, !tbaa !11
  %255 = call i32 @FLAC__stream_encoder_set_blocksize(ptr noundef %253, i32 noundef %254)
  %256 = load i32, ptr %6, align 4, !tbaa !11
  %257 = and i32 %256, %255
  store i32 %257, ptr %6, align 4, !tbaa !11
  %258 = load ptr, ptr %7, align 8, !tbaa !5
  %259 = load i32, ptr %20, align 4, !tbaa !11
  %260 = call i32 @FLAC__stream_encoder_set_max_lpc_order(ptr noundef %258, i32 noundef %259)
  %261 = load i32, ptr %6, align 4, !tbaa !11
  %262 = and i32 %261, %260
  store i32 %262, ptr %6, align 4, !tbaa !11
  %263 = load ptr, ptr %7, align 8, !tbaa !5
  %264 = load i32, ptr %21, align 4, !tbaa !11
  %265 = call i32 @FLAC__stream_encoder_set_qlp_coeff_precision(ptr noundef %263, i32 noundef %264)
  %266 = load i32, ptr %6, align 4, !tbaa !11
  %267 = and i32 %266, %265
  store i32 %267, ptr %6, align 4, !tbaa !11
  %268 = load ptr, ptr %7, align 8, !tbaa !5
  %269 = load i32, ptr %22, align 4, !tbaa !11
  %270 = call i32 @FLAC__stream_encoder_set_min_residual_partition_order(ptr noundef %268, i32 noundef %269)
  %271 = load i32, ptr %6, align 4, !tbaa !11
  %272 = and i32 %271, %270
  store i32 %272, ptr %6, align 4, !tbaa !11
  %273 = load i64, ptr %16, align 8, !tbaa !9
  %274 = icmp ult i64 %273, 131072
  br i1 %274, label %275, label %327

275:                                              ; preds = %252
  %276 = load ptr, ptr %7, align 8, !tbaa !5
  %277 = getelementptr inbounds [24 x i32], ptr %29, i64 0, i64 4
  %278 = load i32, ptr %277, align 16, !tbaa !11
  %279 = call i32 @FLAC__stream_encoder_set_streamable_subset(ptr noundef %276, i32 noundef %278)
  %280 = load i32, ptr %6, align 4, !tbaa !11
  %281 = and i32 %280, %279
  store i32 %281, ptr %6, align 4, !tbaa !11
  %282 = load ptr, ptr %7, align 8, !tbaa !5
  %283 = getelementptr inbounds [24 x i32], ptr %29, i64 0, i64 5
  %284 = load i32, ptr %283, align 4, !tbaa !11
  %285 = call i32 @FLAC__stream_encoder_set_do_qlp_coeff_prec_search(ptr noundef %282, i32 noundef %284)
  %286 = load i32, ptr %6, align 4, !tbaa !11
  %287 = and i32 %286, %285
  store i32 %287, ptr %6, align 4, !tbaa !11
  %288 = load ptr, ptr %7, align 8, !tbaa !5
  %289 = getelementptr inbounds [24 x i32], ptr %29, i64 0, i64 6
  %290 = load i32, ptr %289, align 8, !tbaa !11
  %291 = call i32 @FLAC__stream_encoder_set_do_escape_coding(ptr noundef %288, i32 noundef %290)
  %292 = load i32, ptr %6, align 4, !tbaa !11
  %293 = and i32 %292, %291
  store i32 %293, ptr %6, align 4, !tbaa !11
  %294 = load ptr, ptr %7, align 8, !tbaa !5
  %295 = getelementptr inbounds [24 x i32], ptr %29, i64 0, i64 7
  %296 = load i32, ptr %295, align 4, !tbaa !11
  %297 = call i32 @FLAC__stream_encoder_set_do_exhaustive_model_search(ptr noundef %294, i32 noundef %296)
  %298 = load i32, ptr %6, align 4, !tbaa !11
  %299 = and i32 %298, %297
  store i32 %299, ptr %6, align 4, !tbaa !11
  %300 = load i64, ptr %16, align 8, !tbaa !9
  %301 = icmp ult i64 %300, 9218
  br i1 %301, label %320, label %302

302:                                              ; preds = %275
  %303 = getelementptr inbounds [24 x i32], ptr %29, i64 0, i64 4
  %304 = load i32, ptr %303, align 16, !tbaa !11
  %305 = icmp ne i32 %304, 0
  br i1 %305, label %320, label %306

306:                                              ; preds = %302
  %307 = getelementptr inbounds [24 x i32], ptr %29, i64 0, i64 7
  %308 = load i32, ptr %307, align 4, !tbaa !11
  %309 = icmp ne i32 %308, 0
  br i1 %309, label %310, label %320

310:                                              ; preds = %306
  %311 = getelementptr inbounds [24 x i32], ptr %29, i64 0, i64 5
  %312 = load i32, ptr %311, align 4, !tbaa !11
  %313 = icmp ne i32 %312, 0
  br i1 %313, label %314, label %320

314:                                              ; preds = %310
  %315 = load i32, ptr %23, align 4, !tbaa !11
  %316 = icmp ult i32 %315, 9
  br i1 %316, label %320, label %317

317:                                              ; preds = %314
  %318 = load i32, ptr %19, align 4, !tbaa !11
  %319 = icmp ult i32 %318, 4609
  br i1 %319, label %320, label %326

320:                                              ; preds = %317, %314, %310, %306, %302, %275
  %321 = load ptr, ptr %7, align 8, !tbaa !5
  %322 = load i32, ptr %23, align 4, !tbaa !11
  %323 = call i32 @FLAC__stream_encoder_set_max_residual_partition_order(ptr noundef %321, i32 noundef %322)
  %324 = load i32, ptr %6, align 4, !tbaa !11
  %325 = and i32 %324, %323
  store i32 %325, ptr %6, align 4, !tbaa !11
  br label %326

326:                                              ; preds = %320, %317
  br label %367

327:                                              ; preds = %252
  %328 = getelementptr inbounds [24 x i32], ptr %29, i64 0, i64 4
  %329 = load i32, ptr %328, align 16, !tbaa !11
  %330 = icmp ne i32 %329, 0
  br i1 %330, label %336, label %331

331:                                              ; preds = %327
  %332 = load ptr, ptr %7, align 8, !tbaa !5
  %333 = call i32 @FLAC__stream_encoder_set_streamable_subset(ptr noundef %332, i32 noundef 0)
  %334 = load i32, ptr %6, align 4, !tbaa !11
  %335 = and i32 %334, %333
  store i32 %335, ptr %6, align 4, !tbaa !11
  br label %366

336:                                              ; preds = %327
  %337 = getelementptr inbounds [24 x i32], ptr %29, i64 0, i64 6
  %338 = load i32, ptr %337, align 8, !tbaa !11
  %339 = icmp ne i32 %338, 0
  br i1 %339, label %340, label %345

340:                                              ; preds = %336
  %341 = load ptr, ptr %7, align 8, !tbaa !5
  %342 = call i32 @FLAC__stream_encoder_set_do_escape_coding(ptr noundef %341, i32 noundef 1)
  %343 = load i32, ptr %6, align 4, !tbaa !11
  %344 = and i32 %343, %342
  store i32 %344, ptr %6, align 4, !tbaa !11
  br label %365

345:                                              ; preds = %336
  %346 = getelementptr inbounds [24 x i32], ptr %29, i64 0, i64 7
  %347 = load i32, ptr %346, align 4, !tbaa !11
  %348 = icmp ne i32 %347, 0
  br i1 %348, label %349, label %354

349:                                              ; preds = %345
  %350 = load ptr, ptr %7, align 8, !tbaa !5
  %351 = call i32 @FLAC__stream_encoder_set_do_exhaustive_model_search(ptr noundef %350, i32 noundef 1)
  %352 = load i32, ptr %6, align 4, !tbaa !11
  %353 = and i32 %352, %351
  store i32 %353, ptr %6, align 4, !tbaa !11
  br label %364

354:                                              ; preds = %345
  %355 = getelementptr inbounds [24 x i32], ptr %29, i64 0, i64 5
  %356 = load i32, ptr %355, align 4, !tbaa !11
  %357 = icmp ne i32 %356, 0
  br i1 %357, label %358, label %363

358:                                              ; preds = %354
  %359 = load ptr, ptr %7, align 8, !tbaa !5
  %360 = call i32 @FLAC__stream_encoder_set_do_qlp_coeff_prec_search(ptr noundef %359, i32 noundef 1)
  %361 = load i32, ptr %6, align 4, !tbaa !11
  %362 = and i32 %361, %360
  store i32 %362, ptr %6, align 4, !tbaa !11
  br label %363

363:                                              ; preds = %358, %354
  br label %364

364:                                              ; preds = %363, %349
  br label %365

365:                                              ; preds = %364, %340
  br label %366

366:                                              ; preds = %365, %331
  br label %367

367:                                              ; preds = %366, %326
  %368 = load ptr, ptr %7, align 8, !tbaa !5
  %369 = getelementptr inbounds [24 x i32], ptr %29, i64 0, i64 8
  %370 = load i32, ptr %369, align 16, !tbaa !11
  %371 = call i32 @FLAC__stream_encoder_set_do_mid_side_stereo(ptr noundef %368, i32 noundef %370)
  %372 = load i32, ptr %6, align 4, !tbaa !11
  %373 = and i32 %372, %371
  store i32 %373, ptr %6, align 4, !tbaa !11
  %374 = load ptr, ptr %7, align 8, !tbaa !5
  %375 = getelementptr inbounds [24 x i32], ptr %29, i64 0, i64 9
  %376 = load i32, ptr %375, align 4, !tbaa !11
  %377 = call i32 @FLAC__stream_encoder_set_loose_mid_side_stereo(ptr noundef %374, i32 noundef %376)
  %378 = load i32, ptr %6, align 4, !tbaa !11
  %379 = and i32 %378, %377
  store i32 %379, ptr %6, align 4, !tbaa !11
  %380 = load ptr, ptr %7, align 8, !tbaa !5
  %381 = getelementptr inbounds [24 x i32], ptr %29, i64 0, i64 10
  %382 = load i32, ptr %381, align 8, !tbaa !11
  %383 = call i32 @FLAC__stream_encoder_disable_constant_subframes(ptr noundef %380, i32 noundef %382)
  %384 = load i32, ptr %6, align 4, !tbaa !11
  %385 = and i32 %384, %383
  store i32 %385, ptr %6, align 4, !tbaa !11
  %386 = load ptr, ptr %7, align 8, !tbaa !5
  %387 = getelementptr inbounds [24 x i32], ptr %29, i64 0, i64 11
  %388 = load i32, ptr %387, align 4, !tbaa !11
  %389 = call i32 @FLAC__stream_encoder_disable_fixed_subframes(ptr noundef %386, i32 noundef %388)
  %390 = load i32, ptr %6, align 4, !tbaa !11
  %391 = and i32 %390, %389
  store i32 %391, ptr %6, align 4, !tbaa !11
  %392 = load ptr, ptr %7, align 8, !tbaa !5
  %393 = getelementptr inbounds [24 x i32], ptr %29, i64 0, i64 12
  %394 = load i32, ptr %393, align 16, !tbaa !11
  %395 = call i32 @FLAC__stream_encoder_disable_verbatim_subframes(ptr noundef %392, i32 noundef %394)
  %396 = load i32, ptr %6, align 4, !tbaa !11
  %397 = and i32 %396, %395
  store i32 %397, ptr %6, align 4, !tbaa !11
  br label %398

398:                                              ; preds = %367, %200
  %399 = load i32, ptr %6, align 4, !tbaa !11
  %400 = icmp ne i32 %399, 0
  br i1 %400, label %401, label %406

401:                                              ; preds = %398
  %402 = getelementptr inbounds [24 x i32], ptr %29, i64 0, i64 14
  %403 = load i32, ptr %402, align 8, !tbaa !11
  %404 = icmp ne i32 %403, 0
  br i1 %404, label %405, label %406

405:                                              ; preds = %401
  store i32 2147483647, ptr @alloc_check_threshold, align 4, !tbaa !11
  br label %406

406:                                              ; preds = %405, %401, %398
  %407 = load i32, ptr %6, align 4, !tbaa !11
  %408 = icmp ne i32 %407, 0
  br i1 %408, label %409, label %424

409:                                              ; preds = %406
  %410 = load i32, ptr %24, align 4, !tbaa !11
  %411 = and i32 %410, 1
  %412 = icmp ne i32 %411, 0
  br i1 %412, label %413, label %424

413:                                              ; preds = %409
  %414 = call ptr @FLAC__metadata_object_new(i32 noundef 0)
  %415 = load i32, ptr %10, align 4, !tbaa !11
  %416 = zext i32 %415 to i64
  %417 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %416
  store ptr %414, ptr %417, align 8, !tbaa !5
  %418 = icmp eq ptr %414, null
  br i1 %418, label %419, label %420

419:                                              ; preds = %413
  store i32 0, ptr %6, align 4, !tbaa !11
  br label %423

420:                                              ; preds = %413
  %421 = load i32, ptr %10, align 4, !tbaa !11
  %422 = add i32 %421, 1
  store i32 %422, ptr %10, align 4, !tbaa !11
  br label %423

423:                                              ; preds = %420, %419
  br label %424

424:                                              ; preds = %423, %409, %406
  %425 = load i32, ptr %6, align 4, !tbaa !11
  %426 = icmp ne i32 %425, 0
  br i1 %426, label %427, label %459

427:                                              ; preds = %424
  %428 = load i32, ptr %24, align 4, !tbaa !11
  %429 = and i32 %428, 2
  %430 = icmp ne i32 %429, 0
  br i1 %430, label %431, label %459

431:                                              ; preds = %427
  %432 = load i64, ptr %5, align 8, !tbaa !9
  %433 = icmp ugt i64 %432, 21
  br i1 %433, label %434, label %459

434:                                              ; preds = %431
  %435 = call ptr @FLAC__metadata_object_new(i32 noundef 1)
  %436 = load i32, ptr %10, align 4, !tbaa !11
  %437 = zext i32 %436 to i64
  %438 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %437
  store ptr %435, ptr %438, align 8, !tbaa !5
  %439 = icmp eq ptr %435, null
  br i1 %439, label %440, label %441

440:                                              ; preds = %434
  store i32 0, ptr %6, align 4, !tbaa !11
  br label %458

441:                                              ; preds = %434
  %442 = load ptr, ptr %4, align 8, !tbaa !5
  %443 = getelementptr inbounds i8, ptr %442, i64 20
  %444 = load i8, ptr %443, align 1, !tbaa !13
  %445 = zext i8 %444 to i32
  %446 = shl i32 %445, 8
  %447 = load ptr, ptr %4, align 8, !tbaa !5
  %448 = getelementptr inbounds i8, ptr %447, i64 21
  %449 = load i8, ptr %448, align 1, !tbaa !13
  %450 = zext i8 %449 to i32
  %451 = add i32 %446, %450
  %452 = load i32, ptr %10, align 4, !tbaa !11
  %453 = add i32 %452, 1
  store i32 %453, ptr %10, align 4, !tbaa !11
  %454 = zext i32 %452 to i64
  %455 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %454
  %456 = load ptr, ptr %455, align 8, !tbaa !5
  %457 = getelementptr inbounds %struct.FLAC__StreamMetadata, ptr %456, i32 0, i32 2
  store i32 %451, ptr %457, align 8, !tbaa !16
  br label %458

458:                                              ; preds = %441, %440
  br label %459

459:                                              ; preds = %458, %431, %427, %424
  %460 = load i32, ptr %6, align 4, !tbaa !11
  %461 = icmp ne i32 %460, 0
  br i1 %461, label %462, label %499

462:                                              ; preds = %459
  %463 = load i32, ptr %24, align 4, !tbaa !11
  %464 = and i32 %463, 4
  %465 = icmp ne i32 %464, 0
  br i1 %465, label %466, label %499

466:                                              ; preds = %462
  %467 = load i64, ptr %5, align 8, !tbaa !9
  %468 = icmp ugt i64 %467, 20
  br i1 %468, label %469, label %499

469:                                              ; preds = %466
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #10
  %470 = load i64, ptr %5, align 8, !tbaa !9
  %471 = sub i64 %470, 20
  %472 = call noalias ptr @malloc(i64 noundef %471) #11
  store ptr %472, ptr %32, align 8, !tbaa !5
  %473 = load ptr, ptr %32, align 8, !tbaa !5
  %474 = icmp ne ptr null, %473
  br i1 %474, label %475, label %482

475:                                              ; preds = %469
  %476 = call ptr @FLAC__metadata_object_new(i32 noundef 2)
  %477 = load i32, ptr %10, align 4, !tbaa !11
  %478 = zext i32 %477 to i64
  %479 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %478
  store ptr %476, ptr %479, align 8, !tbaa !5
  %480 = icmp eq ptr %476, null
  br i1 %480, label %481, label %482

481:                                              ; preds = %475
  store i32 0, ptr %6, align 4, !tbaa !11
  br label %498

482:                                              ; preds = %475, %469
  %483 = load ptr, ptr %32, align 8, !tbaa !5
  %484 = load ptr, ptr %4, align 8, !tbaa !5
  %485 = getelementptr inbounds i8, ptr %484, i64 20
  %486 = load i64, ptr %5, align 8, !tbaa !9
  %487 = sub i64 %486, 20
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %483, ptr align 1 %485, i64 %487, i1 false)
  %488 = load i32, ptr %10, align 4, !tbaa !11
  %489 = add i32 %488, 1
  store i32 %489, ptr %10, align 4, !tbaa !11
  %490 = zext i32 %488 to i64
  %491 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %490
  %492 = load ptr, ptr %491, align 8, !tbaa !5
  %493 = load ptr, ptr %32, align 8, !tbaa !5
  %494 = load i64, ptr %5, align 8, !tbaa !9
  %495 = sub i64 %494, 20
  %496 = trunc i64 %495 to i32
  %497 = call i32 @FLAC__metadata_object_application_set_data(ptr noundef %492, ptr noundef %493, i32 noundef %496, i32 noundef 0)
  br label %498

498:                                              ; preds = %482, %481
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  br label %499

499:                                              ; preds = %498, %466, %462, %459
  %500 = load i32, ptr %6, align 4, !tbaa !11
  %501 = icmp ne i32 %500, 0
  br i1 %501, label %502, label %547

502:                                              ; preds = %499
  %503 = load i32, ptr %24, align 4, !tbaa !11
  %504 = and i32 %503, 8
  %505 = icmp ne i32 %504, 0
  br i1 %505, label %506, label %547

506:                                              ; preds = %502
  %507 = load i64, ptr %5, align 8, !tbaa !9
  %508 = icmp ugt i64 %507, 25
  br i1 %508, label %509, label %547

509:                                              ; preds = %506
  %510 = call ptr @FLAC__metadata_object_new(i32 noundef 3)
  %511 = load i32, ptr %10, align 4, !tbaa !11
  %512 = zext i32 %511 to i64
  %513 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %512
  store ptr %510, ptr %513, align 8, !tbaa !5
  %514 = icmp eq ptr %510, null
  br i1 %514, label %515, label %516

515:                                              ; preds = %509
  store i32 0, ptr %6, align 4, !tbaa !11
  br label %546

516:                                              ; preds = %509
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #10
  %517 = load ptr, ptr %4, align 8, !tbaa !5
  %518 = getelementptr inbounds i8, ptr %517, i64 22
  %519 = load i8, ptr %518, align 1, !tbaa !13
  %520 = zext i8 %519 to i32
  %521 = shl i32 %520, 8
  %522 = load ptr, ptr %4, align 8, !tbaa !5
  %523 = getelementptr inbounds i8, ptr %522, i64 23
  %524 = load i8, ptr %523, align 1, !tbaa !13
  %525 = zext i8 %524 to i32
  %526 = add i32 %521, %525
  store i32 %526, ptr %33, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #10
  %527 = load ptr, ptr %4, align 8, !tbaa !5
  %528 = getelementptr inbounds i8, ptr %527, i64 24
  %529 = load i8, ptr %528, align 1, !tbaa !13
  %530 = zext i8 %529 to i32
  %531 = shl i32 %530, 8
  %532 = load ptr, ptr %4, align 8, !tbaa !5
  %533 = getelementptr inbounds i8, ptr %532, i64 25
  %534 = load i8, ptr %533, align 1, !tbaa !13
  %535 = zext i8 %534 to i32
  %536 = add i32 %531, %535
  store i32 %536, ptr %34, align 4, !tbaa !11
  %537 = load i32, ptr %10, align 4, !tbaa !11
  %538 = add i32 %537, 1
  store i32 %538, ptr %10, align 4, !tbaa !11
  %539 = zext i32 %537 to i64
  %540 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %539
  %541 = load ptr, ptr %540, align 8, !tbaa !5
  %542 = load i32, ptr %33, align 4, !tbaa !11
  %543 = load i32, ptr %34, align 4, !tbaa !11
  %544 = zext i32 %543 to i64
  %545 = call i32 @FLAC__metadata_object_seektable_template_append_spaced_points_by_samples(ptr noundef %541, i32 noundef %542, i64 noundef %544)
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #10
  br label %546

546:                                              ; preds = %516, %515
  br label %547

547:                                              ; preds = %546, %506, %502, %499
  %548 = load i32, ptr %6, align 4, !tbaa !11
  %549 = icmp ne i32 %548, 0
  br i1 %549, label %550, label %615

550:                                              ; preds = %547
  %551 = load i32, ptr %24, align 4, !tbaa !11
  %552 = and i32 %551, 16
  %553 = icmp ne i32 %552, 0
  br i1 %553, label %554, label %615

554:                                              ; preds = %550
  %555 = call ptr @FLAC__metadata_object_new(i32 noundef 4)
  %556 = load i32, ptr %10, align 4, !tbaa !11
  %557 = zext i32 %556 to i64
  %558 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %557
  store ptr %555, ptr %558, align 8, !tbaa !5
  %559 = icmp ne ptr %555, null
  br i1 %559, label %560, label %614

560:                                              ; preds = %554
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #10
  store i8 1, ptr %35, align 1, !tbaa !19
  %561 = call i32 @FLAC__metadata_object_vorbiscomment_entry_from_name_value_pair(ptr noundef %11, ptr noundef @.str.1, ptr noundef @.str.2)
  %562 = icmp ne i32 %561, 0
  br i1 %562, label %564, label %563

563:                                              ; preds = %560
  store i8 0, ptr %35, align 1, !tbaa !19
  br label %599

564:                                              ; preds = %560
  %565 = load i32, ptr %10, align 4, !tbaa !11
  %566 = zext i32 %565 to i64
  %567 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %566
  %568 = load ptr, ptr %567, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %36, ptr align 8 %11, i64 16, i1 false), !tbaa.struct !21
  %569 = getelementptr inbounds { i32, ptr }, ptr %36, i32 0, i32 0
  %570 = load i32, ptr %569, align 8
  %571 = getelementptr inbounds { i32, ptr }, ptr %36, i32 0, i32 1
  %572 = load ptr, ptr %571, align 8
  %573 = call i32 @FLAC__metadata_object_vorbiscomment_append_comment(ptr noundef %568, i32 %570, ptr %572, i32 noundef 0)
  %574 = icmp ne i32 %573, 0
  br i1 %574, label %575, label %595

575:                                              ; preds = %564
  %576 = call i32 @FLAC__metadata_object_vorbiscomment_entry_from_name_value_pair(ptr noundef %11, ptr noundef @.str.1, ptr noundef @.str.3)
  %577 = icmp ne i32 %576, 0
  br i1 %577, label %579, label %578

578:                                              ; preds = %575
  store i8 0, ptr %35, align 1, !tbaa !19
  br label %594

579:                                              ; preds = %575
  %580 = load i32, ptr %10, align 4, !tbaa !11
  %581 = zext i32 %580 to i64
  %582 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %581
  %583 = load ptr, ptr %582, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %37, ptr align 8 %11, i64 16, i1 false), !tbaa.struct !21
  %584 = getelementptr inbounds { i32, ptr }, ptr %37, i32 0, i32 0
  %585 = load i32, ptr %584, align 8
  %586 = getelementptr inbounds { i32, ptr }, ptr %37, i32 0, i32 1
  %587 = load ptr, ptr %586, align 8
  %588 = call i32 @FLAC__metadata_object_vorbiscomment_insert_comment(ptr noundef %583, i32 noundef 0, i32 %585, ptr %587, i32 noundef 0)
  %589 = icmp ne i32 %588, 0
  br i1 %589, label %593, label %590

590:                                              ; preds = %579
  %591 = getelementptr inbounds %struct.FLAC__StreamMetadata_VorbisComment_Entry, ptr %11, i32 0, i32 1
  %592 = load ptr, ptr %591, align 8, !tbaa !22
  call void @free(ptr noundef %592) #10
  store i8 0, ptr %35, align 1, !tbaa !19
  br label %593

593:                                              ; preds = %590, %579
  br label %594

594:                                              ; preds = %593, %578
  br label %598

595:                                              ; preds = %564
  %596 = getelementptr inbounds %struct.FLAC__StreamMetadata_VorbisComment_Entry, ptr %11, i32 0, i32 1
  %597 = load ptr, ptr %596, align 8, !tbaa !22
  call void @free(ptr noundef %597) #10
  store i8 0, ptr %35, align 1, !tbaa !19
  br label %598

598:                                              ; preds = %595, %594
  br label %599

599:                                              ; preds = %598, %563
  %600 = load i8, ptr %35, align 1, !tbaa !19, !range !24, !noundef !25
  %601 = trunc i8 %600 to i1
  br i1 %601, label %610, label %602

602:                                              ; preds = %599
  %603 = load i32, ptr %10, align 4, !tbaa !11
  %604 = zext i32 %603 to i64
  %605 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %604
  %606 = load ptr, ptr %605, align 8, !tbaa !5
  call void @FLAC__metadata_object_delete(ptr noundef %606)
  %607 = load i32, ptr %10, align 4, !tbaa !11
  %608 = zext i32 %607 to i64
  %609 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %608
  store ptr null, ptr %609, align 8, !tbaa !5
  br label %613

610:                                              ; preds = %599
  %611 = load i32, ptr %10, align 4, !tbaa !11
  %612 = add i32 %611, 1
  store i32 %612, ptr %10, align 4, !tbaa !11
  br label %613

613:                                              ; preds = %610, %602
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #10
  br label %614

614:                                              ; preds = %613, %554
  br label %615

615:                                              ; preds = %614, %550, %547
  %616 = load i32, ptr %6, align 4, !tbaa !11
  %617 = icmp ne i32 %616, 0
  br i1 %617, label %618, label %673

618:                                              ; preds = %615
  %619 = load i32, ptr %24, align 4, !tbaa !11
  %620 = and i32 %619, 32
  %621 = icmp ne i32 %620, 0
  br i1 %621, label %622, label %673

622:                                              ; preds = %618
  %623 = call ptr @FLAC__metadata_object_new(i32 noundef 5)
  %624 = load i32, ptr %10, align 4, !tbaa !11
  %625 = zext i32 %624 to i64
  %626 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %625
  store ptr %623, ptr %626, align 8, !tbaa !5
  %627 = icmp ne ptr %623, null
  br i1 %627, label %628, label %672

628:                                              ; preds = %622
  %629 = load i32, ptr %10, align 4, !tbaa !11
  %630 = zext i32 %629 to i64
  %631 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %630
  %632 = load ptr, ptr %631, align 8, !tbaa !5
  %633 = call i32 @FLAC__metadata_object_cuesheet_insert_blank_track(ptr noundef %632, i32 noundef 0)
  %634 = icmp ne i32 %633, 0
  br i1 %634, label %643, label %635

635:                                              ; preds = %628
  %636 = load i32, ptr %10, align 4, !tbaa !11
  %637 = zext i32 %636 to i64
  %638 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %637
  %639 = load ptr, ptr %638, align 8, !tbaa !5
  call void @FLAC__metadata_object_delete(ptr noundef %639)
  %640 = load i32, ptr %10, align 4, !tbaa !11
  %641 = zext i32 %640 to i64
  %642 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %641
  store ptr null, ptr %642, align 8, !tbaa !5
  br label %671

643:                                              ; preds = %628
  %644 = load i32, ptr %10, align 4, !tbaa !11
  %645 = zext i32 %644 to i64
  %646 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %645
  %647 = load ptr, ptr %646, align 8, !tbaa !5
  %648 = call i32 @FLAC__metadata_object_cuesheet_track_insert_blank_index(ptr noundef %647, i32 noundef 0, i32 noundef 0)
  %649 = icmp ne i32 %648, 0
  br i1 %649, label %658, label %650

650:                                              ; preds = %643
  %651 = load i32, ptr %10, align 4, !tbaa !11
  %652 = zext i32 %651 to i64
  %653 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %652
  %654 = load ptr, ptr %653, align 8, !tbaa !5
  call void @FLAC__metadata_object_delete(ptr noundef %654)
  %655 = load i32, ptr %10, align 4, !tbaa !11
  %656 = zext i32 %655 to i64
  %657 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %656
  store ptr null, ptr %657, align 8, !tbaa !5
  br label %670

658:                                              ; preds = %643
  %659 = load i32, ptr %10, align 4, !tbaa !11
  %660 = zext i32 %659 to i64
  %661 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %660
  %662 = load ptr, ptr %661, align 8, !tbaa !5
  %663 = getelementptr inbounds %struct.FLAC__StreamMetadata, ptr %662, i32 0, i32 3
  %664 = getelementptr inbounds %struct.FLAC__StreamMetadata_CueSheet, ptr %663, i32 0, i32 4
  %665 = load ptr, ptr %664, align 8, !tbaa !13
  %666 = getelementptr inbounds %struct.FLAC__StreamMetadata_CueSheet_Track, ptr %665, i64 0
  %667 = getelementptr inbounds %struct.FLAC__StreamMetadata_CueSheet_Track, ptr %666, i32 0, i32 1
  store i8 1, ptr %667, align 8, !tbaa !26
  %668 = load i32, ptr %10, align 4, !tbaa !11
  %669 = add i32 %668, 1
  store i32 %669, ptr %10, align 4, !tbaa !11
  br label %670

670:                                              ; preds = %658, %650
  br label %671

671:                                              ; preds = %670, %635
  br label %672

672:                                              ; preds = %671, %622
  br label %673

673:                                              ; preds = %672, %618, %615
  %674 = load i32, ptr %6, align 4, !tbaa !11
  %675 = icmp ne i32 %674, 0
  br i1 %675, label %676, label %690

676:                                              ; preds = %673
  %677 = load i32, ptr %24, align 4, !tbaa !11
  %678 = and i32 %677, 64
  %679 = icmp ne i32 %678, 0
  br i1 %679, label %680, label %690

680:                                              ; preds = %676
  %681 = call ptr @FLAC__metadata_object_new(i32 noundef 6)
  %682 = load i32, ptr %10, align 4, !tbaa !11
  %683 = zext i32 %682 to i64
  %684 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %683
  store ptr %681, ptr %684, align 8, !tbaa !5
  %685 = icmp ne ptr %681, null
  br i1 %685, label %686, label %689

686:                                              ; preds = %680
  %687 = load i32, ptr %10, align 4, !tbaa !11
  %688 = add i32 %687, 1
  store i32 %688, ptr %10, align 4, !tbaa !11
  br label %689

689:                                              ; preds = %686, %680
  br label %690

690:                                              ; preds = %689, %676, %673
  %691 = load i32, ptr %6, align 4, !tbaa !11
  %692 = icmp ne i32 %691, 0
  br i1 %692, label %693, label %719

693:                                              ; preds = %690
  %694 = load i32, ptr %24, align 4, !tbaa !11
  %695 = and i32 %694, 128
  %696 = icmp ne i32 %695, 0
  br i1 %696, label %697, label %719

697:                                              ; preds = %693
  %698 = call ptr @FLAC__metadata_object_new(i32 noundef 7)
  %699 = load i32, ptr %10, align 4, !tbaa !11
  %700 = zext i32 %699 to i64
  %701 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %700
  store ptr %698, ptr %701, align 8, !tbaa !5
  %702 = icmp ne ptr %698, null
  br i1 %702, label %703, label %718

703:                                              ; preds = %697
  %704 = load i32, ptr %10, align 4, !tbaa !11
  %705 = zext i32 %704 to i64
  %706 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %705
  %707 = load ptr, ptr %706, align 8, !tbaa !5
  %708 = getelementptr inbounds %struct.FLAC__StreamMetadata, ptr %707, i32 0, i32 2
  store i32 24, ptr %708, align 8, !tbaa !16
  %709 = call noalias ptr @calloc(i64 noundef 24, i64 noundef 1) #12
  %710 = load i32, ptr %10, align 4, !tbaa !11
  %711 = zext i32 %710 to i64
  %712 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %711
  %713 = load ptr, ptr %712, align 8, !tbaa !5
  %714 = getelementptr inbounds %struct.FLAC__StreamMetadata, ptr %713, i32 0, i32 3
  %715 = getelementptr inbounds %struct.FLAC__StreamMetadata_Unknown, ptr %714, i32 0, i32 0
  store ptr %709, ptr %715, align 8, !tbaa !13
  %716 = load i32, ptr %10, align 4, !tbaa !11
  %717 = add i32 %716, 1
  store i32 %717, ptr %10, align 4, !tbaa !11
  br label %718

718:                                              ; preds = %703, %697
  br label %719

719:                                              ; preds = %718, %693, %690
  %720 = load i32, ptr %10, align 4, !tbaa !11
  %721 = icmp ne i32 %720, 0
  br i1 %721, label %722, label %730

722:                                              ; preds = %719
  %723 = load i32, ptr %6, align 4, !tbaa !11
  %724 = icmp ne i32 %723, 0
  br i1 %724, label %725, label %730

725:                                              ; preds = %722
  %726 = load ptr, ptr %7, align 8, !tbaa !5
  %727 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 0
  %728 = load i32, ptr %10, align 4, !tbaa !11
  %729 = call i32 @FLAC__stream_encoder_set_metadata(ptr noundef %726, ptr noundef %727, i32 noundef %728)
  store i32 %729, ptr %6, align 4, !tbaa !11
  br label %730

730:                                              ; preds = %725, %722, %719
  %731 = load i32, ptr %6, align 4, !tbaa !11
  %732 = icmp ne i32 %731, 0
  br i1 %732, label %733, label %761

733:                                              ; preds = %730
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #10
  %734 = load i32, ptr %26, align 4, !tbaa !11
  %735 = icmp ne i32 %734, 0
  br i1 %735, label %736, label %746

736:                                              ; preds = %733
  %737 = load i32, ptr %27, align 4, !tbaa !11
  %738 = icmp ne i32 %737, 0
  br i1 %738, label %739, label %742

739:                                              ; preds = %736
  %740 = load ptr, ptr %7, align 8, !tbaa !5
  %741 = call i32 @FLAC__stream_encoder_init_ogg_file(ptr noundef %740, ptr noundef @.str.4, ptr noundef null, ptr noundef null)
  store i32 %741, ptr %38, align 4, !tbaa !28
  br label %745

742:                                              ; preds = %736
  %743 = load ptr, ptr %7, align 8, !tbaa !5
  %744 = call i32 @FLAC__stream_encoder_init_ogg_stream(ptr noundef %743, ptr noundef null, ptr noundef @_ZL14write_callbackPK19FLAC__StreamEncoderPKhmjjPv, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null)
  store i32 %744, ptr %38, align 4, !tbaa !28
  br label %745

745:                                              ; preds = %742, %739
  br label %756

746:                                              ; preds = %733
  %747 = load i32, ptr %27, align 4, !tbaa !11
  %748 = icmp ne i32 %747, 0
  br i1 %748, label %749, label %752

749:                                              ; preds = %746
  %750 = load ptr, ptr %7, align 8, !tbaa !5
  %751 = call i32 @FLAC__stream_encoder_init_file(ptr noundef %750, ptr noundef @.str.4, ptr noundef null, ptr noundef null)
  store i32 %751, ptr %38, align 4, !tbaa !28
  br label %755

752:                                              ; preds = %746
  %753 = load ptr, ptr %7, align 8, !tbaa !5
  %754 = call i32 @FLAC__stream_encoder_init_stream(ptr noundef %753, ptr noundef @_ZL14write_callbackPK19FLAC__StreamEncoderPKhmjjPv, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null)
  store i32 %754, ptr %38, align 4, !tbaa !28
  br label %755

755:                                              ; preds = %752, %749
  br label %756

756:                                              ; preds = %755, %745
  %757 = load i32, ptr %38, align 4, !tbaa !28
  %758 = icmp ne i32 %757, 0
  br i1 %758, label %759, label %760

759:                                              ; preds = %756
  store i32 0, ptr %6, align 4, !tbaa !11
  br label %760

760:                                              ; preds = %759, %756
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #10
  br label %761

761:                                              ; preds = %760, %730
  %762 = load i32, ptr %6, align 4, !tbaa !11
  %763 = icmp ne i32 %762, 0
  br i1 %763, label %764, label %992

764:                                              ; preds = %761
  %765 = load i64, ptr %5, align 8, !tbaa !9
  %766 = load i32, ptr %18, align 4, !tbaa !11
  %767 = load i32, ptr %13, align 4, !tbaa !11
  %768 = mul i32 %766, %767
  %769 = add i32 %768, 26
  %770 = zext i32 %769 to i64
  %771 = icmp ugt i64 %765, %770
  br i1 %771, label %772, label %992

772:                                              ; preds = %764
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #10
  %773 = load i64, ptr %5, align 8, !tbaa !9
  %774 = sub i64 %773, 26
  %775 = load i32, ptr %18, align 4, !tbaa !11
  %776 = zext i32 %775 to i64
  %777 = udiv i64 %774, %776
  %778 = load i32, ptr %13, align 4, !tbaa !11
  %779 = zext i32 %778 to i64
  %780 = udiv i64 %777, %779
  %781 = trunc i64 %780 to i32
  store i32 %781, ptr %39, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #10
  %782 = load ptr, ptr %4, align 8, !tbaa !5
  %783 = getelementptr inbounds i8, ptr %782, i64 26
  store ptr %783, ptr %40, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #10
  %784 = load i32, ptr %39, align 4, !tbaa !11
  %785 = mul i32 4, %784
  %786 = load i32, ptr %13, align 4, !tbaa !11
  %787 = mul i32 %785, %786
  %788 = zext i32 %787 to i64
  %789 = call noalias ptr @malloc(i64 noundef %788) #11
  store ptr %789, ptr %41, align 8, !tbaa !5
  %790 = load ptr, ptr %41, align 8, !tbaa !5
  %791 = icmp ne ptr null, %790
  br i1 %791, label %792, label %990

792:                                              ; preds = %772
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #10
  store i32 0, ptr %42, align 4, !tbaa !11
  br label %793

793:                                              ; preds = %930, %792
  %794 = load i32, ptr %42, align 4, !tbaa !11
  %795 = load i32, ptr %39, align 4, !tbaa !11
  %796 = load i32, ptr %13, align 4, !tbaa !11
  %797 = mul i32 %795, %796
  %798 = icmp ult i32 %794, %797
  br i1 %798, label %800, label %799

799:                                              ; preds = %793
  store i32 5, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #10
  br label %933

800:                                              ; preds = %793
  %801 = load i32, ptr %18, align 4, !tbaa !11
  %802 = icmp eq i32 %801, 1
  br i1 %802, label %803, label %815

803:                                              ; preds = %800
  %804 = load ptr, ptr %40, align 8, !tbaa !5
  %805 = load i32, ptr %42, align 4, !tbaa !11
  %806 = zext i32 %805 to i64
  %807 = getelementptr inbounds i8, ptr %804, i64 %806
  %808 = load i8, ptr %807, align 1, !tbaa !13
  %809 = zext i8 %808 to i32
  %810 = sub nsw i32 %809, 128
  %811 = load ptr, ptr %41, align 8, !tbaa !5
  %812 = load i32, ptr %42, align 4, !tbaa !11
  %813 = zext i32 %812 to i64
  %814 = getelementptr inbounds i32, ptr %811, i64 %813
  store i32 %810, ptr %814, align 4, !tbaa !11
  br label %929

815:                                              ; preds = %800
  %816 = load i32, ptr %18, align 4, !tbaa !11
  %817 = icmp eq i32 %816, 2
  br i1 %817, label %818, label %841

818:                                              ; preds = %815
  %819 = load ptr, ptr %40, align 8, !tbaa !5
  %820 = load i32, ptr %42, align 4, !tbaa !11
  %821 = mul i32 %820, 2
  %822 = zext i32 %821 to i64
  %823 = getelementptr inbounds i8, ptr %819, i64 %822
  %824 = load i8, ptr %823, align 1, !tbaa !13
  %825 = zext i8 %824 to i32
  %826 = shl i32 %825, 8
  %827 = load ptr, ptr %40, align 8, !tbaa !5
  %828 = load i32, ptr %42, align 4, !tbaa !11
  %829 = mul i32 %828, 2
  %830 = add i32 %829, 1
  %831 = zext i32 %830 to i64
  %832 = getelementptr inbounds i8, ptr %827, i64 %831
  %833 = load i8, ptr %832, align 1, !tbaa !13
  %834 = zext i8 %833 to i32
  %835 = add nsw i32 %826, %834
  %836 = sub nsw i32 %835, 32768
  %837 = load ptr, ptr %41, align 8, !tbaa !5
  %838 = load i32, ptr %42, align 4, !tbaa !11
  %839 = zext i32 %838 to i64
  %840 = getelementptr inbounds i32, ptr %837, i64 %839
  store i32 %836, ptr %840, align 4, !tbaa !11
  br label %928

841:                                              ; preds = %815
  %842 = load i32, ptr %18, align 4, !tbaa !11
  %843 = icmp eq i32 %842, 3
  br i1 %843, label %844, label %877

844:                                              ; preds = %841
  %845 = load ptr, ptr %40, align 8, !tbaa !5
  %846 = load i32, ptr %42, align 4, !tbaa !11
  %847 = mul i32 %846, 3
  %848 = zext i32 %847 to i64
  %849 = getelementptr inbounds i8, ptr %845, i64 %848
  %850 = load i8, ptr %849, align 1, !tbaa !13
  %851 = zext i8 %850 to i32
  %852 = shl i32 %851, 16
  %853 = load ptr, ptr %40, align 8, !tbaa !5
  %854 = load i32, ptr %42, align 4, !tbaa !11
  %855 = mul i32 %854, 3
  %856 = add i32 %855, 1
  %857 = zext i32 %856 to i64
  %858 = getelementptr inbounds i8, ptr %853, i64 %857
  %859 = load i8, ptr %858, align 1, !tbaa !13
  %860 = zext i8 %859 to i32
  %861 = shl i32 %860, 8
  %862 = add nsw i32 %852, %861
  %863 = load ptr, ptr %40, align 8, !tbaa !5
  %864 = load i32, ptr %42, align 4, !tbaa !11
  %865 = mul i32 %864, 3
  %866 = add i32 %865, 2
  %867 = zext i32 %866 to i64
  %868 = getelementptr inbounds i8, ptr %863, i64 %867
  %869 = load i8, ptr %868, align 1, !tbaa !13
  %870 = zext i8 %869 to i32
  %871 = add nsw i32 %862, %870
  %872 = sub nsw i32 %871, 8388608
  %873 = load ptr, ptr %41, align 8, !tbaa !5
  %874 = load i32, ptr %42, align 4, !tbaa !11
  %875 = zext i32 %874 to i64
  %876 = getelementptr inbounds i32, ptr %873, i64 %875
  store i32 %872, ptr %876, align 4, !tbaa !11
  br label %927

877:                                              ; preds = %841
  %878 = load i32, ptr %18, align 4, !tbaa !11
  %879 = icmp eq i32 %878, 4
  br i1 %879, label %880, label %926

880:                                              ; preds = %877
  %881 = load ptr, ptr %40, align 8, !tbaa !5
  %882 = load i32, ptr %42, align 4, !tbaa !11
  %883 = mul i32 %882, 4
  %884 = zext i32 %883 to i64
  %885 = getelementptr inbounds i8, ptr %881, i64 %884
  %886 = load i8, ptr %885, align 1, !tbaa !13
  %887 = zext i8 %886 to i64
  %888 = shl i64 %887, 24
  %889 = load ptr, ptr %40, align 8, !tbaa !5
  %890 = load i32, ptr %42, align 4, !tbaa !11
  %891 = mul i32 %890, 4
  %892 = add i32 %891, 1
  %893 = zext i32 %892 to i64
  %894 = getelementptr inbounds i8, ptr %889, i64 %893
  %895 = load i8, ptr %894, align 1, !tbaa !13
  %896 = zext i8 %895 to i32
  %897 = shl i32 %896, 16
  %898 = sext i32 %897 to i64
  %899 = add nsw i64 %888, %898
  %900 = load ptr, ptr %40, align 8, !tbaa !5
  %901 = load i32, ptr %42, align 4, !tbaa !11
  %902 = mul i32 %901, 4
  %903 = add i32 %902, 2
  %904 = zext i32 %903 to i64
  %905 = getelementptr inbounds i8, ptr %900, i64 %904
  %906 = load i8, ptr %905, align 1, !tbaa !13
  %907 = zext i8 %906 to i32
  %908 = shl i32 %907, 8
  %909 = sext i32 %908 to i64
  %910 = add nsw i64 %899, %909
  %911 = load ptr, ptr %40, align 8, !tbaa !5
  %912 = load i32, ptr %42, align 4, !tbaa !11
  %913 = mul i32 %912, 4
  %914 = add i32 %913, 3
  %915 = zext i32 %914 to i64
  %916 = getelementptr inbounds i8, ptr %911, i64 %915
  %917 = load i8, ptr %916, align 1, !tbaa !13
  %918 = zext i8 %917 to i64
  %919 = add nsw i64 %910, %918
  %920 = sub nsw i64 %919, 2147483648
  %921 = trunc i64 %920 to i32
  %922 = load ptr, ptr %41, align 8, !tbaa !5
  %923 = load i32, ptr %42, align 4, !tbaa !11
  %924 = zext i32 %923 to i64
  %925 = getelementptr inbounds i32, ptr %922, i64 %924
  store i32 %921, ptr %925, align 4, !tbaa !11
  br label %926

926:                                              ; preds = %880, %877
  br label %927

927:                                              ; preds = %926, %844
  br label %928

928:                                              ; preds = %927, %818
  br label %929

929:                                              ; preds = %928, %803
  br label %930

930:                                              ; preds = %929
  %931 = load i32, ptr %42, align 4, !tbaa !11
  %932 = add i32 %931, 1
  store i32 %932, ptr %42, align 4, !tbaa !11
  br label %793, !llvm.loop !30

933:                                              ; preds = %799
  %934 = load i32, ptr %28, align 4, !tbaa !11
  %935 = icmp ne i32 %934, 0
  br i1 %935, label %936, label %941

936:                                              ; preds = %933
  %937 = load ptr, ptr %7, align 8, !tbaa !5
  %938 = load ptr, ptr %41, align 8, !tbaa !5
  %939 = load i32, ptr %39, align 4, !tbaa !11
  %940 = call i32 @FLAC__stream_encoder_process_interleaved(ptr noundef %937, ptr noundef %938, i32 noundef %939)
  store i32 %940, ptr %6, align 4, !tbaa !11
  br label %988

941:                                              ; preds = %933
  %942 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 64, ptr %43) #10
  %943 = load ptr, ptr %41, align 8, !tbaa !5
  store ptr %943, ptr %43, align 8, !tbaa !5
  %944 = getelementptr inbounds ptr, ptr %43, i64 1
  %945 = load ptr, ptr %41, align 8, !tbaa !5
  %946 = load i32, ptr %39, align 4, !tbaa !11
  %947 = zext i32 %946 to i64
  %948 = getelementptr inbounds i32, ptr %945, i64 %947
  store ptr %948, ptr %944, align 8, !tbaa !5
  %949 = getelementptr inbounds ptr, ptr %43, i64 2
  %950 = load ptr, ptr %41, align 8, !tbaa !5
  %951 = load i32, ptr %39, align 4, !tbaa !11
  %952 = mul i32 %951, 2
  %953 = zext i32 %952 to i64
  %954 = getelementptr inbounds i32, ptr %950, i64 %953
  store ptr %954, ptr %949, align 8, !tbaa !5
  %955 = getelementptr inbounds ptr, ptr %43, i64 3
  %956 = load ptr, ptr %41, align 8, !tbaa !5
  %957 = load i32, ptr %39, align 4, !tbaa !11
  %958 = mul i32 %957, 3
  %959 = zext i32 %958 to i64
  %960 = getelementptr inbounds i32, ptr %956, i64 %959
  store ptr %960, ptr %955, align 8, !tbaa !5
  %961 = getelementptr inbounds ptr, ptr %43, i64 4
  %962 = load ptr, ptr %41, align 8, !tbaa !5
  %963 = load i32, ptr %39, align 4, !tbaa !11
  %964 = mul i32 %963, 4
  %965 = zext i32 %964 to i64
  %966 = getelementptr inbounds i32, ptr %962, i64 %965
  store ptr %966, ptr %961, align 8, !tbaa !5
  %967 = getelementptr inbounds ptr, ptr %43, i64 5
  %968 = load ptr, ptr %41, align 8, !tbaa !5
  %969 = load i32, ptr %39, align 4, !tbaa !11
  %970 = mul i32 %969, 5
  %971 = zext i32 %970 to i64
  %972 = getelementptr inbounds i32, ptr %968, i64 %971
  store ptr %972, ptr %967, align 8, !tbaa !5
  %973 = getelementptr inbounds ptr, ptr %43, i64 6
  %974 = load ptr, ptr %41, align 8, !tbaa !5
  %975 = load i32, ptr %39, align 4, !tbaa !11
  %976 = mul i32 %975, 6
  %977 = zext i32 %976 to i64
  %978 = getelementptr inbounds i32, ptr %974, i64 %977
  store ptr %978, ptr %973, align 8, !tbaa !5
  %979 = getelementptr inbounds ptr, ptr %43, i64 7
  %980 = load ptr, ptr %41, align 8, !tbaa !5
  %981 = load i32, ptr %39, align 4, !tbaa !11
  %982 = mul i32 %981, 7
  %983 = zext i32 %982 to i64
  %984 = getelementptr inbounds i32, ptr %980, i64 %983
  store ptr %984, ptr %979, align 8, !tbaa !5
  %985 = getelementptr inbounds [8 x ptr], ptr %43, i64 0, i64 0
  %986 = load i32, ptr %39, align 4, !tbaa !11
  %987 = call i32 @FLAC__stream_encoder_process(ptr noundef %942, ptr noundef %985, i32 noundef %986)
  store i32 %987, ptr %6, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 64, ptr %43) #10
  br label %988

988:                                              ; preds = %941, %936
  %989 = load ptr, ptr %41, align 8, !tbaa !5
  call void @free(ptr noundef %989) #10
  br label %991

990:                                              ; preds = %772
  store i32 0, ptr %6, align 4, !tbaa !11
  br label %991

991:                                              ; preds = %990, %988
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #10
  br label %992

992:                                              ; preds = %991, %764, %761
  %993 = load ptr, ptr %7, align 8, !tbaa !5
  %994 = call i32 @FLAC__stream_encoder_get_state(ptr noundef %993)
  store i32 %994, ptr %8, align 4, !tbaa !31
  %995 = load i32, ptr %8, align 4, !tbaa !31
  %996 = icmp eq i32 %995, 0
  br i1 %996, label %1036, label %997

997:                                              ; preds = %992
  %998 = load i32, ptr %8, align 4, !tbaa !31
  %999 = icmp eq i32 %998, 1
  br i1 %999, label %1036, label %1000

1000:                                             ; preds = %997
  %1001 = load i32, ptr %8, align 4, !tbaa !31
  %1002 = icmp eq i32 %1001, 5
  br i1 %1002, label %1036, label %1003

1003:                                             ; preds = %1000
  %1004 = load i32, ptr %8, align 4, !tbaa !31
  %1005 = icmp eq i32 %1004, 8
  br i1 %1005, label %1016, label %1006

1006:                                             ; preds = %1003
  %1007 = load i32, ptr %8, align 4, !tbaa !31
  %1008 = icmp eq i32 %1007, 7
  br i1 %1008, label %1016, label %1009

1009:                                             ; preds = %1006
  %1010 = load i32, ptr %8, align 4, !tbaa !31
  %1011 = icmp eq i32 %1010, 3
  br i1 %1011, label %1012, label %1019

1012:                                             ; preds = %1009
  %1013 = load ptr, ptr %7, align 8, !tbaa !5
  %1014 = call i32 @FLAC__stream_encoder_get_verify_decoder_state(ptr noundef %1013)
  %1015 = icmp eq i32 %1014, 8
  br i1 %1015, label %1016, label %1019

1016:                                             ; preds = %1012, %1006, %1003
  %1017 = load i32, ptr @alloc_check_threshold, align 4, !tbaa !11
  %1018 = icmp slt i32 %1017, 2147483647
  br i1 %1018, label %1036, label %1019

1019:                                             ; preds = %1016, %1012, %1009
  %1020 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1021 = load ptr, ptr %7, align 8, !tbaa !5
  %1022 = call ptr @FLAC__stream_encoder_get_resolved_state_string(ptr noundef %1021)
  %1023 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1020, ptr noundef @.str.5, ptr noundef %1022) #10
  %1024 = load i32, ptr %8, align 4, !tbaa !31
  %1025 = icmp eq i32 %1024, 4
  br i1 %1025, label %1026, label %1035

1026:                                             ; preds = %1019
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #10
  %1027 = load ptr, ptr %7, align 8, !tbaa !5
  call void @FLAC__stream_encoder_get_verify_decoder_error_stats(ptr noundef %1027, ptr noundef null, ptr noundef %44, ptr noundef %45, ptr noundef %46, ptr noundef %47, ptr noundef %48)
  %1028 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1029 = load i32, ptr %44, align 4, !tbaa !11
  %1030 = load i32, ptr %45, align 4, !tbaa !11
  %1031 = load i32, ptr %46, align 4, !tbaa !11
  %1032 = load i32, ptr %47, align 4, !tbaa !11
  %1033 = load i32, ptr %48, align 4, !tbaa !11
  %1034 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1028, ptr noundef @.str.6, i32 noundef %1029, i32 noundef %1030, i32 noundef %1031, i32 noundef %1032, i32 noundef %1033) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #10
  br label %1035

1035:                                             ; preds = %1026, %1019
  call void @abort() #13
  unreachable

1036:                                             ; preds = %1016, %1000, %997, %992
  %1037 = load ptr, ptr %7, align 8, !tbaa !5
  %1038 = call i32 @FLAC__stream_encoder_finish(ptr noundef %1037)
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #10
  store i32 0, ptr %49, align 4, !tbaa !11
  br label %1039

1039:                                             ; preds = %1055, %1036
  %1040 = load i32, ptr %49, align 4, !tbaa !11
  %1041 = icmp ult i32 %1040, 16
  br i1 %1041, label %1043, label %1042

1042:                                             ; preds = %1039
  store i32 8, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #10
  br label %1058

1043:                                             ; preds = %1039
  %1044 = load i32, ptr %49, align 4, !tbaa !11
  %1045 = zext i32 %1044 to i64
  %1046 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %1045
  %1047 = load ptr, ptr %1046, align 8, !tbaa !5
  %1048 = icmp ne ptr null, %1047
  br i1 %1048, label %1049, label %1054

1049:                                             ; preds = %1043
  %1050 = load i32, ptr %49, align 4, !tbaa !11
  %1051 = zext i32 %1050 to i64
  %1052 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %1051
  %1053 = load ptr, ptr %1052, align 8, !tbaa !5
  call void @FLAC__metadata_object_delete(ptr noundef %1053)
  br label %1054

1054:                                             ; preds = %1049, %1043
  br label %1055

1055:                                             ; preds = %1054
  %1056 = load i32, ptr %49, align 4, !tbaa !11
  %1057 = add i32 %1056, 1
  store i32 %1057, ptr %49, align 4, !tbaa !11
  br label %1039, !llvm.loop !33

1058:                                             ; preds = %1042
  %1059 = load ptr, ptr %7, align 8, !tbaa !5
  call void @FLAC__stream_encoder_delete(ptr noundef %1059)
  store i32 0, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %1060

1060:                                             ; preds = %1058, %66, %60, %52
  call void @llvm.lifetime.end.p0(i64 96, ptr %29) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #10
  call void @llvm.lifetime.end.p0(i64 128, ptr %9) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #10
  %1061 = load i32, ptr %3, align 4
  ret i32 %1061
}

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

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

declare ptr @FLAC__stream_encoder_new() #3

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

declare void @FLAC__stream_encoder_delete(ptr noundef) #3

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

declare i32 @FLAC__stream_encoder_set_verify(ptr noundef, i32 noundef) #3

declare i32 @FLAC__stream_encoder_set_channels(ptr noundef, i32 noundef) #3

declare i32 @FLAC__stream_encoder_set_bits_per_sample(ptr noundef, i32 noundef) #3

declare i32 @FLAC__stream_encoder_set_sample_rate(ptr noundef, i32 noundef) #3

declare i32 @FLAC__stream_encoder_set_total_samples_estimate(ptr noundef, i64 noundef) #3

declare i32 @FLAC__stream_encoder_disable_instruction_set(ptr noundef, i32 noundef) #3

declare i32 @FLAC__stream_encoder_set_limit_min_bitrate(ptr noundef, i32 noundef) #3

declare i32 @FLAC__stream_encoder_set_compression_level(ptr noundef, i32 noundef) #3

declare i32 @FLAC__stream_encoder_set_blocksize(ptr noundef, i32 noundef) #3

declare i32 @FLAC__stream_encoder_set_max_lpc_order(ptr noundef, i32 noundef) #3

declare i32 @FLAC__stream_encoder_set_qlp_coeff_precision(ptr noundef, i32 noundef) #3

declare i32 @FLAC__stream_encoder_set_min_residual_partition_order(ptr noundef, i32 noundef) #3

declare i32 @FLAC__stream_encoder_set_streamable_subset(ptr noundef, i32 noundef) #3

declare i32 @FLAC__stream_encoder_set_do_qlp_coeff_prec_search(ptr noundef, i32 noundef) #3

declare i32 @FLAC__stream_encoder_set_do_escape_coding(ptr noundef, i32 noundef) #3

declare i32 @FLAC__stream_encoder_set_do_exhaustive_model_search(ptr noundef, i32 noundef) #3

declare i32 @FLAC__stream_encoder_set_max_residual_partition_order(ptr noundef, i32 noundef) #3

declare i32 @FLAC__stream_encoder_set_do_mid_side_stereo(ptr noundef, i32 noundef) #3

declare i32 @FLAC__stream_encoder_set_loose_mid_side_stereo(ptr noundef, i32 noundef) #3

declare i32 @FLAC__stream_encoder_disable_constant_subframes(ptr noundef, i32 noundef) #3

declare i32 @FLAC__stream_encoder_disable_fixed_subframes(ptr noundef, i32 noundef) #3

declare i32 @FLAC__stream_encoder_disable_verbatim_subframes(ptr noundef, i32 noundef) #3

declare ptr @FLAC__metadata_object_new(i32 noundef) #3

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

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

declare i32 @FLAC__metadata_object_application_set_data(ptr noundef, ptr noundef, i32 noundef, i32 noundef) #3

declare i32 @FLAC__metadata_object_seektable_template_append_spaced_points_by_samples(ptr noundef, i32 noundef, i64 noundef) #3

declare i32 @FLAC__metadata_object_vorbiscomment_entry_from_name_value_pair(ptr noundef, ptr noundef, ptr noundef) #3

declare i32 @FLAC__metadata_object_vorbiscomment_append_comment(ptr noundef, i32, ptr, i32 noundef) #3

declare i32 @FLAC__metadata_object_vorbiscomment_insert_comment(ptr noundef, i32 noundef, i32, ptr, i32 noundef) #3

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

declare void @FLAC__metadata_object_delete(ptr noundef) #3

declare i32 @FLAC__metadata_object_cuesheet_insert_blank_track(ptr noundef, i32 noundef) #3

declare i32 @FLAC__metadata_object_cuesheet_track_insert_blank_index(ptr noundef, i32 noundef, i32 noundef) #3

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

declare i32 @FLAC__stream_encoder_set_metadata(ptr noundef, ptr noundef, i32 noundef) #3

declare i32 @FLAC__stream_encoder_init_ogg_file(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

declare i32 @FLAC__stream_encoder_init_ogg_stream(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i32 @_ZL14write_callbackPK19FLAC__StreamEncoderPKhmjjPv(ptr noundef, ptr noundef, i64 noundef, i32 noundef, i32 noundef, ptr noundef) #8

declare i32 @FLAC__stream_encoder_init_file(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

declare i32 @FLAC__stream_encoder_init_stream(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

declare i32 @FLAC__stream_encoder_process_interleaved(ptr noundef, ptr noundef, i32 noundef) #3

declare i32 @FLAC__stream_encoder_process(ptr noundef, ptr noundef, i32 noundef) #3

declare i32 @FLAC__stream_encoder_get_state(ptr noundef) #3

declare i32 @FLAC__stream_encoder_get_verify_decoder_state(ptr noundef) #3

declare ptr @FLAC__stream_encoder_get_resolved_state_string(ptr noundef) #3

declare void @FLAC__stream_encoder_get_verify_decoder_error_stats(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

; Function Attrs: noreturn nounwind
declare void @abort() #9

declare i32 @FLAC__stream_encoder_finish(ptr noundef) #3

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!7, !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = !{!17, !12, i64 8}
!17 = !{!"_ZTS20FLAC__StreamMetadata", !18, i64 0, !12, i64 4, !12, i64 8, !7, i64 16}
!18 = !{!"_ZTS18FLAC__MetadataType", !7, i64 0}
!19 = !{!20, !20, i64 0}
!20 = !{!"bool", !7, i64 0}
!21 = !{i64 0, i64 4, !11, i64 8, i64 8, !5}
!22 = !{!23, !6, i64 8}
!23 = !{!"_ZTS40FLAC__StreamMetadata_VorbisComment_Entry", !12, i64 0, !6, i64 8}
!24 = !{i8 0, i8 2}
!25 = !{}
!26 = !{!27, !7, i64 8}
!27 = !{!"_ZTS35FLAC__StreamMetadata_CueSheet_Track", !10, i64 0, !7, i64 8, !7, i64 9, !12, i64 22, !12, i64 22, !7, i64 23, !6, i64 24}
!28 = !{!29, !29, i64 0}
!29 = !{!"_ZTS29FLAC__StreamEncoderInitStatus", !7, i64 0}
!30 = distinct !{!30, !15}
!31 = !{!32, !32, i64 0}
!32 = !{!"_ZTS24FLAC__StreamEncoderState", !7, i64 0}
!33 = distinct !{!33, !15}


; 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.FLAC__StreamMetadata_VorbisComment_Entry = type { i32, ptr }

@alloc_check_threshold = external dso_local local_unnamed_addr global i32, align 4
@alloc_check_counter = external dso_local local_unnamed_addr global i32, align 4
@stderr = external local_unnamed_addr global ptr, align 8
@.str = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [71 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local range(i32 0, 2) i32 @LLVMFuzzerTestOneInput(ptr nocapture noundef readonly %0, i64 noundef %1) local_unnamed_addr #0 {
  %3 = alloca [16 x ptr], align 16
  %4 = alloca %struct.FLAC__StreamMetadata_VorbisComment_Entry, align 8
  %5 = alloca [8 x ptr], align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %3) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(128) %3, i8 0, i64 128, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #11
  %11 = icmp ult i64 %1, 3
  br i1 %11, label %587, label %12

12:                                               ; preds = %2
  %13 = getelementptr inbounds i8, ptr %0, i64 2
  %14 = load i8, ptr %13, align 1, !tbaa !5
  %15 = zext i8 %14 to i32
  store i32 %15, ptr @alloc_check_threshold, align 4, !tbaa !8
  store i32 0, ptr @alloc_check_counter, align 4, !tbaa !8
  %16 = tail call ptr @FLAC__stream_encoder_new()
  %17 = icmp eq ptr %16, null
  br i1 %17, label %18, label %21

18:                                               ; preds = %12
  %19 = load ptr, ptr @stderr, align 8, !tbaa !10
  %20 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %19, ptr noundef nonnull @.str) #12
  br label %587

21:                                               ; preds = %12
  %22 = icmp ult i64 %1, 20
  br i1 %22, label %23, label %24

23:                                               ; preds = %21
  tail call void @FLAC__stream_encoder_delete(ptr noundef nonnull %16)
  br label %587

24:                                               ; preds = %21
  %25 = load i8, ptr %0, align 1, !tbaa !5
  %26 = zext i8 %25 to i32
  %27 = getelementptr inbounds i8, ptr %0, i64 1
  %28 = load i8, ptr %27, align 1, !tbaa !5
  %29 = zext i8 %28 to i32
  %30 = shl nuw nsw i32 %29, 8
  %31 = load i8, ptr %13, align 1, !tbaa !5
  %32 = zext i8 %31 to i32
  %33 = getelementptr inbounds i8, ptr %0, i64 3
  %34 = load i8, ptr %33, align 1, !tbaa !5
  %35 = getelementptr inbounds i8, ptr %0, i64 4
  %36 = load i8, ptr %35, align 1, !tbaa !5
  %37 = getelementptr inbounds i8, ptr %0, i64 5
  %38 = load i8, ptr %37, align 1, !tbaa !5
  %39 = zext i8 %38 to i64
  %40 = getelementptr inbounds i8, ptr %0, i64 6
  %41 = load i8, ptr %40, align 1, !tbaa !5
  %42 = zext i8 %41 to i64
  %43 = shl nuw nsw i64 %42, 24
  %44 = getelementptr inbounds i8, ptr %0, i64 7
  %45 = load i8, ptr %44, align 1, !tbaa !5
  %46 = zext i8 %45 to i64
  %47 = shl nuw nsw i64 %46, 16
  %48 = getelementptr inbounds i8, ptr %0, i64 8
  %49 = load i8, ptr %48, align 1, !tbaa !5
  %50 = zext i8 %49 to i64
  %51 = shl nuw nsw i64 %50, 8
  %52 = getelementptr inbounds i8, ptr %0, i64 9
  %53 = load i8, ptr %52, align 1, !tbaa !5
  %54 = zext i8 %53 to i64
  %55 = getelementptr inbounds i8, ptr %0, i64 10
  %56 = load i8, ptr %55, align 1, !tbaa !5
  %57 = zext i8 %56 to i32
  %58 = lshr i32 %57, 4
  %59 = and i32 %58, 3
  %60 = add nuw nsw i32 %59, 1
  %61 = zext nneg i32 %60 to i64
  %62 = getelementptr inbounds i8, ptr %0, i64 11
  %63 = load i8, ptr %62, align 1, !tbaa !5
  %64 = zext i8 %63 to i32
  %65 = getelementptr inbounds i8, ptr %0, i64 12
  %66 = load i8, ptr %65, align 1, !tbaa !5
  %67 = zext i8 %66 to i32
  %68 = getelementptr inbounds i8, ptr %0, i64 13
  %69 = load i8, ptr %68, align 1, !tbaa !5
  %70 = getelementptr inbounds i8, ptr %0, i64 14
  %71 = load i8, ptr %70, align 1, !tbaa !5
  %72 = getelementptr inbounds i8, ptr %0, i64 15
  %73 = load i8, ptr %72, align 1, !tbaa !5
  %74 = zext i8 %73 to i32
  %75 = getelementptr inbounds i8, ptr %0, i64 16
  %76 = load i8, ptr %75, align 1, !tbaa !5
  %77 = getelementptr inbounds i8, ptr %0, i64 17
  %78 = load i8, ptr %77, align 1, !tbaa !5
  %79 = getelementptr inbounds i8, ptr %0, i64 18
  %80 = load i8, ptr %79, align 1, !tbaa !5
  %81 = zext i8 %80 to i32
  %82 = and i32 %81, 1
  %83 = and i32 %81, 2
  %84 = and i32 %81, 4
  %85 = and i32 %81, 8
  %86 = and i32 %81, 16
  %87 = and i32 %81, 32
  %88 = and i32 %81, 64
  %89 = and i32 %81, 128
  %90 = getelementptr inbounds i8, ptr %0, i64 19
  %91 = load i8, ptr %90, align 1, !tbaa !5
  %92 = zext i8 %91 to i32
  %93 = and i32 %92, 1
  %94 = and i32 %92, 2
  %95 = and i32 %92, 4
  %96 = and i32 %92, 8
  %97 = and i32 %92, 16
  %98 = and i32 %92, 32
  %99 = and i32 %92, 64
  %100 = and i32 %92, 128
  %101 = shl nuw nsw i32 %26, 16
  %102 = or disjoint i32 %30, %101
  %103 = or disjoint i32 %102, %32
  %104 = zext i8 %34 to i32
  %105 = zext i8 %36 to i32
  %106 = shl nuw nsw i64 %39, 32
  %107 = or disjoint i64 %43, %106
  %108 = or disjoint i64 %107, %47
  %109 = or disjoint i64 %108, %51
  %110 = or disjoint i64 %109, %54
  %111 = and i32 %57, 15
  %112 = add i64 %1, -20
  %113 = udiv i64 %112, %61
  %114 = shl nuw nsw i32 %64, 8
  %115 = or disjoint i32 %114, %67
  %116 = and i32 %74, 240
  %117 = zext i8 %76 to i32
  %118 = zext i8 %78 to i32
  %119 = tail call i32 @FLAC__stream_encoder_set_verify(ptr noundef nonnull %16, i32 noundef %84)
  %120 = and i32 %119, 1
  %121 = tail call i32 @FLAC__stream_encoder_set_channels(ptr noundef nonnull %16, i32 noundef %104)
  %122 = and i32 %120, %121
  %123 = tail call i32 @FLAC__stream_encoder_set_bits_per_sample(ptr noundef nonnull %16, i32 noundef %105)
  %124 = and i32 %122, %123
  %125 = tail call i32 @FLAC__stream_encoder_set_sample_rate(ptr noundef nonnull %16, i32 noundef %103)
  %126 = and i32 %124, %125
  %127 = tail call i32 @FLAC__stream_encoder_set_total_samples_estimate(ptr noundef nonnull %16, i64 noundef %110)
  %128 = and i32 %126, %127
  %129 = tail call i32 @FLAC__stream_encoder_disable_instruction_set(ptr noundef nonnull %16, i32 noundef %118)
  %130 = and i32 %128, %129
  %131 = tail call i32 @FLAC__stream_encoder_set_limit_min_bitrate(ptr noundef nonnull %16, i32 noundef %100)
  %132 = and i32 %130, %131
  %133 = tail call i32 @FLAC__stream_encoder_set_compression_level(ptr noundef nonnull %16, i32 noundef %111)
  %134 = and i32 %132, %133
  %.not = icmp eq i32 %85, 0
  br i1 %.not, label %192, label %135

135:                                              ; preds = %24
  %136 = zext i8 %71 to i32
  %137 = zext i8 %69 to i32
  %138 = and i32 %74, 15
  %139 = tail call i32 @FLAC__stream_encoder_set_blocksize(ptr noundef nonnull %16, i32 noundef %115)
  %140 = tail call i32 @FLAC__stream_encoder_set_max_lpc_order(ptr noundef nonnull %16, i32 noundef %137)
  %141 = tail call i32 @FLAC__stream_encoder_set_qlp_coeff_precision(ptr noundef nonnull %16, i32 noundef %136)
  %142 = tail call i32 @FLAC__stream_encoder_set_min_residual_partition_order(ptr noundef nonnull %16, i32 noundef %138)
  %143 = and i32 %139, %140
  %144 = and i32 %143, %141
  %145 = and i32 %144, %142
  %146 = and i32 %145, %134
  %147 = icmp ult i64 %113, 131072
  br i1 %147, label %148, label %165

148:                                              ; preds = %135
  %149 = tail call i32 @FLAC__stream_encoder_set_streamable_subset(ptr noundef nonnull %16, i32 noundef %86)
  %150 = tail call i32 @FLAC__stream_encoder_set_do_qlp_coeff_prec_search(ptr noundef nonnull %16, i32 noundef %87)
  %151 = tail call i32 @FLAC__stream_encoder_set_do_escape_coding(ptr noundef nonnull %16, i32 noundef %88)
  %152 = tail call i32 @FLAC__stream_encoder_set_do_exhaustive_model_search(ptr noundef nonnull %16, i32 noundef %89)
  %153 = and i32 %149, %150
  %154 = and i32 %153, %151
  %155 = and i32 %154, %152
  %156 = and i32 %155, %146
  %157 = icmp ult i64 %113, 9218
  %158 = and i32 %81, 176
  %159 = icmp ne i32 %158, 160
  %or.cond8.not333 = or i1 %157, %159
  %160 = icmp eq i32 %116, 0
  %or.cond10 = select i1 %or.cond8.not333, i1 true, i1 %160
  %161 = icmp ult i32 %115, 4609
  %or.cond12 = select i1 %or.cond10, i1 true, i1 %161
  br i1 %or.cond12, label %162, label %181

162:                                              ; preds = %148
  %163 = tail call i32 @FLAC__stream_encoder_set_max_residual_partition_order(ptr noundef nonnull %16, i32 noundef %116)
  %164 = and i32 %163, %156
  br label %181

165:                                              ; preds = %135
  %.not325 = icmp eq i32 %86, 0
  br i1 %.not325, label %166, label %169

166:                                              ; preds = %165
  %167 = tail call i32 @FLAC__stream_encoder_set_streamable_subset(ptr noundef nonnull %16, i32 noundef 0)
  %168 = and i32 %167, %146
  br label %181

169:                                              ; preds = %165
  %.not326 = icmp eq i32 %88, 0
  br i1 %.not326, label %173, label %170

170:                                              ; preds = %169
  %171 = tail call i32 @FLAC__stream_encoder_set_do_escape_coding(ptr noundef nonnull %16, i32 noundef 1)
  %172 = and i32 %171, %146
  br label %181

173:                                              ; preds = %169
  %.not327 = icmp eq i32 %89, 0
  br i1 %.not327, label %177, label %174

174:                                              ; preds = %173
  %175 = tail call i32 @FLAC__stream_encoder_set_do_exhaustive_model_search(ptr noundef nonnull %16, i32 noundef 1)
  %176 = and i32 %175, %146
  br label %181

177:                                              ; preds = %173
  %.not328 = icmp eq i32 %87, 0
  br i1 %.not328, label %181, label %178

178:                                              ; preds = %177
  %179 = tail call i32 @FLAC__stream_encoder_set_do_qlp_coeff_prec_search(ptr noundef nonnull %16, i32 noundef 1)
  %180 = and i32 %179, %146
  br label %181

181:                                              ; preds = %166, %174, %178, %177, %170, %162, %148
  %.0300 = phi i32 [ %164, %162 ], [ %156, %148 ], [ %172, %170 ], [ %176, %174 ], [ %180, %178 ], [ %146, %177 ], [ %168, %166 ]
  %182 = tail call i32 @FLAC__stream_encoder_set_do_mid_side_stereo(ptr noundef nonnull %16, i32 noundef %93)
  %183 = and i32 %182, %.0300
  %184 = tail call i32 @FLAC__stream_encoder_set_loose_mid_side_stereo(ptr noundef nonnull %16, i32 noundef %94)
  %185 = and i32 %183, %184
  %186 = tail call i32 @FLAC__stream_encoder_disable_constant_subframes(ptr noundef nonnull %16, i32 noundef %95)
  %187 = and i32 %185, %186
  %188 = tail call i32 @FLAC__stream_encoder_disable_fixed_subframes(ptr noundef nonnull %16, i32 noundef %96)
  %189 = and i32 %187, %188
  %190 = tail call i32 @FLAC__stream_encoder_disable_verbatim_subframes(ptr noundef nonnull %16, i32 noundef %97)
  %191 = and i32 %189, %190
  br label %192

192:                                              ; preds = %181, %24
  %.1 = phi i32 [ %191, %181 ], [ %134, %24 ]
  %193 = icmp ne i32 %.1, 0
  %194 = icmp ne i32 %99, 0
  %or.cond15 = select i1 %193, i1 %194, i1 false
  br i1 %or.cond15, label %.thread, label %195

.thread:                                          ; preds = %192
  store i32 2147483647, ptr @alloc_check_threshold, align 4, !tbaa !8
  br label %196

195:                                              ; preds = %192
  br i1 %193, label %196, label %.thread438

196:                                              ; preds = %.thread, %195
  %197 = and i32 %117, 1
  %.not339 = icmp eq i32 %197, 0
  br i1 %.not339, label %.thread382, label %198

198:                                              ; preds = %196
  %199 = tail call ptr @FLAC__metadata_object_new(i32 noundef 0)
  store ptr %199, ptr %3, align 16, !tbaa !10
  %200 = icmp eq ptr %199, null
  br i1 %200, label %.thread438, label %.thread382

.thread382:                                       ; preds = %196, %198
  %.0302385 = phi i32 [ 1, %198 ], [ 0, %196 ]
  %201 = and i32 %117, 2
  %202 = icmp ne i32 %201, 0
  %203 = icmp ugt i64 %1, 21
  %or.cond17 = and i1 %203, %202
  br i1 %or.cond17, label %204, label %220

204:                                              ; preds = %.thread382
  %205 = tail call ptr @FLAC__metadata_object_new(i32 noundef 1)
  %206 = zext nneg i32 %.0302385 to i64
  %207 = getelementptr inbounds [16 x ptr], ptr %3, i64 0, i64 %206
  store ptr %205, ptr %207, align 8, !tbaa !10
  %208 = icmp eq ptr %205, null
  br i1 %208, label %.thread438, label %209

209:                                              ; preds = %204
  %210 = getelementptr inbounds i8, ptr %0, i64 20
  %211 = load i8, ptr %210, align 1, !tbaa !5
  %212 = zext i8 %211 to i32
  %213 = shl nuw nsw i32 %212, 8
  %214 = getelementptr inbounds i8, ptr %0, i64 21
  %215 = load i8, ptr %214, align 1, !tbaa !5
  %216 = zext i8 %215 to i32
  %217 = or disjoint i32 %213, %216
  %218 = add nuw nsw i32 %.0302385, 1
  %219 = getelementptr inbounds i8, ptr %205, i64 8
  store i32 %217, ptr %219, align 8, !tbaa !12
  br label %220

220:                                              ; preds = %.thread382, %209
  %.1303 = phi i32 [ %218, %209 ], [ %.0302385, %.thread382 ]
  %221 = and i32 %117, 4
  %222 = icmp ne i32 %221, 0
  %223 = icmp ne i64 %1, 20
  %or.cond19 = and i1 %223, %222
  br i1 %or.cond19, label %224, label %237

224:                                              ; preds = %220
  %225 = tail call noalias ptr @malloc(i64 noundef %112) #13
  %.not342 = icmp eq ptr %225, null
  br i1 %.not342, label %._crit_edge473, label %226

._crit_edge473:                                   ; preds = %224
  %.phi.trans.insert = zext nneg i32 %.1303 to i64
  %.phi.trans.insert474 = getelementptr inbounds [16 x ptr], ptr %3, i64 0, i64 %.phi.trans.insert
  %.pre = load ptr, ptr %.phi.trans.insert474, align 8, !tbaa !10
  br label %231

226:                                              ; preds = %224
  %227 = tail call ptr @FLAC__metadata_object_new(i32 noundef 2)
  %228 = zext nneg i32 %.1303 to i64
  %229 = getelementptr inbounds [16 x ptr], ptr %3, i64 0, i64 %228
  store ptr %227, ptr %229, align 8, !tbaa !10
  %230 = icmp eq ptr %227, null
  br i1 %230, label %.thread438, label %231

231:                                              ; preds = %._crit_edge473, %226
  %232 = phi ptr [ %.pre, %._crit_edge473 ], [ %227, %226 ]
  %233 = getelementptr inbounds i8, ptr %0, i64 20
  tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %225, ptr nonnull align 1 %233, i64 %112, i1 false)
  %234 = add nuw nsw i32 %.1303, 1
  %235 = trunc i64 %112 to i32
  %236 = tail call i32 @FLAC__metadata_object_application_set_data(ptr noundef %232, ptr noundef %225, i32 noundef %235, i32 noundef 0)
  br label %237

237:                                              ; preds = %220, %231
  %.3305 = phi i32 [ %.1303, %220 ], [ %234, %231 ]
  %238 = and i32 %117, 8
  %239 = icmp ne i32 %238, 0
  %240 = icmp ugt i64 %1, 25
  %or.cond21 = and i1 %240, %239
  br i1 %or.cond21, label %241, label %265

241:                                              ; preds = %237
  %242 = tail call ptr @FLAC__metadata_object_new(i32 noundef 3)
  %243 = zext nneg i32 %.3305 to i64
  %244 = getelementptr inbounds [16 x ptr], ptr %3, i64 0, i64 %243
  store ptr %242, ptr %244, align 8, !tbaa !10
  %245 = icmp eq ptr %242, null
  br i1 %245, label %.thread438, label %246

246:                                              ; preds = %241
  %247 = getelementptr inbounds i8, ptr %0, i64 22
  %248 = load i8, ptr %247, align 1, !tbaa !5
  %249 = zext i8 %248 to i32
  %250 = shl nuw nsw i32 %249, 8
  %251 = getelementptr inbounds i8, ptr %0, i64 23
  %252 = load i8, ptr %251, align 1, !tbaa !5
  %253 = zext i8 %252 to i32
  %254 = or disjoint i32 %250, %253
  %255 = getelementptr inbounds i8, ptr %0, i64 24
  %256 = load i8, ptr %255, align 1, !tbaa !5
  %257 = zext i8 %256 to i64
  %258 = shl nuw nsw i64 %257, 8
  %259 = getelementptr inbounds i8, ptr %0, i64 25
  %260 = load i8, ptr %259, align 1, !tbaa !5
  %261 = zext i8 %260 to i64
  %262 = or disjoint i64 %258, %261
  %263 = add nuw nsw i32 %.3305, 1
  %264 = tail call i32 @FLAC__metadata_object_seektable_template_append_spaced_points_by_samples(ptr noundef nonnull %242, i32 noundef %254, i64 noundef %262)
  br label %265

265:                                              ; preds = %246, %237
  %.4306 = phi i32 [ %263, %246 ], [ %.3305, %237 ]
  %266 = and i32 %117, 16
  %.not344 = icmp eq i32 %266, 0
  br i1 %.not344, label %285, label %267

267:                                              ; preds = %265
  %268 = tail call ptr @FLAC__metadata_object_new(i32 noundef 4)
  %269 = zext nneg i32 %.4306 to i64
  %270 = getelementptr inbounds [16 x ptr], ptr %3, i64 0, i64 %269
  store ptr %268, ptr %270, align 8, !tbaa !10
  %.not345 = icmp eq ptr %268, null
  br i1 %.not345, label %285, label %271

271:                                              ; preds = %267
  %272 = call i32 @FLAC__metadata_object_vorbiscomment_entry_from_name_value_pair(ptr noundef nonnull %4, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2)
  %.not346 = icmp eq i32 %272, 0
  br i1 %.not346, label %282, label %273

273:                                              ; preds = %271
  %274 = load ptr, ptr %270, align 8, !tbaa !10
  %.sroa.088.0.copyload = load i32, ptr %4, align 8, !tbaa !8
  %.sroa.290.0..sroa_idx = getelementptr inbounds i8, ptr %4, i64 8
  %.sroa.290.0.copyload = load ptr, ptr %.sroa.290.0..sroa_idx, align 8, !tbaa !10
  %275 = call i32 @FLAC__metadata_object_vorbiscomment_append_comment(ptr noundef %274, i32 %.sroa.088.0.copyload, ptr %.sroa.290.0.copyload, i32 noundef 0)
  %.not347 = icmp eq i32 %275, 0
  br i1 %.not347, label %.sink.split, label %276

276:                                              ; preds = %273
  %277 = call i32 @FLAC__metadata_object_vorbiscomment_entry_from_name_value_pair(ptr noundef nonnull %4, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.3)
  %.not348 = icmp eq i32 %277, 0
  br i1 %.not348, label %282, label %278

278:                                              ; preds = %276
  %279 = load ptr, ptr %270, align 8, !tbaa !10
  %.sroa.0.0.copyload = load i32, ptr %4, align 8, !tbaa !8
  %.sroa.287.0.copyload = load ptr, ptr %.sroa.290.0..sroa_idx, align 8, !tbaa !10
  %280 = call i32 @FLAC__metadata_object_vorbiscomment_insert_comment(ptr noundef %279, i32 noundef 0, i32 %.sroa.0.0.copyload, ptr %.sroa.287.0.copyload, i32 noundef 0)
  %.not349 = icmp eq i32 %280, 0
  br i1 %.not349, label %.sink.split, label %.critedge

.sink.split:                                      ; preds = %273, %278
  %281 = load ptr, ptr %.sroa.290.0..sroa_idx, align 8, !tbaa !15
  call void @free(ptr noundef %281) #11
  br label %282

282:                                              ; preds = %.sink.split, %271, %276
  %283 = load ptr, ptr %270, align 8, !tbaa !10
  call void @FLAC__metadata_object_delete(ptr noundef %283)
  store ptr null, ptr %270, align 8, !tbaa !10
  br label %285

.critedge:                                        ; preds = %278
  %284 = add nuw nsw i32 %.4306, 1
  br label %285

285:                                              ; preds = %282, %.critedge, %267, %265
  %.6308 = phi i32 [ %.4306, %267 ], [ %.4306, %265 ], [ %284, %.critedge ], [ %.4306, %282 ]
  %286 = and i32 %117, 32
  %.not350 = icmp eq i32 %286, 0
  br i1 %.not350, label %304, label %287

287:                                              ; preds = %285
  %288 = call ptr @FLAC__metadata_object_new(i32 noundef 5)
  %289 = zext nneg i32 %.6308 to i64
  %290 = getelementptr inbounds [16 x ptr], ptr %3, i64 0, i64 %289
  store ptr %288, ptr %290, align 8, !tbaa !10
  %.not351 = icmp eq ptr %288, null
  br i1 %.not351, label %304, label %291

291:                                              ; preds = %287
  %292 = call i32 @FLAC__metadata_object_cuesheet_insert_blank_track(ptr noundef nonnull %288, i32 noundef 0)
  %.not352 = icmp eq i32 %292, 0
  %293 = load ptr, ptr %290, align 8, !tbaa !10
  br i1 %.not352, label %294, label %295

294:                                              ; preds = %291
  call void @FLAC__metadata_object_delete(ptr noundef %293)
  store ptr null, ptr %290, align 8, !tbaa !10
  br label %304

295:                                              ; preds = %291
  %296 = call i32 @FLAC__metadata_object_cuesheet_track_insert_blank_index(ptr noundef %293, i32 noundef 0, i32 noundef 0)
  %.not353 = icmp eq i32 %296, 0
  %297 = load ptr, ptr %290, align 8, !tbaa !10
  br i1 %.not353, label %298, label %299

298:                                              ; preds = %295
  call void @FLAC__metadata_object_delete(ptr noundef %297)
  store ptr null, ptr %290, align 8, !tbaa !10
  br label %304

299:                                              ; preds = %295
  %300 = getelementptr inbounds i8, ptr %297, i64 168
  %301 = load ptr, ptr %300, align 8, !tbaa !5
  %302 = getelementptr inbounds i8, ptr %301, i64 8
  store i8 1, ptr %302, align 8, !tbaa !17
  %303 = add nuw nsw i32 %.6308, 1
  br label %304

304:                                              ; preds = %287, %298, %299, %294, %285
  %.7309 = phi i32 [ %303, %299 ], [ %.6308, %298 ], [ %.6308, %294 ], [ %.6308, %287 ], [ %.6308, %285 ]
  %305 = and i32 %117, 64
  %.not354 = icmp eq i32 %305, 0
  br i1 %.not354, label %311, label %306

306:                                              ; preds = %304
  %307 = call ptr @FLAC__metadata_object_new(i32 noundef 6)
  %308 = zext nneg i32 %.7309 to i64
  %309 = getelementptr inbounds [16 x ptr], ptr %3, i64 0, i64 %308
  store ptr %307, ptr %309, align 8, !tbaa !10
  %.not355 = icmp ne ptr %307, null
  %310 = zext i1 %.not355 to i32
  %spec.select = add nuw nsw i32 %.7309, %310
  br label %311

311:                                              ; preds = %306, %304
  %.8310 = phi i32 [ %.7309, %304 ], [ %spec.select, %306 ]
  %.not356 = icmp sgt i8 %76, -1
  br i1 %.not356, label %320, label %312

312:                                              ; preds = %311
  %313 = call ptr @FLAC__metadata_object_new(i32 noundef 7)
  %314 = zext nneg i32 %.8310 to i64
  %315 = getelementptr inbounds [16 x ptr], ptr %3, i64 0, i64 %314
  store ptr %313, ptr %315, align 8, !tbaa !10
  %.not357 = icmp eq ptr %313, null
  br i1 %.not357, label %320, label %.thread475

.thread475:                                       ; preds = %312
  %316 = getelementptr inbounds i8, ptr %313, i64 8
  store i32 24, ptr %316, align 8, !tbaa !12
  %317 = call noalias dereferenceable_or_null(24) ptr @calloc(i64 noundef 24, i64 noundef 1) #14
  %318 = getelementptr inbounds i8, ptr %313, i64 16
  store ptr %317, ptr %318, align 8, !tbaa !5
  %319 = add nuw nsw i32 %.8310, 1
  br label %321

320:                                              ; preds = %312, %311
  %.not441 = icmp eq i32 %.8310, 0
  br i1 %.not441, label %.thread433, label %321

321:                                              ; preds = %.thread475, %320
  %.9311478 = phi i32 [ %319, %.thread475 ], [ %.8310, %320 ]
  %322 = call i32 @FLAC__stream_encoder_set_metadata(ptr noundef nonnull %16, ptr noundef nonnull %3, i32 noundef %.9311478)
  %.not358 = icmp eq i32 %322, 0
  br i1 %.not358, label %.thread438, label %.thread433

.thread433:                                       ; preds = %320, %321
  %.not359 = icmp eq i32 %82, 0
  %.not360 = icmp eq i32 %98, 0
  br i1 %.not359, label %328, label %323

323:                                              ; preds = %.thread433
  br i1 %.not360, label %326, label %324

324:                                              ; preds = %323
  %325 = call i32 @FLAC__stream_encoder_init_ogg_file(ptr noundef nonnull %16, ptr noundef nonnull @.str.4, ptr noundef null, ptr noundef null)
  br label %333

326:                                              ; preds = %323
  %327 = call i32 @FLAC__stream_encoder_init_ogg_stream(ptr noundef nonnull %16, ptr noundef null, ptr noundef nonnull @_ZL14write_callbackPK19FLAC__StreamEncoderPKhmjjPv, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null)
  br label %333

328:                                              ; preds = %.thread433
  br i1 %.not360, label %331, label %329

329:                                              ; preds = %328
  %330 = call i32 @FLAC__stream_encoder_init_file(ptr noundef nonnull %16, ptr noundef nonnull @.str.4, ptr noundef null, ptr noundef null)
  br label %333

331:                                              ; preds = %328
  %332 = call i32 @FLAC__stream_encoder_init_stream(ptr noundef nonnull %16, ptr noundef nonnull @_ZL14write_callbackPK19FLAC__StreamEncoderPKhmjjPv, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null)
  br label %333

333:                                              ; preds = %329, %331, %324, %326
  %.0301 = phi i32 [ %325, %324 ], [ %327, %326 ], [ %330, %329 ], [ %332, %331 ]
  %.not362 = icmp eq i32 %.0301, 0
  br i1 %.not362, label %334, label %.thread438

334:                                              ; preds = %333
  %335 = mul nuw nsw i32 %60, %104
  %336 = add nuw nsw i32 %335, 26
  %337 = zext nneg i32 %336 to i64
  %338 = icmp ult i64 %337, %1
  br i1 %338, label %339, label %.thread438

339:                                              ; preds = %334
  %340 = add i64 %1, -26
  %341 = udiv i64 %340, %61
  %342 = zext i8 %34 to i64
  %343 = udiv i64 %341, %342
  %344 = trunc i64 %343 to i32
  %345 = getelementptr inbounds i8, ptr %0, i64 26
  %346 = shl i32 %344, 2
  %347 = mul i32 %346, %104
  %348 = zext i32 %347 to i64
  %349 = call noalias ptr @malloc(i64 noundef %348) #13
  %.not364 = icmp eq ptr %349, null
  br i1 %.not364, label %.thread438, label %.preheader

.preheader:                                       ; preds = %339
  %350 = mul i32 %344, %104
  %.not451 = icmp eq i32 %350, 0
  br i1 %.not451, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader
  %351 = zext i32 %350 to i64
  switch i32 %59, label %default.unreachable [
    i32 0, label %.lr.ph.split.us.preheader
    i32 1, label %.lr.ph.split.us444.preheader
    i32 2, label %.lr.ph.split.us446
    i32 3, label %.lr.ph.split.us448
  ]

.lr.ph.split.us444.preheader:                     ; preds = %.lr.ph
  %xtraiter = and i64 %351, 1
  %352 = icmp eq i32 %350, 1
  br i1 %352, label %._crit_edge.loopexit487.unr-lcssa, label %.lr.ph.split.us444.preheader.new

.lr.ph.split.us444.preheader.new:                 ; preds = %.lr.ph.split.us444.preheader
  %unroll_iter = and i64 %351, 4294967294
  br label %.lr.ph.split.us444

.lr.ph.split.us.preheader:                        ; preds = %.lr.ph
  %min.iters.check = icmp ult i32 %350, 8
  br i1 %min.iters.check, label %.lr.ph.split.us.preheader486, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph.split.us.preheader
  %n.vec = and i64 %351, 4294967288
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %353 = getelementptr inbounds i8, ptr %345, i64 %index
  %354 = getelementptr inbounds i8, ptr %353, i64 4
  %wide.load = load <4 x i8>, ptr %353, align 1, !tbaa !5
  %wide.load485 = load <4 x i8>, ptr %354, align 1, !tbaa !5
  %355 = zext <4 x i8> %wide.load to <4 x i32>
  %356 = zext <4 x i8> %wide.load485 to <4 x i32>
  %357 = add nsw <4 x i32> %355, <i32 -128, i32 -128, i32 -128, i32 -128>
  %358 = add nsw <4 x i32> %356, <i32 -128, i32 -128, i32 -128, i32 -128>
  %359 = getelementptr inbounds i32, ptr %349, i64 %index
  %360 = getelementptr inbounds i8, ptr %359, i64 16
  store <4 x i32> %357, ptr %359, align 4, !tbaa !8
  store <4 x i32> %358, ptr %360, align 4, !tbaa !8
  %index.next = add nuw i64 %index, 8
  %361 = icmp eq i64 %index.next, %n.vec
  br i1 %361, label %middle.block, label %vector.body, !llvm.loop !20

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %351
  br i1 %cmp.n, label %._crit_edge, label %.lr.ph.split.us.preheader486

.lr.ph.split.us.preheader486:                     ; preds = %middle.block, %.lr.ph.split.us.preheader
  %indvars.iv463.ph = phi i64 [ 0, %.lr.ph.split.us.preheader ], [ %n.vec, %middle.block ]
  br label %.lr.ph.split.us

.lr.ph.split.us:                                  ; preds = %.lr.ph.split.us.preheader486, %.lr.ph.split.us
  %indvars.iv463 = phi i64 [ %indvars.iv.next464, %.lr.ph.split.us ], [ %indvars.iv463.ph, %.lr.ph.split.us.preheader486 ]
  %362 = getelementptr inbounds i8, ptr %345, i64 %indvars.iv463
  %363 = load i8, ptr %362, align 1, !tbaa !5
  %364 = zext i8 %363 to i32
  %365 = add nsw i32 %364, -128
  %366 = getelementptr inbounds i32, ptr %349, i64 %indvars.iv463
  store i32 %365, ptr %366, align 4, !tbaa !8
  %indvars.iv.next464 = add nuw nsw i64 %indvars.iv463, 1
  %367 = icmp ult i64 %indvars.iv.next464, %351
  br i1 %367, label %.lr.ph.split.us, label %._crit_edge, !llvm.loop !24

.lr.ph.split.us444:                               ; preds = %.lr.ph.split.us444, %.lr.ph.split.us444.preheader.new
  %indvars.iv460 = phi i64 [ 0, %.lr.ph.split.us444.preheader.new ], [ %indvars.iv.next461.1, %.lr.ph.split.us444 ]
  %niter = phi i64 [ 0, %.lr.ph.split.us444.preheader.new ], [ %niter.next.1, %.lr.ph.split.us444 ]
  %368 = trunc nuw i64 %indvars.iv460 to i32
  %369 = shl i32 %368, 1
  %370 = zext i32 %369 to i64
  %371 = getelementptr inbounds i8, ptr %345, i64 %370
  %372 = load i8, ptr %371, align 1, !tbaa !5
  %373 = zext i8 %372 to i32
  %374 = shl nuw nsw i32 %373, 8
  %375 = or disjoint i32 %369, 1
  %376 = zext i32 %375 to i64
  %377 = getelementptr inbounds i8, ptr %345, i64 %376
  %378 = load i8, ptr %377, align 1, !tbaa !5
  %379 = zext i8 %378 to i32
  %380 = or disjoint i32 %374, %379
  %381 = add nsw i32 %380, -32768
  %382 = getelementptr inbounds i32, ptr %349, i64 %indvars.iv460
  store i32 %381, ptr %382, align 4, !tbaa !8
  %indvars.iv.next461 = or disjoint i64 %indvars.iv460, 1
  %383 = trunc nuw i64 %indvars.iv.next461 to i32
  %384 = shl i32 %383, 1
  %385 = zext i32 %384 to i64
  %386 = getelementptr inbounds i8, ptr %345, i64 %385
  %387 = load i8, ptr %386, align 1, !tbaa !5
  %388 = zext i8 %387 to i32
  %389 = shl nuw nsw i32 %388, 8
  %390 = or disjoint i32 %384, 1
  %391 = zext i32 %390 to i64
  %392 = getelementptr inbounds i8, ptr %345, i64 %391
  %393 = load i8, ptr %392, align 1, !tbaa !5
  %394 = zext i8 %393 to i32
  %395 = or disjoint i32 %389, %394
  %396 = add nsw i32 %395, -32768
  %397 = getelementptr inbounds i32, ptr %349, i64 %indvars.iv.next461
  store i32 %396, ptr %397, align 4, !tbaa !8
  %indvars.iv.next461.1 = add nuw nsw i64 %indvars.iv460, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1.not = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1.not, label %._crit_edge.loopexit487.unr-lcssa, label %.lr.ph.split.us444, !llvm.loop !25

.lr.ph.split.us446:                               ; preds = %.lr.ph, %.lr.ph.split.us446
  %indvars.iv457 = phi i64 [ %indvars.iv.next458, %.lr.ph.split.us446 ], [ 0, %.lr.ph ]
  %398 = trunc nuw i64 %indvars.iv457 to i32
  %399 = mul i32 %398, 3
  %400 = zext i32 %399 to i64
  %401 = getelementptr inbounds i8, ptr %345, i64 %400
  %402 = load i8, ptr %401, align 1, !tbaa !5
  %403 = zext i8 %402 to i32
  %404 = shl nuw nsw i32 %403, 16
  %405 = add i32 %399, 1
  %406 = zext i32 %405 to i64
  %407 = getelementptr inbounds i8, ptr %345, i64 %406
  %408 = load i8, ptr %407, align 1, !tbaa !5
  %409 = zext i8 %408 to i32
  %410 = shl nuw nsw i32 %409, 8
  %411 = or disjoint i32 %410, %404
  %412 = add i32 %399, 2
  %413 = zext i32 %412 to i64
  %414 = getelementptr inbounds i8, ptr %345, i64 %413
  %415 = load i8, ptr %414, align 1, !tbaa !5
  %416 = zext i8 %415 to i32
  %417 = or disjoint i32 %411, %416
  %418 = add nsw i32 %417, -8388608
  %419 = getelementptr inbounds i32, ptr %349, i64 %indvars.iv457
  store i32 %418, ptr %419, align 4, !tbaa !8
  %indvars.iv.next458 = add nuw nsw i64 %indvars.iv457, 1
  %420 = icmp ult i64 %indvars.iv.next458, %351
  br i1 %420, label %.lr.ph.split.us446, label %._crit_edge, !llvm.loop !25

.lr.ph.split.us448:                               ; preds = %.lr.ph, %.lr.ph.split.us448
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph.split.us448 ], [ 0, %.lr.ph ]
  %421 = trunc nuw i64 %indvars.iv to i32
  %422 = shl i32 %421, 2
  %423 = zext i32 %422 to i64
  %424 = getelementptr inbounds i8, ptr %345, i64 %423
  %425 = load i8, ptr %424, align 1, !tbaa !5
  %426 = zext i8 %425 to i32
  %427 = shl nuw i32 %426, 24
  %428 = or disjoint i32 %422, 1
  %429 = zext i32 %428 to i64
  %430 = getelementptr inbounds i8, ptr %345, i64 %429
  %431 = load i8, ptr %430, align 1, !tbaa !5
  %432 = zext i8 %431 to i32
  %433 = shl nuw nsw i32 %432, 16
  %434 = or disjoint i32 %433, %427
  %435 = or disjoint i32 %422, 2
  %436 = zext i32 %435 to i64
  %437 = getelementptr inbounds i8, ptr %345, i64 %436
  %438 = load i8, ptr %437, align 1, !tbaa !5
  %439 = zext i8 %438 to i32
  %440 = shl nuw nsw i32 %439, 8
  %441 = or disjoint i32 %434, %440
  %442 = or disjoint i32 %422, 3
  %443 = zext i32 %442 to i64
  %444 = getelementptr inbounds i8, ptr %345, i64 %443
  %445 = load i8, ptr %444, align 1, !tbaa !5
  %446 = zext i8 %445 to i32
  %447 = or disjoint i32 %441, %446
  %448 = xor i32 %447, -2147483648
  %449 = getelementptr inbounds i32, ptr %349, i64 %indvars.iv
  store i32 %448, ptr %449, align 4, !tbaa !8
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %450 = icmp ult i64 %indvars.iv.next, %351
  br i1 %450, label %.lr.ph.split.us448, label %._crit_edge, !llvm.loop !25

default.unreachable:                              ; preds = %.lr.ph
  unreachable

._crit_edge.loopexit487.unr-lcssa:                ; preds = %.lr.ph.split.us444, %.lr.ph.split.us444.preheader
  %indvars.iv460.unr = phi i64 [ 0, %.lr.ph.split.us444.preheader ], [ %indvars.iv.next461.1, %.lr.ph.split.us444 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.split.us444.epil

.lr.ph.split.us444.epil:                          ; preds = %._crit_edge.loopexit487.unr-lcssa
  %451 = trunc nuw i64 %indvars.iv460.unr to i32
  %452 = shl i32 %451, 1
  %453 = zext i32 %452 to i64
  %454 = getelementptr inbounds i8, ptr %345, i64 %453
  %455 = load i8, ptr %454, align 1, !tbaa !5
  %456 = zext i8 %455 to i32
  %457 = shl nuw nsw i32 %456, 8
  %458 = or disjoint i32 %452, 1
  %459 = zext i32 %458 to i64
  %460 = getelementptr inbounds i8, ptr %345, i64 %459
  %461 = load i8, ptr %460, align 1, !tbaa !5
  %462 = zext i8 %461 to i32
  %463 = or disjoint i32 %457, %462
  %464 = add nsw i32 %463, -32768
  %465 = getelementptr inbounds i32, ptr %349, i64 %indvars.iv460.unr
  store i32 %464, ptr %465, align 4, !tbaa !8
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.split.us448, %.lr.ph.split.us446, %.lr.ph.split.us444.epil, %._crit_edge.loopexit487.unr-lcssa, %.lr.ph.split.us, %middle.block, %.preheader
  %.not365 = icmp eq i32 %83, 0
  br i1 %.not365, label %468, label %466

466:                                              ; preds = %._crit_edge
  %467 = call i32 @FLAC__stream_encoder_process_interleaved(ptr noundef %16, ptr noundef nonnull %349, i32 noundef %344)
  br label %496

468:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5) #11
  store ptr %349, ptr %5, align 8, !tbaa !10
  %469 = getelementptr inbounds i8, ptr %5, i64 8
  %470 = and i64 %343, 4294967295
  %471 = getelementptr inbounds i32, ptr %349, i64 %470
  store ptr %471, ptr %469, align 8, !tbaa !10
  %472 = getelementptr inbounds i8, ptr %5, i64 16
  %473 = shl i64 %343, 1
  %474 = and i64 %473, 4294967294
  %475 = getelementptr inbounds i32, ptr %349, i64 %474
  store ptr %475, ptr %472, align 8, !tbaa !10
  %476 = getelementptr inbounds i8, ptr %5, i64 24
  %477 = mul i64 %343, 3
  %478 = and i64 %477, 4294967295
  %479 = getelementptr inbounds i32, ptr %349, i64 %478
  store ptr %479, ptr %476, align 8, !tbaa !10
  %480 = getelementptr inbounds i8, ptr %5, i64 32
  %481 = zext i32 %346 to i64
  %482 = getelementptr inbounds i32, ptr %349, i64 %481
  store ptr %482, ptr %480, align 8, !tbaa !10
  %483 = getelementptr inbounds i8, ptr %5, i64 40
  %484 = mul i64 %343, 5
  %485 = and i64 %484, 4294967295
  %486 = getelementptr inbounds i32, ptr %349, i64 %485
  store ptr %486, ptr %483, align 8, !tbaa !10
  %487 = getelementptr inbounds i8, ptr %5, i64 48
  %488 = mul i64 %343, 6
  %489 = and i64 %488, 4294967294
  %490 = getelementptr inbounds i32, ptr %349, i64 %489
  store ptr %490, ptr %487, align 8, !tbaa !10
  %491 = getelementptr inbounds i8, ptr %5, i64 56
  %492 = mul i64 %343, 7
  %493 = and i64 %492, 4294967295
  %494 = getelementptr inbounds i32, ptr %349, i64 %493
  store ptr %494, ptr %491, align 8, !tbaa !10
  %495 = call i32 @FLAC__stream_encoder_process(ptr noundef %16, ptr noundef nonnull %5, i32 noundef %344)
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #11
  br label %496

496:                                              ; preds = %468, %466
  call void @free(ptr noundef nonnull %349) #11
  br label %.thread438

.thread438:                                       ; preds = %241, %226, %198, %204, %195, %321, %333, %496, %339, %334
  %497 = call i32 @FLAC__stream_encoder_get_state(ptr noundef %16)
  switch i32 %497, label %498 [
    i32 5, label %522
    i32 1, label %522
    i32 0, label %522
  ]

498:                                              ; preds = %.thread438
  %499 = add i32 %497, -7
  %or.cond29 = icmp ult i32 %499, 2
  br i1 %or.cond29, label %507, label %500

500:                                              ; preds = %498
  %501 = icmp eq i32 %497, 3
  br i1 %501, label %502, label %508

502:                                              ; preds = %500
  %503 = call i32 @FLAC__stream_encoder_get_verify_decoder_state(ptr noundef %16)
  %504 = icmp eq i32 %503, 8
  %505 = load i32, ptr @alloc_check_threshold, align 4
  %506 = icmp ne i32 %505, 2147483647
  %or.cond31 = select i1 %504, i1 %506, i1 false
  br i1 %or.cond31, label %522, label %508

507:                                              ; preds = %498
  %.old = load i32, ptr @alloc_check_threshold, align 4, !tbaa !8
  %.old30.not = icmp eq i32 %.old, 2147483647
  br i1 %.old30.not, label %508, label %522

508:                                              ; preds = %507, %502, %500
  %509 = load ptr, ptr @stderr, align 8, !tbaa !10
  %510 = call ptr @FLAC__stream_encoder_get_resolved_state_string(ptr noundef %16)
  %511 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %509, ptr noundef nonnull @.str.5, ptr noundef %510) #12
  %512 = icmp eq i32 %497, 4
  br i1 %512, label %513, label %521

513:                                              ; preds = %508
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #11
  call void @FLAC__stream_encoder_get_verify_decoder_error_stats(ptr noundef %16, ptr noundef null, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef nonnull %10)
  %514 = load ptr, ptr @stderr, align 8, !tbaa !10
  %515 = load i32, ptr %6, align 4, !tbaa !8
  %516 = load i32, ptr %7, align 4, !tbaa !8
  %517 = load i32, ptr %8, align 4, !tbaa !8
  %518 = load i32, ptr %9, align 4, !tbaa !8
  %519 = load i32, ptr %10, align 4, !tbaa !8
  %520 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %514, ptr noundef nonnull @.str.6, i32 noundef %515, i32 noundef %516, i32 noundef %517, i32 noundef %518, i32 noundef %519) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #11
  br label %521

521:                                              ; preds = %513, %508
  call void @abort() #15
  unreachable

522:                                              ; preds = %.thread438, %.thread438, %.thread438, %502, %507
  %523 = call i32 @FLAC__stream_encoder_finish(ptr noundef %16)
  %524 = load ptr, ptr %3, align 16, !tbaa !10
  %.not366 = icmp eq ptr %524, null
  br i1 %.not366, label %526, label %525

525:                                              ; preds = %522
  call void @FLAC__metadata_object_delete(ptr noundef nonnull %524)
  br label %526

526:                                              ; preds = %522, %525
  %527 = getelementptr inbounds i8, ptr %3, i64 8
  %528 = load ptr, ptr %527, align 8, !tbaa !10
  %.not366.1 = icmp eq ptr %528, null
  br i1 %.not366.1, label %530, label %529

529:                                              ; preds = %526
  call void @FLAC__metadata_object_delete(ptr noundef nonnull %528)
  br label %530

530:                                              ; preds = %529, %526
  %531 = getelementptr inbounds i8, ptr %3, i64 16
  %532 = load ptr, ptr %531, align 16, !tbaa !10
  %.not366.2 = icmp eq ptr %532, null
  br i1 %.not366.2, label %534, label %533

533:                                              ; preds = %530
  call void @FLAC__metadata_object_delete(ptr noundef nonnull %532)
  br label %534

534:                                              ; preds = %533, %530
  %535 = getelementptr inbounds i8, ptr %3, i64 24
  %536 = load ptr, ptr %535, align 8, !tbaa !10
  %.not366.3 = icmp eq ptr %536, null
  br i1 %.not366.3, label %538, label %537

537:                                              ; preds = %534
  call void @FLAC__metadata_object_delete(ptr noundef nonnull %536)
  br label %538

538:                                              ; preds = %537, %534
  %539 = getelementptr inbounds i8, ptr %3, i64 32
  %540 = load ptr, ptr %539, align 16, !tbaa !10
  %.not366.4 = icmp eq ptr %540, null
  br i1 %.not366.4, label %542, label %541

541:                                              ; preds = %538
  call void @FLAC__metadata_object_delete(ptr noundef nonnull %540)
  br label %542

542:                                              ; preds = %541, %538
  %543 = getelementptr inbounds i8, ptr %3, i64 40
  %544 = load ptr, ptr %543, align 8, !tbaa !10
  %.not366.5 = icmp eq ptr %544, null
  br i1 %.not366.5, label %546, label %545

545:                                              ; preds = %542
  call void @FLAC__metadata_object_delete(ptr noundef nonnull %544)
  br label %546

546:                                              ; preds = %545, %542
  %547 = getelementptr inbounds i8, ptr %3, i64 48
  %548 = load ptr, ptr %547, align 16, !tbaa !10
  %.not366.6 = icmp eq ptr %548, null
  br i1 %.not366.6, label %550, label %549

549:                                              ; preds = %546
  call void @FLAC__metadata_object_delete(ptr noundef nonnull %548)
  br label %550

550:                                              ; preds = %549, %546
  %551 = getelementptr inbounds i8, ptr %3, i64 56
  %552 = load ptr, ptr %551, align 8, !tbaa !10
  %.not366.7 = icmp eq ptr %552, null
  br i1 %.not366.7, label %554, label %553

553:                                              ; preds = %550
  call void @FLAC__metadata_object_delete(ptr noundef nonnull %552)
  br label %554

554:                                              ; preds = %553, %550
  %555 = getelementptr inbounds i8, ptr %3, i64 64
  %556 = load ptr, ptr %555, align 16, !tbaa !10
  %.not366.8 = icmp eq ptr %556, null
  br i1 %.not366.8, label %558, label %557

557:                                              ; preds = %554
  call void @FLAC__metadata_object_delete(ptr noundef nonnull %556)
  br label %558

558:                                              ; preds = %557, %554
  %559 = getelementptr inbounds i8, ptr %3, i64 72
  %560 = load ptr, ptr %559, align 8, !tbaa !10
  %.not366.9 = icmp eq ptr %560, null
  br i1 %.not366.9, label %562, label %561

561:                                              ; preds = %558
  call void @FLAC__metadata_object_delete(ptr noundef nonnull %560)
  br label %562

562:                                              ; preds = %561, %558
  %563 = getelementptr inbounds i8, ptr %3, i64 80
  %564 = load ptr, ptr %563, align 16, !tbaa !10
  %.not366.10 = icmp eq ptr %564, null
  br i1 %.not366.10, label %566, label %565

565:                                              ; preds = %562
  call void @FLAC__metadata_object_delete(ptr noundef nonnull %564)
  br label %566

566:                                              ; preds = %565, %562
  %567 = getelementptr inbounds i8, ptr %3, i64 88
  %568 = load ptr, ptr %567, align 8, !tbaa !10
  %.not366.11 = icmp eq ptr %568, null
  br i1 %.not366.11, label %570, label %569

569:                                              ; preds = %566
  call void @FLAC__metadata_object_delete(ptr noundef nonnull %568)
  br label %570

570:                                              ; preds = %569, %566
  %571 = getelementptr inbounds i8, ptr %3, i64 96
  %572 = load ptr, ptr %571, align 16, !tbaa !10
  %.not366.12 = icmp eq ptr %572, null
  br i1 %.not366.12, label %574, label %573

573:                                              ; preds = %570
  call void @FLAC__metadata_object_delete(ptr noundef nonnull %572)
  br label %574

574:                                              ; preds = %573, %570
  %575 = getelementptr inbounds i8, ptr %3, i64 104
  %576 = load ptr, ptr %575, align 8, !tbaa !10
  %.not366.13 = icmp eq ptr %576, null
  br i1 %.not366.13, label %578, label %577

577:                                              ; preds = %574
  call void @FLAC__metadata_object_delete(ptr noundef nonnull %576)
  br label %578

578:                                              ; preds = %577, %574
  %579 = getelementptr inbounds i8, ptr %3, i64 112
  %580 = load ptr, ptr %579, align 16, !tbaa !10
  %.not366.14 = icmp eq ptr %580, null
  br i1 %.not366.14, label %582, label %581

581:                                              ; preds = %578
  call void @FLAC__metadata_object_delete(ptr noundef nonnull %580)
  br label %582

582:                                              ; preds = %581, %578
  %583 = getelementptr inbounds i8, ptr %3, i64 120
  %584 = load ptr, ptr %583, align 8, !tbaa !10
  %.not366.15 = icmp eq ptr %584, null
  br i1 %.not366.15, label %586, label %585

585:                                              ; preds = %582
  call void @FLAC__metadata_object_delete(ptr noundef nonnull %584)
  br label %586

586:                                              ; preds = %585, %582
  call void @FLAC__stream_encoder_delete(ptr noundef %16)
  br label %587

587:                                              ; preds = %2, %586, %23, %18
  %.0299 = phi i32 [ 1, %18 ], [ 0, %23 ], [ 0, %586 ], [ 0, %2 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #11
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %3) #11
  ret i32 %.0299
}

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

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

declare ptr @FLAC__stream_encoder_new() local_unnamed_addr #3

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

declare void @FLAC__stream_encoder_delete(ptr noundef) local_unnamed_addr #3

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

declare i32 @FLAC__stream_encoder_set_verify(ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_set_channels(ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_set_bits_per_sample(ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_set_sample_rate(ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_set_total_samples_estimate(ptr noundef, i64 noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_disable_instruction_set(ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_set_limit_min_bitrate(ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_set_compression_level(ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_set_blocksize(ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_set_max_lpc_order(ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_set_qlp_coeff_precision(ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_set_min_residual_partition_order(ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_set_streamable_subset(ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_set_do_qlp_coeff_prec_search(ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_set_do_escape_coding(ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_set_do_exhaustive_model_search(ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_set_max_residual_partition_order(ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_set_do_mid_side_stereo(ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_set_loose_mid_side_stereo(ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_disable_constant_subframes(ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_disable_fixed_subframes(ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_disable_verbatim_subframes(ptr noundef, i32 noundef) local_unnamed_addr #3

declare ptr @FLAC__metadata_object_new(i32 noundef) local_unnamed_addr #3

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

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

declare i32 @FLAC__metadata_object_application_set_data(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

declare i32 @FLAC__metadata_object_seektable_template_append_spaced_points_by_samples(ptr noundef, i32 noundef, i64 noundef) local_unnamed_addr #3

declare i32 @FLAC__metadata_object_vorbiscomment_entry_from_name_value_pair(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare i32 @FLAC__metadata_object_vorbiscomment_append_comment(ptr noundef, i32, ptr, i32 noundef) local_unnamed_addr #3

declare i32 @FLAC__metadata_object_vorbiscomment_insert_comment(ptr noundef, i32 noundef, i32, ptr, i32 noundef) local_unnamed_addr #3

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

declare void @FLAC__metadata_object_delete(ptr noundef) local_unnamed_addr #3

declare i32 @FLAC__metadata_object_cuesheet_insert_blank_track(ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @FLAC__metadata_object_cuesheet_track_insert_blank_index(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

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

declare i32 @FLAC__stream_encoder_set_metadata(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_init_ogg_file(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_init_ogg_stream(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i32 @_ZL14write_callbackPK19FLAC__StreamEncoderPKhmjjPv(ptr noundef, ptr noundef, i64 noundef, i32 noundef, i32 noundef, ptr noundef) #9

declare i32 @FLAC__stream_encoder_init_file(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_init_stream(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_process_interleaved(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_process(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_get_state(ptr noundef) local_unnamed_addr #3

declare i32 @FLAC__stream_encoder_get_verify_decoder_state(ptr noundef) local_unnamed_addr #3

declare ptr @FLAC__stream_encoder_get_resolved_state_string(ptr noundef) local_unnamed_addr #3

declare void @FLAC__stream_encoder_get_verify_decoder_error_stats(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: noreturn nounwind
declare void @abort() local_unnamed_addr #10

declare i32 @FLAC__stream_encoder_finish(ptr noundef) local_unnamed_addr #3

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"int", !6, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"any pointer", !6, i64 0}
!12 = !{!13, !9, i64 8}
!13 = !{!"_ZTS20FLAC__StreamMetadata", !14, i64 0, !9, i64 4, !9, i64 8, !6, i64 16}
!14 = !{!"_ZTS18FLAC__MetadataType", !6, i64 0}
!15 = !{!16, !11, i64 8}
!16 = !{!"_ZTS40FLAC__StreamMetadata_VorbisComment_Entry", !9, i64 0, !11, i64 8}
!17 = !{!18, !6, i64 8}
!18 = !{!"_ZTS35FLAC__StreamMetadata_CueSheet_Track", !19, i64 0, !6, i64 8, !6, i64 9, !9, i64 22, !9, i64 22, !6, i64 23, !11, i64 24}
!19 = !{!"long", !6, i64 0}
!20 = distinct !{!20, !21, !22, !23}
!21 = !{!"llvm.loop.mustprogress"}
!22 = !{!"llvm.loop.isvectorized", i32 1}
!23 = !{!"llvm.loop.unroll.runtime.disable"}
!24 = distinct !{!24, !21, !23, !22}
!25 = distinct !{!25, !21}


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