; LLVM IR from taichi-dev/taichi :: taichi/common (miniz)

; 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.mz_zip_writer_add_state = type { ptr, i64, i64 }
%struct.mz_zip_archive = type { i64, i64, i32, i32, i32, i32, i64, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.mz_zip_internal_state_tag = type { %struct.mz_zip_array, %struct.mz_zip_array, %struct.mz_zip_array, i32, i32, i32, ptr, i64, ptr, i64, i64 }
%struct.mz_zip_array = type { ptr, i64, i64, i32 }

@.str.12 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [66 x i8], align 1
@__PRETTY_FUNCTION__.mz_zip_writer_add_read_buf_callback = external hidden unnamed_addr constant [210 x i8], align 1

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

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

; Function Attrs: nounwind uwtable
declare dso_local i64 @mz_crc32(i64 noundef, ptr noundef, i64 noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @tdefl_create_comp_flags_from_zip_params(i32 noundef, i32 noundef, i32 noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @tdefl_init(ptr noundef, ptr noundef, ptr noundef, i32 noundef) #1

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @tdefl_compress_buffer(ptr noundef, ptr noundef, i64 noundef, i32 noundef) #1

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #3

; Function Attrs: alwaysinline nounwind uwtable
declare hidden i32 @mz_zip_set_error(ptr noundef, i32 noundef) #4

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

; Function Attrs: nounwind uwtable
declare hidden i32 @mz_zip_writer_validate_archive_name(ptr noundef) #1

; Function Attrs: nounwind uwtable
declare hidden void @mz_zip_time_t_to_dos_time(i64 noundef, ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @mz_zip_writer_compute_padding_needed_for_file_alignment(ptr noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @mz_zip_writer_write_zeros(ptr noundef, i64 noundef, i32 noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @mz_zip_writer_create_zip64_extra_data(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @mz_zip_writer_create_local_dir_header(ptr noundef, ptr noundef, i16 noundef zeroext, i16 noundef zeroext, i64 noundef, i64 noundef, i32 noundef, i16 noundef zeroext, i16 noundef zeroext, i16 noundef zeroext, i16 noundef zeroext) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @mz_zip_writer_add_put_buf_callback(ptr noundef, i32 noundef, ptr noundef) #1

; Function Attrs: alwaysinline nounwind uwtable
declare hidden void @mz_write_le32(ptr noundef, i32 noundef) #4

; Function Attrs: alwaysinline nounwind uwtable
declare hidden void @mz_write_le64(ptr noundef, i64 noundef) #4

; Function Attrs: nounwind uwtable
declare hidden i32 @mz_zip_writer_add_to_central_dir(ptr noundef, ptr noundef, i16 noundef zeroext, ptr noundef, i16 noundef zeroext, ptr noundef, i16 noundef zeroext, i64 noundef, i64 noundef, i32 noundef, i16 noundef zeroext, i16 noundef zeroext, i16 noundef zeroext, i16 noundef zeroext, i64 noundef, i32 noundef, ptr noundef, i32 noundef) #1

; Function Attrs: nounwind uwtable
define dso_local i32 @mz_zip_writer_add_read_buf_callback(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i64 noundef %4, ptr noundef %5, ptr noundef %6, i16 noundef zeroext %7, i32 noundef %8, ptr noundef %9, i32 noundef %10, ptr noundef %11, i32 noundef %12) #1 {
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca i64, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca i16, align 2
  %23 = alloca i32, align 4
  %24 = alloca ptr, align 8
  %25 = alloca i32, align 4
  %26 = alloca ptr, align 8
  %27 = alloca i32, align 4
  %28 = alloca i16, align 2
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i16, align 2
  %33 = alloca i16, align 2
  %34 = alloca i16, align 2
  %35 = alloca i16, align 2
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca i64, align 8
  %41 = alloca [30 x i8], align 16
  %42 = alloca ptr, align 8
  %43 = alloca i32, align 4
  %44 = alloca [28 x i8], align 16
  %45 = alloca ptr, align 8
  %46 = alloca i64, align 8
  %47 = alloca i64, align 8
  %48 = alloca i32, align 4
  %49 = alloca ptr, align 8
  %50 = alloca i64, align 8
  %51 = alloca i32, align 4
  %52 = alloca %struct.mz_zip_writer_add_state, align 8
  %53 = alloca ptr, align 8
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i64, align 8
  %57 = alloca [24 x i8], align 16
  %58 = alloca i32, align 4
  store ptr %0, ptr %15, align 8, !tbaa !5
  store ptr %1, ptr %16, align 8, !tbaa !5
  store ptr %2, ptr %17, align 8, !tbaa !5
  store ptr %3, ptr %18, align 8, !tbaa !5
  store i64 %4, ptr %19, align 8, !tbaa !9
  store ptr %5, ptr %20, align 8, !tbaa !5
  store ptr %6, ptr %21, align 8, !tbaa !5
  store i16 %7, ptr %22, align 2, !tbaa !11
  store i32 %8, ptr %23, align 4, !tbaa !13
  store ptr %9, ptr %24, align 8, !tbaa !5
  store i32 %10, ptr %25, align 4, !tbaa !13
  store ptr %11, ptr %26, align 8, !tbaa !5
  store i32 %12, ptr %27, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 2, ptr %28) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  store i32 0, ptr %29, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.start.p0(i64 2, ptr %32) #6
  store i16 0, ptr %32, align 2, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 2, ptr %33) #6
  store i16 0, ptr %33, align 2, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 2, ptr %34) #6
  store i16 0, ptr %34, align 2, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 2, ptr %35) #6
  store i16 0, ptr %35, align 2, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #6
  %59 = load ptr, ptr %15, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.mz_zip_archive, ptr %59, i32 0, i32 0
  %61 = load i64, ptr %60, align 8, !tbaa !15
  store i64 %61, ptr %37, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #6
  store i64 0, ptr %38, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #6
  store i64 0, ptr %39, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #6
  call void @llvm.lifetime.start.p0(i64 30, ptr %41) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #6
  store ptr null, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #6
  store i32 0, ptr %43, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 28, ptr %44) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #6
  store i64 0, ptr %46, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #6
  %62 = load i32, ptr %23, align 4, !tbaa !13
  %63 = icmp slt i32 %62, 0
  br i1 %63, label %64, label %65

64:                                               ; preds = %13
  store i32 6, ptr %23, align 4, !tbaa !13
  br label %65

65:                                               ; preds = %64, %13
  %66 = load i32, ptr %23, align 4, !tbaa !13
  %67 = and i32 %66, 15
  store i32 %67, ptr %30, align 4, !tbaa !13
  %68 = load i32, ptr %23, align 4, !tbaa !13
  %69 = and i32 %68, 131072
  %70 = icmp ne i32 %69, 0
  %71 = zext i1 %70 to i64
  %72 = select i1 %70, i32 0, i32 8
  %73 = trunc i32 %72 to i16
  store i16 %73, ptr %28, align 2, !tbaa !11
  %74 = load i32, ptr %23, align 4, !tbaa !13
  %75 = and i32 %74, 65536
  %76 = icmp ne i32 %75, 0
  br i1 %76, label %82, label %77

77:                                               ; preds = %65
  %78 = load i16, ptr %28, align 2, !tbaa !11
  %79 = zext i16 %78 to i32
  %80 = or i32 %79, 2048
  %81 = trunc i32 %80 to i16
  store i16 %81, ptr %28, align 2, !tbaa !11
  br label %82

82:                                               ; preds = %77, %65
  %83 = load ptr, ptr %15, align 8, !tbaa !5
  %84 = icmp ne ptr %83, null
  br i1 %84, label %85, label %108

85:                                               ; preds = %82
  %86 = load ptr, ptr %15, align 8, !tbaa !5
  %87 = getelementptr inbounds %struct.mz_zip_archive, ptr %86, i32 0, i32 15
  %88 = load ptr, ptr %87, align 8, !tbaa !17
  %89 = icmp ne ptr %88, null
  br i1 %89, label %90, label %108

90:                                               ; preds = %85
  %91 = load ptr, ptr %15, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct.mz_zip_archive, ptr %91, i32 0, i32 3
  %93 = load i32, ptr %92, align 4, !tbaa !18
  %94 = icmp ne i32 %93, 2
  br i1 %94, label %108, label %95

95:                                               ; preds = %90
  %96 = load ptr, ptr %16, align 8, !tbaa !5
  %97 = icmp ne ptr %96, null
  br i1 %97, label %98, label %108

98:                                               ; preds = %95
  %99 = load i16, ptr %22, align 2, !tbaa !11
  %100 = zext i16 %99 to i32
  %101 = icmp ne i32 %100, 0
  br i1 %101, label %102, label %105

102:                                              ; preds = %98
  %103 = load ptr, ptr %21, align 8, !tbaa !5
  %104 = icmp ne ptr %103, null
  br i1 %104, label %105, label %108

105:                                              ; preds = %102, %98
  %106 = load i32, ptr %30, align 4, !tbaa !13
  %107 = icmp ugt i32 %106, 10
  br i1 %107, label %108, label %111

108:                                              ; preds = %105, %102, %95, %90, %85, %82
  %109 = load ptr, ptr %15, align 8, !tbaa !5
  %110 = call i32 @mz_zip_set_error(ptr noundef %109, i32 noundef 24)
  store i32 %110, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %968

111:                                              ; preds = %105
  %112 = load ptr, ptr %15, align 8, !tbaa !5
  %113 = getelementptr inbounds %struct.mz_zip_archive, ptr %112, i32 0, i32 15
  %114 = load ptr, ptr %113, align 8, !tbaa !17
  store ptr %114, ptr %45, align 8, !tbaa !5
  %115 = load ptr, ptr %45, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %115, i32 0, i32 4
  %117 = load i32, ptr %116, align 4, !tbaa !19
  %118 = icmp ne i32 %117, 0
  br i1 %118, label %125, label %119

119:                                              ; preds = %111
  %120 = load i64, ptr %19, align 8, !tbaa !9
  %121 = icmp ugt i64 %120, 4294967295
  br i1 %121, label %122, label %125

122:                                              ; preds = %119
  %123 = load ptr, ptr %45, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %123, i32 0, i32 4
  store i32 1, ptr %124, align 4, !tbaa !19
  br label %125

125:                                              ; preds = %122, %119, %111
  %126 = load i32, ptr %23, align 4, !tbaa !13
  %127 = and i32 %126, 1024
  %128 = icmp ne i32 %127, 0
  br i1 %128, label %129, label %132

129:                                              ; preds = %125
  %130 = load ptr, ptr %15, align 8, !tbaa !5
  %131 = call i32 @mz_zip_set_error(ptr noundef %130, i32 noundef 24)
  store i32 %131, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %968

132:                                              ; preds = %125
  %133 = load ptr, ptr %16, align 8, !tbaa !5
  %134 = call i32 @mz_zip_writer_validate_archive_name(ptr noundef %133)
  %135 = icmp ne i32 %134, 0
  br i1 %135, label %139, label %136

136:                                              ; preds = %132
  %137 = load ptr, ptr %15, align 8, !tbaa !5
  %138 = call i32 @mz_zip_set_error(ptr noundef %137, i32 noundef 25)
  store i32 %138, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %968

139:                                              ; preds = %132
  %140 = load ptr, ptr %45, align 8, !tbaa !5
  %141 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %140, i32 0, i32 4
  %142 = load i32, ptr %141, align 4, !tbaa !19
  %143 = icmp ne i32 %142, 0
  br i1 %143, label %144, label %153

144:                                              ; preds = %139
  %145 = load ptr, ptr %15, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.mz_zip_archive, ptr %145, i32 0, i32 2
  %147 = load i32, ptr %146, align 8, !tbaa !22
  %148 = icmp eq i32 %147, -1
  br i1 %148, label %149, label %152

149:                                              ; preds = %144
  %150 = load ptr, ptr %15, align 8, !tbaa !5
  %151 = call i32 @mz_zip_set_error(ptr noundef %150, i32 noundef 2)
  store i32 %151, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %968

152:                                              ; preds = %144
  br label %162

153:                                              ; preds = %139
  %154 = load ptr, ptr %15, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.mz_zip_archive, ptr %154, i32 0, i32 2
  %156 = load i32, ptr %155, align 8, !tbaa !22
  %157 = icmp eq i32 %156, 65535
  br i1 %157, label %158, label %161

158:                                              ; preds = %153
  %159 = load ptr, ptr %45, align 8, !tbaa !5
  %160 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %159, i32 0, i32 4
  store i32 1, ptr %160, align 4, !tbaa !19
  br label %161

161:                                              ; preds = %158, %153
  br label %162

162:                                              ; preds = %161, %152
  %163 = load ptr, ptr %16, align 8, !tbaa !5
  %164 = call i64 @strlen(ptr noundef %163) #7
  store i64 %164, ptr %40, align 8, !tbaa !9
  %165 = load i64, ptr %40, align 8, !tbaa !9
  %166 = icmp ugt i64 %165, 65535
  br i1 %166, label %167, label %170

167:                                              ; preds = %162
  %168 = load ptr, ptr %15, align 8, !tbaa !5
  %169 = call i32 @mz_zip_set_error(ptr noundef %168, i32 noundef 25)
  store i32 %169, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %968

170:                                              ; preds = %162
  %171 = load ptr, ptr %15, align 8, !tbaa !5
  %172 = call i32 @mz_zip_writer_compute_padding_needed_for_file_alignment(ptr noundef %171)
  store i32 %172, ptr %31, align 4, !tbaa !13
  %173 = load ptr, ptr %45, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %173, i32 0, i32 0
  %175 = getelementptr inbounds %struct.mz_zip_array, ptr %174, i32 0, i32 1
  %176 = load i64, ptr %175, align 8, !tbaa !23
  %177 = add i64 %176, 46
  %178 = load i64, ptr %40, align 8, !tbaa !9
  %179 = add i64 %177, %178
  %180 = add i64 %179, 28
  %181 = load i16, ptr %22, align 2, !tbaa !11
  %182 = zext i16 %181 to i64
  %183 = add i64 %180, %182
  %184 = icmp uge i64 %183, 4294967295
  br i1 %184, label %185, label %188

185:                                              ; preds = %170
  %186 = load ptr, ptr %15, align 8, !tbaa !5
  %187 = call i32 @mz_zip_set_error(ptr noundef %186, i32 noundef 15)
  store i32 %187, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %968

188:                                              ; preds = %170
  %189 = load ptr, ptr %45, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %189, i32 0, i32 4
  %191 = load i32, ptr %190, align 4, !tbaa !19
  %192 = icmp ne i32 %191, 0
  br i1 %192, label %228, label %193

193:                                              ; preds = %188
  %194 = load ptr, ptr %15, align 8, !tbaa !5
  %195 = getelementptr inbounds %struct.mz_zip_archive, ptr %194, i32 0, i32 0
  %196 = load i64, ptr %195, align 8, !tbaa !15
  %197 = load i32, ptr %31, align 4, !tbaa !13
  %198 = zext i32 %197 to i64
  %199 = add i64 %196, %198
  %200 = add i64 %199, 30
  %201 = load i64, ptr %40, align 8, !tbaa !9
  %202 = add i64 %200, %201
  %203 = add i64 %202, 46
  %204 = load i64, ptr %40, align 8, !tbaa !9
  %205 = add i64 %203, %204
  %206 = load i16, ptr %22, align 2, !tbaa !11
  %207 = zext i16 %206 to i64
  %208 = add i64 %205, %207
  %209 = load i32, ptr %25, align 4, !tbaa !13
  %210 = zext i32 %209 to i64
  %211 = add i64 %208, %210
  %212 = load ptr, ptr %45, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %212, i32 0, i32 0
  %214 = getelementptr inbounds %struct.mz_zip_array, ptr %213, i32 0, i32 1
  %215 = load i64, ptr %214, align 8, !tbaa !23
  %216 = add i64 %211, %215
  %217 = add i64 %216, 22
  %218 = add i64 %217, 1024
  %219 = add i64 %218, 16
  %220 = load i32, ptr %27, align 4, !tbaa !13
  %221 = zext i32 %220 to i64
  %222 = add i64 %219, %221
  %223 = icmp ugt i64 %222, 4294967295
  br i1 %223, label %224, label %227

224:                                              ; preds = %193
  %225 = load ptr, ptr %45, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %225, i32 0, i32 4
  store i32 1, ptr %226, align 4, !tbaa !19
  br label %227

227:                                              ; preds = %224, %193
  br label %228

228:                                              ; preds = %227, %188
  %229 = load ptr, ptr %20, align 8, !tbaa !5
  %230 = icmp ne ptr %229, null
  br i1 %230, label %231, label %234

231:                                              ; preds = %228
  %232 = load ptr, ptr %20, align 8, !tbaa !5
  %233 = load i64, ptr %232, align 8, !tbaa !9
  call void @mz_zip_time_t_to_dos_time(i64 noundef %233, ptr noundef %33, ptr noundef %34)
  br label %234

234:                                              ; preds = %231, %228
  %235 = load i64, ptr %19, align 8, !tbaa !9
  %236 = icmp ule i64 %235, 3
  br i1 %236, label %237, label %238

237:                                              ; preds = %234
  store i32 0, ptr %30, align 4, !tbaa !13
  br label %238

238:                                              ; preds = %237, %234
  %239 = load ptr, ptr %15, align 8, !tbaa !5
  %240 = load i64, ptr %37, align 8, !tbaa !9
  %241 = load i32, ptr %31, align 4, !tbaa !13
  %242 = call i32 @mz_zip_writer_write_zeros(ptr noundef %239, i64 noundef %240, i32 noundef %241)
  %243 = icmp ne i32 %242, 0
  br i1 %243, label %247, label %244

244:                                              ; preds = %238
  %245 = load ptr, ptr %15, align 8, !tbaa !5
  %246 = call i32 @mz_zip_set_error(ptr noundef %245, i32 noundef 19)
  store i32 %246, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %968

247:                                              ; preds = %238
  %248 = load i32, ptr %31, align 4, !tbaa !13
  %249 = zext i32 %248 to i64
  %250 = load i64, ptr %37, align 8, !tbaa !9
  %251 = add i64 %250, %249
  store i64 %251, ptr %37, align 8, !tbaa !9
  %252 = load i64, ptr %37, align 8, !tbaa !9
  store i64 %252, ptr %36, align 8, !tbaa !9
  %253 = load ptr, ptr %15, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.mz_zip_archive, ptr %253, i32 0, i32 6
  %255 = load i64, ptr %254, align 8, !tbaa !24
  %256 = icmp ne i64 %255, 0
  br i1 %256, label %257, label %268

257:                                              ; preds = %247
  %258 = load i64, ptr %37, align 8, !tbaa !9
  %259 = load ptr, ptr %15, align 8, !tbaa !5
  %260 = getelementptr inbounds %struct.mz_zip_archive, ptr %259, i32 0, i32 6
  %261 = load i64, ptr %260, align 8, !tbaa !24
  %262 = sub i64 %261, 1
  %263 = and i64 %258, %262
  %264 = icmp eq i64 %263, 0
  br i1 %264, label %265, label %266

265:                                              ; preds = %257
  br label %267

266:                                              ; preds = %257
  call void @__assert_fail(ptr noundef @.str.24, ptr noundef @.str.12, i32 noundef 7063, ptr noundef @__PRETTY_FUNCTION__.mz_zip_writer_add_read_buf_callback) #8
  unreachable

267:                                              ; preds = %265
  br label %268

268:                                              ; preds = %267, %247
  %269 = load i64, ptr %19, align 8, !tbaa !9
  %270 = icmp ne i64 %269, 0
  br i1 %270, label %271, label %275

271:                                              ; preds = %268
  %272 = load i32, ptr %30, align 4, !tbaa !13
  %273 = icmp ne i32 %272, 0
  br i1 %273, label %274, label %275

274:                                              ; preds = %271
  store i16 8, ptr %32, align 2, !tbaa !11
  br label %275

275:                                              ; preds = %274, %271, %268
  %276 = getelementptr inbounds [30 x i8], ptr %41, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 16 %276, i8 0, i64 30, i1 false)
  %277 = load ptr, ptr %45, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %277, i32 0, i32 4
  %279 = load i32, ptr %278, align 4, !tbaa !19
  %280 = icmp ne i32 %279, 0
  br i1 %280, label %281, label %399

281:                                              ; preds = %275
  %282 = load i64, ptr %19, align 8, !tbaa !9
  %283 = icmp uge i64 %282, 4294967295
  br i1 %283, label %287, label %284

284:                                              ; preds = %281
  %285 = load i64, ptr %36, align 8, !tbaa !9
  %286 = icmp uge i64 %285, 4294967295
  br i1 %286, label %287, label %323

287:                                              ; preds = %284, %281
  %288 = getelementptr inbounds [28 x i8], ptr %44, i64 0, i64 0
  store ptr %288, ptr %42, align 8, !tbaa !5
  %289 = load i32, ptr %23, align 4, !tbaa !13
  %290 = and i32 %289, 131072
  %291 = icmp ne i32 %290, 0
  br i1 %291, label %292, label %313

292:                                              ; preds = %287
  %293 = getelementptr inbounds [28 x i8], ptr %44, i64 0, i64 0
  %294 = load i64, ptr %19, align 8, !tbaa !9
  %295 = icmp uge i64 %294, 4294967295
  br i1 %295, label %296, label %297

296:                                              ; preds = %292
  br label %298

297:                                              ; preds = %292
  br label %298

298:                                              ; preds = %297, %296
  %299 = phi ptr [ %38, %296 ], [ null, %297 ]
  %300 = load i64, ptr %19, align 8, !tbaa !9
  %301 = icmp uge i64 %300, 4294967295
  br i1 %301, label %302, label %303

302:                                              ; preds = %298
  br label %304

303:                                              ; preds = %298
  br label %304

304:                                              ; preds = %303, %302
  %305 = phi ptr [ %39, %302 ], [ null, %303 ]
  %306 = load i64, ptr %36, align 8, !tbaa !9
  %307 = icmp uge i64 %306, 4294967295
  br i1 %307, label %308, label %309

308:                                              ; preds = %304
  br label %310

309:                                              ; preds = %304
  br label %310

310:                                              ; preds = %309, %308
  %311 = phi ptr [ %36, %308 ], [ null, %309 ]
  %312 = call i32 @mz_zip_writer_create_zip64_extra_data(ptr noundef %293, ptr noundef %299, ptr noundef %305, ptr noundef %311)
  store i32 %312, ptr %43, align 4, !tbaa !13
  br label %322

313:                                              ; preds = %287
  %314 = getelementptr inbounds [28 x i8], ptr %44, i64 0, i64 0
  %315 = load i64, ptr %36, align 8, !tbaa !9
  %316 = icmp uge i64 %315, 4294967295
  br i1 %316, label %317, label %318

317:                                              ; preds = %313
  br label %319

318:                                              ; preds = %313
  br label %319

319:                                              ; preds = %318, %317
  %320 = phi ptr [ %36, %317 ], [ null, %318 ]
  %321 = call i32 @mz_zip_writer_create_zip64_extra_data(ptr noundef %314, ptr noundef null, ptr noundef null, ptr noundef %320)
  store i32 %321, ptr %43, align 4, !tbaa !13
  br label %322

322:                                              ; preds = %319, %310
  br label %323

323:                                              ; preds = %322, %284
  %324 = load ptr, ptr %15, align 8, !tbaa !5
  %325 = getelementptr inbounds [30 x i8], ptr %41, i64 0, i64 0
  %326 = load i64, ptr %40, align 8, !tbaa !9
  %327 = trunc i64 %326 to i16
  %328 = load i32, ptr %43, align 4, !tbaa !13
  %329 = load i32, ptr %25, align 4, !tbaa !13
  %330 = add i32 %328, %329
  %331 = trunc i32 %330 to i16
  %332 = load i16, ptr %32, align 2, !tbaa !11
  %333 = load i16, ptr %28, align 2, !tbaa !11
  %334 = load i16, ptr %33, align 2, !tbaa !11
  %335 = load i16, ptr %34, align 2, !tbaa !11
  %336 = call i32 @mz_zip_writer_create_local_dir_header(ptr noundef %324, ptr noundef %325, i16 noundef zeroext %327, i16 noundef zeroext %331, i64 noundef 0, i64 noundef 0, i32 noundef 0, i16 noundef zeroext %332, i16 noundef zeroext %333, i16 noundef zeroext %334, i16 noundef zeroext %335)
  %337 = icmp ne i32 %336, 0
  br i1 %337, label %341, label %338

338:                                              ; preds = %323
  %339 = load ptr, ptr %15, align 8, !tbaa !5
  %340 = call i32 @mz_zip_set_error(ptr noundef %339, i32 noundef 27)
  store i32 %340, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %968

341:                                              ; preds = %323
  %342 = load ptr, ptr %15, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.mz_zip_archive, ptr %342, i32 0, i32 12
  %344 = load ptr, ptr %343, align 8, !tbaa !25
  %345 = load ptr, ptr %15, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.mz_zip_archive, ptr %345, i32 0, i32 14
  %347 = load ptr, ptr %346, align 8, !tbaa !26
  %348 = load i64, ptr %37, align 8, !tbaa !9
  %349 = getelementptr inbounds [30 x i8], ptr %41, i64 0, i64 0
  %350 = call i64 %344(ptr noundef %347, i64 noundef %348, ptr noundef %349, i64 noundef 30)
  %351 = icmp ne i64 %350, 30
  br i1 %351, label %352, label %355

352:                                              ; preds = %341
  %353 = load ptr, ptr %15, align 8, !tbaa !5
  %354 = call i32 @mz_zip_set_error(ptr noundef %353, i32 noundef 19)
  store i32 %354, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %968

355:                                              ; preds = %341
  %356 = load i64, ptr %37, align 8, !tbaa !9
  %357 = add i64 %356, 30
  store i64 %357, ptr %37, align 8, !tbaa !9
  %358 = load ptr, ptr %15, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct.mz_zip_archive, ptr %358, i32 0, i32 12
  %360 = load ptr, ptr %359, align 8, !tbaa !25
  %361 = load ptr, ptr %15, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.mz_zip_archive, ptr %361, i32 0, i32 14
  %363 = load ptr, ptr %362, align 8, !tbaa !26
  %364 = load i64, ptr %37, align 8, !tbaa !9
  %365 = load ptr, ptr %16, align 8, !tbaa !5
  %366 = load i64, ptr %40, align 8, !tbaa !9
  %367 = call i64 %360(ptr noundef %363, i64 noundef %364, ptr noundef %365, i64 noundef %366)
  %368 = load i64, ptr %40, align 8, !tbaa !9
  %369 = icmp ne i64 %367, %368
  br i1 %369, label %370, label %373

370:                                              ; preds = %355
  %371 = load ptr, ptr %15, align 8, !tbaa !5
  %372 = call i32 @mz_zip_set_error(ptr noundef %371, i32 noundef 19)
  store i32 %372, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %968

373:                                              ; preds = %355
  %374 = load i64, ptr %40, align 8, !tbaa !9
  %375 = load i64, ptr %37, align 8, !tbaa !9
  %376 = add i64 %375, %374
  store i64 %376, ptr %37, align 8, !tbaa !9
  %377 = load ptr, ptr %15, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.mz_zip_archive, ptr %377, i32 0, i32 12
  %379 = load ptr, ptr %378, align 8, !tbaa !25
  %380 = load ptr, ptr %15, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.mz_zip_archive, ptr %380, i32 0, i32 14
  %382 = load ptr, ptr %381, align 8, !tbaa !26
  %383 = load i64, ptr %37, align 8, !tbaa !9
  %384 = getelementptr inbounds [28 x i8], ptr %44, i64 0, i64 0
  %385 = load i32, ptr %43, align 4, !tbaa !13
  %386 = zext i32 %385 to i64
  %387 = call i64 %379(ptr noundef %382, i64 noundef %383, ptr noundef %384, i64 noundef %386)
  %388 = load i32, ptr %43, align 4, !tbaa !13
  %389 = zext i32 %388 to i64
  %390 = icmp ne i64 %387, %389
  br i1 %390, label %391, label %394

391:                                              ; preds = %373
  %392 = load ptr, ptr %15, align 8, !tbaa !5
  %393 = call i32 @mz_zip_set_error(ptr noundef %392, i32 noundef 19)
  store i32 %393, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %968

394:                                              ; preds = %373
  %395 = load i32, ptr %43, align 4, !tbaa !13
  %396 = zext i32 %395 to i64
  %397 = load i64, ptr %37, align 8, !tbaa !9
  %398 = add i64 %397, %396
  store i64 %398, ptr %37, align 8, !tbaa !9
  br label %460

399:                                              ; preds = %275
  %400 = load i64, ptr %39, align 8, !tbaa !9
  %401 = icmp ugt i64 %400, 4294967295
  br i1 %401, label %405, label %402

402:                                              ; preds = %399
  %403 = load i64, ptr %37, align 8, !tbaa !9
  %404 = icmp ugt i64 %403, 4294967295
  br i1 %404, label %405, label %408

405:                                              ; preds = %402, %399
  %406 = load ptr, ptr %15, align 8, !tbaa !5
  %407 = call i32 @mz_zip_set_error(ptr noundef %406, i32 noundef 29)
  store i32 %407, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %968

408:                                              ; preds = %402
  %409 = load ptr, ptr %15, align 8, !tbaa !5
  %410 = getelementptr inbounds [30 x i8], ptr %41, i64 0, i64 0
  %411 = load i64, ptr %40, align 8, !tbaa !9
  %412 = trunc i64 %411 to i16
  %413 = load i32, ptr %25, align 4, !tbaa !13
  %414 = trunc i32 %413 to i16
  %415 = load i16, ptr %32, align 2, !tbaa !11
  %416 = load i16, ptr %28, align 2, !tbaa !11
  %417 = load i16, ptr %33, align 2, !tbaa !11
  %418 = load i16, ptr %34, align 2, !tbaa !11
  %419 = call i32 @mz_zip_writer_create_local_dir_header(ptr noundef %409, ptr noundef %410, i16 noundef zeroext %412, i16 noundef zeroext %414, i64 noundef 0, i64 noundef 0, i32 noundef 0, i16 noundef zeroext %415, i16 noundef zeroext %416, i16 noundef zeroext %417, i16 noundef zeroext %418)
  %420 = icmp ne i32 %419, 0
  br i1 %420, label %424, label %421

421:                                              ; preds = %408
  %422 = load ptr, ptr %15, align 8, !tbaa !5
  %423 = call i32 @mz_zip_set_error(ptr noundef %422, i32 noundef 27)
  store i32 %423, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %968

424:                                              ; preds = %408
  %425 = load ptr, ptr %15, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.mz_zip_archive, ptr %425, i32 0, i32 12
  %427 = load ptr, ptr %426, align 8, !tbaa !25
  %428 = load ptr, ptr %15, align 8, !tbaa !5
  %429 = getelementptr inbounds %struct.mz_zip_archive, ptr %428, i32 0, i32 14
  %430 = load ptr, ptr %429, align 8, !tbaa !26
  %431 = load i64, ptr %37, align 8, !tbaa !9
  %432 = getelementptr inbounds [30 x i8], ptr %41, i64 0, i64 0
  %433 = call i64 %427(ptr noundef %430, i64 noundef %431, ptr noundef %432, i64 noundef 30)
  %434 = icmp ne i64 %433, 30
  br i1 %434, label %435, label %438

435:                                              ; preds = %424
  %436 = load ptr, ptr %15, align 8, !tbaa !5
  %437 = call i32 @mz_zip_set_error(ptr noundef %436, i32 noundef 19)
  store i32 %437, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %968

438:                                              ; preds = %424
  %439 = load i64, ptr %37, align 8, !tbaa !9
  %440 = add i64 %439, 30
  store i64 %440, ptr %37, align 8, !tbaa !9
  %441 = load ptr, ptr %15, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.mz_zip_archive, ptr %441, i32 0, i32 12
  %443 = load ptr, ptr %442, align 8, !tbaa !25
  %444 = load ptr, ptr %15, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.mz_zip_archive, ptr %444, i32 0, i32 14
  %446 = load ptr, ptr %445, align 8, !tbaa !26
  %447 = load i64, ptr %37, align 8, !tbaa !9
  %448 = load ptr, ptr %16, align 8, !tbaa !5
  %449 = load i64, ptr %40, align 8, !tbaa !9
  %450 = call i64 %443(ptr noundef %446, i64 noundef %447, ptr noundef %448, i64 noundef %449)
  %451 = load i64, ptr %40, align 8, !tbaa !9
  %452 = icmp ne i64 %450, %451
  br i1 %452, label %453, label %456

453:                                              ; preds = %438
  %454 = load ptr, ptr %15, align 8, !tbaa !5
  %455 = call i32 @mz_zip_set_error(ptr noundef %454, i32 noundef 19)
  store i32 %455, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %968

456:                                              ; preds = %438
  %457 = load i64, ptr %40, align 8, !tbaa !9
  %458 = load i64, ptr %37, align 8, !tbaa !9
  %459 = add i64 %458, %457
  store i64 %459, ptr %37, align 8, !tbaa !9
  br label %460

460:                                              ; preds = %456, %394
  %461 = load i32, ptr %25, align 4, !tbaa !13
  %462 = icmp ugt i32 %461, 0
  br i1 %462, label %463, label %486

463:                                              ; preds = %460
  %464 = load ptr, ptr %15, align 8, !tbaa !5
  %465 = getelementptr inbounds %struct.mz_zip_archive, ptr %464, i32 0, i32 12
  %466 = load ptr, ptr %465, align 8, !tbaa !25
  %467 = load ptr, ptr %15, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.mz_zip_archive, ptr %467, i32 0, i32 14
  %469 = load ptr, ptr %468, align 8, !tbaa !26
  %470 = load i64, ptr %37, align 8, !tbaa !9
  %471 = load ptr, ptr %24, align 8, !tbaa !5
  %472 = load i32, ptr %25, align 4, !tbaa !13
  %473 = zext i32 %472 to i64
  %474 = call i64 %466(ptr noundef %469, i64 noundef %470, ptr noundef %471, i64 noundef %473)
  %475 = load i32, ptr %25, align 4, !tbaa !13
  %476 = zext i32 %475 to i64
  %477 = icmp ne i64 %474, %476
  br i1 %477, label %478, label %481

478:                                              ; preds = %463
  %479 = load ptr, ptr %15, align 8, !tbaa !5
  %480 = call i32 @mz_zip_set_error(ptr noundef %479, i32 noundef 19)
  store i32 %480, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %968

481:                                              ; preds = %463
  %482 = load i32, ptr %25, align 4, !tbaa !13
  %483 = zext i32 %482 to i64
  %484 = load i64, ptr %37, align 8, !tbaa !9
  %485 = add i64 %484, %483
  store i64 %485, ptr %37, align 8, !tbaa !9
  br label %486

486:                                              ; preds = %481, %460
  %487 = load i64, ptr %19, align 8, !tbaa !9
  %488 = icmp ne i64 %487, 0
  br i1 %488, label %489, label %729

489:                                              ; preds = %486
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #6
  %490 = load ptr, ptr %15, align 8, !tbaa !5
  %491 = getelementptr inbounds %struct.mz_zip_archive, ptr %490, i32 0, i32 7
  %492 = load ptr, ptr %491, align 8, !tbaa !27
  %493 = load ptr, ptr %15, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.mz_zip_archive, ptr %493, i32 0, i32 10
  %495 = load ptr, ptr %494, align 8, !tbaa !28
  %496 = call ptr %492(ptr noundef %495, i64 noundef 1, i64 noundef 65536)
  store ptr %496, ptr %49, align 8, !tbaa !5
  %497 = load ptr, ptr %49, align 8, !tbaa !5
  %498 = icmp ne ptr %497, null
  br i1 %498, label %502, label %499

499:                                              ; preds = %489
  %500 = load ptr, ptr %15, align 8, !tbaa !5
  %501 = call i32 @mz_zip_set_error(ptr noundef %500, i32 noundef 16)
  store i32 %501, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %726

502:                                              ; preds = %489
  %503 = load i32, ptr %30, align 4, !tbaa !13
  %504 = icmp ne i32 %503, 0
  br i1 %504, label %577, label %505

505:                                              ; preds = %502
  br label %506

506:                                              ; preds = %573, %505
  br label %507

507:                                              ; preds = %506
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #6
  %508 = load ptr, ptr %17, align 8, !tbaa !5
  %509 = load ptr, ptr %18, align 8, !tbaa !5
  %510 = load i64, ptr %46, align 8, !tbaa !9
  %511 = load ptr, ptr %49, align 8, !tbaa !5
  %512 = call i64 %508(ptr noundef %509, i64 noundef %510, ptr noundef %511, i64 noundef 65536)
  store i64 %512, ptr %50, align 8, !tbaa !9
  %513 = load i64, ptr %50, align 8, !tbaa !9
  %514 = icmp eq i64 %513, 0
  br i1 %514, label %515, label %516

515:                                              ; preds = %507
  store i32 3, ptr %48, align 4
  br label %571

516:                                              ; preds = %507
  %517 = load i64, ptr %50, align 8, !tbaa !9
  %518 = icmp ugt i64 %517, 65536
  br i1 %518, label %525, label %519

519:                                              ; preds = %516
  %520 = load i64, ptr %46, align 8, !tbaa !9
  %521 = load i64, ptr %50, align 8, !tbaa !9
  %522 = add i64 %520, %521
  %523 = load i64, ptr %19, align 8, !tbaa !9
  %524 = icmp ugt i64 %522, %523
  br i1 %524, label %525, label %535

525:                                              ; preds = %519, %516
  %526 = load ptr, ptr %15, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.mz_zip_archive, ptr %526, i32 0, i32 8
  %528 = load ptr, ptr %527, align 8, !tbaa !29
  %529 = load ptr, ptr %15, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct.mz_zip_archive, ptr %529, i32 0, i32 10
  %531 = load ptr, ptr %530, align 8, !tbaa !28
  %532 = load ptr, ptr %49, align 8, !tbaa !5
  call void %528(ptr noundef %531, ptr noundef %532)
  %533 = load ptr, ptr %15, align 8, !tbaa !5
  %534 = call i32 @mz_zip_set_error(ptr noundef %533, i32 noundef 20)
  store i32 %534, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %571

535:                                              ; preds = %519
  %536 = load ptr, ptr %15, align 8, !tbaa !5
  %537 = getelementptr inbounds %struct.mz_zip_archive, ptr %536, i32 0, i32 12
  %538 = load ptr, ptr %537, align 8, !tbaa !25
  %539 = load ptr, ptr %15, align 8, !tbaa !5
  %540 = getelementptr inbounds %struct.mz_zip_archive, ptr %539, i32 0, i32 14
  %541 = load ptr, ptr %540, align 8, !tbaa !26
  %542 = load i64, ptr %37, align 8, !tbaa !9
  %543 = load ptr, ptr %49, align 8, !tbaa !5
  %544 = load i64, ptr %50, align 8, !tbaa !9
  %545 = call i64 %538(ptr noundef %541, i64 noundef %542, ptr noundef %543, i64 noundef %544)
  %546 = load i64, ptr %50, align 8, !tbaa !9
  %547 = icmp ne i64 %545, %546
  br i1 %547, label %548, label %558

548:                                              ; preds = %535
  %549 = load ptr, ptr %15, align 8, !tbaa !5
  %550 = getelementptr inbounds %struct.mz_zip_archive, ptr %549, i32 0, i32 8
  %551 = load ptr, ptr %550, align 8, !tbaa !29
  %552 = load ptr, ptr %15, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.mz_zip_archive, ptr %552, i32 0, i32 10
  %554 = load ptr, ptr %553, align 8, !tbaa !28
  %555 = load ptr, ptr %49, align 8, !tbaa !5
  call void %551(ptr noundef %554, ptr noundef %555)
  %556 = load ptr, ptr %15, align 8, !tbaa !5
  %557 = call i32 @mz_zip_set_error(ptr noundef %556, i32 noundef 19)
  store i32 %557, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %571

558:                                              ; preds = %535
  %559 = load i64, ptr %50, align 8, !tbaa !9
  %560 = load i64, ptr %46, align 8, !tbaa !9
  %561 = add i64 %560, %559
  store i64 %561, ptr %46, align 8, !tbaa !9
  %562 = load i32, ptr %29, align 4, !tbaa !13
  %563 = zext i32 %562 to i64
  %564 = load ptr, ptr %49, align 8, !tbaa !5
  %565 = load i64, ptr %50, align 8, !tbaa !9
  %566 = call i64 @mz_crc32(i64 noundef %563, ptr noundef %564, i64 noundef %565)
  %567 = trunc i64 %566 to i32
  store i32 %567, ptr %29, align 4, !tbaa !13
  %568 = load i64, ptr %50, align 8, !tbaa !9
  %569 = load i64, ptr %37, align 8, !tbaa !9
  %570 = add i64 %569, %568
  store i64 %570, ptr %37, align 8, !tbaa !9
  store i32 0, ptr %48, align 4
  br label %571

571:                                              ; preds = %558, %548, %525, %515
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #6
  %572 = load i32, ptr %48, align 4
  switch i32 %572, label %726 [
    i32 0, label %573
    i32 3, label %574
  ]

573:                                              ; preds = %571
  br label %506

574:                                              ; preds = %571
  %575 = load i64, ptr %46, align 8, !tbaa !9
  store i64 %575, ptr %38, align 8, !tbaa !9
  %576 = load i64, ptr %38, align 8, !tbaa !9
  store i64 %576, ptr %39, align 8, !tbaa !9
  br label %718

577:                                              ; preds = %502
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #6
  store i32 0, ptr %51, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 24, ptr %52) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #6
  %578 = load ptr, ptr %15, align 8, !tbaa !5
  %579 = getelementptr inbounds %struct.mz_zip_archive, ptr %578, i32 0, i32 7
  %580 = load ptr, ptr %579, align 8, !tbaa !27
  %581 = load ptr, ptr %15, align 8, !tbaa !5
  %582 = getelementptr inbounds %struct.mz_zip_archive, ptr %581, i32 0, i32 10
  %583 = load ptr, ptr %582, align 8, !tbaa !28
  %584 = call ptr %580(ptr noundef %583, i64 noundef 1, i64 noundef 319352)
  store ptr %584, ptr %53, align 8, !tbaa !5
  %585 = load ptr, ptr %53, align 8, !tbaa !5
  %586 = icmp ne ptr %585, null
  br i1 %586, label %597, label %587

