; LLVM IR from cornell-zhang/rosetta :: BNN/cpp/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 i32], 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 @zipClose2_64(ptr noundef %0, ptr noundef %1, i64 noundef %2) #3 {
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i64, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i64, align 8
  %11 = alloca i32, align 4
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store i64 %2, ptr %7, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #5
  store i32 0, ptr %9, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  store i64 0, ptr %10, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  store i32 0, ptr %11, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  store i64 0, ptr %13, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  store i64 0, ptr %14, align 8, !tbaa !9
  %22 = load ptr, ptr %5, align 8, !tbaa !5
  %23 = icmp eq ptr %22, null
  br i1 %23, label %24, label %25

24:                                               ; preds = %3
  store i32 -102, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %553

25:                                               ; preds = %3
  %26 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %26, ptr %8, align 8, !tbaa !5
  %27 = load ptr, ptr %8, align 8, !tbaa !5
  %28 = getelementptr inbounds %struct.zip64_internal, ptr %27, i32 0, i32 4
  %29 = load i32, ptr %28, align 8, !tbaa !15
  %30 = icmp eq i32 %29, 1
  br i1 %30, label %31, label %34

31:                                               ; preds = %25
  %32 = load ptr, ptr %5, align 8, !tbaa !5
  %33 = call i32 @zipCloseFileInZip(ptr noundef %32)
  store i32 %33, ptr %9, align 4, !tbaa !11
  br label %34

34:                                               ; preds = %31, %25
  %35 = load ptr, ptr %6, align 8, !tbaa !5
  %36 = icmp eq ptr %35, null
  br i1 %36, label %37, label %41

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

41:                                               ; preds = %37, %34
  %42 = load ptr, ptr %8, align 8, !tbaa !5
  %43 = getelementptr inbounds %struct.zip64_internal, ptr %42, i32 0, i32 1
  %44 = load ptr, ptr %43, align 8, !tbaa !23
  %45 = load ptr, ptr %8, align 8, !tbaa !5
  %46 = getelementptr inbounds %struct.zip64_internal, ptr %45, i32 0, i32 2
  %47 = load ptr, ptr %46, align 8, !tbaa !24
  %48 = icmp ne ptr %44, %47
  br i1 %48, label %49, label %88

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

65:                                               ; preds = %49
  %66 = load i32, ptr %9, align 4, !tbaa !11
  %67 = icmp eq i32 %66, 0
  br i1 %67, label %68, label %69

68:                                               ; preds = %65
  store i32 -1, ptr %9, align 4, !tbaa !11
  br label %69

69:                                               ; preds = %68, %65
  br label %70

70:                                               ; preds = %69, %49
  %71 = load ptr, ptr %8, align 8, !tbaa !5
  %72 = getelementptr inbounds %struct.zip64_internal, ptr %71, i32 0, i32 10
  %73 = load i64, ptr %72, align 8, !tbaa !27
  %74 = icmp ugt i64 %73, 0
  br i1 %74, label %75, label %82

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

82:                                               ; preds = %75, %70
  %83 = load ptr, ptr %8, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.zip64_internal, ptr %83, i32 0, i32 2
  %85 = load ptr, ptr %84, align 8, !tbaa !24
  %86 = load ptr, ptr %8, align 8, !tbaa !5
  %87 = getelementptr inbounds %struct.zip64_internal, ptr %86, i32 0, i32 1
  store ptr %85, ptr %87, align 8, !tbaa !23
  br label %88

88:                                               ; preds = %82, %41
  %89 = load ptr, ptr %8, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.zip64_internal, ptr %89, i32 0, i32 0
  %91 = load ptr, ptr %8, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct.zip64_internal, ptr %91, i32 0, i32 1
  %93 = load ptr, ptr %92, align 8, !tbaa !23
  %94 = call i64 @call_ztell64(ptr noundef %90, ptr noundef %93)
  store i64 %94, ptr %12, align 8, !tbaa !13
  %95 = load i32, ptr %9, align 4, !tbaa !11
  %96 = icmp eq i32 %95, 0
  br i1 %96, label %97, label %151

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

