; LLVM IR from eugenebokhan/awesome-ml :: Awesome ML/Utils/Zip/minizip (zip)

; 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.zip64_internal = type { %struct.zlib_filefunc64_32_def_s, ptr, ptr, %struct.linkedlist_data_s, i32, i32, %struct.curfile64_info, i64, i64, i64, i64, i64, i64, ptr }
%struct.zlib_filefunc64_32_def_s = type { %struct.zlib_filefunc64_def_s, ptr, ptr, ptr, ptr }
%struct.zlib_filefunc64_def_s = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.linkedlist_data_s = type { ptr, ptr }
%struct.curfile64_info = type { %struct.z_stream_s, i32, i32, i64, ptr, i64, i64, i64, i64, i64, i32, i32, i32, [65536 x i8], i64, i64, i32, i64, i64, i64, i64, [3 x i64], ptr, i32 }
%struct.z_stream_s = type { ptr, i32, i64, ptr, i32, i64, ptr, ptr, ptr, ptr, ptr, i32, i64, i64 }
%struct.linkedlist_datablock_internal_s = type { ptr, i64, i64, i64, [4080 x i8] }

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

declare i64 @call_ztell64(ptr noundef, ptr noundef) #1

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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @zipCloseFileInZip(ptr noundef) #3

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @zipClose(ptr noundef %0, ptr noundef %1) #3 {
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i64, align 8
  %9 = alloca i32, align 4
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #5
  store i32 0, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #5
  store i64 0, ptr %8, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #5
  store i32 0, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  store i64 0, ptr %11, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  store i64 0, ptr %12, align 8, !tbaa !11
  %20 = load ptr, ptr %4, align 8, !tbaa !5
  %21 = icmp eq ptr %20, null
  br i1 %21, label %22, label %23

22:                                               ; preds = %2
  store i32 -102, ptr %3, align 4
  store i32 1, ptr %13, align 4
  br label %550

23:                                               ; preds = %2
  %24 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %24, ptr %6, align 8, !tbaa !5
  %25 = load ptr, ptr %6, align 8, !tbaa !5
  %26 = getelementptr inbounds %struct.zip64_internal, ptr %25, i32 0, i32 4
  %27 = load i32, ptr %26, align 8, !tbaa !15
  %28 = icmp eq i32 %27, 1
  br i1 %28, label %29, label %32

29:                                               ; preds = %23
  %30 = load ptr, ptr %4, align 8, !tbaa !5
  %31 = call i32 @zipCloseFileInZip(ptr noundef %30)
  store i32 %31, ptr %7, align 4, !tbaa !9
  br label %32

32:                                               ; preds = %29, %23
  %33 = load ptr, ptr %5, align 8, !tbaa !5
  %34 = icmp eq ptr %33, null
  br i1 %34, label %35, label %39

35:                                               ; preds = %32
  %36 = load ptr, ptr %6, align 8, !tbaa !5
  %37 = getelementptr inbounds %struct.zip64_internal, ptr %36, i32 0, i32 13
  %38 = load ptr, ptr %37, align 8, !tbaa !22
  store ptr %38, ptr %5, align 8, !tbaa !5
  br label %39

39:                                               ; preds = %35, %32
  %40 = load ptr, ptr %6, align 8, !tbaa !5
  %41 = getelementptr inbounds %struct.zip64_internal, ptr %40, i32 0, i32 1
  %42 = load ptr, ptr %41, align 8, !tbaa !23
  %43 = load ptr, ptr %6, align 8, !tbaa !5
  %44 = getelementptr inbounds %struct.zip64_internal, ptr %43, i32 0, i32 2
  %45 = load ptr, ptr %44, align 8, !tbaa !24
  %46 = icmp ne ptr %42, %45
  br i1 %46, label %47, label %86

47:                                               ; preds = %39
  %48 = load ptr, ptr %6, align 8, !tbaa !5
  %49 = getelementptr inbounds %struct.zip64_internal, ptr %48, i32 0, i32 0
  %50 = getelementptr inbounds %struct.zlib_filefunc64_32_def_s, ptr %49, i32 0, i32 0
  %51 = getelementptr inbounds %struct.zlib_filefunc64_def_s, ptr %50, i32 0, i32 6
  %52 = load ptr, ptr %51, align 8, !tbaa !25
  %53 = load ptr, ptr %6, align 8, !tbaa !5
  %54 = getelementptr inbounds %struct.zip64_internal, ptr %53, i32 0, i32 0
  %55 = getelementptr inbounds %struct.zlib_filefunc64_32_def_s, ptr %54, i32 0, i32 0
  %56 = getelementptr inbounds %struct.zlib_filefunc64_def_s, ptr %55, i32 0, i32 8
  %57 = load ptr, ptr %56, align 8, !tbaa !26
  %58 = load ptr, ptr %6, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.zip64_internal, ptr %58, i32 0, i32 1
  %60 = load ptr, ptr %59, align 8, !tbaa !23
  %61 = call i32 %52(ptr noundef %57, ptr noundef %60)
  %62 = icmp ne i32 %61, 0
  br i1 %62, label %63, label %68

63:                                               ; preds = %47
  %64 = load i32, ptr %7, align 4, !tbaa !9
  %65 = icmp eq i32 %64, 0
  br i1 %65, label %66, label %67

66:                                               ; preds = %63
  store i32 -1, ptr %7, align 4, !tbaa !9
  br label %67

67:                                               ; preds = %66, %63
  br label %68

68:                                               ; preds = %67, %47
  %69 = load ptr, ptr %6, align 8, !tbaa !5
  %70 = getelementptr inbounds %struct.zip64_internal, ptr %69, i32 0, i32 10
  %71 = load i64, ptr %70, align 8, !tbaa !27
  %72 = icmp ugt i64 %71, 0
  br i1 %72, label %73, label %80

73:                                               ; preds = %68
  %74 = load ptr, ptr %6, align 8, !tbaa !5
  %75 = getelementptr inbounds %struct.zip64_internal, ptr %74, i32 0, i32 11
  %76 = load i64, ptr %75, align 8, !tbaa !28
  %77 = add i64 %76, 1
  %78 = load ptr, ptr %6, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.zip64_internal, ptr %78, i32 0, i32 12
  store i64 %77, ptr %79, align 8, !tbaa !29
  br label %80

80:                                               ; preds = %73, %68
  %81 = load ptr, ptr %6, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct.zip64_internal, ptr %81, i32 0, i32 2
  %83 = load ptr, ptr %82, align 8, !tbaa !24
  %84 = load ptr, ptr %6, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.zip64_internal, ptr %84, i32 0, i32 1
  store ptr %83, ptr %85, align 8, !tbaa !23
  br label %86

86:                                               ; preds = %80, %39
  %87 = load ptr, ptr %6, align 8, !tbaa !5
  %88 = getelementptr inbounds %struct.zip64_internal, ptr %87, i32 0, i32 0
  %89 = load ptr, ptr %6, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.zip64_internal, ptr %89, i32 0, i32 1
  %91 = load ptr, ptr %90, align 8, !tbaa !23
  %92 = call i64 @call_ztell64(ptr noundef %88, ptr noundef %91)
  store i64 %92, ptr %10, align 8, !tbaa !13
  %93 = load i32, ptr %7, align 4, !tbaa !9
  %94 = icmp eq i32 %93, 0
  br i1 %94, label %95, label %149

95:                                               ; preds = %86
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  %96 = load ptr, ptr %6, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct.zip64_internal, ptr %96, i32 0, i32 3
  %98 = getelementptr inbounds %struct.linkedlist_data_s, ptr %97, i32 0, i32 0
  %99 = load ptr, ptr %98, align 8, !tbaa !30
  store ptr %99, ptr %14, align 8, !tbaa !5
  br label %100

100:                                              ; preds = %139, %95
  %101 = load ptr, ptr %14, align 8, !tbaa !5
  %102 = icmp ne ptr %101, null
  br i1 %102, label %103, label %148

103:                                              ; preds = %100
  %104 = load i32, ptr %7, align 4, !tbaa !9
  %105 = icmp eq i32 %104, 0
  br i1 %105, label %106, label %139