587:                                              ; preds = %577
  %588 = load ptr, ptr %15, align 8, !tbaa !5
  %589 = getelementptr inbounds %struct.mz_zip_archive, ptr %588, i32 0, i32 8
  %590 = load ptr, ptr %589, align 8, !tbaa !29
  %591 = load ptr, ptr %15, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct.mz_zip_archive, ptr %591, i32 0, i32 10
  %593 = load ptr, ptr %592, align 8, !tbaa !28
  %594 = load ptr, ptr %49, align 8, !tbaa !5
  call void %590(ptr noundef %593, ptr noundef %594)
  %595 = load ptr, ptr %15, align 8, !tbaa !5
  %596 = call i32 @mz_zip_set_error(ptr noundef %595, i32 noundef 16)
  store i32 %596, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %715

597:                                              ; preds = %577
  %598 = load ptr, ptr %15, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.mz_zip_writer_add_state, ptr %52, i32 0, i32 0
  store ptr %598, ptr %599, align 8, !tbaa !30
  %600 = load i64, ptr %37, align 8, !tbaa !9
  %601 = getelementptr inbounds %struct.mz_zip_writer_add_state, ptr %52, i32 0, i32 1
  store i64 %600, ptr %601, align 8, !tbaa !32
  %602 = getelementptr inbounds %struct.mz_zip_writer_add_state, ptr %52, i32 0, i32 2
  store i64 0, ptr %602, align 8, !tbaa !33
  %603 = load ptr, ptr %53, align 8, !tbaa !5
  %604 = load i32, ptr %30, align 4, !tbaa !13
  %605 = call i32 @tdefl_create_comp_flags_from_zip_params(i32 noundef %604, i32 noundef -15, i32 noundef 0)
  %606 = call i32 @tdefl_init(ptr noundef %603, ptr noundef @mz_zip_writer_add_put_buf_callback, ptr noundef %52, i32 noundef %605)
  %607 = icmp ne i32 %606, 0
  br i1 %607, label %608, label %625