102:                                              ; preds = %141, %97
  %103 = load ptr, ptr %16, align 8, !tbaa !5
  %104 = icmp ne ptr %103, null
  br i1 %104, label %105, label %150

105:                                              ; preds = %102
  %106 = load i32, ptr %9, align 4, !tbaa !11
  %107 = icmp eq i32 %106, 0
  br i1 %107, label %108, label %141

108:                                              ; preds = %105
  %109 = load ptr, ptr %16, align 8, !tbaa !5
  %110 = getelementptr inbounds %struct.linkedlist_datablock_internal_s, ptr %109, i32 0, i32 2
  %111 = load i64, ptr %110, align 8, !tbaa !31
  %112 = icmp ugt i64 %111, 0
  br i1 %112, label %113, label %141

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

139:                                              ; preds = %113
  store i32 -1, ptr %9, align 4, !tbaa !11
  br label %140

140:                                              ; preds = %139, %113
  br label %141

141:                                              ; preds = %140, %108, %105
  %142 = load ptr, ptr %16, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.linkedlist_datablock_internal_s, ptr %142, i32 0, i32 2
  %144 = load i64, ptr %143, align 8, !tbaa !31
  %145 = load i64, ptr %10, align 8, !tbaa !9
  %146 = add i64 %145, %144
  store i64 %146, ptr %10, align 8, !tbaa !9
  %147 = load ptr, ptr %16, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.linkedlist_datablock_internal_s, ptr %147, i32 0, i32 0
  %149 = load ptr, ptr %148, align 8, !tbaa !34
  store ptr %149, ptr %16, align 8, !tbaa !5
  br label %102, !llvm.loop !35

150:                                              ; preds = %102
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  br label %151

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

161:                                              ; preds = %151
  %162 = load ptr, ptr %8, align 8, !tbaa !5
  %163 = getelementptr inbounds %struct.zip64_internal, ptr %162, i32 0, i32 9
  %164 = load i64, ptr %163, align 8, !tbaa !38
  %165 = icmp ugt i64 %164, 65535
  br i1 %165, label %166, label %343

166:                                              ; preds = %161, %151
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  %167 = load ptr, ptr %8, align 8, !tbaa !5
  %168 = getelementptr inbounds %struct.zip64_internal, ptr %167, i32 0, i32 0
  %169 = load ptr, ptr %8, align 8, !tbaa !5
  %170 = getelementptr inbounds %struct.zip64_internal, ptr %169, i32 0, i32 1
  %171 = load ptr, ptr %170, align 8, !tbaa !23
  %172 = call i64 @call_ztell64(ptr noundef %168, ptr noundef %171)
  store i64 %172, ptr %17, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  store i64 44, ptr %18, align 8, !tbaa !9
  %173 = load ptr, ptr %8, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.zip64_internal, ptr %173, i32 0, i32 0
  %175 = load ptr, ptr %8, align 8, !tbaa !5
  %176 = getelementptr inbounds %struct.zip64_internal, ptr %175, i32 0, i32 1
  %177 = load ptr, ptr %176, align 8, !tbaa !23
  %178 = call i32 @zip64local_putValue(ptr noundef %174, ptr noundef %177, i64 noundef 101075792, i32 noundef 4)
  store i32 %178, ptr %9, align 4, !tbaa !11
  %179 = load i32, ptr %9, align 4, !tbaa !11
  %180 = icmp eq i32 %179, 0
  br i1 %180, label %181, label %189

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

189:                                              ; preds = %181, %166
  %190 = load i32, ptr %9, align 4, !tbaa !11
  %191 = icmp eq i32 %190, 0
  br i1 %191, label %192, label %200

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