106:                                              ; preds = %103
  %107 = load ptr, ptr %14, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.linkedlist_datablock_internal_s, ptr %107, i32 0, i32 2
  %109 = load i64, ptr %108, align 8, !tbaa !31
  %110 = icmp ugt i64 %109, 0
  br i1 %110, label %111, label %139

111:                                              ; preds = %106
  %112 = load ptr, ptr %6, align 8, !tbaa !5
  %113 = getelementptr inbounds %struct.zip64_internal, ptr %112, i32 0, i32 0
  %114 = getelementptr inbounds %struct.zlib_filefunc64_32_def_s, ptr %113, i32 0, i32 0
  %115 = getelementptr inbounds %struct.zlib_filefunc64_def_s, ptr %114, i32 0, i32 3
  %116 = load ptr, ptr %115, align 8, !tbaa !33
  %117 = load ptr, ptr %6, align 8, !tbaa !5
  %118 = getelementptr inbounds %struct.zip64_internal, ptr %117, i32 0, i32 0
  %119 = getelementptr inbounds %struct.zlib_filefunc64_32_def_s, ptr %118, i32 0, i32 0
  %120 = getelementptr inbounds %struct.zlib_filefunc64_def_s, ptr %119, i32 0, i32 8
  %121 = load ptr, ptr %120, align 8, !tbaa !26
  %122 = load ptr, ptr %6, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.zip64_internal, ptr %122, i32 0, i32 1
  %124 = load ptr, ptr %123, align 8, !tbaa !23
  %125 = load ptr, ptr %14, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.linkedlist_datablock_internal_s, ptr %125, i32 0, i32 4
  %127 = getelementptr inbounds [4080 x i8], ptr %126, i64 0, i64 0
  %128 = load ptr, ptr %14, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.linkedlist_datablock_internal_s, ptr %128, i32 0, i32 2
  %130 = load i64, ptr %129, align 8, !tbaa !31
  %131 = call i64 %116(ptr noundef %121, ptr noundef %124, ptr noundef %127, i64 noundef %130)
  store i64 %131, ptr %12, align 8, !tbaa !11
  %132 = load i64, ptr %12, align 8, !tbaa !11
  %133 = load ptr, ptr %14, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.linkedlist_datablock_internal_s, ptr %133, i32 0, i32 2
  %135 = load i64, ptr %134, align 8, !tbaa !31
  %136 = icmp ne i64 %132, %135
  br i1 %136, label %137, label %138

137:                                              ; preds = %111
  store i32 -1, ptr %7, align 4, !tbaa !9
  br label %138

138:                                              ; preds = %137, %111
  br label %139

139:                                              ; preds = %138, %106, %103
  %140 = load ptr, ptr %14, align 8, !tbaa !5
  %141 = getelementptr inbounds %struct.linkedlist_datablock_internal_s, ptr %140, i32 0, i32 2
  %142 = load i64, ptr %141, align 8, !tbaa !31
  %143 = load i64, ptr %8, align 8, !tbaa !11
  %144 = add i64 %143, %142
  store i64 %144, ptr %8, align 8, !tbaa !11
  %145 = load ptr, ptr %14, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.linkedlist_datablock_internal_s, ptr %145, i32 0, i32 0
  %147 = load ptr, ptr %146, align 8, !tbaa !34
  store ptr %147, ptr %14, align 8, !tbaa !5
  br label %100, !llvm.loop !35

148:                                              ; preds = %100
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  br label %149

149:                                              ; preds = %148, %86
  %150 = load ptr, ptr %6, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.zip64_internal, ptr %150, i32 0, i32 3
  call void @free_linkedlist(ptr noundef %151)
  %152 = load i64, ptr %10, align 8, !tbaa !13
  %153 = load ptr, ptr %6, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.zip64_internal, ptr %153, i32 0, i32 8
  %155 = load i64, ptr %154, align 8, !tbaa !37
  %156 = sub i64 %152, %155
  store i64 %156, ptr %11, align 8, !tbaa !13
  %157 = load i64, ptr %11, align 8, !tbaa !13
  %158 = icmp uge i64 %157, 4294967295
  br i1 %158, label %164, label %159

159:                                              ; preds = %149
  %160 = load ptr, ptr %6, align 8, !tbaa !5
  %161 = getelementptr inbounds %struct.zip64_internal, ptr %160, i32 0, i32 9
  %162 = load i64, ptr %161, align 8, !tbaa !38
  %163 = icmp ugt i64 %162, 65535
  br i1 %163, label %164, label %340

164:                                              ; preds = %159, %149
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  %165 = load ptr, ptr %6, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct.zip64_internal, ptr %165, i32 0, i32 0
  %167 = load ptr, ptr %6, align 8, !tbaa !5
  %168 = getelementptr inbounds %struct.zip64_internal, ptr %167, i32 0, i32 1
  %169 = load ptr, ptr %168, align 8, !tbaa !23
  %170 = call i64 @call_ztell64(ptr noundef %166, ptr noundef %169)
  store i64 %170, ptr %15, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  store i64 44, ptr %16, align 8, !tbaa !11
  %171 = load ptr, ptr %6, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.zip64_internal, ptr %171, i32 0, i32 0
  %173 = load ptr, ptr %6, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.zip64_internal, ptr %173, i32 0, i32 1
  %175 = load ptr, ptr %174, align 8, !tbaa !23
  %176 = call i32 @zip64local_putValue(ptr noundef %172, ptr noundef %175, i64 noundef 101075792, i32 noundef 4)
  store i32 %176, ptr %7, align 4, !tbaa !9
  %177 = load i32, ptr %7, align 4, !tbaa !9
  %178 = icmp eq i32 %177, 0
  br i1 %178, label %179, label %187

179:                                              ; preds = %164
  %180 = load ptr, ptr %6, align 8, !tbaa !5
  %181 = getelementptr inbounds %struct.zip64_internal, ptr %180, i32 0, i32 0
  %182 = load ptr, ptr %6, align 8, !tbaa !5
  %183 = getelementptr inbounds %struct.zip64_internal, ptr %182, i32 0, i32 1
  %184 = load ptr, ptr %183, align 8, !tbaa !23
  %185 = load i64, ptr %16, align 8, !tbaa !11
  %186 = call i32 @zip64local_putValue(ptr noundef %181, ptr noundef %184, i64 noundef %185, i32 noundef 8)
  store i32 %186, ptr %7, align 4, !tbaa !9
  br label %187

187:                                              ; preds = %179, %164
  %188 = load i32, ptr %7, align 4, !tbaa !9
  %189 = icmp eq i32 %188, 0
  br i1 %189, label %190, label %197

190:                                              ; preds = %187
  %191 = load ptr, ptr %6, align 8, !tbaa !5
  %192 = getelementptr inbounds %struct.zip64_internal, ptr %191, i32 0, i32 0
  %193 = load ptr, ptr %6, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.zip64_internal, ptr %193, i32 0, i32 1
  %195 = load ptr, ptr %194, align 8, !tbaa !23
  %196 = call i32 @zip64local_putValue(ptr noundef %192, ptr noundef %195, i64 noundef 45, i32 noundef 2)
  store i32 %196, ptr %7, align 4, !tbaa !9
  br label %197

197:                                              ; preds = %190, %187
  %198 = load i32, ptr %7, align 4, !tbaa !9
  %199 = icmp eq i32 %198, 0
  br i1 %199, label %200, label %207

200:                                              ; preds = %197
  %201 = load ptr, ptr %6, align 8, !tbaa !5
  %202 = getelementptr inbounds %struct.zip64_internal, ptr %201, i32 0, i32 0
  %203 = load ptr, ptr %6, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.zip64_internal, ptr %203, i32 0, i32 1
  %205 = load ptr, ptr %204, align 8, !tbaa !23
  %206 = call i32 @zip64local_putValue(ptr noundef %202, ptr noundef %205, i64 noundef 45, i32 noundef 2)
  store i32 %206, ptr %7, align 4, !tbaa !9
  br label %207