608:                                              ; preds = %597
  %609 = load ptr, ptr %15, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct.mz_zip_archive, ptr %609, i32 0, i32 8
  %611 = load ptr, ptr %610, align 8, !tbaa !29
  %612 = load ptr, ptr %15, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.mz_zip_archive, ptr %612, i32 0, i32 10
  %614 = load ptr, ptr %613, align 8, !tbaa !28
  %615 = load ptr, ptr %53, align 8, !tbaa !5
  call void %611(ptr noundef %614, ptr noundef %615)
  %616 = load ptr, ptr %15, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.mz_zip_archive, ptr %616, i32 0, i32 8
  %618 = load ptr, ptr %617, align 8, !tbaa !29
  %619 = load ptr, ptr %15, align 8, !tbaa !5
  %620 = getelementptr inbounds %struct.mz_zip_archive, ptr %619, i32 0, i32 10
  %621 = load ptr, ptr %620, align 8, !tbaa !28
  %622 = load ptr, ptr %49, align 8, !tbaa !5
  call void %618(ptr noundef %621, ptr noundef %622)
  %623 = load ptr, ptr %15, align 8, !tbaa !5
  %624 = call i32 @mz_zip_set_error(ptr noundef %623, i32 noundef 27)
  store i32 %624, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %715