200:                                              ; preds = %192, %189
  %201 = load i32, ptr %9, align 4, !tbaa !11
  %202 = icmp eq i32 %201, 0
  br i1 %202, label %203, label %210

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

210:                                              ; preds = %203, %200
  %211 = load i32, ptr %9, align 4, !tbaa !11
  %212 = icmp eq i32 %211, 0
  br i1 %212, label %213, label %223

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

223:                                              ; preds = %213, %210
  %224 = load i32, ptr %9, align 4, !tbaa !11
  %225 = icmp eq i32 %224, 0
  br i1 %225, label %226, label %236

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

236:                                              ; preds = %226, %223
  %237 = load i32, ptr %9, align 4, !tbaa !11
  %238 = icmp eq i32 %237, 0
  br i1 %238, label %239, label %249

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

249:                                              ; preds = %239, %236
  %250 = load i32, ptr %9, align 4, !tbaa !11
  %251 = icmp eq i32 %250, 0
  br i1 %251, label %252, label %262

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

262:                                              ; preds = %252, %249
  %263 = load i32, ptr %9, align 4, !tbaa !11
  %264 = icmp eq i32 %263, 0
  br i1 %264, label %265, label %273

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

273:                                              ; preds = %265, %262
  %274 = load i32, ptr %9, align 4, !tbaa !11
  %275 = icmp eq i32 %274, 0
  br i1 %275, label %276, label %289

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

289:                                              ; preds = %276, %273
  %290 = load i32, ptr %9, align 4, !tbaa !11
  %291 = icmp eq i32 %290, 0
  br i1 %291, label %292, label %299

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

299:                                              ; preds = %292, %289
  %300 = load i32, ptr %9, align 4, !tbaa !11
  %301 = icmp eq i32 %300, 0
  br i1 %301, label %302, label %312

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

312:                                              ; preds = %302, %299
  %313 = load i32, ptr %9, align 4, !tbaa !11
  %314 = icmp eq i32 %313, 0
  br i1 %314, label %315, label %328

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

328:                                              ; preds = %315, %312
  %329 = load i32, ptr %9, align 4, !tbaa !11
  %330 = icmp eq i32 %329, 0
  br i1 %330, label %331, label %342

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

342:                                              ; preds = %331, %328
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  br label %343

343:                                              ; preds = %342, %161
  %344 = load i32, ptr %9, align 4, !tbaa !11
  %345 = icmp eq i32 %344, 0
  br i1 %345, label %346, label %353

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

353:                                              ; preds = %346, %343
  %354 = load i32, ptr %9, align 4, !tbaa !11
  %355 = icmp eq i32 %354, 0
  br i1 %355, label %356, label %366

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

366:                                              ; preds = %356, %353
  %367 = load i32, ptr %9, align 4, !tbaa !11
  %368 = icmp eq i32 %367, 0
  br i1 %368, label %369, label %379

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

379:                                              ; preds = %369, %366
  %380 = load i32, ptr %9, align 4, !tbaa !11
  %381 = icmp eq i32 %380, 0
  br i1 %381, label %382, label %405

382:                                              ; preds = %379
  %383 = load ptr, ptr %8, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.zip64_internal, ptr %383, i32 0, i32 9
  %385 = load i64, ptr %384, align 8, !tbaa !38
  %386 = icmp uge i64 %385, 65535
  br i1 %386, label %387, label %394

387:                                              ; preds = %382
  %388 = load ptr, ptr %8, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.zip64_internal, ptr %388, i32 0, i32 0
  %390 = load ptr, ptr %8, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.zip64_internal, ptr %390, i32 0, i32 1
  %392 = load ptr, ptr %391, align 8, !tbaa !23
  %393 = call i32 @zip64local_putValue(ptr noundef %389, ptr noundef %392, i64 noundef 65535, i32 noundef 2)
  store i32 %393, ptr %9, align 4, !tbaa !11
  br label %404

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

404:                                              ; preds = %394, %387
  br label %405