207:                                              ; preds = %200, %197
  %208 = load i32, ptr %7, align 4, !tbaa !9
  %209 = icmp eq i32 %208, 0
  br i1 %209, label %210, label %220

210:                                              ; preds = %207
  %211 = load ptr, ptr %6, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.zip64_internal, ptr %211, i32 0, i32 0
  %213 = load ptr, ptr %6, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.zip64_internal, ptr %213, i32 0, i32 1
  %215 = load ptr, ptr %214, align 8, !tbaa !23
  %216 = load ptr, ptr %6, align 8, !tbaa !5
  %217 = getelementptr inbounds %struct.zip64_internal, ptr %216, i32 0, i32 12
  %218 = load i64, ptr %217, align 8, !tbaa !29
  %219 = call i32 @zip64local_putValue(ptr noundef %212, ptr noundef %215, i64 noundef %218, i32 noundef 4)
  store i32 %219, ptr %7, align 4, !tbaa !9
  br label %220

220:                                              ; preds = %210, %207
  %221 = load i32, ptr %7, align 4, !tbaa !9
  %222 = icmp eq i32 %221, 0
  br i1 %222, label %223, label %233

223:                                              ; preds = %220
  %224 = load ptr, ptr %6, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.zip64_internal, ptr %224, i32 0, i32 0
  %226 = load ptr, ptr %6, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.zip64_internal, ptr %226, i32 0, i32 1
  %228 = load ptr, ptr %227, align 8, !tbaa !23
  %229 = load ptr, ptr %6, align 8, !tbaa !5
  %230 = getelementptr inbounds %struct.zip64_internal, ptr %229, i32 0, i32 12
  %231 = load i64, ptr %230, align 8, !tbaa !29
  %232 = call i32 @zip64local_putValue(ptr noundef %225, ptr noundef %228, i64 noundef %231, i32 noundef 4)
  store i32 %232, ptr %7, align 4, !tbaa !9
  br label %233

233:                                              ; preds = %223, %220
  %234 = load i32, ptr %7, align 4, !tbaa !9
  %235 = icmp eq i32 %234, 0
  br i1 %235, label %236, label %246

236:                                              ; preds = %233
  %237 = load ptr, ptr %6, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.zip64_internal, ptr %237, i32 0, i32 0
  %239 = load ptr, ptr %6, align 8, !tbaa !5
  %240 = getelementptr inbounds %struct.zip64_internal, ptr %239, i32 0, i32 1
  %241 = load ptr, ptr %240, align 8, !tbaa !23
  %242 = load ptr, ptr %6, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.zip64_internal, ptr %242, i32 0, i32 9
  %244 = load i64, ptr %243, align 8, !tbaa !38
  %245 = call i32 @zip64local_putValue(ptr noundef %238, ptr noundef %241, i64 noundef %244, i32 noundef 8)
  store i32 %245, ptr %7, align 4, !tbaa !9
  br label %246

246:                                              ; preds = %236, %233
  %247 = load i32, ptr %7, align 4, !tbaa !9
  %248 = icmp eq i32 %247, 0
  br i1 %248, label %249, label %259

249:                                              ; preds = %246
  %250 = load ptr, ptr %6, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.zip64_internal, ptr %250, i32 0, i32 0
  %252 = load ptr, ptr %6, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.zip64_internal, ptr %252, i32 0, i32 1
  %254 = load ptr, ptr %253, align 8, !tbaa !23
  %255 = load ptr, ptr %6, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.zip64_internal, ptr %255, i32 0, i32 9
  %257 = load i64, ptr %256, align 8, !tbaa !38
  %258 = call i32 @zip64local_putValue(ptr noundef %251, ptr noundef %254, i64 noundef %257, i32 noundef 8)
  store i32 %258, ptr %7, align 4, !tbaa !9
  br label %259

259:                                              ; preds = %249, %246
  %260 = load i32, ptr %7, align 4, !tbaa !9
  %261 = icmp eq i32 %260, 0
  br i1 %261, label %262, label %270

262:                                              ; preds = %259
  %263 = load ptr, ptr %6, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.zip64_internal, ptr %263, i32 0, i32 0
  %265 = load ptr, ptr %6, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.zip64_internal, ptr %265, i32 0, i32 1
  %267 = load ptr, ptr %266, align 8, !tbaa !23
  %268 = load i64, ptr %8, align 8, !tbaa !11
  %269 = call i32 @zip64local_putValue(ptr noundef %264, ptr noundef %267, i64 noundef %268, i32 noundef 8)
  store i32 %269, ptr %7, align 4, !tbaa !9
  br label %270

270:                                              ; preds = %262, %259
  %271 = load i32, ptr %7, align 4, !tbaa !9
  %272 = icmp eq i32 %271, 0
  br i1 %272, label %273, label %286

273:                                              ; preds = %270
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  %274 = load i64, ptr %10, align 8, !tbaa !13
  %275 = load ptr, ptr %6, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.zip64_internal, ptr %275, i32 0, i32 8
  %277 = load i64, ptr %276, align 8, !tbaa !37
  %278 = sub i64 %274, %277
  store i64 %278, ptr %17, align 8, !tbaa !13
  %279 = load ptr, ptr %6, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.zip64_internal, ptr %279, i32 0, i32 0
  %281 = load ptr, ptr %6, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.zip64_internal, ptr %281, i32 0, i32 1
  %283 = load ptr, ptr %282, align 8, !tbaa !23
  %284 = load i64, ptr %17, align 8, !tbaa !13
  %285 = call i32 @zip64local_putValue(ptr noundef %280, ptr noundef %283, i64 noundef %284, i32 noundef 8)
  store i32 %285, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  br label %286

286:                                              ; preds = %273, %270
  %287 = load i32, ptr %7, align 4, !tbaa !9
  %288 = icmp eq i32 %287, 0
  br i1 %288, label %289, label %296

289:                                              ; preds = %286
  %290 = load ptr, ptr %6, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.zip64_internal, ptr %290, i32 0, i32 0
  %292 = load ptr, ptr %6, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.zip64_internal, ptr %292, i32 0, i32 1
  %294 = load ptr, ptr %293, align 8, !tbaa !23
  %295 = call i32 @zip64local_putValue(ptr noundef %291, ptr noundef %294, i64 noundef 117853008, i32 noundef 4)
  store i32 %295, ptr %7, align 4, !tbaa !9
  br label %296

296:                                              ; preds = %289, %286
  %297 = load i32, ptr %7, align 4, !tbaa !9
  %298 = icmp eq i32 %297, 0
  br i1 %298, label %299, label %309

299:                                              ; preds = %296
  %300 = load ptr, ptr %6, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.zip64_internal, ptr %300, i32 0, i32 0
  %302 = load ptr, ptr %6, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.zip64_internal, ptr %302, i32 0, i32 1
  %304 = load ptr, ptr %303, align 8, !tbaa !23
  %305 = load ptr, ptr %6, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.zip64_internal, ptr %305, i32 0, i32 12
  %307 = load i64, ptr %306, align 8, !tbaa !29
  %308 = call i32 @zip64local_putValue(ptr noundef %301, ptr noundef %304, i64 noundef %307, i32 noundef 4)
  store i32 %308, ptr %7, align 4, !tbaa !9
  br label %309

309:                                              ; preds = %299, %296
  %310 = load i32, ptr %7, align 4, !tbaa !9
  %311 = icmp eq i32 %310, 0
  br i1 %311, label %312, label %325

312:                                              ; preds = %309
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  %313 = load i64, ptr %15, align 8, !tbaa !13
  %314 = load ptr, ptr %6, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.zip64_internal, ptr %314, i32 0, i32 8
  %316 = load i64, ptr %315, align 8, !tbaa !37
  %317 = sub i64 %313, %316
  store i64 %317, ptr %18, align 8, !tbaa !13
  %318 = load ptr, ptr %6, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.zip64_internal, ptr %318, i32 0, i32 0
  %320 = load ptr, ptr %6, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct.zip64_internal, ptr %320, i32 0, i32 1
  %322 = load ptr, ptr %321, align 8, !tbaa !23
  %323 = load i64, ptr %18, align 8, !tbaa !13
  %324 = call i32 @zip64local_putValue(ptr noundef %319, ptr noundef %322, i64 noundef %323, i32 noundef 8)
  store i32 %324, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  br label %325

