; 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_archive_file_stat = type { i32, i64, i16, i16, i16, i16, i32, i64, i64, i16, i32, i64, i32, i32, i32, i32, [512 x i8], [512 x i8], i64 }
%struct.mz_zip_array = type { ptr, i64, i64, i32 }
%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 }

@.str.12 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [66 x i8], align 1
@__PRETTY_FUNCTION__.mz_zip_writer_add_from_zip_reader = external hidden unnamed_addr constant [87 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: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1

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

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

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

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

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

; Function Attrs: alwaysinline nounwind uwtable
declare hidden i32 @mz_zip_array_resize(ptr noundef, ptr noundef, i64 noundef, i32 noundef) #3

; Function Attrs: alwaysinline nounwind uwtable
declare hidden void @mz_zip_array_clear(ptr noundef, ptr noundef) #3

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

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

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

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

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

51:                                               ; preds = %3
  %52 = load ptr, ptr %5, align 8, !tbaa !5
  %53 = getelementptr inbounds %struct.mz_zip_archive, ptr %52, i32 0, i32 15
  %54 = load ptr, ptr %53, align 8, !tbaa !11
  %55 = icmp ne ptr %54, null
  br i1 %55, label %56, label %66

56:                                               ; preds = %51
  %57 = load ptr, ptr %5, align 8, !tbaa !5
  %58 = getelementptr inbounds %struct.mz_zip_archive, ptr %57, i32 0, i32 3
  %59 = load i32, ptr %58, align 4, !tbaa !14
  %60 = icmp ne i32 %59, 2
  br i1 %60, label %66, label %61

61:                                               ; preds = %56
  %62 = load ptr, ptr %6, align 8, !tbaa !5
  %63 = getelementptr inbounds %struct.mz_zip_archive, ptr %62, i32 0, i32 11
  %64 = load ptr, ptr %63, align 8, !tbaa !15
  %65 = icmp ne ptr %64, null
  br i1 %65, label %69, label %66

66:                                               ; preds = %61, %56, %51, %3
  %67 = load ptr, ptr %5, align 8, !tbaa !5
  %68 = call i32 @mz_zip_set_error(ptr noundef %67, i32 noundef 24)
  store i32 %68, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1240

69:                                               ; preds = %61
  %70 = load ptr, ptr %5, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.mz_zip_archive, ptr %70, i32 0, i32 15
  %72 = load ptr, ptr %71, align 8, !tbaa !11
  store ptr %72, ptr %20, align 8, !tbaa !5
  %73 = load ptr, ptr %6, align 8, !tbaa !5
  %74 = getelementptr inbounds %struct.mz_zip_archive, ptr %73, i32 0, i32 15
  %75 = load ptr, ptr %74, align 8, !tbaa !11
  %76 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %75, i32 0, i32 4
  %77 = load i32, ptr %76, align 4, !tbaa !16
  %78 = icmp ne i32 %77, 0
  br i1 %78, label %79, label %89

79:                                               ; preds = %69
  %80 = load ptr, ptr %5, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.mz_zip_archive, ptr %80, i32 0, i32 15
  %82 = load ptr, ptr %81, align 8, !tbaa !11
  %83 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %82, i32 0, i32 4
  %84 = load i32, ptr %83, align 4, !tbaa !16
  %85 = icmp ne i32 %84, 0
  br i1 %85, label %89, label %86

86:                                               ; preds = %79
  %87 = load ptr, ptr %5, align 8, !tbaa !5
  %88 = call i32 @mz_zip_set_error(ptr noundef %87, i32 noundef 24)
  store i32 %88, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1240

89:                                               ; preds = %79, %69
  %90 = load ptr, ptr %6, align 8, !tbaa !5
  %91 = load i32, ptr %7, align 4, !tbaa !9
  %92 = call ptr @mz_zip_get_cdh(ptr noundef %90, i32 noundef %91)
  store ptr %92, ptr %22, align 8, !tbaa !5
  %93 = icmp eq ptr null, %92
  br i1 %93, label %94, label %97

94:                                               ; preds = %89
  %95 = load ptr, ptr %5, align 8, !tbaa !5
  %96 = call i32 @mz_zip_set_error(ptr noundef %95, i32 noundef 24)
  store i32 %96, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1240

97:                                               ; preds = %89
  %98 = load ptr, ptr %22, align 8, !tbaa !5
  %99 = getelementptr inbounds i8, ptr %98, i64 0
  %100 = getelementptr inbounds i8, ptr %99, i64 0
  %101 = load i8, ptr %100, align 1, !tbaa !19
  %102 = zext i8 %101 to i32
  %103 = load ptr, ptr %22, align 8, !tbaa !5
  %104 = getelementptr inbounds i8, ptr %103, i64 0
  %105 = getelementptr inbounds i8, ptr %104, i64 1
  %106 = load i8, ptr %105, align 1, !tbaa !19
  %107 = zext i8 %106 to i32
  %108 = shl i32 %107, 8
  %109 = or i32 %102, %108
  %110 = load ptr, ptr %22, align 8, !tbaa !5
  %111 = getelementptr inbounds i8, ptr %110, i64 0
  %112 = getelementptr inbounds i8, ptr %111, i64 2
  %113 = load i8, ptr %112, align 1, !tbaa !19
  %114 = zext i8 %113 to i32
  %115 = shl i32 %114, 16
  %116 = or i32 %109, %115
  %117 = load ptr, ptr %22, align 8, !tbaa !5
  %118 = getelementptr inbounds i8, ptr %117, i64 0
  %119 = getelementptr inbounds i8, ptr %118, i64 3
  %120 = load i8, ptr %119, align 1, !tbaa !19
  %121 = zext i8 %120 to i32
  %122 = shl i32 %121, 24
  %123 = or i32 %116, %122
  %124 = icmp ne i32 %123, 33639248
  br i1 %124, label %125, label %128

125:                                              ; preds = %97
  %126 = load ptr, ptr %5, align 8, !tbaa !5
  %127 = call i32 @mz_zip_set_error(ptr noundef %126, i32 noundef 9)
  store i32 %127, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1240

128:                                              ; preds = %97
  %129 = load ptr, ptr %22, align 8, !tbaa !5
  %130 = getelementptr inbounds i8, ptr %129, i64 28
  %131 = getelementptr inbounds i8, ptr %130, i64 0
  %132 = load i8, ptr %131, align 1, !tbaa !19
  %133 = zext i8 %132 to i32
  %134 = load ptr, ptr %22, align 8, !tbaa !5
  %135 = getelementptr inbounds i8, ptr %134, i64 28
  %136 = getelementptr inbounds i8, ptr %135, i64 1
  %137 = load i8, ptr %136, align 1, !tbaa !19
  %138 = zext i8 %137 to i32
  %139 = shl i32 %138, 8
  %140 = or i32 %133, %139
  store i32 %140, ptr %24, align 4, !tbaa !9
  %141 = load ptr, ptr %22, align 8, !tbaa !5
  %142 = getelementptr inbounds i8, ptr %141, i64 32
  %143 = getelementptr inbounds i8, ptr %142, i64 0
  %144 = load i8, ptr %143, align 1, !tbaa !19
  %145 = zext i8 %144 to i32
  %146 = load ptr, ptr %22, align 8, !tbaa !5
  %147 = getelementptr inbounds i8, ptr %146, i64 32
  %148 = getelementptr inbounds i8, ptr %147, i64 1
  %149 = load i8, ptr %148, align 1, !tbaa !19
  %150 = zext i8 %149 to i32
  %151 = shl i32 %150, 8
  %152 = or i32 %145, %151
  store i32 %152, ptr %25, align 4, !tbaa !9
  %153 = load ptr, ptr %22, align 8, !tbaa !5
  %154 = getelementptr inbounds i8, ptr %153, i64 30
  %155 = getelementptr inbounds i8, ptr %154, i64 0
  %156 = load i8, ptr %155, align 1, !tbaa !19
  %157 = zext i8 %156 to i32
  %158 = load ptr, ptr %22, align 8, !tbaa !5
  %159 = getelementptr inbounds i8, ptr %158, i64 30
  %160 = getelementptr inbounds i8, ptr %159, i64 1
  %161 = load i8, ptr %160, align 1, !tbaa !19
  %162 = zext i8 %161 to i32
  %163 = shl i32 %162, 8
  %164 = or i32 %157, %163
  store i32 %164, ptr %26, align 4, !tbaa !9
  %165 = load i32, ptr %24, align 4, !tbaa !9
  %166 = load i32, ptr %26, align 4, !tbaa !9
  %167 = add i32 %165, %166
  %168 = load i32, ptr %25, align 4, !tbaa !9
  %169 = add i32 %167, %168
  store i32 %169, ptr %11, align 4, !tbaa !9
  %170 = load ptr, ptr %20, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %170, i32 0, i32 0
  %172 = getelementptr inbounds %struct.mz_zip_array, ptr %171, i32 0, i32 1
  %173 = load i64, ptr %172, align 8, !tbaa !20
  %174 = add i64 %173, 46
  %175 = load i32, ptr %11, align 4, !tbaa !9
  %176 = zext i32 %175 to i64
  %177 = add i64 %174, %176
  %178 = add i64 %177, 32
  %179 = icmp uge i64 %178, 4294967295
  br i1 %179, label %180, label %183

180:                                              ; preds = %128
  %181 = load ptr, ptr %5, align 8, !tbaa !5
  %182 = call i32 @mz_zip_set_error(ptr noundef %181, i32 noundef 15)
  store i32 %182, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1240

183:                                              ; preds = %128
  %184 = load ptr, ptr %5, align 8, !tbaa !5
  %185 = call i32 @mz_zip_writer_compute_padding_needed_for_file_alignment(ptr noundef %184)
  store i32 %185, ptr %10, align 4, !tbaa !9
  %186 = load ptr, ptr %20, align 8, !tbaa !5
  %187 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %186, i32 0, i32 4
  %188 = load i32, ptr %187, align 4, !tbaa !16
  %189 = icmp ne i32 %188, 0
  br i1 %189, label %199, label %190

190:                                              ; preds = %183
  %191 = load ptr, ptr %5, align 8, !tbaa !5
  %192 = getelementptr inbounds %struct.mz_zip_archive, ptr %191, i32 0, i32 2
  %193 = load i32, ptr %192, align 8, !tbaa !21
  %194 = icmp eq i32 %193, 65535
  br i1 %194, label %195, label %198

195:                                              ; preds = %190
  %196 = load ptr, ptr %5, align 8, !tbaa !5
  %197 = call i32 @mz_zip_set_error(ptr noundef %196, i32 noundef 2)
  store i32 %197, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1240

198:                                              ; preds = %190
  br label %208

199:                                              ; preds = %183
  %200 = load ptr, ptr %5, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.mz_zip_archive, ptr %200, i32 0, i32 2
  %202 = load i32, ptr %201, align 8, !tbaa !21
  %203 = icmp eq i32 %202, -1
  br i1 %203, label %204, label %207

204:                                              ; preds = %199
  %205 = load ptr, ptr %5, align 8, !tbaa !5
  %206 = call i32 @mz_zip_set_error(ptr noundef %205, i32 noundef 2)
  store i32 %206, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1240

207:                                              ; preds = %199
  br label %208

208:                                              ; preds = %207, %198
  %209 = load ptr, ptr %6, align 8, !tbaa !5
  %210 = load i32, ptr %7, align 4, !tbaa !9
  %211 = load ptr, ptr %22, align 8, !tbaa !5
  %212 = call i32 @mz_zip_file_stat_internal(ptr noundef %209, i32 noundef %210, ptr noundef %211, ptr noundef %23, ptr noundef null)
  %213 = icmp ne i32 %212, 0
  br i1 %213, label %215, label %214

214:                                              ; preds = %208
  store i32 0, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1240

215:                                              ; preds = %208
  %216 = getelementptr inbounds %struct.mz_zip_archive_file_stat, ptr %23, i32 0, i32 11
  %217 = load i64, ptr %216, align 8, !tbaa !22
  store i64 %217, ptr %14, align 8, !tbaa !25
  %218 = load ptr, ptr %5, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.mz_zip_archive, ptr %218, i32 0, i32 0
  %220 = load i64, ptr %219, align 8, !tbaa !26
  store i64 %220, ptr %15, align 8, !tbaa !25
  %221 = load ptr, ptr %6, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.mz_zip_archive, ptr %221, i32 0, i32 11
  %223 = load ptr, ptr %222, align 8, !tbaa !15
  %224 = load ptr, ptr %6, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.mz_zip_archive, ptr %224, i32 0, i32 14
  %226 = load ptr, ptr %225, align 8, !tbaa !27
  %227 = load i64, ptr %14, align 8, !tbaa !25
  %228 = load ptr, ptr %17, align 8, !tbaa !5
  %229 = call i64 %223(ptr noundef %226, i64 noundef %227, ptr noundef %228, i64 noundef 30)
  %230 = icmp ne i64 %229, 30
  br i1 %230, label %231, label %234

231:                                              ; preds = %215
  %232 = load ptr, ptr %5, align 8, !tbaa !5
  %233 = call i32 @mz_zip_set_error(ptr noundef %232, i32 noundef 20)
  store i32 %233, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1240

234:                                              ; preds = %215
  %235 = load ptr, ptr %17, align 8, !tbaa !5
  %236 = getelementptr inbounds i8, ptr %235, i64 0
  %237 = load i8, ptr %236, align 1, !tbaa !19
  %238 = zext i8 %237 to i32
  %239 = load ptr, ptr %17, align 8, !tbaa !5
  %240 = getelementptr inbounds i8, ptr %239, i64 1
  %241 = load i8, ptr %240, align 1, !tbaa !19
  %242 = zext i8 %241 to i32
  %243 = shl i32 %242, 8
  %244 = or i32 %238, %243
  %245 = load ptr, ptr %17, align 8, !tbaa !5
  %246 = getelementptr inbounds i8, ptr %245, i64 2
  %247 = load i8, ptr %246, align 1, !tbaa !19
  %248 = zext i8 %247 to i32
  %249 = shl i32 %248, 16
  %250 = or i32 %244, %249
  %251 = load ptr, ptr %17, align 8, !tbaa !5
  %252 = getelementptr inbounds i8, ptr %251, i64 3
  %253 = load i8, ptr %252, align 1, !tbaa !19
  %254 = zext i8 %253 to i32
  %255 = shl i32 %254, 24
  %256 = or i32 %250, %255
  %257 = icmp ne i32 %256, 67324752
  br i1 %257, label %258, label %261

258:                                              ; preds = %234
  %259 = load ptr, ptr %5, align 8, !tbaa !5
  %260 = call i32 @mz_zip_set_error(ptr noundef %259, i32 noundef 9)
  store i32 %260, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1240

261:                                              ; preds = %234
  %262 = load i64, ptr %14, align 8, !tbaa !25
  %263 = add i64 %262, 30
  store i64 %263, ptr %14, align 8, !tbaa !25
  %264 = load ptr, ptr %17, align 8, !tbaa !5
  %265 = getelementptr inbounds i8, ptr %264, i64 26
  %266 = getelementptr inbounds i8, ptr %265, i64 0
  %267 = load i8, ptr %266, align 1, !tbaa !19
  %268 = zext i8 %267 to i32
  %269 = load ptr, ptr %17, align 8, !tbaa !5
  %270 = getelementptr inbounds i8, ptr %269, i64 26
  %271 = getelementptr inbounds i8, ptr %270, i64 1
  %272 = load i8, ptr %271, align 1, !tbaa !19
  %273 = zext i8 %272 to i32
  %274 = shl i32 %273, 8
  %275 = or i32 %268, %274
  store i32 %275, ptr %27, align 4, !tbaa !9
  %276 = load ptr, ptr %17, align 8, !tbaa !5
  %277 = getelementptr inbounds i8, ptr %276, i64 28
  %278 = getelementptr inbounds i8, ptr %277, i64 0
  %279 = load i8, ptr %278, align 1, !tbaa !19
  %280 = zext i8 %279 to i32
  %281 = load ptr, ptr %17, align 8, !tbaa !5
  %282 = getelementptr inbounds i8, ptr %281, i64 28
  %283 = getelementptr inbounds i8, ptr %282, i64 1
  %284 = load i8, ptr %283, align 1, !tbaa !19
  %285 = zext i8 %284 to i32
  %286 = shl i32 %285, 8
  %287 = or i32 %280, %286
  store i32 %287, ptr %28, align 4, !tbaa !9
  %288 = load ptr, ptr %17, align 8, !tbaa !5
  %289 = getelementptr inbounds i8, ptr %288, i64 18
  %290 = getelementptr inbounds i8, ptr %289, i64 0
  %291 = load i8, ptr %290, align 1, !tbaa !19
  %292 = zext i8 %291 to i32
  %293 = load ptr, ptr %17, align 8, !tbaa !5
  %294 = getelementptr inbounds i8, ptr %293, i64 18
  %295 = getelementptr inbounds i8, ptr %294, i64 1
  %296 = load i8, ptr %295, align 1, !tbaa !19
  %297 = zext i8 %296 to i32
  %298 = shl i32 %297, 8
  %299 = or i32 %292, %298
  %300 = load ptr, ptr %17, align 8, !tbaa !5
  %301 = getelementptr inbounds i8, ptr %300, i64 18
  %302 = getelementptr inbounds i8, ptr %301, i64 2
  %303 = load i8, ptr %302, align 1, !tbaa !19
  %304 = zext i8 %303 to i32
  %305 = shl i32 %304, 16
  %306 = or i32 %299, %305
  %307 = load ptr, ptr %17, align 8, !tbaa !5
  %308 = getelementptr inbounds i8, ptr %307, i64 18
  %309 = getelementptr inbounds i8, ptr %308, i64 3
  %310 = load i8, ptr %309, align 1, !tbaa !19
  %311 = zext i8 %310 to i32
  %312 = shl i32 %311, 24
  %313 = or i32 %306, %312
  %314 = zext i32 %313 to i64
  store i64 %314, ptr %29, align 8, !tbaa !25
  %315 = load ptr, ptr %17, align 8, !tbaa !5
  %316 = getelementptr inbounds i8, ptr %315, i64 22
  %317 = getelementptr inbounds i8, ptr %316, i64 0
  %318 = load i8, ptr %317, align 1, !tbaa !19
  %319 = zext i8 %318 to i32
  %320 = load ptr, ptr %17, align 8, !tbaa !5
  %321 = getelementptr inbounds i8, ptr %320, i64 22
  %322 = getelementptr inbounds i8, ptr %321, i64 1
  %323 = load i8, ptr %322, align 1, !tbaa !19
  %324 = zext i8 %323 to i32
  %325 = shl i32 %324, 8
  %326 = or i32 %319, %325
  %327 = load ptr, ptr %17, align 8, !tbaa !5
  %328 = getelementptr inbounds i8, ptr %327, i64 22
  %329 = getelementptr inbounds i8, ptr %328, i64 2
  %330 = load i8, ptr %329, align 1, !tbaa !19
  %331 = zext i8 %330 to i32
  %332 = shl i32 %331, 16
  %333 = or i32 %326, %332
  %334 = load ptr, ptr %17, align 8, !tbaa !5
  %335 = getelementptr inbounds i8, ptr %334, i64 22
  %336 = getelementptr inbounds i8, ptr %335, i64 3
  %337 = load i8, ptr %336, align 1, !tbaa !19
  %338 = zext i8 %337 to i32
  %339 = shl i32 %338, 24
  %340 = or i32 %333, %339
  %341 = zext i32 %340 to i64
  store i64 %341, ptr %30, align 8, !tbaa !25
  %342 = load i32, ptr %27, align 4, !tbaa !9
  %343 = load i32, ptr %28, align 4, !tbaa !9
  %344 = add i32 %342, %343
  %345 = zext i32 %344 to i64
  %346 = getelementptr inbounds %struct.mz_zip_archive_file_stat, ptr %23, i32 0, i32 7
  %347 = load i64, ptr %346, align 8, !tbaa !28
  %348 = add i64 %345, %347
  store i64 %348, ptr %12, align 8, !tbaa !25
  %349 = load i32, ptr %28, align 4, !tbaa !9
  %350 = icmp ne i32 %349, 0
  br i1 %350, label %351, label %583

351:                                              ; preds = %261
  %352 = load i64, ptr %29, align 8, !tbaa !25
  %353 = icmp eq i64 %352, 4294967295
  br i1 %353, label %357, label %354

354:                                              ; preds = %351
  %355 = load i64, ptr %30, align 8, !tbaa !25
  %356 = icmp eq i64 %355, 4294967295
  br i1 %356, label %357, label %583

357:                                              ; preds = %354, %351
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #5
  %358 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %358, ptr %35, align 4, !tbaa !9
  call void @mz_zip_array_init(ptr noundef %33, i32 noundef 1)
  %359 = load ptr, ptr %5, align 8, !tbaa !5
  %360 = load i32, ptr %28, align 4, !tbaa !9
  %361 = zext i32 %360 to i64
  %362 = call i32 @mz_zip_array_resize(ptr noundef %359, ptr noundef %33, i64 noundef %361, i32 noundef 0)
  %363 = icmp ne i32 %362, 0
  br i1 %363, label %367, label %364

364:                                              ; preds = %357
  %365 = load ptr, ptr %5, align 8, !tbaa !5
  %366 = call i32 @mz_zip_set_error(ptr noundef %365, i32 noundef 16)
  store i32 %366, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %580

367:                                              ; preds = %357
  %368 = load ptr, ptr %6, align 8, !tbaa !5
  %369 = getelementptr inbounds %struct.mz_zip_archive, ptr %368, i32 0, i32 11
  %370 = load ptr, ptr %369, align 8, !tbaa !15
  %371 = load ptr, ptr %6, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.mz_zip_archive, ptr %371, i32 0, i32 14
  %373 = load ptr, ptr %372, align 8, !tbaa !27
  %374 = getelementptr inbounds %struct.mz_zip_archive_file_stat, ptr %23, i32 0, i32 11
  %375 = load i64, ptr %374, align 8, !tbaa !22
  %376 = add i64 %375, 30
  %377 = load i32, ptr %27, align 4, !tbaa !9
  %378 = zext i32 %377 to i64
  %379 = add i64 %376, %378
  %380 = getelementptr inbounds %struct.mz_zip_array, ptr %33, i32 0, i32 0
  %381 = load ptr, ptr %380, align 8, !tbaa !29
  %382 = load i32, ptr %28, align 4, !tbaa !9
  %383 = zext i32 %382 to i64
  %384 = call i64 %370(ptr noundef %373, i64 noundef %379, ptr noundef %381, i64 noundef %383)
  %385 = load i32, ptr %28, align 4, !tbaa !9
  %386 = zext i32 %385 to i64
  %387 = icmp ne i64 %384, %386
  br i1 %387, label %388, label %392

388:                                              ; preds = %367
  %389 = load ptr, ptr %5, align 8, !tbaa !5
  call void @mz_zip_array_clear(ptr noundef %389, ptr noundef %33)
  %390 = load ptr, ptr %5, align 8, !tbaa !5
  %391 = call i32 @mz_zip_set_error(ptr noundef %390, i32 noundef 20)
  store i32 %391, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %580

392:                                              ; preds = %367
  %393 = getelementptr inbounds %struct.mz_zip_array, ptr %33, i32 0, i32 0
  %394 = load ptr, ptr %393, align 8, !tbaa !29
  store ptr %394, ptr %34, align 8, !tbaa !5
  br label %395

395:                                              ; preds = %575, %392
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #5
  %396 = load i32, ptr %35, align 4, !tbaa !9
  %397 = zext i32 %396 to i64
  %398 = icmp ult i64 %397, 4
  br i1 %398, label %399, label %403

399:                                              ; preds = %395
  %400 = load ptr, ptr %5, align 8, !tbaa !5
  call void @mz_zip_array_clear(ptr noundef %400, ptr noundef %33)
  %401 = load ptr, ptr %5, align 8, !tbaa !5
  %402 = call i32 @mz_zip_set_error(ptr noundef %401, i32 noundef 9)
  store i32 %402, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %572

403:                                              ; preds = %395
  %404 = load ptr, ptr %34, align 8, !tbaa !5
  %405 = getelementptr inbounds i8, ptr %404, i64 0
  %406 = load i8, ptr %405, align 1, !tbaa !19
  %407 = zext i8 %406 to i32
  %408 = load ptr, ptr %34, align 8, !tbaa !5
  %409 = getelementptr inbounds i8, ptr %408, i64 1
  %410 = load i8, ptr %409, align 1, !tbaa !19
  %411 = zext i8 %410 to i32
  %412 = shl i32 %411, 8
  %413 = or i32 %407, %412
  store i32 %413, ptr %36, align 4, !tbaa !9
  %414 = load ptr, ptr %34, align 8, !tbaa !5
  %415 = getelementptr inbounds i8, ptr %414, i64 2
  %416 = getelementptr inbounds i8, ptr %415, i64 0
  %417 = load i8, ptr %416, align 1, !tbaa !19
  %418 = zext i8 %417 to i32
  %419 = load ptr, ptr %34, align 8, !tbaa !5
  %420 = getelementptr inbounds i8, ptr %419, i64 2
  %421 = getelementptr inbounds i8, ptr %420, i64 1
  %422 = load i8, ptr %421, align 1, !tbaa !19
  %423 = zext i8 %422 to i32
  %424 = shl i32 %423, 8
  %425 = or i32 %418, %424
  store i32 %425, ptr %37, align 4, !tbaa !9
  %426 = load i32, ptr %37, align 4, !tbaa !9
  %427 = zext i32 %426 to i64
  %428 = add i64 %427, 4
  %429 = trunc i64 %428 to i32
  store i32 %429, ptr %38, align 4, !tbaa !9
  %430 = load i32, ptr %38, align 4, !tbaa !9
  %431 = load i32, ptr %35, align 4, !tbaa !9
  %432 = icmp ugt i32 %430, %431
  br i1 %432, label %433, label %437

433:                                              ; preds = %403
  %434 = load ptr, ptr %5, align 8, !tbaa !5
  call void @mz_zip_array_clear(ptr noundef %434, ptr noundef %33)
  %435 = load ptr, ptr %5, align 8, !tbaa !5
  %436 = call i32 @mz_zip_set_error(ptr noundef %435, i32 noundef 9)
  store i32 %436, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %572

437:                                              ; preds = %403
  %438 = load i32, ptr %36, align 4, !tbaa !9
  %439 = icmp eq i32 %438, 1
  br i1 %439, label %440, label %564

440:                                              ; preds = %437
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #5
  %441 = load ptr, ptr %34, align 8, !tbaa !5
  %442 = getelementptr inbounds i8, ptr %441, i64 4
  store ptr %442, ptr %39, align 8, !tbaa !5
  %443 = load i32, ptr %37, align 4, !tbaa !9
  %444 = zext i32 %443 to i64
  %445 = icmp ult i64 %444, 16
  br i1 %445, label %446, label %450

446:                                              ; preds = %440
  %447 = load ptr, ptr %5, align 8, !tbaa !5
  call void @mz_zip_array_clear(ptr noundef %447, ptr noundef %33)
  %448 = load ptr, ptr %5, align 8, !tbaa !5
  %449 = call i32 @mz_zip_set_error(ptr noundef %448, i32 noundef 9)
  store i32 %449, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %563

450:                                              ; preds = %440
  %451 = load ptr, ptr %39, align 8, !tbaa !5
  %452 = getelementptr inbounds i8, ptr %451, i64 0
  %453 = load i8, ptr %452, align 1, !tbaa !19
  %454 = zext i8 %453 to i32
  %455 = load ptr, ptr %39, align 8, !tbaa !5
  %456 = getelementptr inbounds i8, ptr %455, i64 1
  %457 = load i8, ptr %456, align 1, !tbaa !19
  %458 = zext i8 %457 to i32
  %459 = shl i32 %458, 8
  %460 = or i32 %454, %459
  %461 = load ptr, ptr %39, align 8, !tbaa !5
  %462 = getelementptr inbounds i8, ptr %461, i64 2
  %463 = load i8, ptr %462, align 1, !tbaa !19
  %464 = zext i8 %463 to i32
  %465 = shl i32 %464, 16
  %466 = or i32 %460, %465
  %467 = load ptr, ptr %39, align 8, !tbaa !5
  %468 = getelementptr inbounds i8, ptr %467, i64 3
  %469 = load i8, ptr %468, align 1, !tbaa !19
  %470 = zext i8 %469 to i32
  %471 = shl i32 %470, 24
  %472 = or i32 %466, %471
  %473 = zext i32 %472 to i64
  %474 = load ptr, ptr %39, align 8, !tbaa !5
  %475 = getelementptr inbounds i8, ptr %474, i64 4
  %476 = getelementptr inbounds i8, ptr %475, i64 0
  %477 = load i8, ptr %476, align 1, !tbaa !19
  %478 = zext i8 %477 to i32
  %479 = load ptr, ptr %39, align 8, !tbaa !5
  %480 = getelementptr inbounds i8, ptr %479, i64 4
  %481 = getelementptr inbounds i8, ptr %480, i64 1
  %482 = load i8, ptr %481, align 1, !tbaa !19
  %483 = zext i8 %482 to i32
  %484 = shl i32 %483, 8
  %485 = or i32 %478, %484
  %486 = load ptr, ptr %39, align 8, !tbaa !5
  %487 = getelementptr inbounds i8, ptr %486, i64 4
  %488 = getelementptr inbounds i8, ptr %487, i64 2
  %489 = load i8, ptr %488, align 1, !tbaa !19
  %490 = zext i8 %489 to i32
  %491 = shl i32 %490, 16
  %492 = or i32 %485, %491
  %493 = load ptr, ptr %39, align 8, !tbaa !5
  %494 = getelementptr inbounds i8, ptr %493, i64 4
  %495 = getelementptr inbounds i8, ptr %494, i64 3
  %496 = load i8, ptr %495, align 1, !tbaa !19
  %497 = zext i8 %496 to i32
  %498 = shl i32 %497, 24
  %499 = or i32 %492, %498
  %500 = zext i32 %499 to i64
  %501 = shl i64 %500, 32
  %502 = or i64 %473, %501
  store i64 %502, ptr %30, align 8, !tbaa !25
  %503 = load ptr, ptr %39, align 8, !tbaa !5
  %504 = getelementptr inbounds i8, ptr %503, i64 8
  %505 = getelementptr inbounds i8, ptr %504, i64 0
  %506 = load i8, ptr %505, align 1, !tbaa !19
  %507 = zext i8 %506 to i32
  %508 = load ptr, ptr %39, align 8, !tbaa !5
  %509 = getelementptr inbounds i8, ptr %508, i64 8
  %510 = getelementptr inbounds i8, ptr %509, i64 1
  %511 = load i8, ptr %510, align 1, !tbaa !19
  %512 = zext i8 %511 to i32
  %513 = shl i32 %512, 8
  %514 = or i32 %507, %513
  %515 = load ptr, ptr %39, align 8, !tbaa !5
  %516 = getelementptr inbounds i8, ptr %515, i64 8
  %517 = getelementptr inbounds i8, ptr %516, i64 2
  %518 = load i8, ptr %517, align 1, !tbaa !19
  %519 = zext i8 %518 to i32
  %520 = shl i32 %519, 16
  %521 = or i32 %514, %520
  %522 = load ptr, ptr %39, align 8, !tbaa !5
  %523 = getelementptr inbounds i8, ptr %522, i64 8
  %524 = getelementptr inbounds i8, ptr %523, i64 3
  %525 = load i8, ptr %524, align 1, !tbaa !19
  %526 = zext i8 %525 to i32
  %527 = shl i32 %526, 24
  %528 = or i32 %521, %527
  %529 = zext i32 %528 to i64
  %530 = load ptr, ptr %39, align 8, !tbaa !5
  %531 = getelementptr inbounds i8, ptr %530, i64 8
  %532 = getelementptr inbounds i8, ptr %531, i64 4
  %533 = getelementptr inbounds i8, ptr %532, i64 0
  %534 = load i8, ptr %533, align 1, !tbaa !19
  %535 = zext i8 %534 to i32
  %536 = load ptr, ptr %39, align 8, !tbaa !5
  %537 = getelementptr inbounds i8, ptr %536, i64 8
  %538 = getelementptr inbounds i8, ptr %537, i64 4
  %539 = getelementptr inbounds i8, ptr %538, i64 1
  %540 = load i8, ptr %539, align 1, !tbaa !19
  %541 = zext i8 %540 to i32
  %542 = shl i32 %541, 8
  %543 = or i32 %535, %542
  %544 = load ptr, ptr %39, align 8, !tbaa !5
  %545 = getelementptr inbounds i8, ptr %544, i64 8
  %546 = getelementptr inbounds i8, ptr %545, i64 4
  %547 = getelementptr inbounds i8, ptr %546, i64 2
  %548 = load i8, ptr %547, align 1, !tbaa !19
  %549 = zext i8 %548 to i32
  %550 = shl i32 %549, 16
  %551 = or i32 %543, %550
  %552 = load ptr, ptr %39, align 8, !tbaa !5
  %553 = getelementptr inbounds i8, ptr %552, i64 8
  %554 = getelementptr inbounds i8, ptr %553, i64 4
  %555 = getelementptr inbounds i8, ptr %554, i64 3
  %556 = load i8, ptr %555, align 1, !tbaa !19
  %557 = zext i8 %556 to i32
  %558 = shl i32 %557, 24
  %559 = or i32 %551, %558
  %560 = zext i32 %559 to i64
  %561 = shl i64 %560, 32
  %562 = or i64 %529, %561
  store i64 %562, ptr %29, align 8, !tbaa !25
  store i32 1, ptr %31, align 4, !tbaa !9
  store i32 2, ptr %32, align 4
  br label %563

563:                                              ; preds = %450, %446
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  br label %572

564:                                              ; preds = %437
  %565 = load i32, ptr %38, align 4, !tbaa !9
  %566 = load ptr, ptr %34, align 8, !tbaa !5
  %567 = zext i32 %565 to i64
  %568 = getelementptr inbounds i8, ptr %566, i64 %567
  store ptr %568, ptr %34, align 8, !tbaa !5
  %569 = load i32, ptr %38, align 4, !tbaa !9
  %570 = load i32, ptr %35, align 4, !tbaa !9
  %571 = sub i32 %570, %569
  store i32 %571, ptr %35, align 4, !tbaa !9
  store i32 0, ptr %32, align 4
  br label %572

572:                                              ; preds = %564, %563, %433, %399
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #5
  %573 = load i32, ptr %32, align 4
  switch i32 %573, label %580 [
    i32 0, label %574
    i32 2, label %578
  ]

574:                                              ; preds = %572
  br label %575

575:                                              ; preds = %574
  %576 = load i32, ptr %35, align 4, !tbaa !9
  %577 = icmp ne i32 %576, 0
  br i1 %577, label %395, label %578, !llvm.loop !30

578:                                              ; preds = %575, %572
  %579 = load ptr, ptr %5, align 8, !tbaa !5
  call void @mz_zip_array_clear(ptr noundef %579, ptr noundef %33)
  store i32 0, ptr %32, align 4
  br label %580

580:                                              ; preds = %578, %572, %388, %364
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #5
  %581 = load i32, ptr %32, align 4
  switch i32 %581, label %1240 [
    i32 0, label %582
  ]

582:                                              ; preds = %580
  br label %583

583:                                              ; preds = %582, %354, %261
  %584 = load ptr, ptr %20, align 8, !tbaa !5
  %585 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %584, i32 0, i32 4
  %586 = load i32, ptr %585, align 4, !tbaa !16
  %587 = icmp ne i32 %586, 0
  br i1 %587, label %617, label %588

588:                                              ; preds = %583
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #5
  %589 = load i64, ptr %15, align 8, !tbaa !25
  %590 = load i32, ptr %10, align 4, !tbaa !9
  %591 = zext i32 %590 to i64
  %592 = add i64 %589, %591
  %593 = add i64 %592, 30
  %594 = load i64, ptr %12, align 8, !tbaa !25
  %595 = add i64 %593, %594
  %596 = add i64 %595, 16
  %597 = load ptr, ptr %20, align 8, !tbaa !5
  %598 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %597, i32 0, i32 0
  %599 = getelementptr inbounds %struct.mz_zip_array, ptr %598, i32 0, i32 1
  %600 = load i64, ptr %599, align 8, !tbaa !20
  %601 = add i64 %596, %600
  %602 = add i64 %601, 46
  %603 = load i32, ptr %11, align 4, !tbaa !9
  %604 = zext i32 %603 to i64
  %605 = add i64 %602, %604
  %606 = add i64 %605, 22
  %607 = add i64 %606, 64
  store i64 %607, ptr %40, align 8, !tbaa !25
  %608 = load i64, ptr %40, align 8, !tbaa !25
  %609 = icmp uge i64 %608, 4294967295
  br i1 %609, label %610, label %613

610:                                              ; preds = %588
  %611 = load ptr, ptr %5, align 8, !tbaa !5
  %612 = call i32 @mz_zip_set_error(ptr noundef %611, i32 noundef 29)
  store i32 %612, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %614

613:                                              ; preds = %588
  store i32 0, ptr %32, align 4
  br label %614

614:                                              ; preds = %613, %610
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  %615 = load i32, ptr %32, align 4
  switch i32 %615, label %1240 [
    i32 0, label %616
  ]

616:                                              ; preds = %614
  br label %617

617:                                              ; preds = %616, %583
  %618 = load ptr, ptr %5, align 8, !tbaa !5
  %619 = load i64, ptr %15, align 8, !tbaa !25
  %620 = load i32, ptr %10, align 4, !tbaa !9
  %621 = call i32 @mz_zip_writer_write_zeros(ptr noundef %618, i64 noundef %619, i32 noundef %620)
  %622 = icmp ne i32 %621, 0
  br i1 %622, label %624, label %623

623:                                              ; preds = %617
  store i32 0, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1240

624:                                              ; preds = %617
  %625 = load i32, ptr %10, align 4, !tbaa !9
  %626 = zext i32 %625 to i64
  %627 = load i64, ptr %15, align 8, !tbaa !25
  %628 = add i64 %627, %626
  store i64 %628, ptr %15, align 8, !tbaa !25
  %629 = load i64, ptr %15, align 8, !tbaa !25
  store i64 %629, ptr %13, align 8, !tbaa !25
  %630 = load ptr, ptr %5, align 8, !tbaa !5
  %631 = getelementptr inbounds %struct.mz_zip_archive, ptr %630, i32 0, i32 6
  %632 = load i64, ptr %631, align 8, !tbaa !32
  %633 = icmp ne i64 %632, 0
  br i1 %633, label %634, label %645

634:                                              ; preds = %624
  %635 = load i64, ptr %13, align 8, !tbaa !25
  %636 = load ptr, ptr %5, align 8, !tbaa !5
  %637 = getelementptr inbounds %struct.mz_zip_archive, ptr %636, i32 0, i32 6
  %638 = load i64, ptr %637, align 8, !tbaa !32
  %639 = sub i64 %638, 1
  %640 = and i64 %635, %639
  %641 = icmp eq i64 %640, 0
  br i1 %641, label %642, label %643

642:                                              ; preds = %634
  br label %644

643:                                              ; preds = %634
  call void @__assert_fail(ptr noundef @.str.22, ptr noundef @.str.12, i32 noundef 7687, ptr noundef @__PRETTY_FUNCTION__.mz_zip_writer_add_from_zip_reader) #6
  unreachable

644:                                              ; preds = %642
  br label %645

645:                                              ; preds = %644, %624
  %646 = load ptr, ptr %5, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.mz_zip_archive, ptr %646, i32 0, i32 12
  %648 = load ptr, ptr %647, align 8, !tbaa !33
  %649 = load ptr, ptr %5, align 8, !tbaa !5
  %650 = getelementptr inbounds %struct.mz_zip_archive, ptr %649, i32 0, i32 14
  %651 = load ptr, ptr %650, align 8, !tbaa !27
  %652 = load i64, ptr %15, align 8, !tbaa !25
  %653 = load ptr, ptr %17, align 8, !tbaa !5
  %654 = call i64 %648(ptr noundef %651, i64 noundef %652, ptr noundef %653, i64 noundef 30)
  %655 = icmp ne i64 %654, 30
  br i1 %655, label %656, label %659

656:                                              ; preds = %645
  %657 = load ptr, ptr %5, align 8, !tbaa !5
  %658 = call i32 @mz_zip_set_error(ptr noundef %657, i32 noundef 19)
  store i32 %658, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1240

659:                                              ; preds = %645
  %660 = load i64, ptr %15, align 8, !tbaa !25
  %661 = add i64 %660, 30
  store i64 %661, ptr %15, align 8, !tbaa !25
  %662 = load ptr, ptr %5, align 8, !tbaa !5
  %663 = getelementptr inbounds %struct.mz_zip_archive, ptr %662, i32 0, i32 7
  %664 = load ptr, ptr %663, align 8, !tbaa !34
  %665 = load ptr, ptr %5, align 8, !tbaa !5
  %666 = getelementptr inbounds %struct.mz_zip_archive, ptr %665, i32 0, i32 10
  %667 = load ptr, ptr %666, align 8, !tbaa !35
  %668 = load i64, ptr %12, align 8, !tbaa !25
  %669 = icmp ult i64 65536, %668
  br i1 %669, label %670, label %671

670:                                              ; preds = %659
  br label %673

671:                                              ; preds = %659
  %672 = load i64, ptr %12, align 8, !tbaa !25
  br label %673

673:                                              ; preds = %671, %670
  %674 = phi i64 [ 65536, %670 ], [ %672, %671 ]
  %675 = icmp ugt i64 32, %674
  br i1 %675, label %676, label %677

676:                                              ; preds = %673
  br label %685

677:                                              ; preds = %673
  %678 = load i64, ptr %12, align 8, !tbaa !25
  %679 = icmp ult i64 65536, %678
  br i1 %679, label %680, label %681

680:                                              ; preds = %677
  br label %683

681:                                              ; preds = %677
  %682 = load i64, ptr %12, align 8, !tbaa !25
  br label %683

683:                                              ; preds = %681, %680
  %684 = phi i64 [ 65536, %680 ], [ %682, %681 ]
  br label %685

685:                                              ; preds = %683, %676
  %686 = phi i64 [ 32, %676 ], [ %684, %683 ]
  %687 = call ptr %664(ptr noundef %667, i64 noundef 1, i64 noundef %686)
  store ptr %687, ptr %21, align 8, !tbaa !5
  %688 = icmp eq ptr null, %687
  br i1 %688, label %689, label %692

689:                                              ; preds = %685
  %690 = load ptr, ptr %5, align 8, !tbaa !5
  %691 = call i32 @mz_zip_set_error(ptr noundef %690, i32 noundef 16)
  store i32 %691, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1240

692:                                              ; preds = %685
  br label %693

693:                                              ; preds = %758, %692
  %694 = load i64, ptr %12, align 8, !tbaa !25
  %695 = icmp ne i64 %694, 0
  br i1 %695, label %696, label %767

696:                                              ; preds = %693
  %697 = load i64, ptr %12, align 8, !tbaa !25
  %698 = icmp ult i64 65536, %697
  br i1 %698, label %699, label %700

699:                                              ; preds = %696
  br label %702

700:                                              ; preds = %696
  %701 = load i64, ptr %12, align 8, !tbaa !25
  br label %702

702:                                              ; preds = %700, %699
  %703 = phi i64 [ 65536, %699 ], [ %701, %700 ]
  %704 = trunc i64 %703 to i32
  store i32 %704, ptr %8, align 4, !tbaa !9
  %705 = load ptr, ptr %6, align 8, !tbaa !5
  %706 = getelementptr inbounds %struct.mz_zip_archive, ptr %705, i32 0, i32 11
  %707 = load ptr, ptr %706, align 8, !tbaa !15
  %708 = load ptr, ptr %6, align 8, !tbaa !5
  %709 = getelementptr inbounds %struct.mz_zip_archive, ptr %708, i32 0, i32 14
  %710 = load ptr, ptr %709, align 8, !tbaa !27
  %711 = load i64, ptr %14, align 8, !tbaa !25
  %712 = load ptr, ptr %21, align 8, !tbaa !5
  %713 = load i32, ptr %8, align 4, !tbaa !9
  %714 = zext i32 %713 to i64
  %715 = call i64 %707(ptr noundef %710, i64 noundef %711, ptr noundef %712, i64 noundef %714)
  %716 = load i32, ptr %8, align 4, !tbaa !9
  %717 = zext i32 %716 to i64
  %718 = icmp ne i64 %715, %717
  br i1 %718, label %719, label %729

719:                                              ; preds = %702
  %720 = load ptr, ptr %5, align 8, !tbaa !5
  %721 = getelementptr inbounds %struct.mz_zip_archive, ptr %720, i32 0, i32 8
  %722 = load ptr, ptr %721, align 8, !tbaa !36
  %723 = load ptr, ptr %5, align 8, !tbaa !5
  %724 = getelementptr inbounds %struct.mz_zip_archive, ptr %723, i32 0, i32 10
  %725 = load ptr, ptr %724, align 8, !tbaa !35
  %726 = load ptr, ptr %21, align 8, !tbaa !5
  call void %722(ptr noundef %725, ptr noundef %726)
  %727 = load ptr, ptr %5, align 8, !tbaa !5
  %728 = call i32 @mz_zip_set_error(ptr noundef %727, i32 noundef 20)
  store i32 %728, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1240

729:                                              ; preds = %702
  %730 = load i32, ptr %8, align 4, !tbaa !9
  %731 = zext i32 %730 to i64
  %732 = load i64, ptr %14, align 8, !tbaa !25
  %733 = add i64 %732, %731
  store i64 %733, ptr %14, align 8, !tbaa !25
  %734 = load ptr, ptr %5, align 8, !tbaa !5
  %735 = getelementptr inbounds %struct.mz_zip_archive, ptr %734, i32 0, i32 12
  %736 = load ptr, ptr %735, align 8, !tbaa !33
  %737 = load ptr, ptr %5, align 8, !tbaa !5
  %738 = getelementptr inbounds %struct.mz_zip_archive, ptr %737, i32 0, i32 14
  %739 = load ptr, ptr %738, align 8, !tbaa !27
  %740 = load i64, ptr %15, align 8, !tbaa !25
  %741 = load ptr, ptr %21, align 8, !tbaa !5
  %742 = load i32, ptr %8, align 4, !tbaa !9
  %743 = zext i32 %742 to i64
  %744 = call i64 %736(ptr noundef %739, i64 noundef %740, ptr noundef %741, i64 noundef %743)
  %745 = load i32, ptr %8, align 4, !tbaa !9
  %746 = zext i32 %745 to i64
  %747 = icmp ne i64 %744, %746
  br i1 %747, label %748, label %758

748:                                              ; preds = %729
  %749 = load ptr, ptr %5, align 8, !tbaa !5
  %750 = getelementptr inbounds %struct.mz_zip_archive, ptr %749, i32 0, i32 8
  %751 = load ptr, ptr %750, align 8, !tbaa !36
  %752 = load ptr, ptr %5, align 8, !tbaa !5
  %753 = getelementptr inbounds %struct.mz_zip_archive, ptr %752, i32 0, i32 10
  %754 = load ptr, ptr %753, align 8, !tbaa !35
  %755 = load ptr, ptr %21, align 8, !tbaa !5
  call void %751(ptr noundef %754, ptr noundef %755)
  %756 = load ptr, ptr %5, align 8, !tbaa !5
  %757 = call i32 @mz_zip_set_error(ptr noundef %756, i32 noundef 19)
  store i32 %757, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1240

758:                                              ; preds = %729
  %759 = load i32, ptr %8, align 4, !tbaa !9
  %760 = zext i32 %759 to i64
  %761 = load i64, ptr %15, align 8, !tbaa !25
  %762 = add i64 %761, %760
  store i64 %762, ptr %15, align 8, !tbaa !25
  %763 = load i32, ptr %8, align 4, !tbaa !9
  %764 = zext i32 %763 to i64
  %765 = load i64, ptr %12, align 8, !tbaa !25
  %766 = sub i64 %765, %764
  store i64 %766, ptr %12, align 8, !tbaa !25
  br label %693, !llvm.loop !37

767:                                              ; preds = %693
  %768 = load ptr, ptr %17, align 8, !tbaa !5
  %769 = getelementptr inbounds i8, ptr %768, i64 6
  %770 = getelementptr inbounds i8, ptr %769, i64 0
  %771 = load i8, ptr %770, align 1, !tbaa !19
  %772 = zext i8 %771 to i32
  %773 = load ptr, ptr %17, align 8, !tbaa !5
  %774 = getelementptr inbounds i8, ptr %773, i64 6
  %775 = getelementptr inbounds i8, ptr %774, i64 1
  %776 = load i8, ptr %775, align 1, !tbaa !19
  %777 = zext i8 %776 to i32
  %778 = shl i32 %777, 8
  %779 = or i32 %772, %778
  store i32 %779, ptr %9, align 4, !tbaa !9
  %780 = load i32, ptr %9, align 4, !tbaa !9
  %781 = and i32 %780, 8
  %782 = icmp ne i32 %781, 0
  br i1 %782, label %783, label %1034

783:                                              ; preds = %767
  %784 = load ptr, ptr %6, align 8, !tbaa !5
  %785 = getelementptr inbounds %struct.mz_zip_archive, ptr %784, i32 0, i32 15
  %786 = load ptr, ptr %785, align 8, !tbaa !11
  %787 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %786, i32 0, i32 4
  %788 = load i32, ptr %787, align 4, !tbaa !16
  %789 = icmp ne i32 %788, 0
  br i1 %789, label %793, label %790

790:                                              ; preds = %783
  %791 = load i32, ptr %31, align 4, !tbaa !9
  %792 = icmp ne i32 %791, 0
  br i1 %792, label %793, label %843

793:                                              ; preds = %790, %783
  %794 = load ptr, ptr %6, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.mz_zip_archive, ptr %794, i32 0, i32 11
  %796 = load ptr, ptr %795, align 8, !tbaa !15
  %797 = load ptr, ptr %6, align 8, !tbaa !5
  %798 = getelementptr inbounds %struct.mz_zip_archive, ptr %797, i32 0, i32 14
  %799 = load ptr, ptr %798, align 8, !tbaa !27
  %800 = load i64, ptr %14, align 8, !tbaa !25
  %801 = load ptr, ptr %21, align 8, !tbaa !5
  %802 = call i64 %796(ptr noundef %799, i64 noundef %800, ptr noundef %801, i64 noundef 24)
  %803 = icmp ne i64 %802, 24
  br i1 %803, label %804, label %814

804:                                              ; preds = %793
  %805 = load ptr, ptr %5, align 8, !tbaa !5
  %806 = getelementptr inbounds %struct.mz_zip_archive, ptr %805, i32 0, i32 8
  %807 = load ptr, ptr %806, align 8, !tbaa !36
  %808 = load ptr, ptr %5, align 8, !tbaa !5
  %809 = getelementptr inbounds %struct.mz_zip_archive, ptr %808, i32 0, i32 10
  %810 = load ptr, ptr %809, align 8, !tbaa !35
  %811 = load ptr, ptr %21, align 8, !tbaa !5
  call void %807(ptr noundef %810, ptr noundef %811)
  %812 = load ptr, ptr %5, align 8, !tbaa !5
  %813 = call i32 @mz_zip_set_error(ptr noundef %812, i32 noundef 20)
  store i32 %813, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1240

814:                                              ; preds = %793
  %815 = load ptr, ptr %21, align 8, !tbaa !5
  %816 = getelementptr inbounds i8, ptr %815, i64 0
  %817 = load i8, ptr %816, align 1, !tbaa !19
  %818 = zext i8 %817 to i32
  %819 = load ptr, ptr %21, align 8, !tbaa !5
  %820 = getelementptr inbounds i8, ptr %819, i64 1
  %821 = load i8, ptr %820, align 1, !tbaa !19
  %822 = zext i8 %821 to i32
  %823 = shl i32 %822, 8
  %824 = or i32 %818, %823
  %825 = load ptr, ptr %21, align 8, !tbaa !5
  %826 = getelementptr inbounds i8, ptr %825, i64 2
  %827 = load i8, ptr %826, align 1, !tbaa !19
  %828 = zext i8 %827 to i32
  %829 = shl i32 %828, 16
  %830 = or i32 %824, %829
  %831 = load ptr, ptr %21, align 8, !tbaa !5
  %832 = getelementptr inbounds i8, ptr %831, i64 3
  %833 = load i8, ptr %832, align 1, !tbaa !19
  %834 = zext i8 %833 to i32
  %835 = shl i32 %834, 24
  %836 = or i32 %830, %835
  %837 = icmp eq i32 %836, 134695760
  %838 = zext i1 %837 to i64
  %839 = select i1 %837, i32 6, i32 5
  %840 = sext i32 %839 to i64
  %841 = mul i64 4, %840
  %842 = trunc i64 %841 to i32
  store i32 %842, ptr %8, align 4, !tbaa !9
  br label %1000

843:                                              ; preds = %790
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #5
  %844 = load ptr, ptr %6, align 8, !tbaa !5
  %845 = getelementptr inbounds %struct.mz_zip_archive, ptr %844, i32 0, i32 11
  %846 = load ptr, ptr %845, align 8, !tbaa !15
  %847 = load ptr, ptr %6, align 8, !tbaa !5
  %848 = getelementptr inbounds %struct.mz_zip_archive, ptr %847, i32 0, i32 14
  %849 = load ptr, ptr %848, align 8, !tbaa !27
  %850 = load i64, ptr %14, align 8, !tbaa !25
  %851 = load ptr, ptr %21, align 8, !tbaa !5
  %852 = call i64 %846(ptr noundef %849, i64 noundef %850, ptr noundef %851, i64 noundef 16)
  %853 = icmp ne i64 %852, 16
  br i1 %853, label %854, label %864

854:                                              ; preds = %843
  %855 = load ptr, ptr %5, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.mz_zip_archive, ptr %855, i32 0, i32 8
  %857 = load ptr, ptr %856, align 8, !tbaa !36
  %858 = load ptr, ptr %5, align 8, !tbaa !5
  %859 = getelementptr inbounds %struct.mz_zip_archive, ptr %858, i32 0, i32 10
  %860 = load ptr, ptr %859, align 8, !tbaa !35
  %861 = load ptr, ptr %21, align 8, !tbaa !5
  call void %857(ptr noundef %860, ptr noundef %861)
  %862 = load ptr, ptr %5, align 8, !tbaa !5
  %863 = call i32 @mz_zip_set_error(ptr noundef %862, i32 noundef 20)
  store i32 %863, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %997

864:                                              ; preds = %843
  %865 = load ptr, ptr %21, align 8, !tbaa !5
  %866 = getelementptr inbounds i8, ptr %865, i64 0
  %867 = load i8, ptr %866, align 1, !tbaa !19
  %868 = zext i8 %867 to i32
  %869 = load ptr, ptr %21, align 8, !tbaa !5
  %870 = getelementptr inbounds i8, ptr %869, i64 1
  %871 = load i8, ptr %870, align 1, !tbaa !19
  %872 = zext i8 %871 to i32
  %873 = shl i32 %872, 8
  %874 = or i32 %868, %873
  %875 = load ptr, ptr %21, align 8, !tbaa !5
  %876 = getelementptr inbounds i8, ptr %875, i64 2
  %877 = load i8, ptr %876, align 1, !tbaa !19
  %878 = zext i8 %877 to i32
  %879 = shl i32 %878, 16
  %880 = or i32 %874, %879
  %881 = load ptr, ptr %21, align 8, !tbaa !5
  %882 = getelementptr inbounds i8, ptr %881, i64 3
  %883 = load i8, ptr %882, align 1, !tbaa !19
  %884 = zext i8 %883 to i32
  %885 = shl i32 %884, 24
  %886 = or i32 %880, %885
  %887 = icmp eq i32 %886, 134695760
  %888 = zext i1 %887 to i32
  store i32 %888, ptr %41, align 4, !tbaa !9
  %889 = load ptr, ptr %5, align 8, !tbaa !5
  %890 = getelementptr inbounds %struct.mz_zip_archive, ptr %889, i32 0, i32 15
  %891 = load ptr, ptr %890, align 8, !tbaa !11
  %892 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %891, i32 0, i32 4
  %893 = load i32, ptr %892, align 4, !tbaa !16
  %894 = icmp ne i32 %893, 0
  br i1 %894, label %895, label %988

895:                                              ; preds = %864
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #5
  %896 = load ptr, ptr %21, align 8, !tbaa !5
  %897 = load i32, ptr %41, align 4, !tbaa !9
  %898 = icmp ne i32 %897, 0
  %899 = zext i1 %898 to i64
  %900 = select i1 %898, i64 4, i64 0
  %901 = getelementptr inbounds i8, ptr %896, i64 %900
  store ptr %901, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #5
  %902 = load ptr, ptr %42, align 8, !tbaa !5
  %903 = getelementptr inbounds i8, ptr %902, i64 0
  %904 = load i8, ptr %903, align 1, !tbaa !19
  %905 = zext i8 %904 to i32
  %906 = load ptr, ptr %42, align 8, !tbaa !5
  %907 = getelementptr inbounds i8, ptr %906, i64 1
  %908 = load i8, ptr %907, align 1, !tbaa !19
  %909 = zext i8 %908 to i32
  %910 = shl i32 %909, 8
  %911 = or i32 %905, %910
  %912 = load ptr, ptr %42, align 8, !tbaa !5
  %913 = getelementptr inbounds i8, ptr %912, i64 2
  %914 = load i8, ptr %913, align 1, !tbaa !19
  %915 = zext i8 %914 to i32
  %916 = shl i32 %915, 16
  %917 = or i32 %911, %916
  %918 = load ptr, ptr %42, align 8, !tbaa !5
  %919 = getelementptr inbounds i8, ptr %918, i64 3
  %920 = load i8, ptr %919, align 1, !tbaa !19
  %921 = zext i8 %920 to i32
  %922 = shl i32 %921, 24
  %923 = or i32 %917, %922
  store i32 %923, ptr %43, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #5
  %924 = load ptr, ptr %42, align 8, !tbaa !5
  %925 = getelementptr inbounds i8, ptr %924, i64 4
  %926 = getelementptr inbounds i8, ptr %925, i64 0
  %927 = load i8, ptr %926, align 1, !tbaa !19
  %928 = zext i8 %927 to i32
  %929 = load ptr, ptr %42, align 8, !tbaa !5
  %930 = getelementptr inbounds i8, ptr %929, i64 4
  %931 = getelementptr inbounds i8, ptr %930, i64 1
  %932 = load i8, ptr %931, align 1, !tbaa !19
  %933 = zext i8 %932 to i32
  %934 = shl i32 %933, 8
  %935 = or i32 %928, %934
  %936 = load ptr, ptr %42, align 8, !tbaa !5
  %937 = getelementptr inbounds i8, ptr %936, i64 4
  %938 = getelementptr inbounds i8, ptr %937, i64 2
  %939 = load i8, ptr %938, align 1, !tbaa !19
  %940 = zext i8 %939 to i32
  %941 = shl i32 %940, 16
  %942 = or i32 %935, %941
  %943 = load ptr, ptr %42, align 8, !tbaa !5
  %944 = getelementptr inbounds i8, ptr %943, i64 4
  %945 = getelementptr inbounds i8, ptr %944, i64 3
  %946 = load i8, ptr %945, align 1, !tbaa !19
  %947 = zext i8 %946 to i32
  %948 = shl i32 %947, 24
  %949 = or i32 %942, %948
  %950 = zext i32 %949 to i64
  store i64 %950, ptr %44, align 8, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #5
  %951 = load ptr, ptr %42, align 8, !tbaa !5
  %952 = getelementptr inbounds i8, ptr %951, i64 8
  %953 = getelementptr inbounds i8, ptr %952, i64 0
  %954 = load i8, ptr %953, align 1, !tbaa !19
  %955 = zext i8 %954 to i32
  %956 = load ptr, ptr %42, align 8, !tbaa !5
  %957 = getelementptr inbounds i8, ptr %956, i64 8
  %958 = getelementptr inbounds i8, ptr %957, i64 1
  %959 = load i8, ptr %958, align 1, !tbaa !19
  %960 = zext i8 %959 to i32
  %961 = shl i32 %960, 8
  %962 = or i32 %955, %961
  %963 = load ptr, ptr %42, align 8, !tbaa !5
  %964 = getelementptr inbounds i8, ptr %963, i64 8
  %965 = getelementptr inbounds i8, ptr %964, i64 2
  %966 = load i8, ptr %965, align 1, !tbaa !19
  %967 = zext i8 %966 to i32
  %968 = shl i32 %967, 16
  %969 = or i32 %962, %968
  %970 = load ptr, ptr %42, align 8, !tbaa !5
  %971 = getelementptr inbounds i8, ptr %970, i64 8
  %972 = getelementptr inbounds i8, ptr %971, i64 3
  %973 = load i8, ptr %972, align 1, !tbaa !19
  %974 = zext i8 %973 to i32
  %975 = shl i32 %974, 24
  %976 = or i32 %969, %975
  %977 = zext i32 %976 to i64
  store i64 %977, ptr %45, align 8, !tbaa !25
  %978 = load ptr, ptr %21, align 8, !tbaa !5
  call void @mz_write_le32(ptr noundef %978, i32 noundef 134695760)
  %979 = load ptr, ptr %21, align 8, !tbaa !5
  %980 = getelementptr inbounds i8, ptr %979, i64 4
  %981 = load i32, ptr %43, align 4, !tbaa !9
  call void @mz_write_le32(ptr noundef %980, i32 noundef %981)
  %982 = load ptr, ptr %21, align 8, !tbaa !5
  %983 = getelementptr inbounds i8, ptr %982, i64 8
  %984 = load i64, ptr %44, align 8, !tbaa !25
  call void @mz_write_le64(ptr noundef %983, i64 noundef %984)
  %985 = load ptr, ptr %21, align 8, !tbaa !5
  %986 = getelementptr inbounds i8, ptr %985, i64 16
  %987 = load i64, ptr %45, align 8, !tbaa !25
  call void @mz_write_le64(ptr noundef %986, i64 noundef %987)
  store i32 24, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  br label %996

988:                                              ; preds = %864
  %989 = load i32, ptr %41, align 4, !tbaa !9
  %990 = icmp ne i32 %989, 0
  %991 = zext i1 %990 to i64
  %992 = select i1 %990, i32 4, i32 3
  %993 = sext i32 %992 to i64
  %994 = mul i64 4, %993
  %995 = trunc i64 %994 to i32
  store i32 %995, ptr %8, align 4, !tbaa !9
  br label %996

996:                                              ; preds = %988, %895
  store i32 0, ptr %32, align 4
  br label %997

997:                                              ; preds = %996, %854
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #5
  %998 = load i32, ptr %32, align 4
  switch i32 %998, label %1240 [
    i32 0, label %999
  ]

999:                                              ; preds = %997
  br label %1000

1000:                                             ; preds = %999, %814
  %1001 = load ptr, ptr %5, align 8, !tbaa !5
  %1002 = getelementptr inbounds %struct.mz_zip_archive, ptr %1001, i32 0, i32 12
  %1003 = load ptr, ptr %1002, align 8, !tbaa !33
  %1004 = load ptr, ptr %5, align 8, !tbaa !5
  %1005 = getelementptr inbounds %struct.mz_zip_archive, ptr %1004, i32 0, i32 14
  %1006 = load ptr, ptr %1005, align 8, !tbaa !27
  %1007 = load i64, ptr %15, align 8, !tbaa !25
  %1008 = load ptr, ptr %21, align 8, !tbaa !5
  %1009 = load i32, ptr %8, align 4, !tbaa !9
  %1010 = zext i32 %1009 to i64
  %1011 = call i64 %1003(ptr noundef %1006, i64 noundef %1007, ptr noundef %1008, i64 noundef %1010)
  %1012 = load i32, ptr %8, align 4, !tbaa !9
  %1013 = zext i32 %1012 to i64
  %1014 = icmp ne i64 %1011, %1013
  br i1 %1014, label %1015, label %1025

1015:                                             ; preds = %1000
  %1016 = load ptr, ptr %5, align 8, !tbaa !5
  %1017 = getelementptr inbounds %struct.mz_zip_archive, ptr %1016, i32 0, i32 8
  %1018 = load ptr, ptr %1017, align 8, !tbaa !36
  %1019 = load ptr, ptr %5, align 8, !tbaa !5
  %1020 = getelementptr inbounds %struct.mz_zip_archive, ptr %1019, i32 0, i32 10
  %1021 = load ptr, ptr %1020, align 8, !tbaa !35
  %1022 = load ptr, ptr %21, align 8, !tbaa !5
  call void %1018(ptr noundef %1021, ptr noundef %1022)
  %1023 = load ptr, ptr %5, align 8, !tbaa !5
  %1024 = call i32 @mz_zip_set_error(ptr noundef %1023, i32 noundef 19)
  store i32 %1024, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1240

1025:                                             ; preds = %1000
  %1026 = load i32, ptr %8, align 4, !tbaa !9
  %1027 = zext i32 %1026 to i64
  %1028 = load i64, ptr %14, align 8, !tbaa !25
  %1029 = add i64 %1028, %1027
  store i64 %1029, ptr %14, align 8, !tbaa !25
  %1030 = load i32, ptr %8, align 4, !tbaa !9
  %1031 = zext i32 %1030 to i64
  %1032 = load i64, ptr %15, align 8, !tbaa !25
  %1033 = add i64 %1032, %1031
  store i64 %1033, ptr %15, align 8, !tbaa !25
  br label %1034

1034:                                             ; preds = %1025, %767
  %1035 = load ptr, ptr %5, align 8, !tbaa !5
  %1036 = getelementptr inbounds %struct.mz_zip_archive, ptr %1035, i32 0, i32 8
  %1037 = load ptr, ptr %1036, align 8, !tbaa !36
  %1038 = load ptr, ptr %5, align 8, !tbaa !5
  %1039 = getelementptr inbounds %struct.mz_zip_archive, ptr %1038, i32 0, i32 10
  %1040 = load ptr, ptr %1039, align 8, !tbaa !35
  %1041 = load ptr, ptr %21, align 8, !tbaa !5
  call void %1037(ptr noundef %1040, ptr noundef %1041)
  %1042 = load ptr, ptr %20, align 8, !tbaa !5
  %1043 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %1042, i32 0, i32 0
  %1044 = getelementptr inbounds %struct.mz_zip_array, ptr %1043, i32 0, i32 1
  %1045 = load i64, ptr %1044, align 8, !tbaa !20
  store i64 %1045, ptr %19, align 8, !tbaa !25
  %1046 = getelementptr inbounds [46 x i8], ptr %18, i64 0, i64 0
  %1047 = load ptr, ptr %22, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %1046, ptr align 1 %1047, i64 46, i1 false)
  %1048 = load ptr, ptr %20, align 8, !tbaa !5
  %1049 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %1048, i32 0, i32 4
  %1050 = load i32, ptr %1049, align 4, !tbaa !16
  %1051 = icmp ne i32 %1050, 0
  br i1 %1051, label %1052, label %1157

