; LLVM IR from wmcnamara/crynn :: lib/thirdparty/assimp/contrib/zlib/contrib/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, %struct.linkedlist_data_s, i32, %struct.curfile64_info, i64, i64, i64, ptr }
%struct.zlib_filefunc64_32_def_s = type { %struct.zlib_filefunc64_def_s, ptr, ptr, ptr }
%struct.zlib_filefunc64_def_s = type { 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, i32, i32, [65536 x i8], i64, i64, i32, i32, 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 }

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

declare i64 @call_zseek64(ptr noundef, ptr noundef, i64 noundef, i32 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 uwtable
declare hidden i32 @add_data_in_datablock(ptr noundef, ptr noundef, i64 noundef) #2

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

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

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

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

; Function Attrs: nounwind uwtable
declare hidden i32 @zip64FlushWriteBuffer(ptr noundef) #2

declare i32 @deflate(ptr noundef, i32 noundef) #1

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

20:                                               ; preds = %3
  store i32 -102, ptr %4, align 4
  store i32 1, ptr %13, align 4
  br label %532

21:                                               ; preds = %3
  %22 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %22, ptr %8, align 8, !tbaa !5
  %23 = load ptr, ptr %8, align 8, !tbaa !5
  %24 = getelementptr inbounds %struct.zip64_internal, ptr %23, i32 0, i32 3
  %25 = load i32, ptr %24, align 8, !tbaa !17
  %26 = icmp eq i32 %25, 0
  br i1 %26, label %27, label %28

27:                                               ; preds = %21
  store i32 -102, ptr %4, align 4
  store i32 1, ptr %13, align 4
  br label %532

28:                                               ; preds = %21
  %29 = load ptr, ptr %8, align 8, !tbaa !5
  %30 = getelementptr inbounds %struct.zip64_internal, ptr %29, i32 0, i32 4
  %31 = getelementptr inbounds %struct.curfile64_info, ptr %30, i32 0, i32 0
  %32 = getelementptr inbounds %struct.z_stream_s, ptr %31, i32 0, i32 1
  store i32 0, ptr %32, align 8, !tbaa !24
  %33 = load ptr, ptr %8, align 8, !tbaa !5
  %34 = getelementptr inbounds %struct.zip64_internal, ptr %33, i32 0, i32 4
  %35 = getelementptr inbounds %struct.curfile64_info, ptr %34, i32 0, i32 9
  %36 = load i32, ptr %35, align 8, !tbaa !25
  %37 = icmp eq i32 %36, 8
  br i1 %37, label %38, label %97

38:                                               ; preds = %28
  %39 = load ptr, ptr %8, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.zip64_internal, ptr %39, i32 0, i32 4
  %41 = getelementptr inbounds %struct.curfile64_info, ptr %40, i32 0, i32 10
  %42 = load i32, ptr %41, align 4, !tbaa !26
  %43 = icmp ne i32 %42, 0
  br i1 %43, label %97, label %44

44:                                               ; preds = %38
  br label %45

45:                                               ; preds = %73, %44
  %46 = load i32, ptr %12, align 4, !tbaa !15
  %47 = icmp eq i32 %46, 0
  br i1 %47, label %48, label %96

48:                                               ; preds = %45
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #4
  %49 = load ptr, ptr %8, align 8, !tbaa !5
  %50 = getelementptr inbounds %struct.zip64_internal, ptr %49, i32 0, i32 4
  %51 = getelementptr inbounds %struct.curfile64_info, ptr %50, i32 0, i32 0
  %52 = getelementptr inbounds %struct.z_stream_s, ptr %51, i32 0, i32 4
  %53 = load i32, ptr %52, align 8, !tbaa !27
  %54 = icmp eq i32 %53, 0
  br i1 %54, label %55, label %73

55:                                               ; preds = %48
  %56 = load ptr, ptr %8, align 8, !tbaa !5
  %57 = call i32 @zip64FlushWriteBuffer(ptr noundef %56)
  %58 = icmp eq i32 %57, -1
  br i1 %58, label %59, label %60

59:                                               ; preds = %55
  store i32 -1, ptr %12, align 4, !tbaa !15
  br label %60

60:                                               ; preds = %59, %55
  %61 = load ptr, ptr %8, align 8, !tbaa !5
  %62 = getelementptr inbounds %struct.zip64_internal, ptr %61, i32 0, i32 4
  %63 = getelementptr inbounds %struct.curfile64_info, ptr %62, i32 0, i32 0
  %64 = getelementptr inbounds %struct.z_stream_s, ptr %63, i32 0, i32 4
  store i32 65536, ptr %64, align 8, !tbaa !27
  %65 = load ptr, ptr %8, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.zip64_internal, ptr %65, i32 0, i32 4
  %67 = getelementptr inbounds %struct.curfile64_info, ptr %66, i32 0, i32 11
  %68 = getelementptr inbounds [65536 x i8], ptr %67, i64 0, i64 0
  %69 = load ptr, ptr %8, align 8, !tbaa !5
  %70 = getelementptr inbounds %struct.zip64_internal, ptr %69, i32 0, i32 4
  %71 = getelementptr inbounds %struct.curfile64_info, ptr %70, i32 0, i32 0
  %72 = getelementptr inbounds %struct.z_stream_s, ptr %71, i32 0, i32 3
  store ptr %68, ptr %72, align 8, !tbaa !28
  br label %73

73:                                               ; preds = %60, %48
  %74 = load ptr, ptr %8, align 8, !tbaa !5
  %75 = getelementptr inbounds %struct.zip64_internal, ptr %74, i32 0, i32 4
  %76 = getelementptr inbounds %struct.curfile64_info, ptr %75, i32 0, i32 0
  %77 = getelementptr inbounds %struct.z_stream_s, ptr %76, i32 0, i32 5
  %78 = load i64, ptr %77, align 8, !tbaa !29
  store i64 %78, ptr %14, align 8, !tbaa !11
  %79 = load ptr, ptr %8, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct.zip64_internal, ptr %79, i32 0, i32 4
  %81 = getelementptr inbounds %struct.curfile64_info, ptr %80, i32 0, i32 0
  %82 = call i32 @deflate(ptr noundef %81, i32 noundef 4)
  store i32 %82, ptr %12, align 4, !tbaa !15
  %83 = load ptr, ptr %8, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.zip64_internal, ptr %83, i32 0, i32 4
  %85 = getelementptr inbounds %struct.curfile64_info, ptr %84, i32 0, i32 0
  %86 = getelementptr inbounds %struct.z_stream_s, ptr %85, i32 0, i32 5
  %87 = load i64, ptr %86, align 8, !tbaa !29
  %88 = load i64, ptr %14, align 8, !tbaa !11
  %89 = sub i64 %87, %88
  %90 = trunc i64 %89 to i32
  %91 = load ptr, ptr %8, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct.zip64_internal, ptr %91, i32 0, i32 4
  %93 = getelementptr inbounds %struct.curfile64_info, ptr %92, i32 0, i32 2
  %94 = load i32, ptr %93, align 4, !tbaa !30
  %95 = add i32 %94, %90
  store i32 %95, ptr %93, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  br label %45, !llvm.loop !31

96:                                               ; preds = %45
  br label %111

97:                                               ; preds = %38, %28
  %98 = load ptr, ptr %8, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct.zip64_internal, ptr %98, i32 0, i32 4
  %100 = getelementptr inbounds %struct.curfile64_info, ptr %99, i32 0, i32 9
  %101 = load i32, ptr %100, align 8, !tbaa !25
  %102 = icmp eq i32 %101, 12
  br i1 %102, label %103, label %110

103:                                              ; preds = %97
  %104 = load ptr, ptr %8, align 8, !tbaa !5
  %105 = getelementptr inbounds %struct.zip64_internal, ptr %104, i32 0, i32 4
  %106 = getelementptr inbounds %struct.curfile64_info, ptr %105, i32 0, i32 10
  %107 = load i32, ptr %106, align 4, !tbaa !26
  %108 = icmp ne i32 %107, 0
  br i1 %108, label %110, label %109

109:                                              ; preds = %103
  br label %110

110:                                              ; preds = %109, %103, %97
  br label %111

111:                                              ; preds = %110, %96
  %112 = load i32, ptr %12, align 4, !tbaa !15
  %113 = icmp eq i32 %112, 1
  br i1 %113, label %114, label %115

114:                                              ; preds = %111
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %115

115:                                              ; preds = %114, %111
  %116 = load ptr, ptr %8, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.zip64_internal, ptr %116, i32 0, i32 4
  %118 = getelementptr inbounds %struct.curfile64_info, ptr %117, i32 0, i32 2
  %119 = load i32, ptr %118, align 4, !tbaa !30
  %120 = icmp ugt i32 %119, 0
  br i1 %120, label %121, label %130

121:                                              ; preds = %115
  %122 = load i32, ptr %12, align 4, !tbaa !15
  %123 = icmp eq i32 %122, 0
  br i1 %123, label %124, label %130

124:                                              ; preds = %121
  %125 = load ptr, ptr %8, align 8, !tbaa !5
  %126 = call i32 @zip64FlushWriteBuffer(ptr noundef %125)
  %127 = icmp eq i32 %126, -1
  br i1 %127, label %128, label %129

128:                                              ; preds = %124
  store i32 -1, ptr %12, align 4, !tbaa !15
  br label %129

129:                                              ; preds = %128, %124
  br label %130

130:                                              ; preds = %129, %121, %115
  %131 = load ptr, ptr %8, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.zip64_internal, ptr %131, i32 0, i32 4
  %133 = getelementptr inbounds %struct.curfile64_info, ptr %132, i32 0, i32 9
  %134 = load i32, ptr %133, align 8, !tbaa !25
  %135 = icmp eq i32 %134, 8
  br i1 %135, label %136, label %155

136:                                              ; preds = %130
  %137 = load ptr, ptr %8, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.zip64_internal, ptr %137, i32 0, i32 4
  %139 = getelementptr inbounds %struct.curfile64_info, ptr %138, i32 0, i32 10
  %140 = load i32, ptr %139, align 4, !tbaa !26
  %141 = icmp ne i32 %140, 0
  br i1 %141, label %155, label %142

142:                                              ; preds = %136
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  %143 = load ptr, ptr %8, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.zip64_internal, ptr %143, i32 0, i32 4
  %145 = getelementptr inbounds %struct.curfile64_info, ptr %144, i32 0, i32 0
  %146 = call i32 @deflateEnd(ptr noundef %145)
  store i32 %146, ptr %15, align 4, !tbaa !15
  %147 = load i32, ptr %12, align 4, !tbaa !15
  %148 = icmp eq i32 %147, 0
  br i1 %148, label %149, label %151

149:                                              ; preds = %142
  %150 = load i32, ptr %15, align 4, !tbaa !15
  store i32 %150, ptr %12, align 4, !tbaa !15
  br label %151

151:                                              ; preds = %149, %142
  %152 = load ptr, ptr %8, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.zip64_internal, ptr %152, i32 0, i32 4
  %154 = getelementptr inbounds %struct.curfile64_info, ptr %153, i32 0, i32 1
  store i32 0, ptr %154, align 8, !tbaa !33
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  br label %155

155:                                              ; preds = %151, %136, %130
  %156 = load ptr, ptr %8, align 8, !tbaa !5
  %157 = getelementptr inbounds %struct.zip64_internal, ptr %156, i32 0, i32 4
  %158 = getelementptr inbounds %struct.curfile64_info, ptr %157, i32 0, i32 10
  %159 = load i32, ptr %158, align 4, !tbaa !26
  %160 = icmp ne i32 %159, 0
  br i1 %160, label %170, label %161

161:                                              ; preds = %155
  %162 = load ptr, ptr %8, align 8, !tbaa !5
  %163 = getelementptr inbounds %struct.zip64_internal, ptr %162, i32 0, i32 4
  %164 = getelementptr inbounds %struct.curfile64_info, ptr %163, i32 0, i32 13
  %165 = load i64, ptr %164, align 8, !tbaa !34
  store i64 %165, ptr %7, align 8, !tbaa !11
  %166 = load ptr, ptr %8, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.zip64_internal, ptr %166, i32 0, i32 4
  %168 = getelementptr inbounds %struct.curfile64_info, ptr %167, i32 0, i32 18
  %169 = load i64, ptr %168, align 8, !tbaa !35
  store i64 %169, ptr %6, align 8, !tbaa !9
  br label %170

170:                                              ; preds = %161, %155
  %171 = load ptr, ptr %8, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.zip64_internal, ptr %171, i32 0, i32 4
  %173 = getelementptr inbounds %struct.curfile64_info, ptr %172, i32 0, i32 17
  %174 = load i64, ptr %173, align 8, !tbaa !36
  store i64 %174, ptr %9, align 8, !tbaa !9
  %175 = load ptr, ptr %8, align 8, !tbaa !5
  %176 = getelementptr inbounds %struct.zip64_internal, ptr %175, i32 0, i32 4
  %177 = getelementptr inbounds %struct.curfile64_info, ptr %176, i32 0, i32 21
  %178 = load i32, ptr %177, align 8, !tbaa !37
  %179 = sext i32 %178 to i64
  %180 = load i64, ptr %9, align 8, !tbaa !9
  %181 = add i64 %180, %179
  store i64 %181, ptr %9, align 8, !tbaa !9
  %182 = load i64, ptr %9, align 8, !tbaa !9
  %183 = icmp uge i64 %182, 4294967295
  br i1 %183, label %193, label %184

184:                                              ; preds = %170
  %185 = load i64, ptr %6, align 8, !tbaa !9
  %186 = icmp uge i64 %185, 4294967295
  br i1 %186, label %193, label %187

187:                                              ; preds = %184
  %188 = load ptr, ptr %8, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.zip64_internal, ptr %188, i32 0, i32 4
  %190 = getelementptr inbounds %struct.curfile64_info, ptr %189, i32 0, i32 3
  %191 = load i64, ptr %190, align 8, !tbaa !38
  %192 = icmp uge i64 %191, 4294967295
  br i1 %192, label %193, label %204

193:                                              ; preds = %187, %184, %170
  %194 = load ptr, ptr %8, align 8, !tbaa !5
  %195 = getelementptr inbounds %struct.zip64_internal, ptr %194, i32 0, i32 4
  %196 = getelementptr inbounds %struct.curfile64_info, ptr %195, i32 0, i32 4
  %197 = load ptr, ptr %196, align 8, !tbaa !39
  %198 = getelementptr inbounds i8, ptr %197, i64 4
  call void @zip64local_putValue_inmemory(ptr noundef %198, i64 noundef 45, i32 noundef 2)
  %199 = load ptr, ptr %8, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.zip64_internal, ptr %199, i32 0, i32 4
  %201 = getelementptr inbounds %struct.curfile64_info, ptr %200, i32 0, i32 4
  %202 = load ptr, ptr %201, align 8, !tbaa !39
  %203 = getelementptr inbounds i8, ptr %202, i64 6
  call void @zip64local_putValue_inmemory(ptr noundef %203, i64 noundef 45, i32 noundef 2)
  br label %204

204:                                              ; preds = %193, %187
  %205 = load ptr, ptr %8, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.zip64_internal, ptr %205, i32 0, i32 4
  %207 = getelementptr inbounds %struct.curfile64_info, ptr %206, i32 0, i32 4
  %208 = load ptr, ptr %207, align 8, !tbaa !39
  %209 = getelementptr inbounds i8, ptr %208, i64 16
  %210 = load i64, ptr %7, align 8, !tbaa !11
  call void @zip64local_putValue_inmemory(ptr noundef %209, i64 noundef %210, i32 noundef 4)
  %211 = load i64, ptr %9, align 8, !tbaa !9
  %212 = icmp uge i64 %211, 4294967295
  br i1 %212, label %213, label %220

213:                                              ; preds = %204
  %214 = load ptr, ptr %8, align 8, !tbaa !5
  %215 = getelementptr inbounds %struct.zip64_internal, ptr %214, i32 0, i32 4
  %216 = getelementptr inbounds %struct.curfile64_info, ptr %215, i32 0, i32 4
  %217 = load ptr, ptr %216, align 8, !tbaa !39
  %218 = getelementptr inbounds i8, ptr %217, i64 20
  %219 = load i64, ptr %10, align 8, !tbaa !11
  call void @zip64local_putValue_inmemory(ptr noundef %218, i64 noundef %219, i32 noundef 4)
  br label %227

220:                                              ; preds = %204
  %221 = load ptr, ptr %8, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.zip64_internal, ptr %221, i32 0, i32 4
  %223 = getelementptr inbounds %struct.curfile64_info, ptr %222, i32 0, i32 4
  %224 = load ptr, ptr %223, align 8, !tbaa !39
  %225 = getelementptr inbounds i8, ptr %224, i64 20
  %226 = load i64, ptr %9, align 8, !tbaa !9
  call void @zip64local_putValue_inmemory(ptr noundef %225, i64 noundef %226, i32 noundef 4)
  br label %227

227:                                              ; preds = %220, %213
  %228 = load ptr, ptr %8, align 8, !tbaa !5
  %229 = getelementptr inbounds %struct.zip64_internal, ptr %228, i32 0, i32 4
  %230 = getelementptr inbounds %struct.curfile64_info, ptr %229, i32 0, i32 0
  %231 = getelementptr inbounds %struct.z_stream_s, ptr %230, i32 0, i32 11
  %232 = load i32, ptr %231, align 8, !tbaa !40
  %233 = icmp eq i32 %232, 1
  br i1 %233, label %234, label %240

234:                                              ; preds = %227
  %235 = load ptr, ptr %8, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.zip64_internal, ptr %235, i32 0, i32 4
  %237 = getelementptr inbounds %struct.curfile64_info, ptr %236, i32 0, i32 4
  %238 = load ptr, ptr %237, align 8, !tbaa !39
  %239 = getelementptr inbounds i8, ptr %238, i64 36
  call void @zip64local_putValue_inmemory(ptr noundef %239, i64 noundef 1, i32 noundef 2)
  br label %240

240:                                              ; preds = %234, %227
  %241 = load i64, ptr %6, align 8, !tbaa !9
  %242 = icmp uge i64 %241, 4294967295
  br i1 %242, label %243, label %250

243:                                              ; preds = %240
  %244 = load ptr, ptr %8, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.zip64_internal, ptr %244, i32 0, i32 4
  %246 = getelementptr inbounds %struct.curfile64_info, ptr %245, i32 0, i32 4
  %247 = load ptr, ptr %246, align 8, !tbaa !39
  %248 = getelementptr inbounds i8, ptr %247, i64 24
  %249 = load i64, ptr %10, align 8, !tbaa !11
  call void @zip64local_putValue_inmemory(ptr noundef %248, i64 noundef %249, i32 noundef 4)
  br label %257

250:                                              ; preds = %240
  %251 = load ptr, ptr %8, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.zip64_internal, ptr %251, i32 0, i32 4
  %253 = getelementptr inbounds %struct.curfile64_info, ptr %252, i32 0, i32 4
  %254 = load ptr, ptr %253, align 8, !tbaa !39
  %255 = getelementptr inbounds i8, ptr %254, i64 24
  %256 = load i64, ptr %6, align 8, !tbaa !9
  call void @zip64local_putValue_inmemory(ptr noundef %255, i64 noundef %256, i32 noundef 4)
  br label %257

257:                                              ; preds = %250, %243
  %258 = load i64, ptr %6, align 8, !tbaa !9
  %259 = icmp uge i64 %258, 4294967295
  br i1 %259, label %260, label %265

260:                                              ; preds = %257
  %261 = load i16, ptr %11, align 2, !tbaa !13
  %262 = sext i16 %261 to i32
  %263 = add nsw i32 %262, 8
  %264 = trunc i32 %263 to i16
  store i16 %264, ptr %11, align 2, !tbaa !13
  br label %265

265:                                              ; preds = %260, %257
  %266 = load i64, ptr %9, align 8, !tbaa !9
  %267 = icmp uge i64 %266, 4294967295
  br i1 %267, label %268, label %273

268:                                              ; preds = %265
  %269 = load i16, ptr %11, align 2, !tbaa !13
  %270 = sext i16 %269 to i32
  %271 = add nsw i32 %270, 8
  %272 = trunc i32 %271 to i16
  store i16 %272, ptr %11, align 2, !tbaa !13
  br label %273

273:                                              ; preds = %268, %265
  %274 = load ptr, ptr %8, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.zip64_internal, ptr %274, i32 0, i32 4
  %276 = getelementptr inbounds %struct.curfile64_info, ptr %275, i32 0, i32 3
  %277 = load i64, ptr %276, align 8, !tbaa !38
  %278 = icmp uge i64 %277, 4294967295
  br i1 %278, label %279, label %284

279:                                              ; preds = %273
  %280 = load i16, ptr %11, align 2, !tbaa !13
  %281 = sext i16 %280 to i32
  %282 = add nsw i32 %281, 8
  %283 = trunc i32 %282 to i16
  store i16 %283, ptr %11, align 2, !tbaa !13
  br label %284

284:                                              ; preds = %279, %273
  %285 = load i16, ptr %11, align 2, !tbaa !13
  %286 = sext i16 %285 to i32
  %287 = icmp sgt i32 %286, 0
  br i1 %287, label %288, label %386

288:                                              ; preds = %284
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #4
  store ptr null, ptr %16, align 8, !tbaa !5
  %289 = load i16, ptr %11, align 2, !tbaa !13
  %290 = sext i16 %289 to i32
  %291 = add nsw i32 %290, 4
  %292 = sext i32 %291 to i64
  %293 = load ptr, ptr %8, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.zip64_internal, ptr %293, i32 0, i32 4
  %295 = getelementptr inbounds %struct.curfile64_info, ptr %294, i32 0, i32 7
  %296 = load i64, ptr %295, align 8, !tbaa !41
  %297 = icmp ugt i64 %292, %296
  br i1 %297, label %298, label %299

298:                                              ; preds = %288
  store i32 -103, ptr %4, align 4
  store i32 1, ptr %13, align 4
  br label %383

299:                                              ; preds = %288
  %300 = load ptr, ptr %8, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.zip64_internal, ptr %300, i32 0, i32 4
  %302 = getelementptr inbounds %struct.curfile64_info, ptr %301, i32 0, i32 4
  %303 = load ptr, ptr %302, align 8, !tbaa !39
  %304 = load ptr, ptr %8, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.zip64_internal, ptr %304, i32 0, i32 4
  %306 = getelementptr inbounds %struct.curfile64_info, ptr %305, i32 0, i32 6
  %307 = load i64, ptr %306, align 8, !tbaa !42
  %308 = getelementptr inbounds i8, ptr %303, i64 %307
  store ptr %308, ptr %16, align 8, !tbaa !5
  %309 = load ptr, ptr %16, align 8, !tbaa !5
  call void @zip64local_putValue_inmemory(ptr noundef %309, i64 noundef 1, i32 noundef 2)
  %310 = load ptr, ptr %16, align 8, !tbaa !5
  %311 = getelementptr inbounds i8, ptr %310, i64 2
  store ptr %311, ptr %16, align 8, !tbaa !5
  %312 = load ptr, ptr %16, align 8, !tbaa !5
  %313 = load i16, ptr %11, align 2, !tbaa !13
  %314 = sext i16 %313 to i64
  call void @zip64local_putValue_inmemory(ptr noundef %312, i64 noundef %314, i32 noundef 2)
  %315 = load ptr, ptr %16, align 8, !tbaa !5
  %316 = getelementptr inbounds i8, ptr %315, i64 2
  store ptr %316, ptr %16, align 8, !tbaa !5
  %317 = load i64, ptr %6, align 8, !tbaa !9
  %318 = icmp uge i64 %317, 4294967295
  br i1 %318, label %319, label %324

319:                                              ; preds = %299
  %320 = load ptr, ptr %16, align 8, !tbaa !5
  %321 = load i64, ptr %6, align 8, !tbaa !9
  call void @zip64local_putValue_inmemory(ptr noundef %320, i64 noundef %321, i32 noundef 8)
  %322 = load ptr, ptr %16, align 8, !tbaa !5
  %323 = getelementptr inbounds i8, ptr %322, i64 8
  store ptr %323, ptr %16, align 8, !tbaa !5
  br label %324

324:                                              ; preds = %319, %299
  %325 = load i64, ptr %9, align 8, !tbaa !9
  %326 = icmp uge i64 %325, 4294967295
  br i1 %326, label %327, label %332

327:                                              ; preds = %324
  %328 = load ptr, ptr %16, align 8, !tbaa !5
  %329 = load i64, ptr %9, align 8, !tbaa !9
  call void @zip64local_putValue_inmemory(ptr noundef %328, i64 noundef %329, i32 noundef 8)
  %330 = load ptr, ptr %16, align 8, !tbaa !5
  %331 = getelementptr inbounds i8, ptr %330, i64 8
  store ptr %331, ptr %16, align 8, !tbaa !5
  br label %332

332:                                              ; preds = %327, %324
  %333 = load ptr, ptr %8, align 8, !tbaa !5
  %334 = getelementptr inbounds %struct.zip64_internal, ptr %333, i32 0, i32 4
  %335 = getelementptr inbounds %struct.curfile64_info, ptr %334, i32 0, i32 3
  %336 = load i64, ptr %335, align 8, !tbaa !38
  %337 = icmp uge i64 %336, 4294967295
  br i1 %337, label %338, label %346

338:                                              ; preds = %332
  %339 = load ptr, ptr %16, align 8, !tbaa !5
  %340 = load ptr, ptr %8, align 8, !tbaa !5
  %341 = getelementptr inbounds %struct.zip64_internal, ptr %340, i32 0, i32 4
  %342 = getelementptr inbounds %struct.curfile64_info, ptr %341, i32 0, i32 3
  %343 = load i64, ptr %342, align 8, !tbaa !38
  call void @zip64local_putValue_inmemory(ptr noundef %339, i64 noundef %343, i32 noundef 8)
  %344 = load ptr, ptr %16, align 8, !tbaa !5
  %345 = getelementptr inbounds i8, ptr %344, i64 8
  store ptr %345, ptr %16, align 8, !tbaa !5
  br label %346

346:                                              ; preds = %338, %332
  %347 = load i16, ptr %11, align 2, !tbaa !13
  %348 = sext i16 %347 to i32
  %349 = add nsw i32 %348, 4
  %350 = sext i32 %349 to i64
  %351 = load ptr, ptr %8, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.zip64_internal, ptr %351, i32 0, i32 4
  %353 = getelementptr inbounds %struct.curfile64_info, ptr %352, i32 0, i32 7
  %354 = load i64, ptr %353, align 8, !tbaa !41
  %355 = sub i64 %354, %350
  store i64 %355, ptr %353, align 8, !tbaa !41
  %356 = load i16, ptr %11, align 2, !tbaa !13
  %357 = sext i16 %356 to i32
  %358 = add nsw i32 %357, 4
  %359 = sext i32 %358 to i64
  %360 = load ptr, ptr %8, align 8, !tbaa !5
  %361 = getelementptr inbounds %struct.zip64_internal, ptr %360, i32 0, i32 4
  %362 = getelementptr inbounds %struct.curfile64_info, ptr %361, i32 0, i32 6
  %363 = load i64, ptr %362, align 8, !tbaa !42
  %364 = add i64 %363, %359
  store i64 %364, ptr %362, align 8, !tbaa !42
  %365 = load i16, ptr %11, align 2, !tbaa !13
  %366 = sext i16 %365 to i32
  %367 = add nsw i32 %366, 4
  %368 = sext i32 %367 to i64
  %369 = load ptr, ptr %8, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.zip64_internal, ptr %369, i32 0, i32 4
  %371 = getelementptr inbounds %struct.curfile64_info, ptr %370, i32 0, i32 5
  %372 = load i64, ptr %371, align 8, !tbaa !43
  %373 = add i64 %372, %368
  store i64 %373, ptr %371, align 8, !tbaa !43
  %374 = load ptr, ptr %8, align 8, !tbaa !5
  %375 = getelementptr inbounds %struct.zip64_internal, ptr %374, i32 0, i32 4
  %376 = getelementptr inbounds %struct.curfile64_info, ptr %375, i32 0, i32 4
  %377 = load ptr, ptr %376, align 8, !tbaa !39
  %378 = getelementptr inbounds i8, ptr %377, i64 30
  %379 = load ptr, ptr %8, align 8, !tbaa !5
  %380 = getelementptr inbounds %struct.zip64_internal, ptr %379, i32 0, i32 4
  %381 = getelementptr inbounds %struct.curfile64_info, ptr %380, i32 0, i32 5
  %382 = load i64, ptr %381, align 8, !tbaa !43
  call void @zip64local_putValue_inmemory(ptr noundef %378, i64 noundef %382, i32 noundef 2)
  store i32 0, ptr %13, align 4
  br label %383

383:                                              ; preds = %346, %298
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  %384 = load i32, ptr %13, align 4
  switch i32 %384, label %532 [
    i32 0, label %385
  ]

385:                                              ; preds = %383
  br label %386

386:                                              ; preds = %385, %284
  %387 = load i32, ptr %12, align 4, !tbaa !15
  %388 = icmp eq i32 %387, 0
  br i1 %388, label %389, label %401

389:                                              ; preds = %386
  %390 = load ptr, ptr %8, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.zip64_internal, ptr %390, i32 0, i32 2
  %392 = load ptr, ptr %8, align 8, !tbaa !5
  %393 = getelementptr inbounds %struct.zip64_internal, ptr %392, i32 0, i32 4
  %394 = getelementptr inbounds %struct.curfile64_info, ptr %393, i32 0, i32 4
  %395 = load ptr, ptr %394, align 8, !tbaa !39
  %396 = load ptr, ptr %8, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.zip64_internal, ptr %396, i32 0, i32 4
  %398 = getelementptr inbounds %struct.curfile64_info, ptr %397, i32 0, i32 6
  %399 = load i64, ptr %398, align 8, !tbaa !42
  %400 = call i32 @add_data_in_datablock(ptr noundef %391, ptr noundef %395, i64 noundef %399)
  store i32 %400, ptr %12, align 4, !tbaa !15
  br label %401

401:                                              ; preds = %389, %386
  %402 = load ptr, ptr %8, align 8, !tbaa !5
  %403 = getelementptr inbounds %struct.zip64_internal, ptr %402, i32 0, i32 4
  %404 = getelementptr inbounds %struct.curfile64_info, ptr %403, i32 0, i32 4
  %405 = load ptr, ptr %404, align 8, !tbaa !39
  call void @free(ptr noundef %405) #4
  %406 = load i32, ptr %12, align 4, !tbaa !15
  %407 = icmp eq i32 %406, 0
  br i1 %407, label %408, label %524

408:                                              ; preds = %401
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #4
  %409 = load ptr, ptr %8, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct.zip64_internal, ptr %409, i32 0, i32 0
  %411 = load ptr, ptr %8, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.zip64_internal, ptr %411, i32 0, i32 1
  %413 = load ptr, ptr %412, align 8, !tbaa !44
  %414 = call i64 @call_ztell64(ptr noundef %410, ptr noundef %413)
  store i64 %414, ptr %17, align 8, !tbaa !9
  %415 = load ptr, ptr %8, align 8, !tbaa !5
  %416 = getelementptr inbounds %struct.zip64_internal, ptr %415, i32 0, i32 0
  %417 = load ptr, ptr %8, align 8, !tbaa !5
  %418 = getelementptr inbounds %struct.zip64_internal, ptr %417, i32 0, i32 1
  %419 = load ptr, ptr %418, align 8, !tbaa !44
  %420 = load ptr, ptr %8, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.zip64_internal, ptr %420, i32 0, i32 4
  %422 = getelementptr inbounds %struct.curfile64_info, ptr %421, i32 0, i32 3
  %423 = load i64, ptr %422, align 8, !tbaa !38
  %424 = add i64 %423, 14
  %425 = call i64 @call_zseek64(ptr noundef %416, ptr noundef %419, i64 noundef %424, i32 noundef 0)
  %426 = icmp ne i64 %425, 0
  br i1 %426, label %427, label %428

427:                                              ; preds = %408
  store i32 -1, ptr %12, align 4, !tbaa !15
  br label %428

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

431:                                              ; preds = %428
  %432 = load ptr, ptr %8, align 8, !tbaa !5
  %433 = getelementptr inbounds %struct.zip64_internal, ptr %432, i32 0, i32 0
  %434 = load ptr, ptr %8, align 8, !tbaa !5
  %435 = getelementptr inbounds %struct.zip64_internal, ptr %434, i32 0, i32 1
  %436 = load ptr, ptr %435, align 8, !tbaa !44
  %437 = load i64, ptr %7, 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 %12, align 4, !tbaa !15
  br label %439

439:                                              ; preds = %431, %428
  %440 = load i64, ptr %6, align 8, !tbaa !9
  %441 = icmp uge i64 %440, 4294967295
  br i1 %441, label %445, label %442

442:                                              ; preds = %439
  %443 = load i64, ptr %9, align 8, !tbaa !9
  %444 = icmp uge i64 %443, 4294967295
  br i1 %444, label %445, label %490

445:                                              ; preds = %442, %439
  %446 = load ptr, ptr %8, align 8, !tbaa !5
  %447 = getelementptr inbounds %struct.zip64_internal, ptr %446, i32 0, i32 4
  %448 = getelementptr inbounds %struct.curfile64_info, ptr %447, i32 0, i32 16
  %449 = load i64, ptr %448, align 8, !tbaa !45
  %450 = icmp ugt i64 %449, 0
  br i1 %450, label %451, label %488

451:                                              ; preds = %445
  %452 = load ptr, ptr %8, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.zip64_internal, ptr %452, i32 0, i32 0
  %454 = load ptr, ptr %8, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.zip64_internal, ptr %454, i32 0, i32 1
  %456 = load ptr, ptr %455, align 8, !tbaa !44
  %457 = load ptr, ptr %8, align 8, !tbaa !5
  %458 = getelementptr inbounds %struct.zip64_internal, ptr %457, i32 0, i32 4
  %459 = getelementptr inbounds %struct.curfile64_info, ptr %458, i32 0, i32 16
  %460 = load i64, ptr %459, align 8, !tbaa !45
  %461 = add i64 %460, 4
  %462 = call i64 @call_zseek64(ptr noundef %453, ptr noundef %456, i64 noundef %461, i32 noundef 0)
  %463 = icmp ne i64 %462, 0
  br i1 %463, label %464, label %465

464:                                              ; preds = %451
  store i32 -1, ptr %12, align 4, !tbaa !15
  br label %465

465:                                              ; preds = %464, %451
  %466 = load i32, ptr %12, align 4, !tbaa !15
  %467 = icmp eq i32 %466, 0
  br i1 %467, label %468, label %476

468:                                              ; preds = %465
  %469 = load ptr, ptr %8, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.zip64_internal, ptr %469, i32 0, i32 0
  %471 = load ptr, ptr %8, align 8, !tbaa !5
  %472 = getelementptr inbounds %struct.zip64_internal, ptr %471, i32 0, i32 1
  %473 = load ptr, ptr %472, align 8, !tbaa !44
  %474 = load i64, ptr %6, align 8, !tbaa !9
  %475 = call i32 @zip64local_putValue(ptr noundef %470, ptr noundef %473, i64 noundef %474, i32 noundef 8)
  store i32 %475, ptr %12, align 4, !tbaa !15
  br label %476

476:                                              ; preds = %468, %465
  %477 = load i32, ptr %12, align 4, !tbaa !15
  %478 = icmp eq i32 %477, 0
  br i1 %478, label %479, label %487

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 !44
  %485 = load i64, ptr %9, align 8, !tbaa !9
  %486 = call i32 @zip64local_putValue(ptr noundef %481, ptr noundef %484, i64 noundef %485, i32 noundef 8)
  store i32 %486, ptr %12, align 4, !tbaa !15
  br label %487

487:                                              ; preds = %479, %476
  br label %489

488:                                              ; preds = %445
  store i32 -103, ptr %12, align 4, !tbaa !15
  br label %489

489:                                              ; preds = %488, %487
  br label %513

490:                                              ; preds = %442
  %491 = load i32, ptr %12, align 4, !tbaa !15
  %492 = icmp eq i32 %491, 0
  br i1 %492, label %493, label %501

493:                                              ; preds = %490
  %494 = load ptr, ptr %8, align 8, !tbaa !5
  %495 = getelementptr inbounds %struct.zip64_internal, ptr %494, i32 0, i32 0
  %496 = load ptr, ptr %8, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct.zip64_internal, ptr %496, i32 0, i32 1
  %498 = load ptr, ptr %497, align 8, !tbaa !44
  %499 = load i64, ptr %9, align 8, !tbaa !9
  %500 = call i32 @zip64local_putValue(ptr noundef %495, ptr noundef %498, i64 noundef %499, i32 noundef 4)
  store i32 %500, ptr %12, align 4, !tbaa !15
  br label %501

501:                                              ; preds = %493, %490
  %502 = load i32, ptr %12, align 4, !tbaa !15
  %503 = icmp eq i32 %502, 0
  br i1 %503, label %504, label %512

504:                                              ; preds = %501
  %505 = load ptr, ptr %8, align 8, !tbaa !5
  %506 = getelementptr inbounds %struct.zip64_internal, ptr %505, i32 0, i32 0
  %507 = load ptr, ptr %8, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.zip64_internal, ptr %507, i32 0, i32 1
  %509 = load ptr, ptr %508, align 8, !tbaa !44
  %510 = load i64, ptr %6, align 8, !tbaa !9
  %511 = call i32 @zip64local_putValue(ptr noundef %506, ptr noundef %509, i64 noundef %510, i32 noundef 4)
  store i32 %511, ptr %12, align 4, !tbaa !15
  br label %512

512:                                              ; preds = %504, %501
  br label %513

513:                                              ; preds = %512, %489
  %514 = load ptr, ptr %8, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.zip64_internal, ptr %514, i32 0, i32 0
  %516 = load ptr, ptr %8, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.zip64_internal, ptr %516, i32 0, i32 1
  %518 = load ptr, ptr %517, align 8, !tbaa !44
  %519 = load i64, ptr %17, align 8, !tbaa !9
  %520 = call i64 @call_zseek64(ptr noundef %515, ptr noundef %518, i64 noundef %519, i32 noundef 0)
  %521 = icmp ne i64 %520, 0
  br i1 %521, label %522, label %523

522:                                              ; preds = %513
  store i32 -1, ptr %12, align 4, !tbaa !15
  br label %523

523:                                              ; preds = %522, %513
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  br label %524

524:                                              ; preds = %523, %401
  %525 = load ptr, ptr %8, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.zip64_internal, ptr %525, i32 0, i32 7
  %527 = load i64, ptr %526, align 8, !tbaa !46
  %528 = add i64 %527, 1
  store i64 %528, ptr %526, align 8, !tbaa !46
  %529 = load ptr, ptr %8, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct.zip64_internal, ptr %529, i32 0, i32 3
  store i32 0, ptr %530, align 8, !tbaa !17
  %531 = load i32, ptr %12, align 4, !tbaa !15
  store i32 %531, ptr %4, align 4
  store i32 1, ptr %13, align 4
  br label %532

532:                                              ; preds = %524, %383, %27, %20
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 2, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #4
  %533 = load i32, ptr %4, align 4
  ret i32 %533
}