325:                                              ; preds = %312, %309
  %326 = load i32, ptr %7, align 4, !tbaa !9
  %327 = icmp eq i32 %326, 0
  br i1 %327, label %328, label %339

328:                                              ; preds = %325
  %329 = load ptr, ptr %6, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.zip64_internal, ptr %329, i32 0, i32 0
  %331 = load ptr, ptr %6, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.zip64_internal, ptr %331, i32 0, i32 1
  %333 = load ptr, ptr %332, align 8, !tbaa !23
  %334 = load ptr, ptr %6, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.zip64_internal, ptr %334, i32 0, i32 12
  %336 = load i64, ptr %335, align 8, !tbaa !29
  %337 = add i64 %336, 1
  %338 = call i32 @zip64local_putValue(ptr noundef %330, ptr noundef %333, i64 noundef %337, i32 noundef 4)
  store i32 %338, ptr %7, align 4, !tbaa !9
  br label %339

339:                                              ; preds = %328, %325
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  br label %340

340:                                              ; preds = %339, %159
  %341 = load i32, ptr %7, align 4, !tbaa !9
  %342 = icmp eq i32 %341, 0
  br i1 %342, label %343, label %350

343:                                              ; preds = %340
  %344 = load ptr, ptr %6, align 8, !tbaa !5
  %345 = getelementptr inbounds %struct.zip64_internal, ptr %344, i32 0, i32 0
  %346 = load ptr, ptr %6, align 8, !tbaa !5
  %347 = getelementptr inbounds %struct.zip64_internal, ptr %346, i32 0, i32 1
  %348 = load ptr, ptr %347, align 8, !tbaa !23
  %349 = call i32 @zip64local_putValue(ptr noundef %345, ptr noundef %348, i64 noundef 101010256, i32 noundef 4)
  store i32 %349, ptr %7, align 4, !tbaa !9
  br label %350

350:                                              ; preds = %343, %340
  %351 = load i32, ptr %7, align 4, !tbaa !9
  %352 = icmp eq i32 %351, 0
  br i1 %352, label %353, label %363

353:                                              ; preds = %350
  %354 = load ptr, ptr %6, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.zip64_internal, ptr %354, i32 0, i32 0
  %356 = load ptr, ptr %6, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.zip64_internal, ptr %356, i32 0, i32 1
  %358 = load ptr, ptr %357, align 8, !tbaa !23
  %359 = load ptr, ptr %6, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.zip64_internal, ptr %359, i32 0, i32 12
  %361 = load i64, ptr %360, align 8, !tbaa !29
  %362 = call i32 @zip64local_putValue(ptr noundef %355, ptr noundef %358, i64 noundef %361, i32 noundef 2)
  store i32 %362, ptr %7, align 4, !tbaa !9
  br label %363

363:                                              ; preds = %353, %350
  %364 = load i32, ptr %7, align 4, !tbaa !9
  %365 = icmp eq i32 %364, 0
  br i1 %365, label %366, label %376

366:                                              ; preds = %363
  %367 = load ptr, ptr %6, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.zip64_internal, ptr %367, i32 0, i32 0
  %369 = load ptr, ptr %6, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.zip64_internal, ptr %369, i32 0, i32 1
  %371 = load ptr, ptr %370, align 8, !tbaa !23
  %372 = load ptr, ptr %6, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.zip64_internal, ptr %372, i32 0, i32 12
  %374 = load i64, ptr %373, align 8, !tbaa !29
  %375 = call i32 @zip64local_putValue(ptr noundef %368, ptr noundef %371, i64 noundef %374, i32 noundef 2)
  store i32 %375, ptr %7, align 4, !tbaa !9
  br label %376

376:                                              ; preds = %366, %363
  %377 = load i32, ptr %7, align 4, !tbaa !9
  %378 = icmp eq i32 %377, 0
  br i1 %378, label %379, label %402

379:                                              ; preds = %376
  %380 = load ptr, ptr %6, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.zip64_internal, ptr %380, i32 0, i32 9
  %382 = load i64, ptr %381, align 8, !tbaa !38
  %383 = icmp uge i64 %382, 65535
  br i1 %383, label %384, label %391

384:                                              ; preds = %379
  %385 = load ptr, ptr %6, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.zip64_internal, ptr %385, i32 0, i32 0
  %387 = load ptr, ptr %6, align 8, !tbaa !5
  %388 = getelementptr inbounds %struct.zip64_internal, ptr %387, i32 0, i32 1
  %389 = load ptr, ptr %388, align 8, !tbaa !23
  %390 = call i32 @zip64local_putValue(ptr noundef %386, ptr noundef %389, i64 noundef 65535, i32 noundef 2)
  store i32 %390, ptr %7, align 4, !tbaa !9
  br label %401

391:                                              ; preds = %379
  %392 = load ptr, ptr %6, align 8, !tbaa !5
  %393 = getelementptr inbounds %struct.zip64_internal, ptr %392, i32 0, i32 0
  %394 = load ptr, ptr %6, align 8, !tbaa !5
  %395 = getelementptr inbounds %struct.zip64_internal, ptr %394, i32 0, i32 1
  %396 = load ptr, ptr %395, align 8, !tbaa !23
  %397 = load ptr, ptr %6, align 8, !tbaa !5
  %398 = getelementptr inbounds %struct.zip64_internal, ptr %397, i32 0, i32 9
  %399 = load i64, ptr %398, align 8, !tbaa !38
  %400 = call i32 @zip64local_putValue(ptr noundef %393, ptr noundef %396, i64 noundef %399, i32 noundef 2)
  store i32 %400, ptr %7, align 4, !tbaa !9
  br label %401

401:                                              ; preds = %391, %384
  br label %402

402:                                              ; preds = %401, %376
  %403 = load i32, ptr %7, align 4, !tbaa !9
  %404 = icmp eq i32 %403, 0
  br i1 %404, label %405, label %428

405:                                              ; preds = %402
  %406 = load ptr, ptr %6, align 8, !tbaa !5
  %407 = getelementptr inbounds %struct.zip64_internal, ptr %406, i32 0, i32 9
  %408 = load i64, ptr %407, align 8, !tbaa !38
  %409 = icmp uge i64 %408, 65535
  br i1 %409, label %410, label %417

410:                                              ; preds = %405
  %411 = load ptr, ptr %6, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.zip64_internal, ptr %411, i32 0, i32 0
  %413 = load ptr, ptr %6, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.zip64_internal, ptr %413, i32 0, i32 1
  %415 = load ptr, ptr %414, align 8, !tbaa !23
  %416 = call i32 @zip64local_putValue(ptr noundef %412, ptr noundef %415, i64 noundef 65535, i32 noundef 2)
  store i32 %416, ptr %7, align 4, !tbaa !9
  br label %427

417:                                              ; preds = %405
  %418 = load ptr, ptr %6, align 8, !tbaa !5
  %419 = getelementptr inbounds %struct.zip64_internal, ptr %418, i32 0, i32 0
  %420 = load ptr, ptr %6, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.zip64_internal, ptr %420, i32 0, i32 1
  %422 = load ptr, ptr %421, align 8, !tbaa !23
  %423 = load ptr, ptr %6, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.zip64_internal, ptr %423, i32 0, i32 9
  %425 = load i64, ptr %424, align 8, !tbaa !38
  %426 = call i32 @zip64local_putValue(ptr noundef %419, ptr noundef %422, i64 noundef %425, i32 noundef 2)
  store i32 %426, ptr %7, align 4, !tbaa !9
  br label %427

427:                                              ; preds = %417, %410
  br label %428

428:                                              ; preds = %427, %402
  %429 = load i32, ptr %7, align 4, !tbaa !9
  %430 = icmp eq i32 %429, 0
  br i1 %430, label %431, label %439