625:                                              ; preds = %597
  br label %626

626:                                              ; preds = %690, %625
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #6
  store i32 0, ptr %55, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #6
  %627 = load ptr, ptr %17, align 8, !tbaa !5
  %628 = load ptr, ptr %18, align 8, !tbaa !5
  %629 = load i64, ptr %46, align 8, !tbaa !9
  %630 = load ptr, ptr %49, align 8, !tbaa !5
  %631 = call i64 %627(ptr noundef %628, i64 noundef %629, ptr noundef %630, i64 noundef 65536)
  store i64 %631, ptr %56, align 8, !tbaa !9
  %632 = load i64, ptr %56, align 8, !tbaa !9
  %633 = icmp ugt i64 %632, 65536
  br i1 %633, label %640, label %634

634:                                              ; preds = %626
  %635 = load i64, ptr %46, align 8, !tbaa !9
  %636 = load i64, ptr %56, align 8, !tbaa !9
  %637 = add i64 %635, %636
  %638 = load i64, ptr %19, align 8, !tbaa !9
  %639 = icmp ugt i64 %637, %638
  br i1 %639, label %640, label %643

640:                                              ; preds = %634, %626
  %641 = load ptr, ptr %15, align 8, !tbaa !5
  %642 = call i32 @mz_zip_set_error(ptr noundef %641, i32 noundef 20)
  store i32 4, ptr %48, align 4
  br label %688

643:                                              ; preds = %634
  %644 = load i64, ptr %56, align 8, !tbaa !9
  %645 = load i64, ptr %46, align 8, !tbaa !9
  %646 = add i64 %645, %644
  store i64 %646, ptr %46, align 8, !tbaa !9
  %647 = load i32, ptr %29, align 4, !tbaa !13
  %648 = zext i32 %647 to i64
  %649 = load ptr, ptr %49, align 8, !tbaa !5
  %650 = load i64, ptr %56, align 8, !tbaa !9
  %651 = call i64 @mz_crc32(i64 noundef %648, ptr noundef %649, i64 noundef %650)
  %652 = trunc i64 %651 to i32
  store i32 %652, ptr %29, align 4, !tbaa !13
  %653 = load ptr, ptr %15, align 8, !tbaa !5
  %654 = getelementptr inbounds %struct.mz_zip_archive, ptr %653, i32 0, i32 13
  %655 = load ptr, ptr %654, align 8, !tbaa !34
  %656 = icmp ne ptr %655, null
  br i1 %656, label %657, label %667

657:                                              ; preds = %643
  %658 = load ptr, ptr %15, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.mz_zip_archive, ptr %658, i32 0, i32 13
  %660 = load ptr, ptr %659, align 8, !tbaa !34
  %661 = load ptr, ptr %15, align 8, !tbaa !5
  %662 = getelementptr inbounds %struct.mz_zip_archive, ptr %661, i32 0, i32 14
  %663 = load ptr, ptr %662, align 8, !tbaa !26
  %664 = call i32 %660(ptr noundef %663)
  %665 = icmp ne i32 %664, 0
  br i1 %665, label %666, label %667

666:                                              ; preds = %657
  store i32 3, ptr %55, align 4, !tbaa !13
  br label %667

667:                                              ; preds = %666, %657, %643
  %668 = load i64, ptr %56, align 8, !tbaa !9
  %669 = icmp eq i64 %668, 0
  br i1 %669, label %670, label %671

670:                                              ; preds = %667
  store i32 4, ptr %55, align 4, !tbaa !13
  br label %671

671:                                              ; preds = %670, %667
  %672 = load ptr, ptr %53, align 8, !tbaa !5
  %673 = load ptr, ptr %49, align 8, !tbaa !5
  %674 = load i64, ptr %56, align 8, !tbaa !9
  %675 = load i32, ptr %55, align 4, !tbaa !13
  %676 = call i32 @tdefl_compress_buffer(ptr noundef %672, ptr noundef %673, i64 noundef %674, i32 noundef %675)
  store i32 %676, ptr %54, align 4, !tbaa !13
  %677 = load i32, ptr %54, align 4, !tbaa !13
  %678 = icmp eq i32 %677, 1
  br i1 %678, label %679, label %680

679:                                              ; preds = %671
  store i32 1, ptr %51, align 4, !tbaa !13
  store i32 4, ptr %48, align 4
  br label %688

680:                                              ; preds = %671
  %681 = load i32, ptr %54, align 4, !tbaa !13
  %682 = icmp ne i32 %681, 0
  br i1 %682, label %683, label %686

683:                                              ; preds = %680
  %684 = load ptr, ptr %15, align 8, !tbaa !5
  %685 = call i32 @mz_zip_set_error(ptr noundef %684, i32 noundef 12)
  store i32 4, ptr %48, align 4
  br label %688

686:                                              ; preds = %680
  br label %687

687:                                              ; preds = %686
  store i32 0, ptr %48, align 4
  br label %688

688:                                              ; preds = %687, %683, %679, %640
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #6
  %689 = load i32, ptr %48, align 4
  switch i32 %689, label %970 [
    i32 0, label %690
    i32 4, label %691
  ]

690:                                              ; preds = %688
  br label %626

691:                                              ; preds = %688
  %692 = load ptr, ptr %15, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.mz_zip_archive, ptr %692, i32 0, i32 8
  %694 = load ptr, ptr %693, align 8, !tbaa !29
  %695 = load ptr, ptr %15, align 8, !tbaa !5
  %696 = getelementptr inbounds %struct.mz_zip_archive, ptr %695, i32 0, i32 10
  %697 = load ptr, ptr %696, align 8, !tbaa !28
  %698 = load ptr, ptr %53, align 8, !tbaa !5
  call void %694(ptr noundef %697, ptr noundef %698)
  %699 = load i32, ptr %51, align 4, !tbaa !13
  %700 = icmp ne i32 %699, 0
  br i1 %700, label %709, label %701

701:                                              ; preds = %691
  %702 = load ptr, ptr %15, align 8, !tbaa !5
  %703 = getelementptr inbounds %struct.mz_zip_archive, ptr %702, i32 0, i32 8
  %704 = load ptr, ptr %703, align 8, !tbaa !29
  %705 = load ptr, ptr %15, align 8, !tbaa !5
  %706 = getelementptr inbounds %struct.mz_zip_archive, ptr %705, i32 0, i32 10
  %707 = load ptr, ptr %706, align 8, !tbaa !28
  %708 = load ptr, ptr %49, align 8, !tbaa !5
  call void %704(ptr noundef %707, ptr noundef %708)
  store i32 0, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %715

709:                                              ; preds = %691
  %710 = load i64, ptr %46, align 8, !tbaa !9
  store i64 %710, ptr %38, align 8, !tbaa !9
  %711 = getelementptr inbounds %struct.mz_zip_writer_add_state, ptr %52, i32 0, i32 2
  %712 = load i64, ptr %711, align 8, !tbaa !33
  store i64 %712, ptr %39, align 8, !tbaa !9
  %713 = getelementptr inbounds %struct.mz_zip_writer_add_state, ptr %52, i32 0, i32 1
  %714 = load i64, ptr %713, align 8, !tbaa !32
  store i64 %714, ptr %37, align 8, !tbaa !9
  store i32 0, ptr %48, align 4
  br label %715

715:                                              ; preds = %709, %701, %608, %587
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  %716 = load i32, ptr %48, align 4
  switch i32 %716, label %726 [
    i32 0, label %717
  ]

717:                                              ; preds = %715
  br label %718

718:                                              ; preds = %717, %574
  %719 = load ptr, ptr %15, align 8, !tbaa !5
  %720 = getelementptr inbounds %struct.mz_zip_archive, ptr %719, i32 0, i32 8
  %721 = load ptr, ptr %720, align 8, !tbaa !29
  %722 = load ptr, ptr %15, align 8, !tbaa !5
  %723 = getelementptr inbounds %struct.mz_zip_archive, ptr %722, i32 0, i32 10
  %724 = load ptr, ptr %723, align 8, !tbaa !28
  %725 = load ptr, ptr %49, align 8, !tbaa !5
  call void %721(ptr noundef %724, ptr noundef %725)
  store i32 0, ptr %48, align 4
  br label %726

726:                                              ; preds = %718, %715, %571, %499
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #6
  %727 = load i32, ptr %48, align 4
  switch i32 %727, label %968 [
    i32 0, label %728
  ]

728:                                              ; preds = %726
  br label %729

729:                                              ; preds = %728, %486
  %730 = load i32, ptr %23, align 4, !tbaa !13
  %731 = and i32 %730, 131072
  %732 = icmp ne i32 %731, 0
  br i1 %732, label %787, label %733

733:                                              ; preds = %729
  call void @llvm.lifetime.start.p0(i64 24, ptr %57) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #6
  store i32 16, ptr %58, align 4, !tbaa !13
  %734 = getelementptr inbounds [24 x i8], ptr %57, i64 0, i64 0
  %735 = getelementptr inbounds i8, ptr %734, i64 0
  call void @mz_write_le32(ptr noundef %735, i32 noundef 134695760)
  %736 = getelementptr inbounds [24 x i8], ptr %57, i64 0, i64 0
  %737 = getelementptr inbounds i8, ptr %736, i64 4
  %738 = load i32, ptr %29, align 4, !tbaa !13
  call void @mz_write_le32(ptr noundef %737, i32 noundef %738)
  %739 = load ptr, ptr %42, align 8, !tbaa !5
  %740 = icmp eq ptr %739, null
  br i1 %740, label %741, label %756

741:                                              ; preds = %733
  %742 = load i64, ptr %39, align 8, !tbaa !9
  %743 = icmp ugt i64 %742, 4294967295
  br i1 %743, label %744, label %747

744:                                              ; preds = %741
  %745 = load ptr, ptr %15, align 8, !tbaa !5
  %746 = call i32 @mz_zip_set_error(ptr noundef %745, i32 noundef 29)
  store i32 %746, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %784

747:                                              ; preds = %741
  %748 = getelementptr inbounds [24 x i8], ptr %57, i64 0, i64 0
  %749 = getelementptr inbounds i8, ptr %748, i64 8
  %750 = load i64, ptr %39, align 8, !tbaa !9
  %751 = trunc i64 %750 to i32
  call void @mz_write_le32(ptr noundef %749, i32 noundef %751)
  %752 = getelementptr inbounds [24 x i8], ptr %57, i64 0, i64 0
  %753 = getelementptr inbounds i8, ptr %752, i64 12
  %754 = load i64, ptr %38, align 8, !tbaa !9
  %755 = trunc i64 %754 to i32
  call void @mz_write_le32(ptr noundef %753, i32 noundef %755)
  br label %763

756:                                              ; preds = %733
  %757 = getelementptr inbounds [24 x i8], ptr %57, i64 0, i64 0
  %758 = getelementptr inbounds i8, ptr %757, i64 8
  %759 = load i64, ptr %39, align 8, !tbaa !9
  call void @mz_write_le64(ptr noundef %758, i64 noundef %759)
  %760 = getelementptr inbounds [24 x i8], ptr %57, i64 0, i64 0
  %761 = getelementptr inbounds i8, ptr %760, i64 16
  %762 = load i64, ptr %38, align 8, !tbaa !9
  call void @mz_write_le64(ptr noundef %761, i64 noundef %762)
  store i32 24, ptr %58, align 4, !tbaa !13
  br label %763