405:                                              ; preds = %404, %379
  %406 = load i32, ptr %9, align 4, !tbaa !11
  %407 = icmp eq i32 %406, 0
  br i1 %407, label %408, label %431

408:                                              ; preds = %405
  %409 = load ptr, ptr %8, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct.zip64_internal, ptr %409, i32 0, i32 9
  %411 = load i64, ptr %410, align 8, !tbaa !38
  %412 = icmp uge i64 %411, 65535
  br i1 %412, label %413, label %420

413:                                              ; preds = %408
  %414 = load ptr, ptr %8, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.zip64_internal, ptr %414, i32 0, i32 0
  %416 = load ptr, ptr %8, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.zip64_internal, ptr %416, i32 0, i32 1
  %418 = load ptr, ptr %417, align 8, !tbaa !23
  %419 = call i32 @zip64local_putValue(ptr noundef %415, ptr noundef %418, i64 noundef 65535, i32 noundef 2)
  store i32 %419, ptr %9, align 4, !tbaa !11
  br label %430

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

430:                                              ; preds = %420, %413
  br label %431

431:                                              ; preds = %430, %405
  %432 = load i32, ptr %9, align 4, !tbaa !11
  %433 = icmp eq i32 %432, 0
  br i1 %433, label %434, label %442

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

442:                                              ; preds = %434, %431
  %443 = load i32, ptr %9, align 4, !tbaa !11
  %444 = icmp eq i32 %443, 0
  br i1 %444, label %445, label %469

445:                                              ; preds = %442
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #5
  %446 = load i64, ptr %12, align 8, !tbaa !13
  %447 = load ptr, ptr %8, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.zip64_internal, ptr %447, i32 0, i32 8
  %449 = load i64, ptr %448, align 8, !tbaa !37
  %450 = sub i64 %446, %449
  store i64 %450, ptr %21, align 8, !tbaa !13
  %451 = load i64, ptr %21, align 8, !tbaa !13
  %452 = icmp uge i64 %451, 4294967295
  br i1 %452, label %453, label %460

453:                                              ; preds = %445
  %454 = load ptr, ptr %8, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.zip64_internal, ptr %454, i32 0, i32 0
  %456 = load ptr, ptr %8, align 8, !tbaa !5
  %457 = getelementptr inbounds %struct.zip64_internal, ptr %456, i32 0, i32 1
  %458 = load ptr, ptr %457, align 8, !tbaa !23
  %459 = call i32 @zip64local_putValue(ptr noundef %455, ptr noundef %458, i64 noundef 4294967295, i32 noundef 4)
  store i32 %459, ptr %9, align 4, !tbaa !11
  br label %468

460:                                              ; preds = %445
  %461 = load ptr, ptr %8, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.zip64_internal, ptr %461, i32 0, i32 0
  %463 = load ptr, ptr %8, align 8, !tbaa !5
  %464 = getelementptr inbounds %struct.zip64_internal, ptr %463, i32 0, i32 1
  %465 = load ptr, ptr %464, align 8, !tbaa !23
  %466 = load i64, ptr %21, align 8, !tbaa !13
  %467 = call i32 @zip64local_putValue(ptr noundef %462, ptr noundef %465, i64 noundef %466, i32 noundef 4)
  store i32 %467, ptr %9, align 4, !tbaa !11
  br label %468

468:                                              ; preds = %460, %453
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  br label %469

469:                                              ; preds = %468, %442
  %470 = load ptr, ptr %6, align 8, !tbaa !5
  %471 = icmp ne ptr %470, null
  br i1 %471, label %472, label %476

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

476:                                              ; preds = %472, %469
  %477 = load i32, ptr %9, align 4, !tbaa !11
  %478 = icmp eq i32 %477, 0
  br i1 %478, label %479, label %488

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

488:                                              ; preds = %479, %476
  %489 = load i32, ptr %9, align 4, !tbaa !11
  %490 = icmp eq i32 %489, 0
  br i1 %490, label %491, label %517