1052:                                             ; preds = %1034
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #5
  %1053 = load ptr, ptr %22, align 8, !tbaa !5
  %1054 = getelementptr inbounds i8, ptr %1053, i64 46
  %1055 = load i32, ptr %24, align 4, !tbaa !9
  %1056 = zext i32 %1055 to i64
  %1057 = getelementptr inbounds i8, ptr %1054, i64 %1056
  store ptr %1057, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #5
  call void @mz_zip_array_init(ptr noundef %47, i32 noundef 1)
  %1058 = getelementptr inbounds [46 x i8], ptr %18, i64 0, i64 0
  %1059 = getelementptr inbounds i8, ptr %1058, i64 20
  call void @mz_write_le32(ptr noundef %1059, i32 noundef -1)
  %1060 = getelementptr inbounds [46 x i8], ptr %18, i64 0, i64 0
  %1061 = getelementptr inbounds i8, ptr %1060, i64 24
  call void @mz_write_le32(ptr noundef %1061, i32 noundef -1)
  %1062 = getelementptr inbounds [46 x i8], ptr %18, i64 0, i64 0
  %1063 = getelementptr inbounds i8, ptr %1062, i64 42
  call void @mz_write_le32(ptr noundef %1063, i32 noundef -1)
  %1064 = load ptr, ptr %5, align 8, !tbaa !5
  %1065 = load ptr, ptr %46, align 8, !tbaa !5
  %1066 = load i32, ptr %26, align 4, !tbaa !9
  %1067 = getelementptr inbounds %struct.mz_zip_archive_file_stat, ptr %23, i32 0, i32 7
  %1068 = getelementptr inbounds %struct.mz_zip_archive_file_stat, ptr %23, i32 0, i32 8
  %1069 = call i32 @mz_zip_writer_update_zip64_extension_block(ptr noundef %47, ptr noundef %1064, ptr noundef %1065, i32 noundef %1066, ptr noundef %1067, ptr noundef %1068, ptr noundef %13, ptr noundef null)
  %1070 = icmp ne i32 %1069, 0
  br i1 %1070, label %1073, label %1071