763:                                              ; preds = %756, %747
  %764 = load ptr, ptr %15, align 8, !tbaa !5
  %765 = getelementptr inbounds %struct.mz_zip_archive, ptr %764, i32 0, i32 12
  %766 = load ptr, ptr %765, align 8, !tbaa !25
  %767 = load ptr, ptr %15, align 8, !tbaa !5
  %768 = getelementptr inbounds %struct.mz_zip_archive, ptr %767, i32 0, i32 14
  %769 = load ptr, ptr %768, align 8, !tbaa !26
  %770 = load i64, ptr %37, align 8, !tbaa !9
  %771 = getelementptr inbounds [24 x i8], ptr %57, i64 0, i64 0
  %772 = load i32, ptr %58, align 4, !tbaa !13
  %773 = zext i32 %772 to i64
  %774 = call i64 %766(ptr noundef %769, i64 noundef %770, ptr noundef %771, i64 noundef %773)
  %775 = load i32, ptr %58, align 4, !tbaa !13
  %776 = zext i32 %775 to i64
  %777 = icmp ne i64 %774, %776
  br i1 %777, label %778, label %779

778:                                              ; preds = %763
  store i32 0, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %784

779:                                              ; preds = %763
  %780 = load i32, ptr %58, align 4, !tbaa !13
  %781 = zext i32 %780 to i64
  %782 = load i64, ptr %37, align 8, !tbaa !9
  %783 = add i64 %782, %781
  store i64 %783, ptr %37, align 8, !tbaa !9
  store i32 0, ptr %48, align 4
  br label %784

784:                                              ; preds = %779, %778, %744
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %57) #6
  %785 = load i32, ptr %48, align 4
  switch i32 %785, label %968 [
    i32 0, label %786
  ]

786:                                              ; preds = %784
  br label %787

787:                                              ; preds = %786, %729
  %788 = load i32, ptr %23, align 4, !tbaa !13
  %789 = and i32 %788, 131072
  %790 = icmp ne i32 %789, 0
  br i1 %790, label %791, label %911

791:                                              ; preds = %787
  %792 = load ptr, ptr %42, align 8, !tbaa !5
  %793 = icmp ne ptr %792, null
  br i1 %793, label %794, label %815

794:                                              ; preds = %791
  %795 = getelementptr inbounds [28 x i8], ptr %44, i64 0, i64 0
  %796 = load i64, ptr %19, align 8, !tbaa !9
  %797 = icmp uge i64 %796, 4294967295
  br i1 %797, label %798, label %799

798:                                              ; preds = %794
  br label %800

799:                                              ; preds = %794
  br label %800

800:                                              ; preds = %799, %798
  %801 = phi ptr [ %38, %798 ], [ null, %799 ]
  %802 = load i64, ptr %19, align 8, !tbaa !9
  %803 = icmp uge i64 %802, 4294967295
  br i1 %803, label %804, label %805

804:                                              ; preds = %800
  br label %806

805:                                              ; preds = %800
  br label %806

806:                                              ; preds = %805, %804
  %807 = phi ptr [ %39, %804 ], [ null, %805 ]
  %808 = load i64, ptr %36, align 8, !tbaa !9
  %809 = icmp uge i64 %808, 4294967295
  br i1 %809, label %810, label %811

810:                                              ; preds = %806
  br label %812

811:                                              ; preds = %806
  br label %812

812:                                              ; preds = %811, %810
  %813 = phi ptr [ %36, %810 ], [ null, %811 ]
  %814 = call i32 @mz_zip_writer_create_zip64_extra_data(ptr noundef %795, ptr noundef %801, ptr noundef %807, ptr noundef %813)
  store i32 %814, ptr %43, align 4, !tbaa !13
  br label %815

815:                                              ; preds = %812, %791
  %816 = load ptr, ptr %15, align 8, !tbaa !5
  %817 = getelementptr inbounds [30 x i8], ptr %41, i64 0, i64 0
  %818 = load i64, ptr %40, align 8, !tbaa !9
  %819 = trunc i64 %818 to i16
  %820 = load i32, ptr %43, align 4, !tbaa !13
  %821 = load i32, ptr %25, align 4, !tbaa !13
  %822 = add i32 %820, %821
  %823 = trunc i32 %822 to i16
  %824 = load i64, ptr %19, align 8, !tbaa !9
  %825 = icmp uge i64 %824, 4294967295
  br i1 %825, label %826, label %827

826:                                              ; preds = %815
  br label %829

827:                                              ; preds = %815
  %828 = load i64, ptr %38, align 8, !tbaa !9
  br label %829

829:                                              ; preds = %827, %826
  %830 = phi i64 [ 4294967295, %826 ], [ %828, %827 ]
  %831 = load i64, ptr %19, align 8, !tbaa !9
  %832 = icmp uge i64 %831, 4294967295
  br i1 %832, label %833, label %834

833:                                              ; preds = %829
  br label %836

834:                                              ; preds = %829
  %835 = load i64, ptr %39, align 8, !tbaa !9
  br label %836

836:                                              ; preds = %834, %833
  %837 = phi i64 [ 4294967295, %833 ], [ %835, %834 ]
  %838 = load i32, ptr %29, align 4, !tbaa !13
  %839 = load i16, ptr %32, align 2, !tbaa !11
  %840 = load i16, ptr %28, align 2, !tbaa !11
  %841 = load i16, ptr %33, align 2, !tbaa !11
  %842 = load i16, ptr %34, align 2, !tbaa !11
  %843 = call i32 @mz_zip_writer_create_local_dir_header(ptr noundef %816, ptr noundef %817, i16 noundef zeroext %819, i16 noundef zeroext %823, i64 noundef %830, i64 noundef %837, i32 noundef %838, i16 noundef zeroext %839, i16 noundef zeroext %840, i16 noundef zeroext %841, i16 noundef zeroext %842)
  %844 = icmp ne i32 %843, 0
  br i1 %844, label %848, label %845

845:                                              ; preds = %836
  %846 = load ptr, ptr %15, align 8, !tbaa !5
  %847 = call i32 @mz_zip_set_error(ptr noundef %846, i32 noundef 27)
  store i32 %847, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %968

848:                                              ; preds = %836
  %849 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %849, ptr %47, align 8, !tbaa !9
  %850 = load ptr, ptr %15, align 8, !tbaa !5
  %851 = getelementptr inbounds %struct.mz_zip_archive, ptr %850, i32 0, i32 12
  %852 = load ptr, ptr %851, align 8, !tbaa !25
  %853 = load ptr, ptr %15, align 8, !tbaa !5
  %854 = getelementptr inbounds %struct.mz_zip_archive, ptr %853, i32 0, i32 14
  %855 = load ptr, ptr %854, align 8, !tbaa !26
  %856 = load i64, ptr %47, align 8, !tbaa !9
  %857 = getelementptr inbounds [30 x i8], ptr %41, i64 0, i64 0
  %858 = call i64 %852(ptr noundef %855, i64 noundef %856, ptr noundef %857, i64 noundef 30)
  %859 = icmp ne i64 %858, 30
  br i1 %859, label %860, label %863

860:                                              ; preds = %848
  %861 = load ptr, ptr %15, align 8, !tbaa !5
  %862 = call i32 @mz_zip_set_error(ptr noundef %861, i32 noundef 19)
  store i32 %862, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %968

863:                                              ; preds = %848
  %864 = load ptr, ptr %42, align 8, !tbaa !5
  %865 = icmp ne ptr %864, null
  br i1 %865, label %866, label %910

866:                                              ; preds = %863
  %867 = load i64, ptr %47, align 8, !tbaa !9
  %868 = add i64 %867, 30
  store i64 %868, ptr %47, align 8, !tbaa !9
  %869 = load ptr, ptr %15, align 8, !tbaa !5
  %870 = getelementptr inbounds %struct.mz_zip_archive, ptr %869, i32 0, i32 12
  %871 = load ptr, ptr %870, align 8, !tbaa !25
  %872 = load ptr, ptr %15, align 8, !tbaa !5
  %873 = getelementptr inbounds %struct.mz_zip_archive, ptr %872, i32 0, i32 14
  %874 = load ptr, ptr %873, align 8, !tbaa !26
  %875 = load i64, ptr %47, align 8, !tbaa !9
  %876 = load ptr, ptr %16, align 8, !tbaa !5
  %877 = load i64, ptr %40, align 8, !tbaa !9
  %878 = call i64 %871(ptr noundef %874, i64 noundef %875, ptr noundef %876, i64 noundef %877)
  %879 = load i64, ptr %40, align 8, !tbaa !9
  %880 = icmp ne i64 %878, %879
  br i1 %880, label %881, label %884

881:                                              ; preds = %866
  %882 = load ptr, ptr %15, align 8, !tbaa !5
  %883 = call i32 @mz_zip_set_error(ptr noundef %882, i32 noundef 19)
  store i32 %883, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %968

884:                                              ; preds = %866
  %885 = load i64, ptr %40, align 8, !tbaa !9
  %886 = load i64, ptr %47, align 8, !tbaa !9
  %887 = add i64 %886, %885
  store i64 %887, ptr %47, align 8, !tbaa !9
  %888 = load ptr, ptr %15, align 8, !tbaa !5
  %889 = getelementptr inbounds %struct.mz_zip_archive, ptr %888, i32 0, i32 12
  %890 = load ptr, ptr %889, align 8, !tbaa !25
  %891 = load ptr, ptr %15, align 8, !tbaa !5
  %892 = getelementptr inbounds %struct.mz_zip_archive, ptr %891, i32 0, i32 14
  %893 = load ptr, ptr %892, align 8, !tbaa !26
  %894 = load i64, ptr %47, align 8, !tbaa !9
  %895 = getelementptr inbounds [28 x i8], ptr %44, i64 0, i64 0
  %896 = load i32, ptr %43, align 4, !tbaa !13
  %897 = zext i32 %896 to i64
  %898 = call i64 %890(ptr noundef %893, i64 noundef %894, ptr noundef %895, i64 noundef %897)
  %899 = load i32, ptr %43, align 4, !tbaa !13
  %900 = zext i32 %899 to i64
  %901 = icmp ne i64 %898, %900
  br i1 %901, label %902, label %905

902:                                              ; preds = %884
  %903 = load ptr, ptr %15, align 8, !tbaa !5
  %904 = call i32 @mz_zip_set_error(ptr noundef %903, i32 noundef 19)
  store i32 %904, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %968

905:                                              ; preds = %884
  %906 = load i32, ptr %43, align 4, !tbaa !13
  %907 = zext i32 %906 to i64
  %908 = load i64, ptr %47, align 8, !tbaa !9
  %909 = add i64 %908, %907
  store i64 %909, ptr %47, align 8, !tbaa !9
  br label %910

910:                                              ; preds = %905, %863
  br label %911

911:                                              ; preds = %910, %787
  %912 = load ptr, ptr %42, align 8, !tbaa !5
  %913 = icmp ne ptr %912, null
  br i1 %913, label %914, label %935

914:                                              ; preds = %911
  %915 = getelementptr inbounds [28 x i8], ptr %44, i64 0, i64 0
  %916 = load i64, ptr %38, align 8, !tbaa !9
  %917 = icmp uge i64 %916, 4294967295
  br i1 %917, label %918, label %919

918:                                              ; preds = %914
  br label %920

919:                                              ; preds = %914
  br label %920

920:                                              ; preds = %919, %918
  %921 = phi ptr [ %38, %918 ], [ null, %919 ]
  %922 = load i64, ptr %38, align 8, !tbaa !9
  %923 = icmp uge i64 %922, 4294967295
  br i1 %923, label %924, label %925

924:                                              ; preds = %920
  br label %926

925:                                              ; preds = %920
  br label %926

926:                                              ; preds = %925, %924
  %927 = phi ptr [ %39, %924 ], [ null, %925 ]
  %928 = load i64, ptr %36, align 8, !tbaa !9
  %929 = icmp uge i64 %928, 4294967295
  br i1 %929, label %930, label %931

930:                                              ; preds = %926
  br label %932

931:                                              ; preds = %926
  br label %932

932:                                              ; preds = %931, %930
  %933 = phi ptr [ %36, %930 ], [ null, %931 ]
  %934 = call i32 @mz_zip_writer_create_zip64_extra_data(ptr noundef %915, ptr noundef %921, ptr noundef %927, ptr noundef %933)
  store i32 %934, ptr %43, align 4, !tbaa !13
  br label %935

935:                                              ; preds = %932, %911
  %936 = load ptr, ptr %15, align 8, !tbaa !5
  %937 = load ptr, ptr %16, align 8, !tbaa !5
  %938 = load i64, ptr %40, align 8, !tbaa !9
  %939 = trunc i64 %938 to i16
  %940 = load ptr, ptr %42, align 8, !tbaa !5
  %941 = load i32, ptr %43, align 4, !tbaa !13
  %942 = trunc i32 %941 to i16
  %943 = load ptr, ptr %21, align 8, !tbaa !5
  %944 = load i16, ptr %22, align 2, !tbaa !11
  %945 = load i64, ptr %38, align 8, !tbaa !9
  %946 = load i64, ptr %39, align 8, !tbaa !9
  %947 = load i32, ptr %29, align 4, !tbaa !13
  %948 = load i16, ptr %32, align 2, !tbaa !11
  %949 = load i16, ptr %28, align 2, !tbaa !11
  %950 = load i16, ptr %33, align 2, !tbaa !11
  %951 = load i16, ptr %34, align 2, !tbaa !11
  %952 = load i64, ptr %36, align 8, !tbaa !9
  %953 = load i16, ptr %35, align 2, !tbaa !11
  %954 = zext i16 %953 to i32
  %955 = load ptr, ptr %26, align 8, !tbaa !5
  %956 = load i32, ptr %27, align 4, !tbaa !13
  %957 = call i32 @mz_zip_writer_add_to_central_dir(ptr noundef %936, ptr noundef %937, i16 noundef zeroext %939, ptr noundef %940, i16 noundef zeroext %942, ptr noundef %943, i16 noundef zeroext %944, i64 noundef %945, i64 noundef %946, i32 noundef %947, i16 noundef zeroext %948, i16 noundef zeroext %949, i16 noundef zeroext %950, i16 noundef zeroext %951, i64 noundef %952, i32 noundef %954, ptr noundef %955, i32 noundef %956)
  %958 = icmp ne i32 %957, 0
  br i1 %958, label %960, label %959