491:                                              ; preds = %488
  %492 = load i32, ptr %11, align 4, !tbaa !11
  %493 = icmp ugt i32 %492, 0
  br i1 %493, label %494, label %517

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

515:                                              ; preds = %494
  store i32 -1, ptr %9, align 4, !tbaa !11
  br label %516

516:                                              ; preds = %515, %494
  br label %517

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

533:                                              ; preds = %517
  %534 = load i32, ptr %9, align 4, !tbaa !11
  %535 = icmp eq i32 %534, 0
  br i1 %535, label %536, label %537

536:                                              ; preds = %533
  store i32 -1, ptr %9, align 4, !tbaa !11
  br label %537

537:                                              ; preds = %536, %533, %517
  %538 = load ptr, ptr %8, align 8, !tbaa !5
  %539 = getelementptr inbounds %struct.zip64_internal, ptr %538, i32 0, i32 13
  %540 = load ptr, ptr %539, align 8, !tbaa !22
  %541 = icmp ne ptr %540, null
  br i1 %541, label %542, label %546

542:                                              ; preds = %537
  %543 = load ptr, ptr %8, align 8, !tbaa !5
  %544 = getelementptr inbounds %struct.zip64_internal, ptr %543, i32 0, i32 13
  %545 = load ptr, ptr %544, align 8, !tbaa !22
  call void @free(ptr noundef %545) #5
  br label %546

546:                                              ; preds = %542, %537
  %547 = load ptr, ptr %8, align 8, !tbaa !5
  %548 = icmp ne ptr %547, null
  br i1 %548, label %549, label %551

549:                                              ; preds = %546
  %550 = load ptr, ptr %8, align 8, !tbaa !5
  call void @free(ptr noundef %550) #5
  br label %551

551:                                              ; preds = %549, %546
  %552 = load i32, ptr %9, align 4, !tbaa !11
  store i32 %552, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %553

553:                                              ; preds = %551, %24
  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 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
  %554 = load i32, ptr %4, align 4
  ret i32 %554
}

; 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 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"long long", !7, i64 0}
!15 = !{!16, !12, i64 136}
!16 = !{!"", !17, i64 0, !6, i64 104, !6, i64 112, !19, i64 120, !12, i64 136, !12, i64 140, !20, i64 144, !14, i64 65960, !14, i64 65968, !14, i64 65976, !14, i64 65984, !10, i64 65992, !10, i64 66000, !6, i64 66008}
!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, !12, i64 112, !12, i64 116, !14, i64 120, !6, i64 128, !10, i64 136, !10, i64 144, !10, i64 152, !10, i64 160, !10, i64 168, !12, i64 176, !12, i64 180, !12, i64 184, !7, i64 188, !10, i64 65728, !10, i64 65736, !12, i64 65744, !10, i64 65752, !14, i64 65760, !14, i64 65768, !14, i64 65776, !7, i64 65784, !6, i64 65800, !12, i64 65808}
!21 = !{!"z_stream_s", !6, i64 0, !12, i64 8, !10, i64 16, !6, i64 24, !12, i64 32, !10, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !12, i64 88, !10, i64 96, !10, i64 104}
!22 = !{!16, !6, i64 66008}
!23 = !{!16, !6, i64 104}
!24 = !{!16, !6, i64 112}
!25 = !{!16, !6, i64 48}
!26 = !{!16, !6, i64 64}
!27 = !{!16, !14, i64 65984}
!28 = !{!16, !10, i64 65992}
!29 = !{!16, !10, i64 66000}
!30 = !{!16, !6, i64 120}
!31 = !{!32, !10, i64 16}
!32 = !{!"linkedlist_datablock_internal_s", !6, i64 0, !10, i64 8, !10, i64 16, !10, 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 65968}
!38 = !{!16, !14, i64 65976}


; 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 @zipClose2_64(ptr noundef %0, ptr noundef %1, i64 noundef %2) local_unnamed_addr #2 {
  %4 = icmp eq ptr %0, null
  br i1 %4, label %204, label %5

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

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