declare i32 @deflateEnd(ptr noundef) #1

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 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 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"short", !7, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"int", !7, i64 0}
!17 = !{!18, !16, i64 112}
!18 = !{!"", !19, i64 0, !6, i64 88, !21, i64 96, !16, i64 112, !22, i64 120, !10, i64 65920, !10, i64 65928, !10, i64 65936, !6, i64 65944}
!19 = !{!"zlib_filefunc64_32_def_s", !20, i64 0, !6, i64 64, !6, i64 72, !6, i64 80}
!20 = !{!"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}
!21 = !{!"linkedlist_data_s", !6, i64 0, !6, i64 8}
!22 = !{!"", !23, i64 0, !16, i64 112, !16, i64 116, !10, i64 120, !6, i64 128, !12, i64 136, !12, i64 144, !12, i64 152, !12, i64 160, !16, i64 168, !16, i64 172, !7, i64 176, !12, i64 65712, !12, i64 65720, !16, i64 65728, !16, i64 65732, !10, i64 65736, !10, i64 65744, !10, i64 65752, !7, i64 65760, !6, i64 65784, !16, i64 65792}
!23 = !{!"z_stream_s", !6, i64 0, !16, i64 8, !12, i64 16, !6, i64 24, !16, i64 32, !12, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !16, i64 88, !12, i64 96, !12, i64 104}
!24 = !{!18, !16, i64 128}
!25 = !{!18, !16, i64 288}
!26 = !{!18, !16, i64 292}
!27 = !{!18, !16, i64 152}
!28 = !{!18, !6, i64 144}
!29 = !{!18, !12, i64 160}
!30 = !{!18, !16, i64 236}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = !{!18, !16, i64 232}
!34 = !{!18, !12, i64 65840}
!35 = !{!18, !10, i64 65872}
!36 = !{!18, !10, i64 65864}
!37 = !{!18, !16, i64 65912}
!38 = !{!18, !10, i64 240}
!39 = !{!18, !6, i64 248}
!40 = !{!18, !16, i64 208}
!41 = !{!18, !12, i64 272}
!42 = !{!18, !12, i64 264}
!43 = !{!18, !12, i64 256}
!44 = !{!18, !6, i64 88}
!45 = !{!18, !10, i64 65856}
!46 = !{!18, !10, i64 65936}


; 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_zseek64(ptr noundef, ptr noundef, i64 noundef, i32 noundef) local_unnamed_addr #0

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

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

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

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

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

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

declare i32 @deflate(ptr noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local i32 @zipCloseFileInZipRaw64(ptr noundef %0, i64 noundef %1, i64 noundef %2) local_unnamed_addr #1 {
  %4 = icmp eq ptr %0, null
  br i1 %4, label %.critedge, label %5

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

9:                                                ; preds = %5
  %10 = getelementptr inbounds i8, ptr %0, i64 120
  %11 = getelementptr inbounds i8, ptr %0, i64 128
  store i32 0, ptr %11, align 8, !tbaa !18
  %12 = getelementptr inbounds i8, ptr %0, i64 288
  %13 = load i32, ptr %12, align 8, !tbaa !19
  %14 = icmp eq i32 %13, 8
  br i1 %14, label %15, label %.thread

15:                                               ; preds = %9
  %16 = getelementptr inbounds i8, ptr %0, i64 292
  %17 = load i32, ptr %16, align 4, !tbaa !20
  %18 = icmp eq i32 %17, 0
  br i1 %18, label %.preheader, label %.thread

.preheader:                                       ; preds = %15
  %19 = getelementptr inbounds i8, ptr %0, i64 152
  %20 = getelementptr inbounds i8, ptr %0, i64 296
  %21 = getelementptr inbounds i8, ptr %0, i64 144
  %22 = getelementptr inbounds i8, ptr %0, i64 160
  %23 = getelementptr inbounds i8, ptr %0, i64 236
  br label %24

24:                                               ; preds = %.preheader, %29
  %25 = load i32, ptr %19, align 8, !tbaa !21
  %26 = icmp eq i32 %25, 0
  br i1 %26, label %27, label %29

27:                                               ; preds = %24
  %28 = tail call i32 @zip64FlushWriteBuffer(ptr noundef nonnull %0)
  store i32 65536, ptr %19, align 8, !tbaa !21
  store ptr %20, ptr %21, align 8, !tbaa !22
  br label %29

29:                                               ; preds = %27, %24
  %30 = load i64, ptr %22, align 8, !tbaa !23
  %31 = tail call i32 @deflate(ptr noundef nonnull %10, i32 noundef 4) #3
  %.fr = freeze i32 %31
  %32 = load i64, ptr %22, align 8, !tbaa !23
  %33 = sub i64 %32, %30
  %34 = trunc i64 %33 to i32
  %35 = load i32, ptr %23, align 4, !tbaa !24
  %36 = add i32 %35, %34
  store i32 %36, ptr %23, align 4, !tbaa !24
  switch i32 %.fr, label %.thread171 [
    i32 0, label %24
    i32 1, label %.thread
  ]

.thread:                                          ; preds = %29, %9, %15
  %37 = getelementptr inbounds i8, ptr %0, i64 236
  %38 = load i32, ptr %37, align 4, !tbaa !24
  %.not188 = icmp eq i32 %38, 0
  br i1 %.not188, label %.thread171, label %39

39:                                               ; preds = %.thread
  %40 = tail call i32 @zip64FlushWriteBuffer(ptr noundef nonnull %0)
  %41 = icmp eq i32 %40, -1
  %spec.select = sext i1 %41 to i32
  br label %.thread171

.thread171:                                       ; preds = %29, %39, %.thread
  %.1146 = phi i32 [ 0, %.thread ], [ %spec.select, %39 ], [ %.fr, %29 ]
  %42 = load i32, ptr %12, align 8, !tbaa !19
  %43 = icmp eq i32 %42, 8
  br i1 %43, label %44, label %51

44:                                               ; preds = %.thread171
  %45 = getelementptr inbounds i8, ptr %0, i64 292
  %46 = load i32, ptr %45, align 4, !tbaa !20
  %.not = icmp eq i32 %46, 0
  br i1 %.not, label %47, label %51

47:                                               ; preds = %44
  %48 = tail call i32 @deflateEnd(ptr noundef nonnull %10) #3
  %49 = icmp eq i32 %.1146, 0
  %spec.select165 = select i1 %49, i32 %48, i32 %.1146
  %50 = getelementptr inbounds i8, ptr %0, i64 232
  store i32 0, ptr %50, align 8, !tbaa !25
  br label %51

51:                                               ; preds = %47, %44, %.thread171
  %.3 = phi i32 [ %.1146, %44 ], [ %spec.select165, %47 ], [ %.1146, %.thread171 ]
  %52 = getelementptr inbounds i8, ptr %0, i64 292
  %53 = load i32, ptr %52, align 4, !tbaa !20
  %.not158 = icmp eq i32 %53, 0
  br i1 %.not158, label %54, label %59

54:                                               ; preds = %51
  %55 = getelementptr inbounds i8, ptr %0, i64 65840
  %56 = load i64, ptr %55, align 8, !tbaa !26
  %57 = getelementptr inbounds i8, ptr %0, i64 65872
  %58 = load i64, ptr %57, align 8, !tbaa !27
  br label %59

59:                                               ; preds = %54, %51
  %.0143 = phi i64 [ %2, %51 ], [ %56, %54 ]
  %.0142 = phi i64 [ %1, %51 ], [ %58, %54 ]
  %60 = getelementptr inbounds i8, ptr %0, i64 65864
  %61 = load i64, ptr %60, align 8, !tbaa !28
  %62 = getelementptr inbounds i8, ptr %0, i64 65912
  %63 = load i32, ptr %62, align 8, !tbaa !29
  %64 = sext i32 %63 to i64
  %65 = add i64 %61, %64
  %66 = icmp ugt i64 %65, 4294967294
  %67 = icmp ugt i64 %.0142, 4294967294
  %or.cond3 = select i1 %66, i1 true, i1 %67
  br i1 %or.cond3, label %75, label %68

68:                                               ; preds = %59
  %69 = getelementptr inbounds i8, ptr %0, i64 240
  %70 = load i64, ptr %69, align 8, !tbaa !30
  %71 = icmp ugt i64 %70, 4294967294
  br i1 %71, label %75, label %.thread173

.thread173:                                       ; preds = %68
  %72 = getelementptr inbounds i8, ptr %0, i64 248
  %73 = load ptr, ptr %72, align 8, !tbaa !31
  %74 = getelementptr inbounds i8, ptr %73, i64 16
  tail call void @zip64local_putValue_inmemory(ptr noundef nonnull %74, i64 noundef %.0143, i32 noundef 4)
  br label %83

75:                                               ; preds = %59, %68
  %76 = getelementptr inbounds i8, ptr %0, i64 248
  %77 = load ptr, ptr %76, align 8, !tbaa !31
  %78 = getelementptr inbounds i8, ptr %77, i64 4
  tail call void @zip64local_putValue_inmemory(ptr noundef nonnull %78, i64 noundef 45, i32 noundef 2)
  %79 = load ptr, ptr %76, align 8, !tbaa !31
  %80 = getelementptr inbounds i8, ptr %79, i64 6
  tail call void @zip64local_putValue_inmemory(ptr noundef nonnull %80, i64 noundef 45, i32 noundef 2)
  %81 = load ptr, ptr %76, align 8, !tbaa !31
  %82 = getelementptr inbounds i8, ptr %81, i64 16
  tail call void @zip64local_putValue_inmemory(ptr noundef nonnull %82, i64 noundef %.0143, i32 noundef 4)
  %spec.select195 = select i1 %66, i64 4294967295, i64 %65
  br label %83

83:                                               ; preds = %75, %.thread173
  %.sink = phi ptr [ %72, %.thread173 ], [ %76, %75 ]
  %.sink193 = phi i64 [ %65, %.thread173 ], [ %spec.select195, %75 ]
  %84 = load ptr, ptr %.sink, align 8, !tbaa !31
  %85 = getelementptr inbounds i8, ptr %84, i64 20
  tail call void @zip64local_putValue_inmemory(ptr noundef nonnull %85, i64 noundef %.sink193, i32 noundef 4)
  %86 = getelementptr inbounds i8, ptr %0, i64 208
  %87 = load i32, ptr %86, align 8, !tbaa !32
  %88 = icmp eq i32 %87, 1
  br i1 %88, label %89, label %92

89:                                               ; preds = %83
  %90 = load ptr, ptr %.sink, align 8, !tbaa !31
  %91 = getelementptr inbounds i8, ptr %90, i64 36
  tail call void @zip64local_putValue_inmemory(ptr noundef nonnull %91, i64 noundef 1, i32 noundef 2)
  br label %92

92:                                               ; preds = %89, %83
  %93 = load ptr, ptr %.sink, align 8, !tbaa !31
  %94 = getelementptr inbounds i8, ptr %93, i64 24
  %..0142 = select i1 %67, i64 4294967295, i64 %.0142
  %. = select i1 %67, i16 8, i16 0
  tail call void @zip64local_putValue_inmemory(ptr noundef nonnull %94, i64 noundef %..0142, i32 noundef 4)
  %narrow = add nuw nsw i16 %., 8
  %.1148 = select i1 %66, i16 %narrow, i16 %.
  %95 = getelementptr inbounds i8, ptr %0, i64 240
  %96 = load i64, ptr %95, align 8, !tbaa !30
  %97 = icmp ugt i64 %96, 4294967294
  %98 = add nuw nsw i16 %.1148, 8
  %.2149 = select i1 %97, i16 %98, i16 %.1148
  %.not189 = icmp eq i16 %.2149, 0
  br i1 %.not189, label %130, label %99

99:                                               ; preds = %92
  %narrow159 = or disjoint i16 %.2149, 4
  %100 = zext nneg i16 %narrow159 to i64
  %101 = getelementptr inbounds i8, ptr %0, i64 272
  %102 = load i64, ptr %101, align 8, !tbaa !33
  %.not160 = icmp ult i64 %102, %100
  br i1 %.not160, label %.critedge, label %103

103:                                              ; preds = %99
  %104 = load ptr, ptr %.sink, align 8, !tbaa !31
  %105 = getelementptr inbounds i8, ptr %0, i64 264
  %106 = load i64, ptr %105, align 8, !tbaa !34
  %107 = getelementptr inbounds i8, ptr %104, i64 %106
  tail call void @zip64local_putValue_inmemory(ptr noundef %107, i64 noundef 1, i32 noundef 2)
  %108 = getelementptr inbounds i8, ptr %107, i64 2
  %109 = zext nneg i16 %.2149 to i64
  tail call void @zip64local_putValue_inmemory(ptr noundef nonnull %108, i64 noundef %109, i32 noundef 2)
  %110 = getelementptr inbounds i8, ptr %107, i64 4
  br i1 %67, label %111, label %113

111:                                              ; preds = %103
  tail call void @zip64local_putValue_inmemory(ptr noundef nonnull %110, i64 noundef %.0142, i32 noundef 8)
  %112 = getelementptr inbounds i8, ptr %107, i64 12
  br label %113

113:                                              ; preds = %111, %103
  %.0140 = phi ptr [ %112, %111 ], [ %110, %103 ]
  br i1 %66, label %114, label %116

114:                                              ; preds = %113
  tail call void @zip64local_putValue_inmemory(ptr noundef nonnull %.0140, i64 noundef %65, i32 noundef 8)
  %115 = getelementptr inbounds i8, ptr %.0140, i64 8
  br label %116

116:                                              ; preds = %114, %113
  %.1141 = phi ptr [ %115, %114 ], [ %.0140, %113 ]
  %117 = load i64, ptr %95, align 8, !tbaa !30
  %118 = icmp ugt i64 %117, 4294967294
  br i1 %118, label %119, label %120

119:                                              ; preds = %116
  tail call void @zip64local_putValue_inmemory(ptr noundef nonnull %.1141, i64 noundef %117, i32 noundef 8)
  br label %120

120:                                              ; preds = %119, %116
  %121 = load i64, ptr %101, align 8, !tbaa !33
  %122 = sub i64 %121, %100
  store i64 %122, ptr %101, align 8, !tbaa !33
  %123 = load i64, ptr %105, align 8, !tbaa !34
  %124 = add i64 %123, %100
  store i64 %124, ptr %105, align 8, !tbaa !34
  %125 = getelementptr inbounds i8, ptr %0, i64 256
  %126 = load i64, ptr %125, align 8, !tbaa !35
  %127 = add i64 %126, %100
  store i64 %127, ptr %125, align 8, !tbaa !35
  %128 = load ptr, ptr %.sink, align 8, !tbaa !31
  %129 = getelementptr inbounds i8, ptr %128, i64 30
  tail call void @zip64local_putValue_inmemory(ptr noundef nonnull %129, i64 noundef %127, i32 noundef 2)
  br label %130

130:                                              ; preds = %120, %92
  %131 = icmp eq i32 %.3, 0
  br i1 %131, label %133, label %.thread174

.thread174:                                       ; preds = %130
  %132 = load ptr, ptr %.sink, align 8, !tbaa !31
  tail call void @free(ptr noundef %132) #3
  br label %178

133:                                              ; preds = %130
  %134 = getelementptr inbounds i8, ptr %0, i64 96
  %135 = load ptr, ptr %.sink, align 8, !tbaa !31
  %136 = getelementptr inbounds i8, ptr %0, i64 264
  %137 = load i64, ptr %136, align 8, !tbaa !34
  %138 = tail call i32 @add_data_in_datablock(ptr noundef nonnull %134, ptr noundef %135, i64 noundef %137)
  %139 = load ptr, ptr %.sink, align 8, !tbaa !31
  tail call void @free(ptr noundef %139) #3
  %140 = icmp eq i32 %138, 0
  br i1 %140, label %141, label %178

141:                                              ; preds = %133
  %142 = getelementptr inbounds i8, ptr %0, i64 88
  %143 = load ptr, ptr %142, align 8, !tbaa !36
  %144 = tail call i64 @call_ztell64(ptr noundef nonnull %0, ptr noundef %143) #3
  %145 = load ptr, ptr %142, align 8, !tbaa !36
  %146 = load i64, ptr %95, align 8, !tbaa !30
  %147 = add i64 %146, 14
  %148 = tail call i64 @call_zseek64(ptr noundef nonnull %0, ptr noundef %145, i64 noundef %147, i32 noundef 0) #3
  %.not161 = icmp eq i64 %148, 0
  br i1 %.not161, label %149, label %.thread178

149:                                              ; preds = %141
  %150 = load ptr, ptr %142, align 8, !tbaa !36
  %151 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %150, i64 noundef %.0143, i32 noundef 4)
  %or.cond5 = or i1 %67, %66
  br i1 %or.cond5, label %152, label %167

.thread178:                                       ; preds = %141
  %or.cond5180 = or i1 %67, %66
  br i1 %or.cond5180, label %152, label %.thread176

152:                                              ; preds = %.thread178, %149
  %.6182 = phi i32 [ -1, %.thread178 ], [ %151, %149 ]
  %153 = getelementptr inbounds i8, ptr %0, i64 65856
  %154 = load i64, ptr %153, align 8, !tbaa !37
  %.not162 = icmp eq i64 %154, 0
  br i1 %.not162, label %.thread176, label %155

155:                                              ; preds = %152
  %156 = load ptr, ptr %142, align 8, !tbaa !36
  %157 = add i64 %154, 4
  %158 = tail call i64 @call_zseek64(ptr noundef nonnull %0, ptr noundef %156, i64 noundef %157, i32 noundef 0) #3
  %.not163 = icmp eq i64 %158, 0
  %spec.select167 = select i1 %.not163, i32 %.6182, i32 -1
  %159 = icmp eq i32 %spec.select167, 0
  br i1 %159, label %160, label %.thread176

160:                                              ; preds = %155
  %161 = load ptr, ptr %142, align 8, !tbaa !36
  %162 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %161, i64 noundef %.0142, i32 noundef 8)
  %163 = icmp eq i32 %162, 0
  br i1 %163, label %164, label %.thread176