1071:                                             ; preds = %1052
  %1072 = load ptr, ptr %5, align 8, !tbaa !5
  call void @mz_zip_array_clear(ptr noundef %1072, ptr noundef %47)
  store i32 0, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1154

1073:                                             ; preds = %1052
  %1074 = getelementptr inbounds [46 x i8], ptr %18, i64 0, i64 0
  %1075 = getelementptr inbounds i8, ptr %1074, i64 30
  %1076 = getelementptr inbounds %struct.mz_zip_array, ptr %47, i32 0, i32 1
  %1077 = load i64, ptr %1076, align 8, !tbaa !38
  %1078 = trunc i64 %1077 to i16
  call void @mz_write_le16(ptr noundef %1075, i16 noundef zeroext %1078)
  %1079 = load ptr, ptr %5, align 8, !tbaa !5
  %1080 = load ptr, ptr %20, align 8, !tbaa !5
  %1081 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %1080, i32 0, i32 0
  %1082 = getelementptr inbounds [46 x i8], ptr %18, i64 0, i64 0
  %1083 = call i32 @mz_zip_array_push_back(ptr noundef %1079, ptr noundef %1081, ptr noundef %1082, i64 noundef 46)
  %1084 = icmp ne i32 %1083, 0
  br i1 %1084, label %1089, label %1085