431:                                              ; preds = %428
  %432 = load ptr, ptr %6, align 8, !tbaa !5
  %433 = getelementptr inbounds %struct.zip64_internal, ptr %432, i32 0, i32 0
  %434 = load ptr, ptr %6, align 8, !tbaa !5
  %435 = getelementptr inbounds %struct.zip64_internal, ptr %434, i32 0, i32 1
  %436 = load ptr, ptr %435, align 8, !tbaa !23
  %437 = load i64, ptr %8, align 8, !tbaa !11
  %438 = call i32 @zip64local_putValue(ptr noundef %433, ptr noundef %436, i64 noundef %437, i32 noundef 4)
  store i32 %438, ptr %7, align 4, !tbaa !9
  br label %439

439:                                              ; preds = %431, %428
  %440 = load i32, ptr %7, align 4, !tbaa !9
  %441 = icmp eq i32 %440, 0
  br i1 %441, label %442, label %466

442:                                              ; preds = %439
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  %443 = load i64, ptr %10, align 8, !tbaa !13
  %444 = load ptr, ptr %6, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.zip64_internal, ptr %444, i32 0, i32 8
  %446 = load i64, ptr %445, align 8, !tbaa !37
  %447 = sub i64 %443, %446
  store i64 %447, ptr %19, align 8, !tbaa !13
  %448 = load i64, ptr %19, align 8, !tbaa !13
  %449 = icmp uge i64 %448, 4294967295
  br i1 %449, label %450, label %457

450:                                              ; preds = %442
  %451 = load ptr, ptr %6, align 8, !tbaa !5
  %452 = getelementptr inbounds %struct.zip64_internal, ptr %451, i32 0, i32 0
  %453 = load ptr, ptr %6, align 8, !tbaa !5
  %454 = getelementptr inbounds %struct.zip64_internal, ptr %453, i32 0, i32 1
  %455 = load ptr, ptr %454, align 8, !tbaa !23
  %456 = call i32 @zip64local_putValue(ptr noundef %452, ptr noundef %455, i64 noundef 4294967295, i32 noundef 4)
  store i32 %456, ptr %7, align 4, !tbaa !9
  br label %465

457:                                              ; preds = %442
  %458 = load ptr, ptr %6, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.zip64_internal, ptr %458, i32 0, i32 0
  %460 = load ptr, ptr %6, align 8, !tbaa !5
  %461 = getelementptr inbounds %struct.zip64_internal, ptr %460, i32 0, i32 1
  %462 = load ptr, ptr %461, align 8, !tbaa !23
  %463 = load i64, ptr %19, align 8, !tbaa !13
  %464 = call i32 @zip64local_putValue(ptr noundef %459, ptr noundef %462, i64 noundef %463, i32 noundef 4)
  store i32 %464, ptr %7, align 4, !tbaa !9
  br label %465

465:                                              ; preds = %457, %450
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  br label %466

466:                                              ; preds = %465, %439
  %467 = load ptr, ptr %5, align 8, !tbaa !5
  %468 = icmp ne ptr %467, null
  br i1 %468, label %469, label %473

469:                                              ; preds = %466
  %470 = load ptr, ptr %5, align 8, !tbaa !5
  %471 = call i64 @strlen(ptr noundef %470) #6
  %472 = trunc i64 %471 to i32
  store i32 %472, ptr %9, align 4, !tbaa !9
  br label %473

473:                                              ; preds = %469, %466
  %474 = load i32, ptr %7, align 4, !tbaa !9
  %475 = icmp eq i32 %474, 0
  br i1 %475, label %476, label %485

476:                                              ; preds = %473
  %477 = load ptr, ptr %6, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.zip64_internal, ptr %477, i32 0, i32 0
  %479 = load ptr, ptr %6, align 8, !tbaa !5
  %480 = getelementptr inbounds %struct.zip64_internal, ptr %479, i32 0, i32 1
  %481 = load ptr, ptr %480, align 8, !tbaa !23
  %482 = load i32, ptr %9, align 4, !tbaa !9
  %483 = zext i32 %482 to i64
  %484 = call i32 @zip64local_putValue(ptr noundef %478, ptr noundef %481, i64 noundef %483, i32 noundef 2)
  store i32 %484, ptr %7, align 4, !tbaa !9
  br label %485

485:                                              ; preds = %476, %473
  %486 = load i32, ptr %7, align 4, !tbaa !9
  %487 = icmp eq i32 %486, 0
  br i1 %487, label %488, label %514

488:                                              ; preds = %485
  %489 = load i32, ptr %9, align 4, !tbaa !9
  %490 = icmp ugt i32 %489, 0
  br i1 %490, label %491, label %514

491:                                              ; preds = %488
  %492 = load ptr, ptr %6, align 8, !tbaa !5
  %493 = getelementptr inbounds %struct.zip64_internal, ptr %492, i32 0, i32 0
  %494 = getelementptr inbounds %struct.zlib_filefunc64_32_def_s, ptr %493, i32 0, i32 0
  %495 = getelementptr inbounds %struct.zlib_filefunc64_def_s, ptr %494, i32 0, i32 3
  %496 = load ptr, ptr %495, align 8, !tbaa !33
  %497 = load ptr, ptr %6, align 8, !tbaa !5
  %498 = getelementptr inbounds %struct.zip64_internal, ptr %497, i32 0, i32 0
  %499 = getelementptr inbounds %struct.zlib_filefunc64_32_def_s, ptr %498, i32 0, i32 0
  %500 = getelementptr inbounds %struct.zlib_filefunc64_def_s, ptr %499, i32 0, i32 8
  %501 = load ptr, ptr %500, align 8, !tbaa !26
  %502 = load ptr, ptr %6, align 8, !tbaa !5
  %503 = getelementptr inbounds %struct.zip64_internal, ptr %502, i32 0, i32 1
  %504 = load ptr, ptr %503, align 8, !tbaa !23
  %505 = load ptr, ptr %5, align 8, !tbaa !5
  %506 = load i32, ptr %9, align 4, !tbaa !9
  %507 = zext i32 %506 to i64
  %508 = call i64 %496(ptr noundef %501, ptr noundef %504, ptr noundef %505, i64 noundef %507)
  %509 = load i32, ptr %9, align 4, !tbaa !9
  %510 = zext i32 %509 to i64
  %511 = icmp ne i64 %508, %510
  br i1 %511, label %512, label %513

512:                                              ; preds = %491
  store i32 -1, ptr %7, align 4, !tbaa !9
  br label %513

513:                                              ; preds = %512, %491
  br label %514

514:                                              ; preds = %513, %488, %485
  %515 = load ptr, ptr %6, align 8, !tbaa !5
  %516 = getelementptr inbounds %struct.zip64_internal, ptr %515, i32 0, i32 0
  %517 = getelementptr inbounds %struct.zlib_filefunc64_32_def_s, ptr %516, i32 0, i32 0
  %518 = getelementptr inbounds %struct.zlib_filefunc64_def_s, ptr %517, i32 0, i32 6
  %519 = load ptr, ptr %518, align 8, !tbaa !25
  %520 = load ptr, ptr %6, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.zip64_internal, ptr %520, i32 0, i32 0
  %522 = getelementptr inbounds %struct.zlib_filefunc64_32_def_s, ptr %521, i32 0, i32 0
  %523 = getelementptr inbounds %struct.zlib_filefunc64_def_s, ptr %522, i32 0, i32 8
  %524 = load ptr, ptr %523, align 8, !tbaa !26
  %525 = load ptr, ptr %6, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.zip64_internal, ptr %525, i32 0, i32 1
  %527 = load ptr, ptr %526, align 8, !tbaa !23
  %528 = call i32 %519(ptr noundef %524, ptr noundef %527)
  %529 = icmp ne i32 %528, 0
  br i1 %529, label %530, label %534

530:                                              ; preds = %514
  %531 = load i32, ptr %7, align 4, !tbaa !9
  %532 = icmp eq i32 %531, 0
  br i1 %532, label %533, label %534

533:                                              ; preds = %530
  store i32 -1, ptr %7, align 4, !tbaa !9
  br label %534