164:                                              ; preds = %160
  %165 = load ptr, ptr %142, align 8, !tbaa !36
  %166 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %165, i64 noundef %65, i32 noundef 8)
  br label %.thread176

167:                                              ; preds = %149
  %168 = icmp eq i32 %151, 0
  br i1 %168, label %169, label %.thread176

169:                                              ; preds = %167
  %170 = load ptr, ptr %142, align 8, !tbaa !36
  %171 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %170, i64 noundef %65, i32 noundef 4)
  %172 = icmp eq i32 %171, 0
  br i1 %172, label %173, label %.thread176

173:                                              ; preds = %169
  %174 = load ptr, ptr %142, align 8, !tbaa !36
  %175 = tail call i32 @zip64local_putValue(ptr noundef nonnull %0, ptr noundef %174, i64 noundef %.0142, i32 noundef 4)
  br label %.thread176

.thread176:                                       ; preds = %.thread178, %167, %155, %152, %169, %173, %164, %160
  %.10 = phi i32 [ %166, %164 ], [ %162, %160 ], [ %175, %173 ], [ %171, %169 ], [ -103, %152 ], [ %spec.select167, %155 ], [ %151, %167 ], [ -1, %.thread178 ]
  %176 = load ptr, ptr %142, align 8, !tbaa !36
  %177 = tail call i64 @call_zseek64(ptr noundef nonnull %0, ptr noundef %176, i64 noundef %144, i32 noundef 0) #3
  %.not164 = icmp eq i64 %177, 0
  %spec.select168 = select i1 %.not164, i32 %.10, i32 -1
  br label %178