1085:                                             ; preds = %1073
  %1086 = load ptr, ptr %5, align 8, !tbaa !5
  call void @mz_zip_array_clear(ptr noundef %1086, ptr noundef %47)
  %1087 = load ptr, ptr %5, align 8, !tbaa !5
  %1088 = call i32 @mz_zip_set_error(ptr noundef %1087, i32 noundef 16)
  store i32 %1088, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1154

1089:                                             ; preds = %1073
  %1090 = load ptr, ptr %5, align 8, !tbaa !5
  %1091 = load ptr, ptr %20, align 8, !tbaa !5
  %1092 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %1091, i32 0, i32 0
  %1093 = load ptr, ptr %22, align 8, !tbaa !5
  %1094 = getelementptr inbounds i8, ptr %1093, i64 46
  %1095 = load i32, ptr %24, align 4, !tbaa !9
  %1096 = zext i32 %1095 to i64
  %1097 = call i32 @mz_zip_array_push_back(ptr noundef %1090, ptr noundef %1092, ptr noundef %1094, i64 noundef %1096)
  %1098 = icmp ne i32 %1097, 0
  br i1 %1098, label %1108, label %1099

1099:                                             ; preds = %1089
  %1100 = load ptr, ptr %5, align 8, !tbaa !5
  call void @mz_zip_array_clear(ptr noundef %1100, ptr noundef %47)
  %1101 = load ptr, ptr %5, align 8, !tbaa !5
  %1102 = load ptr, ptr %20, align 8, !tbaa !5
  %1103 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %1102, i32 0, i32 0
  %1104 = load i64, ptr %19, align 8, !tbaa !25
  %1105 = call i32 @mz_zip_array_resize(ptr noundef %1101, ptr noundef %1103, i64 noundef %1104, i32 noundef 0)
  %1106 = load ptr, ptr %5, align 8, !tbaa !5
  %1107 = call i32 @mz_zip_set_error(ptr noundef %1106, i32 noundef 16)
  store i32 %1107, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1154