534:                                              ; preds = %533, %530, %514
  %535 = load ptr, ptr %6, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.zip64_internal, ptr %535, i32 0, i32 13
  %537 = load ptr, ptr %536, align 8, !tbaa !22
  %538 = icmp ne ptr %537, null
  br i1 %538, label %539, label %543

539:                                              ; preds = %534
  %540 = load ptr, ptr %6, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.zip64_internal, ptr %540, i32 0, i32 13
  %542 = load ptr, ptr %541, align 8, !tbaa !22
  call void @free(ptr noundef %542) #5
  br label %543

543:                                              ; preds = %539, %534
  %544 = load ptr, ptr %6, align 8, !tbaa !5
  %545 = icmp ne ptr %544, null
  br i1 %545, label %546, label %548

546:                                              ; preds = %543
  %547 = load ptr, ptr %6, align 8, !tbaa !5
  call void @free(ptr noundef %547) #5
  br label %548

548:                                              ; preds = %546, %543
  %549 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %549, ptr %3, align 4
  store i32 1, ptr %13, align 4
  br label %550

550:                                              ; preds = %548, %22
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #5
  %551 = load i32, ptr %3, align 4
  ret i32 %551
}

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"long long", !7, i64 0}
!15 = !{!16, !10, i64 136}
!16 = !{!"", !17, i64 0, !6, i64 104, !6, i64 112, !19, i64 120, !10, i64 136, !10, i64 140, !20, i64 144, !14, i64 65968, !14, i64 65976, !14, i64 65984, !14, i64 65992, !12, i64 66000, !12, i64 66008, !6, i64 66016}
!17 = !{!"zlib_filefunc64_32_def_s", !18, i64 0, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96}
!18 = !{!"zlib_filefunc64_def_s", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64}
!19 = !{!"linkedlist_data_s", !6, i64 0, !6, i64 8}
!20 = !{!"", !21, i64 0, !10, i64 112, !10, i64 116, !14, i64 120, !6, i64 128, !12, i64 136, !12, i64 144, !12, i64 152, !12, i64 160, !12, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !7, i64 188, !12, i64 65728, !12, i64 65736, !10, i64 65744, !12, i64 65752, !14, i64 65760, !14, i64 65768, !14, i64 65776, !7, i64 65784, !6, i64 65808, !10, i64 65816}
!21 = !{!"z_stream_s", !6, i64 0, !10, i64 8, !12, i64 16, !6, i64 24, !10, i64 32, !12, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !10, i64 88, !12, i64 96, !12, i64 104}
!22 = !{!16, !6, i64 66016}
!23 = !{!16, !6, i64 104}
!24 = !{!16, !6, i64 112}
!25 = !{!16, !6, i64 48}
!26 = !{!16, !6, i64 64}
!27 = !{!16, !14, i64 65992}
!28 = !{!16, !12, i64 66000}
!29 = !{!16, !12, i64 66008}
!30 = !{!16, !6, i64 120}
!31 = !{!32, !12, i64 16}
!32 = !{!"linkedlist_datablock_internal_s", !6, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !7, i64 32}
!33 = !{!16, !6, i64 24}
!34 = !{!32, !6, i64 0}
!35 = distinct !{!35, !36}
!36 = !{!"llvm.loop.mustprogress"}
!37 = !{!16, !14, i64 65976}
!38 = !{!16, !14, i64 65984}


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

declare i64 @call_ztell64(ptr noundef, ptr noundef) local_unnamed_addr #0

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @zipCloseFileInZip(ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @zipClose(ptr noundef %0, ptr noundef %1) local_unnamed_addr #2 {
  %3 = icmp eq ptr %0, null
  br i1 %3, label %203, label %4

4:                                                ; preds = %2
  %5 = getelementptr inbounds i8, ptr %0, i64 136
  %6 = load i32, ptr %5, align 8, !tbaa !5
  %7 = icmp eq i32 %6, 1
  br i1 %7, label %8, label %10

8:                                                ; preds = %4
  %9 = tail call i32 @zipCloseFileInZip(ptr noundef nonnull %0)
  br label %10

10:                                               ; preds = %8, %4
  %.0162 = phi i32 [ %9, %8 ], [ 0, %4 ]
  %11 = icmp eq ptr %1, null
  br i1 %11, label %12, label %15

12:                                               ; preds = %10
  %13 = getelementptr inbounds i8, ptr %0, i64 66016
  %14 = load ptr, ptr %13, align 8, !tbaa !18
  br label %15

15:                                               ; preds = %12, %10
  %.0161 = phi ptr [ %14, %12 ], [ %1, %10 ]
  %16 = getelementptr inbounds i8, ptr %0, i64 104
  %17 = load ptr, ptr %16, align 8, !tbaa !19
  %18 = getelementptr inbounds i8, ptr %0, i64 112
  %19 = load ptr, ptr %18, align 8, !tbaa !20
  %.not = icmp eq ptr %17, %19
  br i1 %.not, label %36, label %20

20:                                               ; preds = %15
  %21 = getelementptr inbounds i8, ptr %0, i64 48
  %22 = load ptr, ptr %21, align 8, !tbaa !21
  %23 = getelementptr inbounds i8, ptr %0, i64 64
  %24 = load ptr, ptr %23, align 8, !tbaa !22
  %25 = tail call i32 %22(ptr noundef %24, ptr noundef %17) #5
  %.not176 = icmp eq i32 %25, 0
  %26 = icmp eq i32 %.0162, 0
  %spec.store.select = select i1 %26, i32 -1, i32 %.0162
  %.1 = select i1 %.not176, i32 %.0162, i32 %spec.store.select
  %27 = getelementptr inbounds i8, ptr %0, i64 65992
  %28 = load i64, ptr %27, align 8, !tbaa !23
  %.not177 = icmp eq i64 %28, 0
  br i1 %.not177, label %34, label %29

29:                                               ; preds = %20
  %30 = getelementptr inbounds i8, ptr %0, i64 66000
  %31 = load i64, ptr %30, align 8, !tbaa !24
  %32 = add i64 %31, 1
  %33 = getelementptr inbounds i8, ptr %0, i64 66008
  store i64 %32, ptr %33, align 8, !tbaa !25
  br label %34

34:                                               ; preds = %29, %20
  %35 = load ptr, ptr %18, align 8, !tbaa !20
  store ptr %35, ptr %16, align 8, !tbaa !19
  br label %36

36:                                               ; preds = %34, %15
  %37 = phi ptr [ %35, %34 ], [ %17, %15 ]
  %.2 = phi i32 [ %.1, %34 ], [ %.0162, %15 ]
  %38 = tail call i64 @call_ztell64(ptr noundef nonnull %0, ptr noundef %37) #5
  %39 = icmp eq i32 %.2, 0
  br i1 %39, label %40, label %.loopexit

40:                                               ; preds = %36
  %41 = getelementptr inbounds i8, ptr %0, i64 120
  %.0166242 = load ptr, ptr %41, align 8, !tbaa !26
  %.not178243 = icmp eq ptr %.0166242, null
  br i1 %.not178243, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %40
  %42 = getelementptr inbounds i8, ptr %0, i64 24
  %43 = getelementptr inbounds i8, ptr %0, i64 64
  br label %44

44:                                               ; preds = %.lr.ph, %._crit_edge
  %.0166246 = phi ptr [ %.0166242, %.lr.ph ], [ %.0166, %._crit_edge ]
  %.3245 = phi i32 [ 0, %.lr.ph ], [ %.4, %._crit_edge ]
  %.0163244 = phi i64 [ 0, %.lr.ph ], [ %57, %._crit_edge ]
  %45 = icmp eq i32 %.3245, 0
  %46 = getelementptr inbounds i8, ptr %.0166246, i64 16
  %47 = load i64, ptr %46, align 8, !tbaa !27
  br i1 %45, label %48, label %._crit_edge

48:                                               ; preds = %44
  %.not182 = icmp eq i64 %47, 0
  br i1 %.not182, label %._crit_edge, label %49

49:                                               ; preds = %48
  %50 = load ptr, ptr %42, align 8, !tbaa !29
  %51 = load ptr, ptr %43, align 8, !tbaa !22
  %52 = load ptr, ptr %16, align 8, !tbaa !19
  %53 = getelementptr inbounds i8, ptr %.0166246, i64 32
  %54 = tail call i64 %50(ptr noundef %51, ptr noundef %52, ptr noundef nonnull %53, i64 noundef %47) #5
  %55 = load i64, ptr %46, align 8, !tbaa !27
  %.not183 = icmp ne i64 %54, %55
  %spec.select = sext i1 %.not183 to i32
  br label %._crit_edge

._crit_edge:                                      ; preds = %44, %49, %48
  %56 = phi i64 [ 0, %48 ], [ %55, %49 ], [ %47, %44 ]
  %.4 = phi i32 [ 0, %48 ], [ %spec.select, %49 ], [ -1, %44 ]
  %57 = add i64 %56, %.0163244
  %.0166 = load ptr, ptr %.0166246, align 8, !tbaa !26
  %.not178 = icmp eq ptr %.0166, null
  br i1 %.not178, label %.loopexit, label %44, !llvm.loop !30

.loopexit:                                        ; preds = %._crit_edge, %40, %36
  %.1164 = phi i64 [ 0, %36 ], [ 0, %40 ], [ %57, %._crit_edge ]
  %.5 = phi i32 [ %.2, %36 ], [ 0, %40 ], [ %.4, %._crit_edge ]
  %58 = getelementptr inbounds i8, ptr %0, i64 120
  tail call void @free_linkedlist(ptr noundef nonnull %58)
  %59 = getelementptr inbounds i8, ptr %0, i64 65976
  %60 = load i64, ptr %59, align 8, !tbaa !32
  %61 = sub i64 %38, %60
  %62 = icmp ugt i64 %61, 4294967294
  br i1 %62, label %67, label %63

63:                                               ; preds = %.loopexit
  %64 = getelementptr inbounds i8, ptr %0, i64 65984
  %65 = load i64, ptr %64, align 8, !tbaa !33
  %66 = icmp ugt i64 %65, 65535
  br i1 %66, label %67, label %137

67:                                               ; preds = %63, %.loopexit
  %68 = load ptr, ptr %16, align 8, !tbaa !19
  %69 = tail call i64 @call_ztell64(ptr noundef nonnull %0, ptr noundef %68) #5
  %70 = load ptr, ptr %16, align 8, !tbaa !19
  %71 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %70, i64 noundef 101075792, i32 noundef 4)
  %72 = icmp eq i32 %71, 0
  br i1 %72, label %73, label %.thread237