959:                                              ; preds = %935
  store i32 0, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %968

960:                                              ; preds = %935
  %961 = load ptr, ptr %15, align 8, !tbaa !5
  %962 = getelementptr inbounds %struct.mz_zip_archive, ptr %961, i32 0, i32 2
  %963 = load i32, ptr %962, align 8, !tbaa !22
  %964 = add i32 %963, 1
  store i32 %964, ptr %962, align 8, !tbaa !22
  %965 = load i64, ptr %37, align 8, !tbaa !9
  %966 = load ptr, ptr %15, align 8, !tbaa !5
  %967 = getelementptr inbounds %struct.mz_zip_archive, ptr %966, i32 0, i32 0
  store i64 %965, ptr %967, align 8, !tbaa !15
  store i32 1, ptr %14, align 4
  store i32 1, ptr %48, align 4
  br label %968

968:                                              ; preds = %960, %959, %902, %881, %860, %845, %784, %726, %478, %453, %435, %421, %405, %391, %370, %352, %338, %244, %185, %167, %149, %136, %129, %108
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 28, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 30, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %28) #6
  %969 = load i32, ptr %14, align 4
  ret i32 %969

970:                                              ; preds = %688
  unreachable
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { 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 #4 = { alwaysinline 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 #5 = { nounwind willreturn memory(read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind }
attributes #7 = { nounwind willreturn memory(read) }
attributes #8 = { 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/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"short", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{!16, !10, i64 0}
!16 = !{!"", !10, i64 0, !10, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !14, i64 28, !10, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104}
!17 = !{!16, !6, i64 104}
!18 = !{!16, !14, i64 20}
!19 = !{!20, !14, i64 100}
!20 = !{!"mz_zip_internal_state_tag", !21, i64 0, !21, i64 32, !21, i64 64, !14, i64 96, !14, i64 100, !14, i64 104, !6, i64 112, !10, i64 120, !6, i64 128, !10, i64 136, !10, i64 144}
!21 = !{!"", !6, i64 0, !10, i64 8, !10, i64 16, !14, i64 24}
!22 = !{!16, !14, i64 16}
!23 = !{!20, !10, i64 8}
!24 = !{!16, !10, i64 32}
!25 = !{!16, !6, i64 80}
!26 = !{!16, !6, i64 96}
!27 = !{!16, !6, i64 40}
!28 = !{!16, !6, i64 64}
!29 = !{!16, !6, i64 48}
!30 = !{!31, !6, i64 0}
!31 = !{!"", !6, i64 0, !10, i64 8, !10, i64 16}
!32 = !{!31, !10, i64 8}
!33 = !{!31, !10, i64 16}
!34 = !{!16, !6, i64 88}


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

@.str.12 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [66 x i8], align 1
@__PRETTY_FUNCTION__.mz_zip_writer_add_read_buf_callback = external hidden unnamed_addr constant [210 x i8], align 1

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

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

; Function Attrs: nounwind uwtable
declare dso_local i64 @mz_crc32(i64 noundef, ptr noundef, i64 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @tdefl_create_comp_flags_from_zip_params(i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @tdefl_init(ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #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

; Function Attrs: nounwind uwtable
declare dso_local i32 @tdefl_compress_buffer(ptr noundef, ptr noundef, i64 noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: alwaysinline nounwind uwtable
declare hidden i32 @mz_zip_set_error(ptr noundef, i32 noundef) local_unnamed_addr #4

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

; Function Attrs: nounwind uwtable
declare hidden i32 @mz_zip_writer_validate_archive_name(ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden void @mz_zip_time_t_to_dos_time(i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @mz_zip_writer_compute_padding_needed_for_file_alignment(ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @mz_zip_writer_write_zeros(ptr noundef, i64 noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @mz_zip_writer_create_zip64_extra_data(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @mz_zip_writer_create_local_dir_header(ptr noundef, ptr noundef, i16 noundef zeroext, i16 noundef zeroext, i64 noundef, i64 noundef, i32 noundef, i16 noundef zeroext, i16 noundef zeroext, i16 noundef zeroext, i16 noundef zeroext) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @mz_zip_writer_add_put_buf_callback(ptr noundef, i32 noundef, ptr noundef) #1

; Function Attrs: alwaysinline nounwind uwtable
declare hidden void @mz_write_le32(ptr noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: alwaysinline nounwind uwtable
declare hidden void @mz_write_le64(ptr noundef, i64 noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare hidden i32 @mz_zip_writer_add_to_central_dir(ptr noundef, ptr noundef, i16 noundef zeroext, ptr noundef, i16 noundef zeroext, ptr noundef, i16 noundef zeroext, i64 noundef, i64 noundef, i32 noundef, i16 noundef zeroext, i16 noundef zeroext, i16 noundef zeroext, i16 noundef zeroext, i64 noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local i32 @mz_zip_writer_add_read_buf_callback(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr noundef %3, i64 noundef %4, ptr noundef readonly %5, ptr noundef %6, i16 noundef zeroext %7, i32 noundef %8, ptr noundef %9, i32 noundef %10, ptr noundef %11, i32 noundef %12) local_unnamed_addr #1 {
  %14 = alloca i16, align 2
  %15 = alloca i16, align 2
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca [30 x i8], align 16
  %20 = alloca [28 x i8], align 16
  %21 = alloca %struct.mz_zip_writer_add_state, align 8
  %22 = alloca [24 x i8], align 16
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %14) #6
  store i16 0, ptr %14, align 2, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %15) #6
  store i16 0, ptr %15, align 2, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #6
  %23 = load i64, ptr %0, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #6
  store i64 0, ptr %17, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #6
  store i64 0, ptr %18, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 30, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %20) #6
  %24 = icmp slt i32 %8, 0
  %spec.store.select = select i1 %24, i32 6, i32 %8
  %25 = and i32 %spec.store.select, 15
  %26 = and i32 %spec.store.select, 131072
  %.not = icmp eq i32 %26, 0
  %27 = lshr exact i32 %26, 14
  %28 = trunc nuw nsw i32 %27 to i16
  %29 = xor i16 %28, 8
  %30 = and i32 %spec.store.select, 65536
  %.not366 = icmp eq i32 %30, 0
  %31 = or disjoint i16 %29, 2048
  %spec.select = select i1 %.not366, i16 %31, i16 %29
  %32 = getelementptr inbounds i8, ptr %0, i64 104
  %33 = load ptr, ptr %32, align 8, !tbaa !15
  %.not367 = icmp eq ptr %33, null
  br i1 %.not367, label %43, label %34

34:                                               ; preds = %13
  %35 = getelementptr inbounds i8, ptr %0, i64 20
  %36 = load i32, ptr %35, align 4, !tbaa !16
  %37 = icmp eq i32 %36, 2
  %38 = icmp ne ptr %1, null
  %or.cond = and i1 %38, %37
  br i1 %or.cond, label %39, label %43

39:                                               ; preds = %34
  %40 = icmp ne i16 %7, 0
  %41 = icmp eq ptr %6, null
  %or.cond5.not370 = and i1 %41, %40
  %42 = icmp ugt i32 %25, 10
  %or.cond7 = or i1 %or.cond5.not370, %42
  br i1 %or.cond7, label %43, label %45

43:                                               ; preds = %39, %34, %13
  %44 = tail call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 24)
  br label %.thread440

45:                                               ; preds = %39
  %46 = getelementptr inbounds i8, ptr %33, i64 100
  %47 = load i32, ptr %46, align 4, !tbaa !17
  %48 = icmp eq i32 %47, 0
  %49 = icmp ugt i64 %4, 4294967295
  %or.cond9 = and i1 %49, %48
  br i1 %or.cond9, label %50, label %51

50:                                               ; preds = %45
  store i32 1, ptr %46, align 4, !tbaa !17
  br label %51

51:                                               ; preds = %50, %45
  %52 = and i32 %spec.store.select, 1024
  %.not371 = icmp eq i32 %52, 0
  br i1 %.not371, label %55, label %53

53:                                               ; preds = %51
  %54 = tail call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 24)
  br label %.thread440

55:                                               ; preds = %51
  %56 = tail call i32 @mz_zip_writer_validate_archive_name(ptr noundef nonnull %1)
  %.not372 = icmp eq i32 %56, 0
  br i1 %.not372, label %57, label %59

57:                                               ; preds = %55
  %58 = tail call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 25)
  br label %.thread440

59:                                               ; preds = %55
  %60 = load i32, ptr %46, align 4, !tbaa !17
  %.not373 = icmp eq i32 %60, 0
  %61 = getelementptr inbounds i8, ptr %0, i64 16
  %62 = load i32, ptr %61, align 8, !tbaa !20
  br i1 %.not373, label %67, label %63

63:                                               ; preds = %59
  %64 = icmp eq i32 %62, -1
  br i1 %64, label %65, label %70

65:                                               ; preds = %63
  %66 = tail call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 2)
  br label %.thread440

67:                                               ; preds = %59
  %68 = icmp eq i32 %62, 65535
  br i1 %68, label %69, label %70

69:                                               ; preds = %67
  store i32 1, ptr %46, align 4, !tbaa !17
  br label %70

70:                                               ; preds = %67, %69, %63
  %71 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #7
  %72 = icmp ugt i64 %71, 65535
  br i1 %72, label %73, label %75

73:                                               ; preds = %70
  %74 = tail call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 25)
  br label %.thread440

75:                                               ; preds = %70
  %76 = tail call i32 @mz_zip_writer_compute_padding_needed_for_file_alignment(ptr noundef nonnull %0)
  %77 = getelementptr inbounds i8, ptr %33, i64 8
  %78 = load i64, ptr %77, align 8, !tbaa !21
  %79 = zext i16 %7 to i64
  %80 = add nuw nsw i64 %79, 74
  %81 = add nuw nsw i64 %80, %71
  %82 = add i64 %81, %78
  %83 = icmp ugt i64 %82, 4294967294
  br i1 %83, label %84, label %86

84:                                               ; preds = %75
  %85 = tail call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 15)
  br label %.thread440

86:                                               ; preds = %75
  %87 = load i32, ptr %46, align 4, !tbaa !17
  %.not374 = icmp eq i32 %87, 0
  br i1 %.not374, label %88, label %102

88:                                               ; preds = %86
  %89 = load i64, ptr %0, align 8, !tbaa !9
  %90 = zext i32 %76 to i64
  %91 = zext i32 %10 to i64
  %92 = zext i32 %12 to i64
  %factor = shl nuw nsw i64 %71, 1
  %93 = add nuw nsw i64 %79, 1138
  %94 = add nuw nsw i64 %93, %91
  %95 = add nuw nsw i64 %94, %92
  %96 = add nuw nsw i64 %95, %factor
  %97 = add nuw nsw i64 %96, %90
  %98 = add i64 %97, %78
  %99 = add i64 %98, %89
  %100 = icmp ugt i64 %99, 4294967295
  br i1 %100, label %101, label %102

101:                                              ; preds = %88
  store i32 1, ptr %46, align 4, !tbaa !17
  br label %102

102:                                              ; preds = %88, %101, %86
  %.not375 = icmp eq ptr %5, null
  br i1 %.not375, label %105, label %103

103:                                              ; preds = %102
  %104 = load i64, ptr %5, align 8, !tbaa !14
  call void @mz_zip_time_t_to_dos_time(i64 noundef %104, ptr noundef nonnull %14, ptr noundef nonnull %15)
  br label %105

105:                                              ; preds = %103, %102
  %106 = icmp ult i64 %4, 4
  %spec.select404 = select i1 %106, i32 0, i32 %25
  %107 = call i32 @mz_zip_writer_write_zeros(ptr noundef nonnull %0, i64 noundef %23, i32 noundef %76)
  %.not376 = icmp eq i32 %107, 0
  br i1 %.not376, label %108, label %110

108:                                              ; preds = %105
  %109 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 19)
  br label %.thread440

110:                                              ; preds = %105
  %111 = zext i32 %76 to i64
  %112 = add i64 %23, %111
  store i64 %112, ptr %16, align 8, !tbaa !14
  %113 = getelementptr inbounds i8, ptr %0, i64 32
  %114 = load i64, ptr %113, align 8, !tbaa !22
  %.not377 = icmp eq i64 %114, 0
  br i1 %.not377, label %120, label %115

115:                                              ; preds = %110
  %116 = add i64 %114, -1
  %117 = and i64 %116, %112
  %118 = icmp eq i64 %117, 0
  br i1 %118, label %120, label %119

119:                                              ; preds = %115
  call void @__assert_fail(ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.12, i32 noundef 7063, ptr noundef nonnull @__PRETTY_FUNCTION__.mz_zip_writer_add_read_buf_callback) #8
  unreachable

120:                                              ; preds = %115, %110
  %.not464 = icmp eq i64 %4, 0
  %.not465 = icmp eq i32 %spec.select404, 0
  %spec.select405 = select i1 %.not465, i16 0, i16 8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(30) %19, i8 0, i64 30, i1 false)
  %121 = load i32, ptr %46, align 4, !tbaa !17
  %.not378 = icmp eq i32 %121, 0
  br i1 %.not378, label %166, label %122

122:                                              ; preds = %120
  %123 = icmp ugt i64 %4, 4294967294
  %124 = icmp ugt i64 %112, 4294967294
  %or.cond13 = select i1 %123, i1 true, i1 %124
  br i1 %or.cond13, label %125, label %132

125:                                              ; preds = %122
  br i1 %.not, label %130, label %126

126:                                              ; preds = %125
  %. = select i1 %123, ptr %17, ptr null
  %127 = select i1 %123, ptr %18, ptr null
  %128 = select i1 %124, ptr %16, ptr null
  %129 = call i32 @mz_zip_writer_create_zip64_extra_data(ptr noundef nonnull %20, ptr noundef %., ptr noundef %127, ptr noundef %128)
  br label %132

130:                                              ; preds = %125
  %.14 = select i1 %124, ptr %16, ptr null
  %131 = call i32 @mz_zip_writer_create_zip64_extra_data(ptr noundef nonnull %20, ptr noundef null, ptr noundef null, ptr noundef %.14)
  br label %132

132:                                              ; preds = %126, %130, %122
  %.0335 = phi ptr [ %20, %126 ], [ %20, %130 ], [ null, %122 ]
  %.0330 = phi i32 [ %129, %126 ], [ %131, %130 ], [ 0, %122 ]
  %133 = trunc nuw i64 %71 to i16
  %134 = add i32 %.0330, %10
  %135 = trunc i32 %134 to i16
  %136 = load i16, ptr %14, align 2, !tbaa !5
  %137 = load i16, ptr %15, align 2, !tbaa !5
  %138 = call i32 @mz_zip_writer_create_local_dir_header(ptr noundef nonnull %0, ptr noundef nonnull %19, i16 noundef zeroext %133, i16 noundef zeroext %135, i64 noundef 0, i64 noundef 0, i32 noundef 0, i16 noundef zeroext %spec.select405, i16 noundef zeroext %spec.select, i16 noundef zeroext %136, i16 noundef zeroext %137)
  %.not382 = icmp eq i32 %138, 0
  br i1 %.not382, label %139, label %141

139:                                              ; preds = %132
  %140 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 27)
  br label %.thread440

141:                                              ; preds = %132
  %142 = getelementptr inbounds i8, ptr %0, i64 80
  %143 = load ptr, ptr %142, align 8, !tbaa !23
  %144 = getelementptr inbounds i8, ptr %0, i64 96
  %145 = load ptr, ptr %144, align 8, !tbaa !24
  %146 = call i64 %143(ptr noundef %145, i64 noundef %112, ptr noundef nonnull %19, i64 noundef 30) #6
  %.not383 = icmp eq i64 %146, 30
  br i1 %.not383, label %149, label %147

147:                                              ; preds = %141
  %148 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 19)
  br label %.thread440