1108:                                             ; preds = %1089
  %1109 = load ptr, ptr %5, align 8, !tbaa !5
  %1110 = load ptr, ptr %20, align 8, !tbaa !5
  %1111 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %1110, i32 0, i32 0
  %1112 = getelementptr inbounds %struct.mz_zip_array, ptr %47, i32 0, i32 0
  %1113 = load ptr, ptr %1112, align 8, !tbaa !29
  %1114 = getelementptr inbounds %struct.mz_zip_array, ptr %47, i32 0, i32 1
  %1115 = load i64, ptr %1114, align 8, !tbaa !38
  %1116 = call i32 @mz_zip_array_push_back(ptr noundef %1109, ptr noundef %1111, ptr noundef %1113, i64 noundef %1115)
  %1117 = icmp ne i32 %1116, 0
  br i1 %1117, label %1127, label %1118

1118:                                             ; preds = %1108
  %1119 = load ptr, ptr %5, align 8, !tbaa !5
  call void @mz_zip_array_clear(ptr noundef %1119, ptr noundef %47)
  %1120 = load ptr, ptr %5, align 8, !tbaa !5
  %1121 = load ptr, ptr %20, align 8, !tbaa !5
  %1122 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %1121, i32 0, i32 0
  %1123 = load i64, ptr %19, align 8, !tbaa !25
  %1124 = call i32 @mz_zip_array_resize(ptr noundef %1120, ptr noundef %1122, i64 noundef %1123, i32 noundef 0)
  %1125 = load ptr, ptr %5, align 8, !tbaa !5
  %1126 = call i32 @mz_zip_set_error(ptr noundef %1125, i32 noundef 16)
  store i32 %1126, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1154

1127:                                             ; preds = %1108
  %1128 = load ptr, ptr %5, align 8, !tbaa !5
  %1129 = load ptr, ptr %20, align 8, !tbaa !5
  %1130 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %1129, i32 0, i32 0
  %1131 = load ptr, ptr %22, align 8, !tbaa !5
  %1132 = getelementptr inbounds i8, ptr %1131, i64 46
  %1133 = load i32, ptr %24, align 4, !tbaa !9
  %1134 = zext i32 %1133 to i64
  %1135 = getelementptr inbounds i8, ptr %1132, i64 %1134
  %1136 = load i32, ptr %26, align 4, !tbaa !9
  %1137 = zext i32 %1136 to i64
  %1138 = getelementptr inbounds i8, ptr %1135, i64 %1137
  %1139 = load i32, ptr %25, align 4, !tbaa !9
  %1140 = zext i32 %1139 to i64
  %1141 = call i32 @mz_zip_array_push_back(ptr noundef %1128, ptr noundef %1130, ptr noundef %1138, i64 noundef %1140)
  %1142 = icmp ne i32 %1141, 0
  br i1 %1142, label %1152, label %1143

1143:                                             ; preds = %1127
  %1144 = load ptr, ptr %5, align 8, !tbaa !5
  call void @mz_zip_array_clear(ptr noundef %1144, ptr noundef %47)
  %1145 = load ptr, ptr %5, align 8, !tbaa !5
  %1146 = load ptr, ptr %20, align 8, !tbaa !5
  %1147 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %1146, i32 0, i32 0
  %1148 = load i64, ptr %19, align 8, !tbaa !25
  %1149 = call i32 @mz_zip_array_resize(ptr noundef %1145, ptr noundef %1147, i64 noundef %1148, i32 noundef 0)
  %1150 = load ptr, ptr %5, align 8, !tbaa !5
  %1151 = call i32 @mz_zip_set_error(ptr noundef %1150, i32 noundef 16)
  store i32 %1151, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1154

1152:                                             ; preds = %1127
  %1153 = load ptr, ptr %5, align 8, !tbaa !5
  call void @mz_zip_array_clear(ptr noundef %1153, ptr noundef %47)
  store i32 0, ptr %32, align 4
  br label %1154