11:                                               ; preds = %9, %5
  %.0163 = phi i32 [ %10, %9 ], [ 0, %5 ]
  %12 = icmp eq ptr %1, null
  br i1 %12, label %13, label %16

13:                                               ; preds = %11
  %14 = getelementptr inbounds i8, ptr %0, i64 66008
  %15 = load ptr, ptr %14, align 8, !tbaa !18
  br label %16

16:                                               ; preds = %13, %11
  %.0162 = phi ptr [ %15, %13 ], [ %1, %11 ]
  %17 = getelementptr inbounds i8, ptr %0, i64 104
  %18 = load ptr, ptr %17, align 8, !tbaa !19
  %19 = getelementptr inbounds i8, ptr %0, i64 112
  %20 = load ptr, ptr %19, align 8, !tbaa !20
  %.not = icmp eq ptr %18, %20
  br i1 %.not, label %37, label %21

21:                                               ; preds = %16
  %22 = getelementptr inbounds i8, ptr %0, i64 48
  %23 = load ptr, ptr %22, align 8, !tbaa !21
  %24 = getelementptr inbounds i8, ptr %0, i64 64
  %25 = load ptr, ptr %24, align 8, !tbaa !22
  %26 = tail call i32 %23(ptr noundef %25, ptr noundef %18) #5
  %.not177 = icmp eq i32 %26, 0
  %27 = icmp eq i32 %.0163, 0
  %spec.store.select = select i1 %27, i32 -1, i32 %.0163
  %.1 = select i1 %.not177, i32 %.0163, i32 %spec.store.select
  %28 = getelementptr inbounds i8, ptr %0, i64 65984
  %29 = load i64, ptr %28, align 8, !tbaa !23
  %.not178 = icmp eq i64 %29, 0
  br i1 %.not178, label %35, label %30

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

35:                                               ; preds = %30, %21
  %36 = load ptr, ptr %19, align 8, !tbaa !20
  store ptr %36, ptr %17, align 8, !tbaa !19
  br label %37

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

41:                                               ; preds = %37
  %42 = getelementptr inbounds i8, ptr %0, i64 120
  %.0167243 = load ptr, ptr %42, align 8, !tbaa !26
  %.not179244 = icmp eq ptr %.0167243, null
  br i1 %.not179244, label %.loopexit, label %.lr.ph

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

45:                                               ; preds = %.lr.ph, %._crit_edge
  %.0167247 = phi ptr [ %.0167243, %.lr.ph ], [ %.0167, %._crit_edge ]
  %.3246 = phi i32 [ 0, %.lr.ph ], [ %.4, %._crit_edge ]
  %.0164245 = phi i64 [ 0, %.lr.ph ], [ %58, %._crit_edge ]
  %46 = icmp eq i32 %.3246, 0
  %47 = getelementptr inbounds i8, ptr %.0167247, i64 16
  %48 = load i64, ptr %47, align 8, !tbaa !27
  br i1 %46, label %49, label %._crit_edge

49:                                               ; preds = %45
  %.not183 = icmp eq i64 %48, 0
  br i1 %.not183, label %._crit_edge, label %50

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

._crit_edge:                                      ; preds = %45, %50, %49
  %57 = phi i64 [ 0, %49 ], [ %56, %50 ], [ %48, %45 ]
  %.4 = phi i32 [ 0, %49 ], [ %spec.select, %50 ], [ -1, %45 ]
  %58 = add i64 %57, %.0164245
  %.0167 = load ptr, ptr %.0167247, align 8, !tbaa !26
  %.not179 = icmp eq ptr %.0167, null
  br i1 %.not179, label %.loopexit, label %45, !llvm.loop !30