149:                                              ; preds = %141
  %150 = add i64 %112, 30
  %151 = load ptr, ptr %142, align 8, !tbaa !23
  %152 = load ptr, ptr %144, align 8, !tbaa !24
  %153 = call i64 %151(ptr noundef %152, i64 noundef %150, ptr noundef nonnull %1, i64 noundef %71) #6
  %.not384 = icmp eq i64 %153, %71
  br i1 %.not384, label %156, label %154

154:                                              ; preds = %149
  %155 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 19)
  br label %.thread440

156:                                              ; preds = %149
  %157 = add i64 %150, %71
  %158 = load ptr, ptr %142, align 8, !tbaa !23
  %159 = load ptr, ptr %144, align 8, !tbaa !24
  %160 = zext i32 %.0330 to i64
  %161 = call i64 %158(ptr noundef %159, i64 noundef %157, ptr noundef nonnull %20, i64 noundef %160) #6
  %.not385 = icmp eq i64 %161, %160
  br i1 %.not385, label %164, label %162

162:                                              ; preds = %156
  %163 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 19)
  br label %.thread440

164:                                              ; preds = %156
  %165 = add i64 %157, %160
  br label %197

166:                                              ; preds = %120
  %167 = load i64, ptr %18, align 8, !tbaa !14
  %168 = icmp ugt i64 %167, 4294967295
  %169 = icmp ugt i64 %112, 4294967295
  %or.cond16 = select i1 %168, i1 true, i1 %169
  br i1 %or.cond16, label %170, label %172

170:                                              ; preds = %166
  %171 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 29)
  br label %.thread440

172:                                              ; preds = %166
  %173 = trunc nuw i64 %71 to i16
  %174 = trunc i32 %10 to i16
  %175 = load i16, ptr %14, align 2, !tbaa !5
  %176 = load i16, ptr %15, align 2, !tbaa !5
  %177 = call i32 @mz_zip_writer_create_local_dir_header(ptr noundef nonnull %0, ptr noundef nonnull %19, i16 noundef zeroext %173, i16 noundef zeroext %174, i64 noundef 0, i64 noundef 0, i32 noundef 0, i16 noundef zeroext %spec.select405, i16 noundef zeroext %spec.select, i16 noundef zeroext %175, i16 noundef zeroext %176)
  %.not379 = icmp eq i32 %177, 0
  br i1 %.not379, label %178, label %180

178:                                              ; preds = %172
  %179 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 27)
  br label %.thread440

180:                                              ; preds = %172
  %181 = getelementptr inbounds i8, ptr %0, i64 80
  %182 = load ptr, ptr %181, align 8, !tbaa !23
  %183 = getelementptr inbounds i8, ptr %0, i64 96
  %184 = load ptr, ptr %183, align 8, !tbaa !24
  %185 = call i64 %182(ptr noundef %184, i64 noundef %112, ptr noundef nonnull %19, i64 noundef 30) #6
  %.not380 = icmp eq i64 %185, 30
  br i1 %.not380, label %188, label %186

186:                                              ; preds = %180
  %187 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 19)
  br label %.thread440

188:                                              ; preds = %180
  %189 = add nuw nsw i64 %112, 30
  %190 = load ptr, ptr %181, align 8, !tbaa !23
  %191 = load ptr, ptr %183, align 8, !tbaa !24
  %192 = call i64 %190(ptr noundef %191, i64 noundef %189, ptr noundef nonnull %1, i64 noundef %71) #6
  %.not381 = icmp eq i64 %192, %71
  br i1 %.not381, label %195, label %193

193:                                              ; preds = %188
  %194 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 19)
  br label %.thread440

195:                                              ; preds = %188
  %196 = add nuw nsw i64 %189, %71
  br label %197

197:                                              ; preds = %195, %164
  %.0337 = phi i64 [ %165, %164 ], [ %196, %195 ]
  %.1336 = phi ptr [ %.0335, %164 ], [ null, %195 ]
  %.1331 = phi i32 [ %.0330, %164 ], [ 0, %195 ]
  %.not386 = icmp eq i32 %10, 0
  br i1 %.not386, label %209, label %198

198:                                              ; preds = %197
  %199 = getelementptr inbounds i8, ptr %0, i64 80
  %200 = load ptr, ptr %199, align 8, !tbaa !23
  %201 = getelementptr inbounds i8, ptr %0, i64 96
  %202 = load ptr, ptr %201, align 8, !tbaa !24
  %203 = zext i32 %10 to i64
  %204 = call i64 %200(ptr noundef %202, i64 noundef %.0337, ptr noundef %9, i64 noundef %203) #6
  %.not387 = icmp eq i64 %204, %203
  br i1 %.not387, label %207, label %205

205:                                              ; preds = %198
  %206 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 19)
  br label %.thread440

207:                                              ; preds = %198
  %208 = add i64 %.0337, %203
  br label %209

209:                                              ; preds = %207, %197
  %.1338 = phi i64 [ %208, %207 ], [ %.0337, %197 ]
  br i1 %.not464, label %307, label %210

210:                                              ; preds = %209
  %211 = getelementptr inbounds i8, ptr %0, i64 40
  %212 = load ptr, ptr %211, align 8, !tbaa !25
  %213 = getelementptr inbounds i8, ptr %0, i64 64
  %214 = load ptr, ptr %213, align 8, !tbaa !26
  %215 = call ptr %212(ptr noundef %214, i64 noundef 1, i64 noundef 65536) #6
  %.not388 = icmp eq ptr %215, null
  br i1 %.not388, label %216, label %218

216:                                              ; preds = %210
  %217 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 16)
  br label %.thread440

218:                                              ; preds = %210
  br i1 %.not465, label %.preheader, label %250

.preheader:                                       ; preds = %218
  %219 = call i64 %2(ptr noundef %3, i64 noundef 0, ptr noundef nonnull %215, i64 noundef 65536) #6
  %220 = icmp eq i64 %219, 0
  br i1 %220, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader
  %221 = getelementptr inbounds i8, ptr %0, i64 80
  %222 = getelementptr inbounds i8, ptr %0, i64 96
  br label %223

223:                                              ; preds = %.lr.ph, %243
  %224 = phi i64 [ %219, %.lr.ph ], [ %247, %243 ]
  %.0311482 = phi i64 [ 0, %.lr.ph ], [ %245, %243 ]
  %.0325481 = phi i64 [ 0, %.lr.ph ], [ %227, %243 ]
  %.2339480 = phi i64 [ %.1338, %.lr.ph ], [ %246, %243 ]
  %225 = icmp ugt i64 %224, 65536
  br i1 %225, label %229, label %226

226:                                              ; preds = %223
  %227 = add i64 %224, %.0325481
  %228 = icmp ugt i64 %227, %4
  br i1 %228, label %229, label %234

229:                                              ; preds = %226, %223
  %230 = getelementptr inbounds i8, ptr %0, i64 48
  %231 = load ptr, ptr %230, align 8, !tbaa !27
  %232 = load ptr, ptr %213, align 8, !tbaa !26
  call void %231(ptr noundef %232, ptr noundef nonnull %215) #6
  %233 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 20)
  br label %.thread440

234:                                              ; preds = %226
  %235 = load ptr, ptr %221, align 8, !tbaa !23
  %236 = load ptr, ptr %222, align 8, !tbaa !24
  %237 = call i64 %235(ptr noundef %236, i64 noundef %.2339480, ptr noundef nonnull %215, i64 noundef %224) #6
  %.not389 = icmp eq i64 %237, %224
  br i1 %.not389, label %243, label %238

238:                                              ; preds = %234
  %239 = getelementptr inbounds i8, ptr %0, i64 48
  %240 = load ptr, ptr %239, align 8, !tbaa !27
  %241 = load ptr, ptr %213, align 8, !tbaa !26
  call void %240(ptr noundef %241, ptr noundef nonnull %215) #6
  %242 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 19)
  br label %.thread440

243:                                              ; preds = %234
  %244 = and i64 %.0311482, 4294967295
  %245 = call i64 @mz_crc32(i64 noundef %244, ptr noundef nonnull %215, i64 noundef %224)
  %246 = add i64 %224, %.2339480
  %247 = call i64 %2(ptr noundef %3, i64 noundef %227, ptr noundef nonnull %215, i64 noundef 65536) #6
  %248 = icmp eq i64 %247, 0
  br i1 %248, label %._crit_edge.loopexit, label %223

._crit_edge.loopexit:                             ; preds = %243
  %249 = trunc i64 %245 to i32
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.preheader
  %.2339.lcssa = phi i64 [ %.1338, %.preheader ], [ %246, %._crit_edge.loopexit ]
  %.0325.lcssa = phi i64 [ 0, %.preheader ], [ %227, %._crit_edge.loopexit ]
  %.0311.lcssa = phi i32 [ 0, %.preheader ], [ %249, %._crit_edge.loopexit ]
  store i64 %.0325.lcssa, ptr %17, align 8, !tbaa !14
  store i64 %.0325.lcssa, ptr %18, align 8, !tbaa !14
  br label %303

250:                                              ; preds = %218
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #6
  %251 = load ptr, ptr %211, align 8, !tbaa !25
  %252 = load ptr, ptr %213, align 8, !tbaa !26
  %253 = call ptr %251(ptr noundef %252, i64 noundef 1, i64 noundef 319352) #6
  %.not390 = icmp eq ptr %253, null
  br i1 %.not390, label %254, label %259

254:                                              ; preds = %250
  %255 = getelementptr inbounds i8, ptr %0, i64 48
  %256 = load ptr, ptr %255, align 8, !tbaa !27
  %257 = load ptr, ptr %213, align 8, !tbaa !26
  call void %256(ptr noundef %257, ptr noundef nonnull %215) #6
  %258 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 16)
  br label %.thread434

259:                                              ; preds = %250
  store ptr %0, ptr %21, align 8, !tbaa !28
  %260 = getelementptr inbounds i8, ptr %21, i64 8
  store i64 %.1338, ptr %260, align 8, !tbaa !30
  %261 = getelementptr inbounds i8, ptr %21, i64 16
  store i64 0, ptr %261, align 8, !tbaa !31
  %262 = call i32 @tdefl_create_comp_flags_from_zip_params(i32 noundef %spec.select404, i32 noundef -15, i32 noundef 0)
  %263 = call i32 @tdefl_init(ptr noundef nonnull %253, ptr noundef nonnull @mz_zip_writer_add_put_buf_callback, ptr noundef nonnull %21, i32 noundef %262)
  %.not391 = icmp eq i32 %263, 0
  br i1 %.not391, label %.preheader466, label %266

.preheader466:                                    ; preds = %259
  %264 = getelementptr inbounds i8, ptr %0, i64 88
  %265 = getelementptr inbounds i8, ptr %0, i64 96
  br label %273

266:                                              ; preds = %259
  %267 = getelementptr inbounds i8, ptr %0, i64 48
  %268 = load ptr, ptr %267, align 8, !tbaa !27
  %269 = load ptr, ptr %213, align 8, !tbaa !26
  call void %268(ptr noundef %269, ptr noundef nonnull %253) #6
  %270 = load ptr, ptr %267, align 8, !tbaa !27
  %271 = load ptr, ptr %213, align 8, !tbaa !26
  call void %270(ptr noundef %271, ptr noundef nonnull %215) #6
  %272 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 27)
  br label %.thread434

273:                                              ; preds = %.preheader466, %286
  %.2327 = phi i64 [ %277, %286 ], [ 0, %.preheader466 ]
  %.2313 = phi i64 [ %281, %286 ], [ 0, %.preheader466 ]
  %274 = call i64 %2(ptr noundef %3, i64 noundef %.2327, ptr noundef nonnull %215, i64 noundef 65536) #6
  %275 = icmp ugt i64 %274, 65536
  br i1 %275, label %289, label %276

276:                                              ; preds = %273
  %277 = add i64 %274, %.2327
  %278 = icmp ugt i64 %277, %4
  br i1 %278, label %289, label %279

279:                                              ; preds = %276
  %280 = and i64 %.2313, 4294967295
  %281 = call i64 @mz_crc32(i64 noundef %280, ptr noundef nonnull %215, i64 noundef %274)
  %282 = load ptr, ptr %264, align 8, !tbaa !32
  %.not392 = icmp eq ptr %282, null
  br i1 %.not392, label %286, label %283

283:                                              ; preds = %279
  %284 = load ptr, ptr %265, align 8, !tbaa !24
  %285 = call i32 %282(ptr noundef %284) #6
  %.not393 = icmp eq i32 %285, 0
  %spec.select406 = select i1 %.not393, i32 0, i32 3
  br label %286