1154:                                             ; preds = %1152, %1143, %1118, %1099, %1085, %1071
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  %1155 = load i32, ptr %32, align 4
  switch i32 %1155, label %1240 [
    i32 0, label %1156
  ]

1156:                                             ; preds = %1154
  br label %1202

1157:                                             ; preds = %1034
  %1158 = load i64, ptr %15, align 8, !tbaa !25
  %1159 = icmp ugt i64 %1158, 4294967295
  br i1 %1159, label %1160, label %1163

1160:                                             ; preds = %1157
  %1161 = load ptr, ptr %5, align 8, !tbaa !5
  %1162 = call i32 @mz_zip_set_error(ptr noundef %1161, i32 noundef 29)
  store i32 %1162, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1240

1163:                                             ; preds = %1157
  %1164 = load i64, ptr %13, align 8, !tbaa !25
  %1165 = icmp uge i64 %1164, 4294967295
  br i1 %1165, label %1166, label %1169

1166:                                             ; preds = %1163
  %1167 = load ptr, ptr %5, align 8, !tbaa !5
  %1168 = call i32 @mz_zip_set_error(ptr noundef %1167, i32 noundef 29)
  store i32 %1168, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1240

1169:                                             ; preds = %1163
  %1170 = getelementptr inbounds [46 x i8], ptr %18, i64 0, i64 0
  %1171 = getelementptr inbounds i8, ptr %1170, i64 42
  %1172 = load i64, ptr %13, align 8, !tbaa !25
  %1173 = trunc i64 %1172 to i32
  call void @mz_write_le32(ptr noundef %1171, i32 noundef %1173)
  %1174 = load ptr, ptr %5, align 8, !tbaa !5
  %1175 = load ptr, ptr %20, align 8, !tbaa !5
  %1176 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %1175, i32 0, i32 0
  %1177 = getelementptr inbounds [46 x i8], ptr %18, i64 0, i64 0
  %1178 = call i32 @mz_zip_array_push_back(ptr noundef %1174, ptr noundef %1176, ptr noundef %1177, i64 noundef 46)
  %1179 = icmp ne i32 %1178, 0
  br i1 %1179, label %1183, label %1180

1180:                                             ; preds = %1169
  %1181 = load ptr, ptr %5, align 8, !tbaa !5
  %1182 = call i32 @mz_zip_set_error(ptr noundef %1181, i32 noundef 16)
  store i32 %1182, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1240

1183:                                             ; preds = %1169
  %1184 = load ptr, ptr %5, align 8, !tbaa !5
  %1185 = load ptr, ptr %20, align 8, !tbaa !5
  %1186 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %1185, i32 0, i32 0
  %1187 = load ptr, ptr %22, align 8, !tbaa !5
  %1188 = getelementptr inbounds i8, ptr %1187, i64 46
  %1189 = load i32, ptr %11, align 4, !tbaa !9
  %1190 = zext i32 %1189 to i64
  %1191 = call i32 @mz_zip_array_push_back(ptr noundef %1184, ptr noundef %1186, ptr noundef %1188, i64 noundef %1190)
  %1192 = icmp ne i32 %1191, 0
  br i1 %1192, label %1201, label %1193

1193:                                             ; preds = %1183
  %1194 = load ptr, ptr %5, align 8, !tbaa !5
  %1195 = load ptr, ptr %20, align 8, !tbaa !5
  %1196 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %1195, i32 0, i32 0
  %1197 = load i64, ptr %19, align 8, !tbaa !25
  %1198 = call i32 @mz_zip_array_resize(ptr noundef %1194, ptr noundef %1196, i64 noundef %1197, i32 noundef 0)
  %1199 = load ptr, ptr %5, align 8, !tbaa !5
  %1200 = call i32 @mz_zip_set_error(ptr noundef %1199, i32 noundef 16)
  store i32 %1200, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1240

1201:                                             ; preds = %1183
  br label %1202

1202:                                             ; preds = %1201, %1156
  %1203 = load ptr, ptr %20, align 8, !tbaa !5
  %1204 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %1203, i32 0, i32 0
  %1205 = getelementptr inbounds %struct.mz_zip_array, ptr %1204, i32 0, i32 1
  %1206 = load i64, ptr %1205, align 8, !tbaa !20
  %1207 = icmp uge i64 %1206, 4294967295
  br i1 %1207, label %1208, label %1216

1208:                                             ; preds = %1202
  %1209 = load ptr, ptr %5, align 8, !tbaa !5
  %1210 = load ptr, ptr %20, align 8, !tbaa !5
  %1211 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %1210, i32 0, i32 0
  %1212 = load i64, ptr %19, align 8, !tbaa !25
  %1213 = call i32 @mz_zip_array_resize(ptr noundef %1209, ptr noundef %1211, i64 noundef %1212, i32 noundef 0)
  %1214 = load ptr, ptr %5, align 8, !tbaa !5
  %1215 = call i32 @mz_zip_set_error(ptr noundef %1214, i32 noundef 15)
  store i32 %1215, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1240

1216:                                             ; preds = %1202
  %1217 = load i64, ptr %19, align 8, !tbaa !25
  %1218 = trunc i64 %1217 to i32
  store i32 %1218, ptr %8, align 4, !tbaa !9
  %1219 = load ptr, ptr %5, align 8, !tbaa !5
  %1220 = load ptr, ptr %20, align 8, !tbaa !5
  %1221 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %1220, i32 0, i32 1
  %1222 = call i32 @mz_zip_array_push_back(ptr noundef %1219, ptr noundef %1221, ptr noundef %8, i64 noundef 1)
  %1223 = icmp ne i32 %1222, 0
  br i1 %1223, label %1232, label %1224

1224:                                             ; preds = %1216
  %1225 = load ptr, ptr %5, align 8, !tbaa !5
  %1226 = load ptr, ptr %20, align 8, !tbaa !5
  %1227 = getelementptr inbounds %struct.mz_zip_internal_state_tag, ptr %1226, i32 0, i32 0
  %1228 = load i64, ptr %19, align 8, !tbaa !25
  %1229 = call i32 @mz_zip_array_resize(ptr noundef %1225, ptr noundef %1227, i64 noundef %1228, i32 noundef 0)
  %1230 = load ptr, ptr %5, align 8, !tbaa !5
  %1231 = call i32 @mz_zip_set_error(ptr noundef %1230, i32 noundef 16)
  store i32 %1231, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1240

1232:                                             ; preds = %1216
  %1233 = load ptr, ptr %5, align 8, !tbaa !5
  %1234 = getelementptr inbounds %struct.mz_zip_archive, ptr %1233, i32 0, i32 2
  %1235 = load i32, ptr %1234, align 8, !tbaa !21
  %1236 = add i32 %1235, 1
  store i32 %1236, ptr %1234, align 8, !tbaa !21
  %1237 = load i64, ptr %15, align 8, !tbaa !25
  %1238 = load ptr, ptr %5, align 8, !tbaa !5
  %1239 = getelementptr inbounds %struct.mz_zip_archive, ptr %1238, i32 0, i32 0
  store i64 %1237, ptr %1239, align 8, !tbaa !26
  store i32 1, ptr %4, align 4
  store i32 1, ptr %32, align 4
  br label %1240

1240:                                             ; preds = %1232, %1224, %1208, %1193, %1180, %1166, %1160, %1154, %1015, %997, %804, %748, %719, %689, %656, %623, %614, %580, %258, %231, %214, %204, %195, %180, %125, %94, %86, %66
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 1112, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 46, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #5
  %1241 = load i32, ptr %4, align 4
  ret i32 %1241
}

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

; Function Attrs: alwaysinline nounwind uwtable
declare hidden void @mz_write_le16(ptr noundef, i16 noundef zeroext) #3

; Function Attrs: alwaysinline nounwind uwtable
declare hidden i32 @mz_zip_array_push_back(ptr noundef, ptr noundef, ptr noundef, i64 noundef) #3

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { 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 #4 = { 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 }
attributes #6 = { 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 = !{!"int", !7, i64 0}
!11 = !{!12, !6, i64 104}
!12 = !{!"", !13, i64 0, !13, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !13, 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}
!13 = !{!"long", !7, i64 0}
!14 = !{!12, !10, i64 20}
!15 = !{!12, !6, i64 72}
!16 = !{!17, !10, i64 100}
!17 = !{!"mz_zip_internal_state_tag", !18, i64 0, !18, i64 32, !18, i64 64, !10, i64 96, !10, i64 100, !10, i64 104, !6, i64 112, !13, i64 120, !6, i64 128, !13, i64 136, !13, i64 144}
!18 = !{!"", !6, i64 0, !13, i64 8, !13, i64 16, !10, i64 24}
!19 = !{!7, !7, i64 0}
!20 = !{!17, !13, i64 8}
!21 = !{!12, !10, i64 16}
!22 = !{!23, !13, i64 56}
!23 = !{!"", !10, i64 0, !13, i64 8, !24, i64 16, !24, i64 18, !24, i64 20, !24, i64 22, !10, i64 24, !13, i64 32, !13, i64 40, !24, i64 48, !10, i64 52, !13, i64 56, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !7, i64 80, !7, i64 592, !13, i64 1104}
!24 = !{!"short", !7, i64 0}
!25 = !{!13, !13, i64 0}
!26 = !{!12, !13, i64 0}
!27 = !{!12, !6, i64 96}
!28 = !{!23, !13, i64 32}
!29 = !{!18, !6, i64 0}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}
!32 = !{!12, !13, i64 32}
!33 = !{!12, !6, i64 80}
!34 = !{!12, !6, i64 40}
!35 = !{!12, !6, i64 64}
!36 = !{!12, !6, i64 48}
!37 = distinct !{!37, !31}
!38 = !{!18, !13, i64 8}


; 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_archive_file_stat = type { i32, i64, i16, i16, i16, i16, i32, i64, i64, i16, i32, i64, i32, i32, i32, i32, [512 x i8], [512 x i8], i64 }
%struct.mz_zip_array = type { ptr, i64, i64, i32 }

@.str.12 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [66 x i8], align 1
@__PRETTY_FUNCTION__.mz_zip_writer_add_from_zip_reader = external hidden unnamed_addr constant [87 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: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1

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

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

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

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

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

; Function Attrs: alwaysinline nounwind uwtable
declare hidden i32 @mz_zip_array_resize(ptr noundef, ptr noundef, i64 noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: alwaysinline nounwind uwtable
declare hidden void @mz_zip_array_clear(ptr noundef, ptr noundef) local_unnamed_addr #3

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @mz_zip_writer_add_from_zip_reader(ptr noundef %0, ptr noundef %1, i32 noundef %2) local_unnamed_addr #4 {
  %4 = alloca i32, align 4
  %5 = alloca i64, align 8
  %6 = alloca [8 x i32], align 16
  %7 = alloca [46 x i8], align 16
  %8 = alloca %struct.mz_zip_archive_file_stat, align 8
  %9 = alloca %struct.mz_zip_array, align 8
  %10 = alloca %struct.mz_zip_array, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 46, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 1112, ptr nonnull %8) #6
  %.not = icmp eq ptr %0, null
  br i1 %.not, label %20, label %11

11:                                               ; preds = %3
  %12 = getelementptr inbounds i8, ptr %0, i64 104
  %13 = load ptr, ptr %12, align 8, !tbaa !5
  %.not343 = icmp eq ptr %13, null
  br i1 %.not343, label %20, label %14

14:                                               ; preds = %11
  %15 = getelementptr inbounds i8, ptr %0, i64 20
  %16 = load i32, ptr %15, align 4, !tbaa !12
  %.not344 = icmp eq i32 %16, 2
  br i1 %.not344, label %17, label %20

17:                                               ; preds = %14
  %18 = getelementptr inbounds i8, ptr %1, i64 72
  %19 = load ptr, ptr %18, align 8, !tbaa !13
  %.not345 = icmp eq ptr %19, null
  br i1 %.not345, label %20, label %22

20:                                               ; preds = %17, %14, %11, %3
  %21 = tail call i32 @mz_zip_set_error(ptr noundef %0, i32 noundef 24)
  br label %382

22:                                               ; preds = %17
  %23 = getelementptr inbounds i8, ptr %1, i64 104
  %24 = load ptr, ptr %23, align 8, !tbaa !5
  %25 = getelementptr inbounds i8, ptr %24, i64 100
  %26 = load i32, ptr %25, align 4, !tbaa !14
  %.not346 = icmp eq i32 %26, 0
  br i1 %.not346, label %32, label %27

27:                                               ; preds = %22
  %28 = getelementptr inbounds i8, ptr %13, i64 100
  %29 = load i32, ptr %28, align 4, !tbaa !14
  %.not347 = icmp eq i32 %29, 0
  br i1 %.not347, label %30, label %32

30:                                               ; preds = %27
  %31 = tail call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 24)
  br label %382

32:                                               ; preds = %27, %22
  %33 = tail call ptr @mz_zip_get_cdh(ptr noundef nonnull %1, i32 noundef %2)
  %34 = icmp eq ptr %33, null
  br i1 %34, label %35, label %37

35:                                               ; preds = %32
  %36 = tail call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 24)
  br label %382

37:                                               ; preds = %32
  %38 = load i32, ptr %33, align 1
  %.not348 = icmp eq i32 %38, 33639248
  br i1 %.not348, label %41, label %39

39:                                               ; preds = %37
  %40 = tail call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 9)
  br label %382

41:                                               ; preds = %37
  %42 = getelementptr inbounds i8, ptr %33, i64 28
  %43 = load i8, ptr %42, align 1, !tbaa !17
  %44 = zext i8 %43 to i32
  %45 = getelementptr inbounds i8, ptr %33, i64 29
  %46 = load i8, ptr %45, align 1, !tbaa !17
  %47 = zext i8 %46 to i32
  %48 = shl nuw nsw i32 %47, 8
  %49 = or disjoint i32 %48, %44
  %50 = getelementptr inbounds i8, ptr %33, i64 32
  %51 = load i8, ptr %50, align 1, !tbaa !17
  %52 = zext i8 %51 to i32
  %53 = getelementptr inbounds i8, ptr %33, i64 33
  %54 = load i8, ptr %53, align 1, !tbaa !17
  %55 = zext i8 %54 to i32
  %56 = shl nuw nsw i32 %55, 8
  %57 = or disjoint i32 %56, %52
  %58 = getelementptr inbounds i8, ptr %33, i64 30
  %59 = load i8, ptr %58, align 1, !tbaa !17
  %60 = zext i8 %59 to i32
  %61 = getelementptr inbounds i8, ptr %33, i64 31
  %62 = load i8, ptr %61, align 1, !tbaa !17
  %63 = zext i8 %62 to i32
  %64 = shl nuw nsw i32 %63, 8
  %65 = or disjoint i32 %64, %60
  %66 = add nuw nsw i32 %57, %49
  %67 = add nuw nsw i32 %66, %65
  %68 = getelementptr inbounds i8, ptr %13, i64 8
  %69 = load i64, ptr %68, align 8, !tbaa !18
  %70 = zext nneg i32 %67 to i64
  %71 = add i64 %69, -4294967217
  %72 = add i64 %71, %70
  %73 = icmp ult i64 %72, -4294967295
  br i1 %73, label %74, label %76

74:                                               ; preds = %41
  %75 = tail call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 15)
  br label %382