.loopexit:                                        ; preds = %._crit_edge, %41, %37
  %.1165 = phi i64 [ 0, %37 ], [ 0, %41 ], [ %58, %._crit_edge ]
  %.5 = phi i32 [ %.2, %37 ], [ 0, %41 ], [ %.4, %._crit_edge ]
  %59 = getelementptr inbounds i8, ptr %0, i64 120
  tail call void @free_linkedlist(ptr noundef nonnull %59)
  %60 = getelementptr inbounds i8, ptr %0, i64 65968
  %61 = load i64, ptr %60, align 8, !tbaa !32
  %62 = sub i64 %39, %61
  %63 = icmp ugt i64 %62, 4294967294
  br i1 %63, label %68, label %64

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

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

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

78:                                               ; preds = %74
  %79 = load ptr, ptr %17, align 8, !tbaa !19
  %80 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %79, i64 noundef %2, i32 noundef 2)
  %81 = icmp eq i32 %80, 0
  br i1 %81, label %82, label %.thread238

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

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

92:                                               ; preds = %86
  %93 = load ptr, ptr %17, align 8, !tbaa !19
  %94 = load i64, ptr %88, align 8, !tbaa !25
  %95 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %93, i64 noundef %94, i32 noundef 4)
  %96 = icmp eq i32 %95, 0
  br i1 %96, label %97, label %.thread238

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

103:                                              ; preds = %97
  %104 = load ptr, ptr %17, align 8, !tbaa !19
  %105 = load i64, ptr %99, align 8, !tbaa !33
  %106 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %104, i64 noundef %105, i32 noundef 8)
  %107 = icmp eq i32 %106, 0
  br i1 %107, label %108, label %.thread238

108:                                              ; preds = %103
  %109 = load ptr, ptr %17, align 8, !tbaa !19
  %110 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %109, i64 noundef %.1165, i32 noundef 8)
  %111 = icmp eq i32 %110, 0
  br i1 %111, label %112, label %.thread238

112:                                              ; preds = %108
  %113 = load i64, ptr %60, align 8, !tbaa !32
  %114 = sub i64 %39, %113
  %115 = load ptr, ptr %17, align 8, !tbaa !19
  %116 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %115, i64 noundef %114, i32 noundef 8)
  %117 = icmp eq i32 %116, 0
  br i1 %117, label %118, label %.thread238

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

122:                                              ; preds = %118
  %123 = load ptr, ptr %17, align 8, !tbaa !19
  %124 = load i64, ptr %88, align 8, !tbaa !25
  %125 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %123, i64 noundef %124, i32 noundef 4)
  %126 = icmp eq i32 %125, 0
  br i1 %126, label %127, label %.thread238

127:                                              ; preds = %122
  %128 = load i64, ptr %60, align 8, !tbaa !32
  %129 = sub i64 %70, %128
  %130 = load ptr, ptr %17, align 8, !tbaa !19
  %131 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %130, i64 noundef %129, i32 noundef 8)
  %132 = icmp eq i32 %131, 0
  br i1 %132, label %133, label %.thread238

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

138:                                              ; preds = %133, %64
  %.19 = phi i32 [ %.5, %64 ], [ %137, %133 ]
  %139 = icmp eq i32 %.19, 0
  br i1 %139, label %140, label %.thread238

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

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

150:                                              ; preds = %144
  %151 = load ptr, ptr %17, align 8, !tbaa !19
  %152 = load i64, ptr %146, align 8, !tbaa !25
  %153 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %151, i64 noundef %152, i32 noundef 2)
  %154 = icmp eq i32 %153, 0
  br i1 %154, label %155, label %.thread238

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

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

166:                                              ; preds = %161
  %167 = load ptr, ptr %17, align 8, !tbaa !19
  %168 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %167, i64 noundef %.1165, i32 noundef 4)
  %169 = icmp eq i32 %168, 0
  br i1 %169, label %.thread238.sink.split, label %.thread238