178:                                              ; preds = %.thread174, %.thread176, %133
  %.12 = phi i32 [ %spec.select168, %.thread176 ], [ %138, %133 ], [ %.3, %.thread174 ]
  %179 = getelementptr inbounds i8, ptr %0, i64 65936
  %180 = load i64, ptr %179, align 8, !tbaa !38
  %181 = add i64 %180, 1
  store i64 %181, ptr %179, align 8, !tbaa !38
  store i32 0, ptr %6, align 8, !tbaa !5
  br label %.critedge

.critedge:                                        ; preds = %99, %5, %3, %178
  %.1 = phi i32 [ %.12, %178 ], [ -102, %3 ], [ -102, %5 ], [ -103, %99 ]
  ret i32 %.1
}

declare i32 @deflateEnd(ptr noundef) local_unnamed_addr #0

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 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress 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 #3 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !13, i64 112}
!6 = !{!"", !7, i64 0, !9, i64 88, !12, i64 96, !13, i64 112, !14, i64 120, !17, i64 65920, !17, i64 65928, !17, i64 65936, !9, i64 65944}
!7 = !{!"zlib_filefunc64_32_def_s", !8, i64 0, !9, i64 64, !9, i64 72, !9, i64 80}
!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 = !{!"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, !13, i64 168, !13, i64 172, !10, i64 176, !16, i64 65712, !16, i64 65720, !13, i64 65728, !13, i64 65732, !17, i64 65736, !17, i64 65744, !17, i64 65752, !10, i64 65760, !9, i64 65784, !13, i64 65792}
!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, !13, i64 128}
!19 = !{!6, !13, i64 288}
!20 = !{!6, !13, i64 292}
!21 = !{!6, !13, i64 152}
!22 = !{!6, !9, i64 144}
!23 = !{!6, !16, i64 160}
!24 = !{!6, !13, i64 236}
!25 = !{!6, !13, i64 232}
!26 = !{!6, !16, i64 65840}
!27 = !{!6, !17, i64 65872}
!28 = !{!6, !17, i64 65864}
!29 = !{!6, !13, i64 65912}
!30 = !{!6, !17, i64 240}
!31 = !{!6, !9, i64 248}
!32 = !{!6, !13, i64 208}
!33 = !{!6, !16, i64 272}
!34 = !{!6, !16, i64 264}
!35 = !{!6, !16, i64 256}
!36 = !{!6, !9, i64 88}
!37 = !{!6, !17, i64 65856}
!38 = !{!6, !17, i64 65936}


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