76:                                               ; preds = %41
  %77 = tail call i32 @mz_zip_writer_compute_padding_needed_for_file_alignment(ptr noundef nonnull %0)
  %78 = getelementptr inbounds i8, ptr %13, i64 100
  %79 = load i32, ptr %78, align 4, !tbaa !14
  %.not349 = icmp eq i32 %79, 0
  %80 = getelementptr inbounds i8, ptr %0, i64 16
  %81 = load i32, ptr %80, align 8, !tbaa !19
  br i1 %.not349, label %82, label %86

82:                                               ; preds = %76
  %83 = icmp eq i32 %81, 65535
  br i1 %83, label %84, label %90

84:                                               ; preds = %82
  %85 = tail call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 2)
  br label %382

86:                                               ; preds = %76
  %87 = icmp eq i32 %81, -1
  br i1 %87, label %88, label %90

88:                                               ; preds = %86
  %89 = tail call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 2)
  br label %382

90:                                               ; preds = %86, %82
  %91 = call i32 @mz_zip_file_stat_internal(ptr noundef nonnull %1, i32 noundef %2, ptr noundef nonnull %33, ptr noundef nonnull %8, ptr noundef null)
  %.not350 = icmp eq i32 %91, 0
  br i1 %.not350, label %382, label %92

92:                                               ; preds = %90
  %93 = getelementptr inbounds i8, ptr %8, i64 56
  %94 = load i64, ptr %93, align 8, !tbaa !20
  %95 = load i64, ptr %0, align 8, !tbaa !23
  %96 = load ptr, ptr %18, align 8, !tbaa !13
  %97 = getelementptr inbounds i8, ptr %1, i64 96
  %98 = load ptr, ptr %97, align 8, !tbaa !24
  %99 = call i64 %96(ptr noundef %98, i64 noundef %94, ptr noundef nonnull %6, i64 noundef 30) #6
  %.not351 = icmp eq i64 %99, 30
  br i1 %.not351, label %102, label %100

100:                                              ; preds = %92
  %101 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 20)
  br label %382

102:                                              ; preds = %92
  %103 = load i32, ptr %6, align 16
  %.not352 = icmp eq i32 %103, 67324752
  br i1 %.not352, label %106, label %104

104:                                              ; preds = %102
  %105 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 9)
  br label %382

106:                                              ; preds = %102
  %107 = add i64 %94, 30
  %108 = getelementptr inbounds i8, ptr %6, i64 26
  %109 = load i8, ptr %108, align 2, !tbaa !17
  %110 = zext i8 %109 to i32
  %111 = getelementptr inbounds i8, ptr %6, i64 27
  %112 = load i8, ptr %111, align 1, !tbaa !17
  %113 = zext i8 %112 to i32
  %114 = shl nuw nsw i32 %113, 8
  %115 = or disjoint i32 %114, %110
  %116 = getelementptr inbounds i8, ptr %6, i64 28
  %117 = load i8, ptr %116, align 4, !tbaa !17
  %118 = zext i8 %117 to i32
  %119 = getelementptr inbounds i8, ptr %6, i64 29
  %120 = load i8, ptr %119, align 1, !tbaa !17
  %121 = zext i8 %120 to i32
  %122 = shl nuw nsw i32 %121, 8
  %123 = or disjoint i32 %122, %118
  %124 = add nuw nsw i32 %123, %115
  %125 = zext nneg i32 %124 to i64
  %126 = getelementptr inbounds i8, ptr %8, i64 32
  %127 = load i64, ptr %126, align 8, !tbaa !25
  %128 = add i64 %127, %125
  %.not353 = icmp eq i32 %123, 0
  br i1 %.not353, label %173, label %129

129:                                              ; preds = %106
  %130 = getelementptr inbounds i8, ptr %6, i64 22
  %131 = load i32, ptr %130, align 2
  %132 = getelementptr inbounds i8, ptr %6, i64 18
  %133 = load i32, ptr %132, align 2
  %134 = icmp eq i32 %133, -1
  %135 = icmp eq i32 %131, -1
  %or.cond = select i1 %134, i1 true, i1 %135
  br i1 %or.cond, label %136, label %173

136:                                              ; preds = %129
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #6
  call void @mz_zip_array_init(ptr noundef nonnull %9, i32 noundef 1)
  %137 = zext nneg i32 %123 to i64
  %138 = call i32 @mz_zip_array_resize(ptr noundef nonnull %0, ptr noundef nonnull %9, i64 noundef %137, i32 noundef 0)
  %.not354 = icmp eq i32 %138, 0
  br i1 %.not354, label %.thread396, label %139

139:                                              ; preds = %136
  %140 = load ptr, ptr %18, align 8, !tbaa !13
  %141 = load ptr, ptr %97, align 8, !tbaa !24
  %142 = load i64, ptr %93, align 8, !tbaa !20
  %narrow = add nuw nsw i32 %115, 30
  %143 = zext nneg i32 %narrow to i64
  %144 = add i64 %142, %143
  %145 = load ptr, ptr %9, align 8, !tbaa !26
  %146 = call i64 %140(ptr noundef %141, i64 noundef %144, ptr noundef %145, i64 noundef %137) #6
  %.not355 = icmp eq i64 %146, %137
  br i1 %.not355, label %147, label %.thread396.sink.split

147:                                              ; preds = %139
  %148 = load ptr, ptr %9, align 8, !tbaa !26
  br label %149

149:                                              ; preds = %168, %147
  %.0331 = phi i32 [ %123, %147 ], [ %171, %168 ]
  %.0329 = phi ptr [ %148, %147 ], [ %170, %168 ]
  %150 = icmp ult i32 %.0331, 4
  br i1 %150, label %.thread396.sink.split, label %151

151:                                              ; preds = %149
  %152 = getelementptr inbounds i8, ptr %.0329, i64 2
  %153 = load i8, ptr %152, align 1, !tbaa !17
  %154 = zext i8 %153 to i64
  %155 = getelementptr inbounds i8, ptr %.0329, i64 3
  %156 = load i8, ptr %155, align 1, !tbaa !17
  %157 = zext i8 %156 to i64
  %158 = shl nuw nsw i64 %157, 8
  %159 = or disjoint i64 %158, %154
  %160 = trunc nuw nsw i64 %159 to i32
  %161 = add nuw nsw i32 %160, 4
  %162 = icmp ugt i32 %161, %.0331
  br i1 %162, label %.thread396.sink.split, label %163

163:                                              ; preds = %151
  %164 = load i16, ptr %.0329, align 1
  %165 = icmp eq i16 %164, 1
  br i1 %165, label %166, label %168

166:                                              ; preds = %163
  %167 = icmp ult i64 %159, 16
  br i1 %167, label %.thread396.sink.split, label %.loopexit

168:                                              ; preds = %163
  %169 = zext nneg i32 %161 to i64
  %170 = getelementptr inbounds i8, ptr %.0329, i64 %169
  %171 = sub i32 %.0331, %161
  %.not356 = icmp eq i32 %171, 0
  br i1 %.not356, label %.loopexit, label %149, !llvm.loop !27

.thread396.sink.split:                            ; preds = %151, %149, %166, %139
  %.sink.ph = phi i32 [ 20, %139 ], [ 9, %166 ], [ 9, %149 ], [ 9, %151 ]
  call void @mz_zip_array_clear(ptr noundef nonnull %0, ptr noundef nonnull %9)
  br label %.thread396

.thread396:                                       ; preds = %.thread396.sink.split, %136
  %.sink = phi i32 [ 16, %136 ], [ %.sink.ph, %.thread396.sink.split ]
  %172 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef %.sink)
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  br label %382

.loopexit:                                        ; preds = %168, %166
  %.2320392 = phi i32 [ 1, %166 ], [ 0, %168 ]
  call void @mz_zip_array_clear(ptr noundef nonnull %0, ptr noundef nonnull %9)
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  br label %173

173:                                              ; preds = %.loopexit, %129, %106
  %.4322 = phi i32 [ %.2320392, %.loopexit ], [ 0, %129 ], [ 0, %106 ]
  %174 = load i32, ptr %78, align 4, !tbaa !14
  %.not357 = icmp eq i32 %174, 0
  br i1 %.not357, label %175, label %.thread401

175:                                              ; preds = %173
  %176 = zext i32 %77 to i64
  %177 = load i64, ptr %68, align 8, !tbaa !18
  %178 = add nuw nsw i64 %70, 178
  %179 = add nuw nsw i64 %178, %176
  %180 = add i64 %179, %95
  %181 = add i64 %180, %128
  %182 = add i64 %181, %177
  %183 = icmp ult i64 %182, 4294967295
  br i1 %183, label %.thread401, label %184

184:                                              ; preds = %175
  %185 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 29)
  br label %382

.thread401:                                       ; preds = %175, %173
  %186 = call i32 @mz_zip_writer_write_zeros(ptr noundef nonnull %0, i64 noundef %95, i32 noundef %77)
  %.not358 = icmp eq i32 %186, 0
  br i1 %.not358, label %382, label %187

187:                                              ; preds = %.thread401
  %188 = zext i32 %77 to i64
  %189 = add i64 %95, %188
  store i64 %189, ptr %5, align 8, !tbaa !29
  %190 = getelementptr inbounds i8, ptr %0, i64 32
  %191 = load i64, ptr %190, align 8, !tbaa !30
  %.not359 = icmp eq i64 %191, 0
  br i1 %.not359, label %197, label %192

192:                                              ; preds = %187
  %193 = add i64 %191, -1
  %194 = and i64 %193, %189
  %195 = icmp eq i64 %194, 0
  br i1 %195, label %197, label %196

196:                                              ; preds = %192
  call void @__assert_fail(ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.12, i32 noundef 7687, ptr noundef nonnull @__PRETTY_FUNCTION__.mz_zip_writer_add_from_zip_reader) #7
  unreachable

197:                                              ; preds = %192, %187
  %198 = getelementptr inbounds i8, ptr %0, i64 80
  %199 = load ptr, ptr %198, align 8, !tbaa !31
  %200 = getelementptr inbounds i8, ptr %0, i64 96
  %201 = load ptr, ptr %200, align 8, !tbaa !24
  %202 = call i64 %199(ptr noundef %201, i64 noundef %189, ptr noundef nonnull %6, i64 noundef 30) #6
  %.not360 = icmp eq i64 %202, 30
  br i1 %.not360, label %205, label %203

203:                                              ; preds = %197
  %204 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 19)
  br label %382

205:                                              ; preds = %197
  %206 = getelementptr inbounds i8, ptr %0, i64 40
  %207 = load ptr, ptr %206, align 8, !tbaa !32
  %208 = getelementptr inbounds i8, ptr %0, i64 64
  %209 = load ptr, ptr %208, align 8, !tbaa !33
  %210 = call i64 @llvm.umin.i64(i64 %128, i64 65536)
  %211 = call i64 @llvm.umax.i64(i64 %210, i64 32)
  %212 = call ptr %207(ptr noundef %209, i64 noundef 1, i64 noundef %211) #6
  %213 = icmp eq ptr %212, null
  br i1 %213, label %215, label %.preheader

.preheader:                                       ; preds = %205
  %214 = add i64 %189, 30
  %.not361416 = icmp eq i64 %128, 0
  br i1 %.not361416, label %._crit_edge, label %.lr.ph

215:                                              ; preds = %205
  %216 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 16)
  br label %382

.lr.ph:                                           ; preds = %.preheader, %236
  %.0314419 = phi i64 [ %239, %236 ], [ %128, %.preheader ]
  %.0315418 = phi i64 [ %237, %236 ], [ %107, %.preheader ]
  %.0316417 = phi i64 [ %238, %236 ], [ %214, %.preheader ]
  %217 = call i64 @llvm.umin.i64(i64 %.0314419, i64 65536)
  %218 = trunc nuw nsw i64 %217 to i32
  store i32 %218, ptr %4, align 4, !tbaa !34
  %219 = load ptr, ptr %18, align 8, !tbaa !13
  %220 = load ptr, ptr %97, align 8, !tbaa !24
  %221 = call i64 %219(ptr noundef %220, i64 noundef %.0315418, ptr noundef nonnull %212, i64 noundef %217) #6
  %.not376 = icmp eq i64 %221, %217
  br i1 %.not376, label %227, label %222

222:                                              ; preds = %.lr.ph
  %223 = getelementptr inbounds i8, ptr %0, i64 48
  %224 = load ptr, ptr %223, align 8, !tbaa !35
  %225 = load ptr, ptr %208, align 8, !tbaa !33
  call void %224(ptr noundef %225, ptr noundef nonnull %212) #6
  %226 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 20)
  br label %382

227:                                              ; preds = %.lr.ph
  %228 = load ptr, ptr %198, align 8, !tbaa !31
  %229 = load ptr, ptr %200, align 8, !tbaa !24
  %230 = call i64 %228(ptr noundef %229, i64 noundef %.0316417, ptr noundef nonnull %212, i64 noundef %221) #6
  %.not377 = icmp eq i64 %230, %221
  br i1 %.not377, label %236, label %231

231:                                              ; preds = %227
  %232 = getelementptr inbounds i8, ptr %0, i64 48
  %233 = load ptr, ptr %232, align 8, !tbaa !35
  %234 = load ptr, ptr %208, align 8, !tbaa !33
  call void %233(ptr noundef %234, ptr noundef nonnull %212) #6
  %235 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 19)
  br label %382

236:                                              ; preds = %227
  %237 = add i64 %.0315418, %221
  %238 = add i64 %.0316417, %221
  %239 = sub i64 %.0314419, %221
  %.not361 = icmp eq i64 %239, 0
  br i1 %.not361, label %._crit_edge, label %.lr.ph, !llvm.loop !36

._crit_edge:                                      ; preds = %236, %.preheader
  %.0316.lcssa = phi i64 [ %214, %.preheader ], [ %238, %236 ]
  %.0315.lcssa = phi i64 [ %107, %.preheader ], [ %237, %236 ]
  %240 = getelementptr inbounds i8, ptr %6, i64 6
  %241 = load i8, ptr %240, align 2, !tbaa !17
  %242 = and i8 %241, 8
  %.not362 = icmp eq i8 %242, 0
  br i1 %.not362, label %300, label %243

243:                                              ; preds = %._crit_edge
  %244 = load ptr, ptr %23, align 8, !tbaa !5
  %245 = getelementptr inbounds i8, ptr %244, i64 100
  %246 = load i32, ptr %245, align 4, !tbaa !14
  %247 = or i32 %246, %.4322
  %or.cond6.not = icmp eq i32 %247, 0
  %248 = load ptr, ptr %18, align 8, !tbaa !13
  %249 = load ptr, ptr %97, align 8, !tbaa !24
  br i1 %or.cond6.not, label %261, label %250

250:                                              ; preds = %243
  %251 = call i64 %248(ptr noundef %249, i64 noundef %.0315.lcssa, ptr noundef nonnull %212, i64 noundef 24) #6
  %.not365 = icmp eq i64 %251, 24
  br i1 %.not365, label %257, label %252

252:                                              ; preds = %250
  %253 = getelementptr inbounds i8, ptr %0, i64 48
  %254 = load ptr, ptr %253, align 8, !tbaa !35
  %255 = load ptr, ptr %208, align 8, !tbaa !33
  call void %254(ptr noundef %255, ptr noundef nonnull %212) #6
  %256 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 20)
  br label %382

257:                                              ; preds = %250
  %258 = load i32, ptr %212, align 1
  %259 = icmp eq i32 %258, 134695760
  %260 = select i1 %259, i32 24, i32 20
  br label %.thread403