.thread238.sink.split:                            ; preds = %166
  %170 = load i64, ptr %60, align 8, !tbaa !32
  %171 = sub i64 %39, %170
  %172 = load ptr, ptr %17, align 8, !tbaa !19
  %.252 = tail call i64 @llvm.umin.i64(i64 %171, i64 4294967295)
  %173 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %172, i64 noundef %.252, i32 noundef 4)
  br label %.thread238

.thread238:                                       ; preds = %.thread238.sink.split, %68, %74, %78, %82, %86, %92, %97, %103, %108, %112, %118, %122, %127, %138, %140, %144, %150, %155, %161, %166
  %.27 = phi i32 [ %168, %166 ], [ %164, %161 ], [ %159, %155 ], [ %153, %150 ], [ %148, %144 ], [ %142, %140 ], [ %.19, %138 ], [ %131, %127 ], [ %125, %122 ], [ %120, %118 ], [ %116, %112 ], [ %110, %108 ], [ %106, %103 ], [ %101, %97 ], [ %95, %92 ], [ %90, %86 ], [ %84, %82 ], [ %80, %78 ], [ %76, %74 ], [ %72, %68 ], [ %173, %.thread238.sink.split ]
  %.not180 = icmp eq ptr %.0162, null
  br i1 %.not180, label %177, label %174

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

177:                                              ; preds = %174, %.thread238
  %.0166 = phi i32 [ %176, %174 ], [ 0, %.thread238 ]
  %178 = icmp eq i32 %.27, 0
  br i1 %178, label %179, label %.thread240

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

185:                                              ; preds = %179
  %186 = getelementptr inbounds i8, ptr %0, i64 24
  %187 = load ptr, ptr %186, align 8, !tbaa !29
  %188 = getelementptr inbounds i8, ptr %0, i64 64
  %189 = load ptr, ptr %188, align 8, !tbaa !22
  %190 = load ptr, ptr %17, align 8, !tbaa !19
  %191 = tail call i64 %187(ptr noundef %189, ptr noundef %190, ptr noundef %.0162, i64 noundef %181) #5
  %.not181 = icmp ne i64 %191, %181
  %spec.select185 = sext i1 %.not181 to i32
  br label %.thread240

.thread240:                                       ; preds = %177, %185, %179
  %.29 = phi i32 [ %182, %179 ], [ %spec.select185, %185 ], [ %.27, %177 ]
  %192 = getelementptr inbounds i8, ptr %0, i64 48
  %193 = load ptr, ptr %192, align 8, !tbaa !21
  %194 = getelementptr inbounds i8, ptr %0, i64 64
  %195 = load ptr, ptr %194, align 8, !tbaa !22
  %196 = load ptr, ptr %17, align 8, !tbaa !19
  %197 = tail call i32 %193(ptr noundef %195, ptr noundef %196) #5
  %198 = icmp ne i32 %197, 0
  %199 = icmp eq i32 %.29, 0
  %or.cond3 = and i1 %199, %198
  %spec.store.select4 = select i1 %or.cond3, i32 -1, i32 %.29
  %200 = getelementptr inbounds i8, ptr %0, i64 66008
  %201 = load ptr, ptr %200, align 8, !tbaa !18
  %.not182 = icmp eq ptr %201, null
  br i1 %.not182, label %203, label %202

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

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

204:                                              ; preds = %3, %203
  %.0 = phi i32 [ %spec.store.select4, %203 ], [ -102, %3 ]
  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 65960, !17, i64 65968, !17, i64 65976, !17, i64 65984, !16, i64 65992, !16, i64 66000, !9, i64 66008}
!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 65800, !13, i64 65808}
!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 66008}
!19 = !{!6, !9, i64 104}
!20 = !{!6, !9, i64 112}
!21 = !{!6, !9, i64 48}
!22 = !{!6, !9, i64 64}
!23 = !{!6, !17, i64 65984}
!24 = !{!6, !16, i64 65992}
!25 = !{!6, !16, i64 66000}
!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 65968}
!33 = !{!6, !17, i64 65976}


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