286:                                              ; preds = %283, %279
  %.0306 = phi i32 [ 0, %279 ], [ %spec.select406, %283 ]
  %287 = icmp eq i64 %274, 0
  %spec.select407 = select i1 %287, i32 4, i32 %.0306
  %288 = call i32 @tdefl_compress_buffer(ptr noundef nonnull %253, ptr noundef nonnull %215, i64 noundef %274, i32 noundef %spec.select407)
  switch i32 %288, label %289 [
    i32 1, label %296
    i32 0, label %273
  ]

289:                                              ; preds = %286, %273, %276
  %.sink = phi i32 [ 20, %276 ], [ 20, %273 ], [ 12, %286 ]
  %290 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef %.sink)
  %291 = getelementptr inbounds i8, ptr %0, i64 48
  %292 = load ptr, ptr %291, align 8, !tbaa !27
  %293 = load ptr, ptr %213, align 8, !tbaa !26
  call void %292(ptr noundef %293, ptr noundef nonnull %253) #6
  %294 = load ptr, ptr %291, align 8, !tbaa !27
  %295 = load ptr, ptr %213, align 8, !tbaa !26
  call void %294(ptr noundef %295, ptr noundef nonnull %215) #6
  br label %.thread434

.thread434:                                       ; preds = %266, %289, %254
  %.2.ph = phi i32 [ %258, %254 ], [ 0, %289 ], [ %272, %266 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #6
  br label %.thread440

296:                                              ; preds = %286
  %297 = trunc i64 %281 to i32
  %298 = getelementptr inbounds i8, ptr %0, i64 48
  %299 = load ptr, ptr %298, align 8, !tbaa !27
  %300 = load ptr, ptr %213, align 8, !tbaa !26
  call void %299(ptr noundef %300, ptr noundef nonnull %253) #6
  store i64 %277, ptr %17, align 8, !tbaa !14
  %301 = load i64, ptr %261, align 8, !tbaa !31
  store i64 %301, ptr %18, align 8, !tbaa !14
  %302 = load i64, ptr %260, align 8, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #6
  br label %303

303:                                              ; preds = %._crit_edge, %296
  %.5342 = phi i64 [ %302, %296 ], [ %.2339.lcssa, %._crit_edge ]
  %.5316 = phi i32 [ %297, %296 ], [ %.0311.lcssa, %._crit_edge ]
  %304 = getelementptr inbounds i8, ptr %0, i64 48
  %305 = load ptr, ptr %304, align 8, !tbaa !27
  %306 = load ptr, ptr %213, align 8, !tbaa !26
  call void %305(ptr noundef %306, ptr noundef nonnull %215) #6
  br label %307

307:                                              ; preds = %303, %209
  %.7344 = phi i64 [ %.5342, %303 ], [ %.1338, %209 ]
  %.7318 = phi i32 [ %.5316, %303 ], [ 0, %209 ]
  br i1 %.not, label %308, label %333

308:                                              ; preds = %307
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #6
  call void @mz_write_le32(ptr noundef nonnull %22, i32 noundef 134695760)
  %309 = getelementptr inbounds i8, ptr %22, i64 4
  call void @mz_write_le32(ptr noundef nonnull %309, i32 noundef %.7318)
  %310 = icmp eq ptr %.1336, null
  br i1 %310, label %311, label %322

311:                                              ; preds = %308
  %312 = load i64, ptr %18, align 8, !tbaa !14
  %313 = icmp ugt i64 %312, 4294967295
  br i1 %313, label %314, label %316

314:                                              ; preds = %311
  %315 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 29)
  br label %.thread447

316:                                              ; preds = %311
  %317 = getelementptr inbounds i8, ptr %22, i64 8
  %318 = trunc nuw i64 %312 to i32
  call void @mz_write_le32(ptr noundef nonnull %317, i32 noundef %318)
  %319 = getelementptr inbounds i8, ptr %22, i64 12
  %320 = load i64, ptr %17, align 8, !tbaa !14
  %321 = trunc i64 %320 to i32
  call void @mz_write_le32(ptr noundef nonnull %319, i32 noundef %321)
  br label %327

322:                                              ; preds = %308
  %323 = getelementptr inbounds i8, ptr %22, i64 8
  %324 = load i64, ptr %18, align 8, !tbaa !14
  call void @mz_write_le64(ptr noundef nonnull %323, i64 noundef %324)
  %325 = getelementptr inbounds i8, ptr %22, i64 16
  %326 = load i64, ptr %17, align 8, !tbaa !14
  call void @mz_write_le64(ptr noundef nonnull %325, i64 noundef %326)
  br label %327

327:                                              ; preds = %322, %316
  %.0 = phi i64 [ 16, %316 ], [ 24, %322 ]
  %328 = getelementptr inbounds i8, ptr %0, i64 80
  %329 = load ptr, ptr %328, align 8, !tbaa !23
  %330 = getelementptr inbounds i8, ptr %0, i64 96
  %331 = load ptr, ptr %330, align 8, !tbaa !24
  %332 = call i64 %329(ptr noundef %331, i64 noundef %.7344, ptr noundef nonnull %22, i64 noundef %.0) #6
  %.not396 = icmp eq i64 %332, %.0
  br i1 %.not396, label %380, label %.thread447

.thread447:                                       ; preds = %314, %327
  %.6.ph = phi i32 [ 0, %327 ], [ %315, %314 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #6
  br label %.thread440

333:                                              ; preds = %307
  %.not397 = icmp eq ptr %.1336, null
  br i1 %.not397, label %341, label %334

334:                                              ; preds = %333
  %335 = icmp ugt i64 %4, 4294967294
  %.17 = select i1 %335, ptr %17, ptr null
  %336 = select i1 %335, ptr %18, ptr null
  %337 = load i64, ptr %16, align 8, !tbaa !14
  %338 = icmp ugt i64 %337, 4294967294
  %339 = select i1 %338, ptr %16, ptr null
  %340 = call i32 @mz_zip_writer_create_zip64_extra_data(ptr noundef nonnull %20, ptr noundef %.17, ptr noundef %336, ptr noundef %339)
  br label %341

341:                                              ; preds = %334, %333
  %.2332 = phi i32 [ %340, %334 ], [ %.1331, %333 ]
  %342 = trunc nuw i64 %71 to i16
  %343 = add i32 %.2332, %10
  %344 = trunc i32 %343 to i16
  %345 = icmp ugt i64 %4, 4294967294
  %346 = load i64, ptr %17, align 8
  %347 = select i1 %345, i64 4294967295, i64 %346
  %348 = load i64, ptr %18, align 8
  %349 = select i1 %345, i64 4294967295, i64 %348
  %350 = load i16, ptr %14, align 2, !tbaa !5
  %351 = load i16, ptr %15, align 2, !tbaa !5
  %352 = call i32 @mz_zip_writer_create_local_dir_header(ptr noundef nonnull %0, ptr noundef nonnull %19, i16 noundef zeroext %342, i16 noundef zeroext %344, i64 noundef %347, i64 noundef %349, i32 noundef %.7318, i16 noundef zeroext %spec.select405, i16 noundef zeroext %spec.select, i16 noundef zeroext %350, i16 noundef zeroext %351)
  %.not398 = icmp eq i32 %352, 0
  br i1 %.not398, label %353, label %355

353:                                              ; preds = %341
  %354 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 27)
  br label %.thread440

355:                                              ; preds = %341
  %356 = load i64, ptr %16, align 8, !tbaa !14
  %357 = getelementptr inbounds i8, ptr %0, i64 80
  %358 = load ptr, ptr %357, align 8, !tbaa !23
  %359 = getelementptr inbounds i8, ptr %0, i64 96
  %360 = load ptr, ptr %359, align 8, !tbaa !24
  %361 = call i64 %358(ptr noundef %360, i64 noundef %356, ptr noundef nonnull %19, i64 noundef 30) #6
  %.not399 = icmp eq i64 %361, 30
  br i1 %.not399, label %364, label %362

362:                                              ; preds = %355
  %363 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 19)
  br label %.thread440

364:                                              ; preds = %355
  br i1 %.not397, label %.thread454, label %365

365:                                              ; preds = %364
  %366 = add i64 %356, 30
  %367 = load ptr, ptr %357, align 8, !tbaa !23
  %368 = load ptr, ptr %359, align 8, !tbaa !24
  %369 = call i64 %367(ptr noundef %368, i64 noundef %366, ptr noundef nonnull %1, i64 noundef %71) #6
  %.not400 = icmp eq i64 %369, %71
  br i1 %.not400, label %372, label %370

370:                                              ; preds = %365
  %371 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 19)
  br label %.thread440

372:                                              ; preds = %365
  %373 = add i64 %366, %71
  %374 = load ptr, ptr %357, align 8, !tbaa !23
  %375 = load ptr, ptr %359, align 8, !tbaa !24
  %376 = zext i32 %.2332 to i64
  %377 = call i64 %374(ptr noundef %375, i64 noundef %373, ptr noundef nonnull %20, i64 noundef %376) #6
  %.not401 = icmp eq i64 %377, %376
  br i1 %.not401, label %.thread459, label %378

378:                                              ; preds = %372
  %379 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 19)
  br label %.thread440

380:                                              ; preds = %327
  %381 = add i64 %.0, %.7344
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #6
  br i1 %310, label %.thread454, label %.thread459

.thread459:                                       ; preds = %372, %380
  %.9453463 = phi i64 [ %381, %380 ], [ %.7344, %372 ]
  %382 = load i64, ptr %17, align 8, !tbaa !14
  %383 = icmp ugt i64 %382, 4294967294
  %.18 = select i1 %383, ptr %17, ptr null
  %384 = select i1 %383, ptr %18, ptr null
  %385 = load i64, ptr %16, align 8, !tbaa !14
  %386 = icmp ugt i64 %385, 4294967294
  %387 = select i1 %386, ptr %16, ptr null
  %388 = call i32 @mz_zip_writer_create_zip64_extra_data(ptr noundef nonnull %20, ptr noundef %.18, ptr noundef %384, ptr noundef %387)
  br label %.thread454

.thread454:                                       ; preds = %364, %.thread459, %380
  %.9453458 = phi i64 [ %.9453463, %.thread459 ], [ %381, %380 ], [ %.7344, %364 ]
  %.4334 = phi i32 [ %388, %.thread459 ], [ %.1331, %380 ], [ %.2332, %364 ]
  %389 = trunc nuw i64 %71 to i16
  %390 = trunc i32 %.4334 to i16
  %391 = load i64, ptr %17, align 8, !tbaa !14
  %392 = load i64, ptr %18, align 8, !tbaa !14
  %393 = load i16, ptr %14, align 2, !tbaa !5
  %394 = load i16, ptr %15, align 2, !tbaa !5
  %395 = load i64, ptr %16, align 8, !tbaa !14
  %396 = call i32 @mz_zip_writer_add_to_central_dir(ptr noundef nonnull %0, ptr noundef nonnull %1, i16 noundef zeroext %389, ptr noundef %.1336, i16 noundef zeroext %390, ptr noundef %6, i16 noundef zeroext %7, i64 noundef %391, i64 noundef %392, i32 noundef %.7318, i16 noundef zeroext %spec.select405, i16 noundef zeroext %spec.select, i16 noundef zeroext %393, i16 noundef zeroext %394, i64 noundef %395, i32 noundef 0, ptr noundef %11, i32 noundef %12)
  %.not403 = icmp eq i32 %396, 0
  br i1 %.not403, label %.thread440, label %397

397:                                              ; preds = %.thread454
  %398 = getelementptr inbounds i8, ptr %0, i64 16
  %399 = load i32, ptr %398, align 8, !tbaa !20
  %400 = add i32 %399, 1
  store i32 %400, ptr %398, align 8, !tbaa !20
  store i64 %.9453458, ptr %0, align 8, !tbaa !9
  br label %.thread440

.thread440:                                       ; preds = %238, %229, %.thread434, %216, %.thread447, %.thread454, %397, %378, %370, %362, %353, %205, %193, %186, %178, %170, %162, %154, %147, %139, %108, %84, %73, %65, %57, %53, %43
  %.7 = phi i32 [ %44, %43 ], [ %54, %53 ], [ %66, %65 ], [ %74, %73 ], [ %85, %84 ], [ %148, %147 ], [ %155, %154 ], [ %163, %162 ], [ %206, %205 ], [ %363, %362 ], [ %371, %370 ], [ %379, %378 ], [ 1, %397 ], [ %354, %353 ], [ %140, %139 ], [ %171, %170 ], [ %187, %186 ], [ %194, %193 ], [ %179, %178 ], [ %109, %108 ], [ %58, %57 ], [ 0, %.thread454 ], [ %.6.ph, %.thread447 ], [ %.2.ph, %.thread434 ], [ %217, %216 ], [ %242, %238 ], [ %233, %229 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 30, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %14) #6
  ret i32 %.7
}

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { 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 #4 = { alwaysinline 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 #5 = { mustprogress nofree nounwind willreturn memory(argmem: read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind }
attributes #7 = { nounwind willreturn memory(read) }
attributes #8 = { 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 = !{!"short", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"", !11, i64 0, !11, i64 8, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !11, i64 32, !13, i64 40, !13, i64 48, !13, i64 56, !13, i64 64, !13, i64 72, !13, i64 80, !13, i64 88, !13, i64 96, !13, i64 104}
!11 = !{!"long", !7, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!"any pointer", !7, i64 0}
!14 = !{!11, !11, i64 0}
!15 = !{!10, !13, i64 104}
!16 = !{!10, !12, i64 20}
!17 = !{!18, !12, i64 100}
!18 = !{!"mz_zip_internal_state_tag", !19, i64 0, !19, i64 32, !19, i64 64, !12, i64 96, !12, i64 100, !12, i64 104, !13, i64 112, !11, i64 120, !13, i64 128, !11, i64 136, !11, i64 144}
!19 = !{!"", !13, i64 0, !11, i64 8, !11, i64 16, !12, i64 24}
!20 = !{!10, !12, i64 16}
!21 = !{!18, !11, i64 8}
!22 = !{!10, !11, i64 32}
!23 = !{!10, !13, i64 80}
!24 = !{!10, !13, i64 96}
!25 = !{!10, !13, i64 40}
!26 = !{!10, !13, i64 64}
!27 = !{!10, !13, i64 48}
!28 = !{!29, !13, i64 0}
!29 = !{!"", !13, i64 0, !11, i64 8, !11, i64 16}
!30 = !{!29, !11, i64 8}
!31 = !{!29, !11, i64 16}
!32 = !{!10, !13, i64 88}


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