261:                                              ; preds = %243
  %262 = call i64 %248(ptr noundef %249, i64 noundef %.0315.lcssa, ptr noundef nonnull %212, i64 noundef 16) #6
  %.not363 = icmp eq i64 %262, 16
  br i1 %.not363, label %263, label %284

263:                                              ; preds = %261
  %264 = load i32, ptr %212, align 1
  %265 = icmp eq i32 %264, 134695760
  %266 = load ptr, ptr %12, align 8, !tbaa !5
  %267 = getelementptr inbounds i8, ptr %266, i64 100
  %268 = load i32, ptr %267, align 4, !tbaa !14
  %.not364 = icmp eq i32 %268, 0
  br i1 %.not364, label %282, label %269

269:                                              ; preds = %263
  %270 = select i1 %265, i64 4, i64 0
  %271 = getelementptr inbounds i8, ptr %212, i64 %270
  %272 = load i32, ptr %271, align 1
  %273 = getelementptr inbounds i8, ptr %271, i64 4
  %274 = load i32, ptr %273, align 1
  %275 = zext i32 %274 to i64
  %276 = getelementptr inbounds i8, ptr %271, i64 8
  %277 = load i32, ptr %276, align 1
  %278 = zext i32 %277 to i64
  call void @mz_write_le32(ptr noundef nonnull %212, i32 noundef 134695760)
  %279 = getelementptr inbounds i8, ptr %212, i64 4
  call void @mz_write_le32(ptr noundef nonnull %279, i32 noundef %272)
  %280 = getelementptr inbounds i8, ptr %212, i64 8
  call void @mz_write_le64(ptr noundef nonnull %280, i64 noundef %275)
  %281 = getelementptr inbounds i8, ptr %212, i64 16
  call void @mz_write_le64(ptr noundef nonnull %281, i64 noundef %278)
  br label %.thread403

282:                                              ; preds = %263
  %283 = select i1 %265, i32 16, i32 12
  br label %.thread403

284:                                              ; preds = %261
  %285 = getelementptr inbounds i8, ptr %0, i64 48
  %286 = load ptr, ptr %285, align 8, !tbaa !35
  %287 = load ptr, ptr %208, align 8, !tbaa !33
  call void %286(ptr noundef %287, ptr noundef nonnull %212) #6
  %288 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 20)
  br label %382

.thread403:                                       ; preds = %282, %269, %257
  %storemerge409 = phi i32 [ %260, %257 ], [ %283, %282 ], [ 24, %269 ]
  store i32 %storemerge409, ptr %4, align 4, !tbaa !34
  %289 = load ptr, ptr %198, align 8, !tbaa !31
  %290 = load ptr, ptr %200, align 8, !tbaa !24
  %291 = zext nneg i32 %storemerge409 to i64
  %292 = call i64 %289(ptr noundef %290, i64 noundef %.0316.lcssa, ptr noundef nonnull %212, i64 noundef %291) #6
  %.not366 = icmp eq i64 %292, %291
  br i1 %.not366, label %298, label %293

293:                                              ; preds = %.thread403
  %294 = getelementptr inbounds i8, ptr %0, i64 48
  %295 = load ptr, ptr %294, align 8, !tbaa !35
  %296 = load ptr, ptr %208, align 8, !tbaa !33
  call void %295(ptr noundef %296, ptr noundef nonnull %212) #6
  %297 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 19)
  br label %382

298:                                              ; preds = %.thread403
  %299 = add i64 %.0316.lcssa, %291
  br label %300

300:                                              ; preds = %298, %._crit_edge
  %.1317 = phi i64 [ %299, %298 ], [ %.0316.lcssa, %._crit_edge ]
  %301 = getelementptr inbounds i8, ptr %0, i64 48
  %302 = load ptr, ptr %301, align 8, !tbaa !35
  %303 = load ptr, ptr %208, align 8, !tbaa !33
  call void %302(ptr noundef %303, ptr noundef nonnull %212) #6
  %304 = load i64, ptr %68, align 8, !tbaa !18
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(46) %7, ptr noundef nonnull align 1 dereferenceable(46) %33, i64 46, i1 false)
  %305 = load i32, ptr %78, align 4, !tbaa !14
  %.not367 = icmp eq i32 %305, 0
  br i1 %.not367, label %345, label %306

306:                                              ; preds = %300
  %307 = getelementptr inbounds i8, ptr %33, i64 46
  %308 = zext nneg i32 %49 to i64
  %309 = getelementptr inbounds i8, ptr %307, i64 %308
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #6
  call void @mz_zip_array_init(ptr noundef nonnull %10, i32 noundef 1)
  %310 = getelementptr inbounds i8, ptr %7, i64 20
  call void @mz_write_le32(ptr noundef nonnull %310, i32 noundef -1)
  %311 = getelementptr inbounds i8, ptr %7, i64 24
  call void @mz_write_le32(ptr noundef nonnull %311, i32 noundef -1)
  %312 = getelementptr inbounds i8, ptr %7, i64 42
  call void @mz_write_le32(ptr noundef nonnull %312, i32 noundef -1)
  %313 = getelementptr inbounds i8, ptr %8, i64 40
  %314 = call i32 @mz_zip_writer_update_zip64_extension_block(ptr noundef nonnull %10, ptr noundef nonnull %0, ptr noundef nonnull %309, i32 noundef %65, ptr noundef nonnull %126, ptr noundef nonnull %313, ptr noundef nonnull %5, ptr noundef null)
  %.not370 = icmp eq i32 %314, 0
  br i1 %.not370, label %315, label %316

315:                                              ; preds = %306
  call void @mz_zip_array_clear(ptr noundef nonnull %0, ptr noundef nonnull %10)
  br label %.thread406

316:                                              ; preds = %306
  %317 = getelementptr inbounds i8, ptr %7, i64 30
  %318 = getelementptr inbounds i8, ptr %10, i64 8
  %319 = load i64, ptr %318, align 8, !tbaa !37
  %320 = trunc i64 %319 to i16
  call void @mz_write_le16(ptr noundef nonnull %317, i16 noundef zeroext %320)
  %321 = call i32 @mz_zip_array_push_back(ptr noundef nonnull %0, ptr noundef nonnull %13, ptr noundef nonnull %7, i64 noundef 46)
  %.not371 = icmp eq i32 %321, 0
  br i1 %.not371, label %322, label %324

322:                                              ; preds = %316
  call void @mz_zip_array_clear(ptr noundef nonnull %0, ptr noundef nonnull %10)
  %323 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 16)
  br label %.thread406

324:                                              ; preds = %316
  %325 = call i32 @mz_zip_array_push_back(ptr noundef nonnull %0, ptr noundef nonnull %13, ptr noundef nonnull %307, i64 noundef %308)
  %.not372 = icmp eq i32 %325, 0
  br i1 %.not372, label %326, label %329

326:                                              ; preds = %324
  call void @mz_zip_array_clear(ptr noundef nonnull %0, ptr noundef nonnull %10)
  %327 = call i32 @mz_zip_array_resize(ptr noundef nonnull %0, ptr noundef nonnull %13, i64 noundef %304, i32 noundef 0)
  %328 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 16)
  br label %.thread406

329:                                              ; preds = %324
  %330 = load ptr, ptr %10, align 8, !tbaa !26
  %331 = load i64, ptr %318, align 8, !tbaa !37
  %332 = call i32 @mz_zip_array_push_back(ptr noundef nonnull %0, ptr noundef nonnull %13, ptr noundef %330, i64 noundef %331)
  %.not373 = icmp eq i32 %332, 0
  br i1 %.not373, label %333, label %336

333:                                              ; preds = %329
  call void @mz_zip_array_clear(ptr noundef nonnull %0, ptr noundef nonnull %10)
  %334 = call i32 @mz_zip_array_resize(ptr noundef nonnull %0, ptr noundef nonnull %13, i64 noundef %304, i32 noundef 0)
  %335 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 16)
  br label %.thread406

336:                                              ; preds = %329
  %337 = zext nneg i32 %65 to i64
  %338 = getelementptr inbounds i8, ptr %309, i64 %337
  %339 = zext nneg i32 %57 to i64
  %340 = call i32 @mz_zip_array_push_back(ptr noundef nonnull %0, ptr noundef nonnull %13, ptr noundef nonnull %338, i64 noundef %339)
  %.not374 = icmp eq i32 %340, 0
  call void @mz_zip_array_clear(ptr noundef nonnull %0, ptr noundef nonnull %10)
  br i1 %.not374, label %341, label %344

341:                                              ; preds = %336
  %342 = call i32 @mz_zip_array_resize(ptr noundef nonnull %0, ptr noundef nonnull %13, i64 noundef %304, i32 noundef 0)
  %343 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 16)
  br label %.thread406

.thread406:                                       ; preds = %341, %333, %326, %322, %315
  %.10.ph = phi i32 [ 0, %315 ], [ %323, %322 ], [ %328, %326 ], [ %335, %333 ], [ %343, %341 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  br label %382

344:                                              ; preds = %336
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  br label %365

345:                                              ; preds = %300
  %346 = icmp ugt i64 %.1317, 4294967295
  br i1 %346, label %347, label %349

347:                                              ; preds = %345
  %348 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 29)
  br label %382

349:                                              ; preds = %345
  %350 = icmp ugt i64 %189, 4294967294
  br i1 %350, label %351, label %353

351:                                              ; preds = %349
  %352 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 29)
  br label %382

353:                                              ; preds = %349
  %354 = getelementptr inbounds i8, ptr %7, i64 42
  %355 = trunc nuw i64 %189 to i32
  call void @mz_write_le32(ptr noundef nonnull %354, i32 noundef %355)
  %356 = call i32 @mz_zip_array_push_back(ptr noundef nonnull %0, ptr noundef nonnull %13, ptr noundef nonnull %7, i64 noundef 46)
  %.not368 = icmp eq i32 %356, 0
  br i1 %.not368, label %357, label %359

357:                                              ; preds = %353
  %358 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 16)
  br label %382

359:                                              ; preds = %353
  %360 = getelementptr inbounds i8, ptr %33, i64 46
  %361 = call i32 @mz_zip_array_push_back(ptr noundef nonnull %0, ptr noundef nonnull %13, ptr noundef nonnull %360, i64 noundef %70)
  %.not369 = icmp eq i32 %361, 0
  br i1 %.not369, label %362, label %365

362:                                              ; preds = %359
  %363 = call i32 @mz_zip_array_resize(ptr noundef nonnull %0, ptr noundef nonnull %13, i64 noundef %304, i32 noundef 0)
  %364 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 16)
  br label %382

365:                                              ; preds = %344, %359
  %366 = load i64, ptr %68, align 8, !tbaa !18
  %367 = icmp ugt i64 %366, 4294967294
  br i1 %367, label %368, label %371

368:                                              ; preds = %365
  %369 = call i32 @mz_zip_array_resize(ptr noundef nonnull %0, ptr noundef nonnull %13, i64 noundef %304, i32 noundef 0)
  %370 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 15)
  br label %382

371:                                              ; preds = %365
  %372 = trunc i64 %304 to i32
  store i32 %372, ptr %4, align 4, !tbaa !34
  %373 = getelementptr inbounds i8, ptr %13, i64 32
  %374 = call i32 @mz_zip_array_push_back(ptr noundef nonnull %0, ptr noundef nonnull %373, ptr noundef nonnull %4, i64 noundef 1)
  %.not375 = icmp eq i32 %374, 0
  br i1 %.not375, label %375, label %378

375:                                              ; preds = %371
  %376 = call i32 @mz_zip_array_resize(ptr noundef nonnull %0, ptr noundef nonnull %13, i64 noundef %304, i32 noundef 0)
  %377 = call i32 @mz_zip_set_error(ptr noundef nonnull %0, i32 noundef 16)
  br label %382

378:                                              ; preds = %371
  %379 = getelementptr inbounds i8, ptr %0, i64 16
  %380 = load i32, ptr %379, align 8, !tbaa !19
  %381 = add i32 %380, 1
  store i32 %381, ptr %379, align 8, !tbaa !19
  store i64 %.1317, ptr %0, align 8, !tbaa !23
  br label %382

382:                                              ; preds = %.thread406, %284, %184, %.thread396, %.thread401, %90, %378, %375, %368, %362, %357, %351, %347, %293, %252, %231, %222, %215, %203, %104, %100, %88, %84, %74, %39, %35, %30, %20
  %.11 = phi i32 [ %21, %20 ], [ %36, %35 ], [ %40, %39 ], [ %75, %74 ], [ %89, %88 ], [ %101, %100 ], [ %105, %104 ], [ %204, %203 ], [ %216, %215 ], [ %226, %222 ], [ %235, %231 ], [ %256, %252 ], [ %297, %293 ], [ %370, %368 ], [ 1, %378 ], [ %377, %375 ], [ %348, %347 ], [ %352, %351 ], [ %364, %362 ], [ %358, %357 ], [ %288, %284 ], [ %185, %184 ], [ %85, %84 ], [ %31, %30 ], [ 0, %90 ], [ 0, %.thread401 ], [ %172, %.thread396 ], [ %.10.ph, %.thread406 ]
  call void @llvm.lifetime.end.p0(i64 1112, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 46, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #6
  ret i32 %.11
}

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

; Function Attrs: alwaysinline nounwind uwtable
declare hidden void @mz_write_le16(ptr noundef, i16 noundef zeroext) local_unnamed_addr #3

; Function Attrs: alwaysinline nounwind uwtable
declare hidden i32 @mz_zip_array_push_back(ptr noundef, ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #3

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { 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 #4 = { 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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nounwind }
attributes #7 = { 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, !11, i64 104}
!6 = !{!"", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !7, i64 32, !11, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !11, i64 72, !11, i64 80, !11, i64 88, !11, i64 96, !11, i64 104}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"any pointer", !8, i64 0}
!12 = !{!6, !10, i64 20}
!13 = !{!6, !11, i64 72}
!14 = !{!15, !10, i64 100}
!15 = !{!"mz_zip_internal_state_tag", !16, i64 0, !16, i64 32, !16, i64 64, !10, i64 96, !10, i64 100, !10, i64 104, !11, i64 112, !7, i64 120, !11, i64 128, !7, i64 136, !7, i64 144}
!16 = !{!"", !11, i64 0, !7, i64 8, !7, i64 16, !10, i64 24}
!17 = !{!8, !8, i64 0}
!18 = !{!15, !7, i64 8}
!19 = !{!6, !10, i64 16}
!20 = !{!21, !7, i64 56}
!21 = !{!"", !10, i64 0, !7, i64 8, !22, i64 16, !22, i64 18, !22, i64 20, !22, i64 22, !10, i64 24, !7, i64 32, !7, i64 40, !22, i64 48, !10, i64 52, !7, i64 56, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !8, i64 80, !8, i64 592, !7, i64 1104}
!22 = !{!"short", !8, i64 0}
!23 = !{!6, !7, i64 0}
!24 = !{!6, !11, i64 96}
!25 = !{!21, !7, i64 32}
!26 = !{!16, !11, i64 0}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = !{!7, !7, i64 0}
!30 = !{!6, !7, i64 32}
!31 = !{!6, !11, i64 80}
!32 = !{!6, !11, i64 40}
!33 = !{!6, !11, i64 64}
!34 = !{!10, !10, i64 0}
!35 = !{!6, !11, i64 48}
!36 = distinct !{!36, !28}
!37 = !{!16, !7, i64 8}


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