73:                                               ; preds = %67
  %74 = load ptr, ptr %16, align 8, !tbaa !19
  %75 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %74, i64 noundef 44, i32 noundef 8)
  %76 = icmp eq i32 %75, 0
  br i1 %76, label %77, label %.thread237

77:                                               ; preds = %73
  %78 = load ptr, ptr %16, align 8, !tbaa !19
  %79 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %78, i64 noundef 45, i32 noundef 2)
  %80 = icmp eq i32 %79, 0
  br i1 %80, label %81, label %.thread237

81:                                               ; preds = %77
  %82 = load ptr, ptr %16, align 8, !tbaa !19
  %83 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %82, i64 noundef 45, i32 noundef 2)
  %84 = icmp eq i32 %83, 0
  br i1 %84, label %85, label %.thread237

85:                                               ; preds = %81
  %86 = load ptr, ptr %16, align 8, !tbaa !19
  %87 = getelementptr inbounds i8, ptr %0, i64 66008
  %88 = load i64, ptr %87, align 8, !tbaa !25
  %89 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %86, i64 noundef %88, i32 noundef 4)
  %90 = icmp eq i32 %89, 0
  br i1 %90, label %91, label %.thread237

91:                                               ; preds = %85
  %92 = load ptr, ptr %16, align 8, !tbaa !19
  %93 = load i64, ptr %87, align 8, !tbaa !25
  %94 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %92, i64 noundef %93, i32 noundef 4)
  %95 = icmp eq i32 %94, 0
  br i1 %95, label %96, label %.thread237

96:                                               ; preds = %91
  %97 = load ptr, ptr %16, align 8, !tbaa !19
  %98 = getelementptr inbounds i8, ptr %0, i64 65984
  %99 = load i64, ptr %98, align 8, !tbaa !33
  %100 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %97, i64 noundef %99, i32 noundef 8)
  %101 = icmp eq i32 %100, 0
  br i1 %101, label %102, label %.thread237

102:                                              ; preds = %96
  %103 = load ptr, ptr %16, align 8, !tbaa !19
  %104 = load i64, ptr %98, align 8, !tbaa !33
  %105 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %103, i64 noundef %104, i32 noundef 8)
  %106 = icmp eq i32 %105, 0
  br i1 %106, label %107, label %.thread237

107:                                              ; preds = %102
  %108 = load ptr, ptr %16, align 8, !tbaa !19
  %109 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %108, i64 noundef %.1164, i32 noundef 8)
  %110 = icmp eq i32 %109, 0
  br i1 %110, label %111, label %.thread237

111:                                              ; preds = %107
  %112 = load i64, ptr %59, align 8, !tbaa !32
  %113 = sub i64 %38, %112
  %114 = load ptr, ptr %16, align 8, !tbaa !19
  %115 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %114, i64 noundef %113, i32 noundef 8)
  %116 = icmp eq i32 %115, 0
  br i1 %116, label %117, label %.thread237

117:                                              ; preds = %111
  %118 = load ptr, ptr %16, align 8, !tbaa !19
  %119 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %118, i64 noundef 117853008, i32 noundef 4)
  %120 = icmp eq i32 %119, 0
  br i1 %120, label %121, label %.thread237

121:                                              ; preds = %117
  %122 = load ptr, ptr %16, align 8, !tbaa !19
  %123 = load i64, ptr %87, align 8, !tbaa !25
  %124 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %122, i64 noundef %123, i32 noundef 4)
  %125 = icmp eq i32 %124, 0
  br i1 %125, label %126, label %.thread237

126:                                              ; preds = %121
  %127 = load i64, ptr %59, align 8, !tbaa !32
  %128 = sub i64 %69, %127
  %129 = load ptr, ptr %16, align 8, !tbaa !19
  %130 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %129, i64 noundef %128, i32 noundef 8)
  %131 = icmp eq i32 %130, 0
  br i1 %131, label %132, label %.thread237

132:                                              ; preds = %126
  %133 = load ptr, ptr %16, align 8, !tbaa !19
  %134 = load i64, ptr %87, align 8, !tbaa !25
  %135 = add i64 %134, 1
  %136 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %133, i64 noundef %135, i32 noundef 4)
  br label %137

137:                                              ; preds = %132, %63
  %.19 = phi i32 [ %.5, %63 ], [ %136, %132 ]
  %138 = icmp eq i32 %.19, 0
  br i1 %138, label %139, label %.thread237

139:                                              ; preds = %137
  %140 = load ptr, ptr %16, align 8, !tbaa !19
  %141 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %140, i64 noundef 101010256, i32 noundef 4)
  %142 = icmp eq i32 %141, 0
  br i1 %142, label %143, label %.thread237

143:                                              ; preds = %139
  %144 = load ptr, ptr %16, align 8, !tbaa !19
  %145 = getelementptr inbounds i8, ptr %0, i64 66008
  %146 = load i64, ptr %145, align 8, !tbaa !25
  %147 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %144, i64 noundef %146, i32 noundef 2)
  %148 = icmp eq i32 %147, 0
  br i1 %148, label %149, label %.thread237

149:                                              ; preds = %143
  %150 = load ptr, ptr %16, align 8, !tbaa !19
  %151 = load i64, ptr %145, align 8, !tbaa !25
  %152 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %150, i64 noundef %151, i32 noundef 2)
  %153 = icmp eq i32 %152, 0
  br i1 %153, label %154, label %.thread237

154:                                              ; preds = %149
  %155 = getelementptr inbounds i8, ptr %0, i64 65984
  %156 = load i64, ptr %155, align 8, !tbaa !33
  %157 = load ptr, ptr %16, align 8, !tbaa !19
  %. = tail call i64 @llvm.umin.i64(i64 %156, i64 65535)
  %158 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %157, i64 noundef %., i32 noundef 2)
  %159 = icmp eq i32 %158, 0
  br i1 %159, label %160, label %.thread237

160:                                              ; preds = %154
  %161 = load i64, ptr %155, align 8, !tbaa !33
  %162 = load ptr, ptr %16, align 8, !tbaa !19
  %.250 = tail call i64 @llvm.umin.i64(i64 %161, i64 65535)
  %163 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %162, i64 noundef %.250, i32 noundef 2)
  %164 = icmp eq i32 %163, 0
  br i1 %164, label %165, label %.thread237

165:                                              ; preds = %160
  %166 = load ptr, ptr %16, align 8, !tbaa !19
  %167 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %166, i64 noundef %.1164, i32 noundef 4)
  %168 = icmp eq i32 %167, 0
  br i1 %168, label %.thread237.sink.split, label %.thread237

.thread237.sink.split:                            ; preds = %165
  %169 = load i64, ptr %59, align 8, !tbaa !32
  %170 = sub i64 %38, %169
  %171 = load ptr, ptr %16, align 8, !tbaa !19
  %.251 = tail call i64 @llvm.umin.i64(i64 %170, i64 4294967295)
  %172 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %171, i64 noundef %.251, i32 noundef 4)
  br label %.thread237

.thread237:                                       ; preds = %.thread237.sink.split, %67, %73, %77, %81, %85, %91, %96, %102, %107, %111, %117, %121, %126, %137, %139, %143, %149, %154, %160, %165
  %.27 = phi i32 [ %167, %165 ], [ %163, %160 ], [ %158, %154 ], [ %152, %149 ], [ %147, %143 ], [ %141, %139 ], [ %.19, %137 ], [ %130, %126 ], [ %124, %121 ], [ %119, %117 ], [ %115, %111 ], [ %109, %107 ], [ %105, %102 ], [ %100, %96 ], [ %94, %91 ], [ %89, %85 ], [ %83, %81 ], [ %79, %77 ], [ %75, %73 ], [ %71, %67 ], [ %172, %.thread237.sink.split ]
  %.not179 = icmp eq ptr %.0161, null
  br i1 %.not179, label %176, label %173

173:                                              ; preds = %.thread237
  %174 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0161) #6
  %175 = trunc i64 %174 to i32
  br label %176

176:                                              ; preds = %173, %.thread237
  %.0165 = phi i32 [ %175, %173 ], [ 0, %.thread237 ]
  %177 = icmp eq i32 %.27, 0
  br i1 %177, label %178, label %.thread239

178:                                              ; preds = %176
  %179 = load ptr, ptr %16, align 8, !tbaa !19
  %180 = zext i32 %.0165 to i64
  %181 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %179, i64 noundef %180, i32 noundef 2)
  %182 = icmp eq i32 %181, 0
  %183 = icmp ne i32 %.0165, 0
  %or.cond = select i1 %182, i1 %183, i1 false
  br i1 %or.cond, label %184, label %.thread239

184:                                              ; preds = %178
  %185 = getelementptr inbounds i8, ptr %0, i64 24
  %186 = load ptr, ptr %185, align 8, !tbaa !29
  %187 = getelementptr inbounds i8, ptr %0, i64 64
  %188 = load ptr, ptr %187, align 8, !tbaa !22
  %189 = load ptr, ptr %16, align 8, !tbaa !19
  %190 = tail call i64 %186(ptr noundef %188, ptr noundef %189, ptr noundef %.0161, i64 noundef %180) #5
  %.not180 = icmp ne i64 %190, %180
  %spec.select184 = sext i1 %.not180 to i32
  br label %.thread239

.thread239:                                       ; preds = %176, %184, %178
  %.29 = phi i32 [ %181, %178 ], [ %spec.select184, %184 ], [ %.27, %176 ]
  %191 = getelementptr inbounds i8, ptr %0, i64 48
  %192 = load ptr, ptr %191, align 8, !tbaa !21
  %193 = getelementptr inbounds i8, ptr %0, i64 64
  %194 = load ptr, ptr %193, align 8, !tbaa !22
  %195 = load ptr, ptr %16, align 8, !tbaa !19
  %196 = tail call i32 %192(ptr noundef %194, ptr noundef %195) #5
  %197 = icmp ne i32 %196, 0
  %198 = icmp eq i32 %.29, 0
  %or.cond3 = and i1 %198, %197
  %spec.store.select4 = select i1 %or.cond3, i32 -1, i32 %.29
  %199 = getelementptr inbounds i8, ptr %0, i64 66016
  %200 = load ptr, ptr %199, align 8, !tbaa !18
  %.not181 = icmp eq ptr %200, null
  br i1 %.not181, label %202, label %201

201:                                              ; preds = %.thread239
  tail call void @free(ptr noundef nonnull %200) #5
  br label %202

202:                                              ; preds = %.thread239, %201
  tail call void @free(ptr noundef nonnull %0) #5
  br label %203

203:                                              ; preds = %2, %202
  %.0 = phi i32 [ %spec.store.select4, %202 ], [ -102, %2 ]
  ret i32 %.0
}

; Function Attrs: nounwind uwtable
declare hidden void @free_linkedlist(ptr noundef) local_unnamed_addr #2

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

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

!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, !13, i64 136}
!6 = !{!"", !7, i64 0, !9, i64 104, !9, i64 112, !12, i64 120, !13, i64 136, !13, i64 140, !14, i64 144, !17, i64 65968, !17, i64 65976, !17, i64 65984, !17, i64 65992, !16, i64 66000, !16, i64 66008, !9, i64 66016}
!7 = !{!"zlib_filefunc64_32_def_s", !8, i64 0, !9, i64 72, !9, i64 80, !9, i64 88, !9, i64 96}
!8 = !{!"zlib_filefunc64_def_s", !9, i64 0, !9, i64 8, !9, i64 16, !9, i64 24, !9, i64 32, !9, i64 40, !9, i64 48, !9, i64 56, !9, i64 64}
!9 = !{!"any pointer", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C/C++ TBAA"}
!12 = !{!"linkedlist_data_s", !9, i64 0, !9, i64 8}
!13 = !{!"int", !10, i64 0}
!14 = !{!"", !15, i64 0, !13, i64 112, !13, i64 116, !17, i64 120, !9, i64 128, !16, i64 136, !16, i64 144, !16, i64 152, !16, i64 160, !16, i64 168, !13, i64 176, !13, i64 180, !13, i64 184, !10, i64 188, !16, i64 65728, !16, i64 65736, !13, i64 65744, !16, i64 65752, !17, i64 65760, !17, i64 65768, !17, i64 65776, !10, i64 65784, !9, i64 65808, !13, i64 65816}
!15 = !{!"z_stream_s", !9, i64 0, !13, i64 8, !16, i64 16, !9, i64 24, !13, i64 32, !16, i64 40, !9, i64 48, !9, i64 56, !9, i64 64, !9, i64 72, !9, i64 80, !13, i64 88, !16, i64 96, !16, i64 104}
!16 = !{!"long", !10, i64 0}
!17 = !{!"long long", !10, i64 0}
!18 = !{!6, !9, i64 66016}
!19 = !{!6, !9, i64 104}
!20 = !{!6, !9, i64 112}
!21 = !{!6, !9, i64 48}
!22 = !{!6, !9, i64 64}
!23 = !{!6, !17, i64 65992}
!24 = !{!6, !16, i64 66000}
!25 = !{!6, !16, i64 66008}
!26 = !{!9, !9, i64 0}
!27 = !{!28, !16, i64 16}
!28 = !{!"linkedlist_datablock_internal_s", !9, i64 0, !16, i64 8, !16, i64 16, !16, i64 24, !10, i64 32}
!29 = !{!6, !9, i64 24}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}
!32 = !{!6, !17, i64 65976}
!33 = !{!6, !17, i64 65984}


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