; LLVM IR from modlfo/AudioEngine :: AudioEngine/JuceLibraryCode/modules/juce_core/zip/zlib (deflate)

; 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.config_s = type { i16, i16, i16, i16, ptr }
%struct.z_stream_s = type { ptr, i32, i64, ptr, i32, i64, ptr, ptr, ptr, ptr, ptr, i32, i64, i64 }
%struct.internal_state = type { ptr, i32, ptr, i64, ptr, i32, i32, ptr, i32, i8, i32, i32, i32, i32, ptr, i64, ptr, ptr, i32, i32, i32, i32, i32, i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [573 x %struct.ct_data_s], [61 x %struct.ct_data_s], [39 x %struct.ct_data_s], %struct.tree_desc_s, %struct.tree_desc_s, %struct.tree_desc_s, [16 x i16], [573 x i32], i32, i32, [573 x i8], ptr, i32, i32, ptr, i64, i64, i32, i32, i16, i32 }
%struct.ct_data_s = type { %union.anon, %union.anon.0 }
%union.anon = type { i16 }
%union.anon.0 = type { i16 }
%struct.tree_desc_s = type { ptr, i32, ptr }
%struct.gz_header_s = type { i32, i64, i32, i32, ptr, i32, i32, ptr, i32, ptr, i32, i32, i32 }

@z_errmsg = external constant [10 x ptr], align 16
@configuration_table = external hidden constant [10 x %struct.config_s], align 16

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

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

declare i64 @z_adler32(i64 noundef, ptr noundef, i32 noundef) #1

declare i64 @z_crc32(i64 noundef, ptr noundef, i32 noundef) #1

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

19:                                               ; preds = %2
  %20 = load ptr, ptr %4, align 8, !tbaa !5
  %21 = getelementptr inbounds %struct.z_stream_s, ptr %20, i32 0, i32 7
  %22 = load ptr, ptr %21, align 8, !tbaa !11
  %23 = icmp eq ptr %22, null
  br i1 %23, label %30, label %24

24:                                               ; preds = %19
  %25 = load i32, ptr %5, align 4, !tbaa !9
  %26 = icmp sgt i32 %25, 4
  br i1 %26, label %30, label %27

27:                                               ; preds = %24
  %28 = load i32, ptr %5, align 4, !tbaa !9
  %29 = icmp slt i32 %28, 0
  br i1 %29, label %30, label %31

30:                                               ; preds = %27, %24, %19, %2
  store i32 -2, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %1351

31:                                               ; preds = %27
  %32 = load ptr, ptr %4, align 8, !tbaa !5
  %33 = getelementptr inbounds %struct.z_stream_s, ptr %32, i32 0, i32 7
  %34 = load ptr, ptr %33, align 8, !tbaa !11
  store ptr %34, ptr %7, align 8, !tbaa !5
  %35 = load ptr, ptr %4, align 8, !tbaa !5
  %36 = getelementptr inbounds %struct.z_stream_s, ptr %35, i32 0, i32 3
  %37 = load ptr, ptr %36, align 8, !tbaa !14
  %38 = icmp eq ptr %37, null
  br i1 %38, label %57, label %39

39:                                               ; preds = %31
  %40 = load ptr, ptr %4, align 8, !tbaa !5
  %41 = getelementptr inbounds %struct.z_stream_s, ptr %40, i32 0, i32 0
  %42 = load ptr, ptr %41, align 8, !tbaa !15
  %43 = icmp eq ptr %42, null
  br i1 %43, label %44, label %49

44:                                               ; preds = %39
  %45 = load ptr, ptr %4, align 8, !tbaa !5
  %46 = getelementptr inbounds %struct.z_stream_s, ptr %45, i32 0, i32 1
  %47 = load i32, ptr %46, align 8, !tbaa !16
  %48 = icmp ne i32 %47, 0
  br i1 %48, label %57, label %49

49:                                               ; preds = %44, %39
  %50 = load ptr, ptr %7, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.internal_state, ptr %50, i32 0, i32 1
  %52 = load i32, ptr %51, align 8, !tbaa !17
  %53 = icmp eq i32 %52, 666
  br i1 %53, label %54, label %61

54:                                               ; preds = %49
  %55 = load i32, ptr %5, align 4, !tbaa !9
  %56 = icmp ne i32 %55, 4
  br i1 %56, label %57, label %61

57:                                               ; preds = %54, %44, %31
  %58 = load ptr, ptr getelementptr inbounds ([10 x ptr], ptr @z_errmsg, i64 0, i64 4), align 16, !tbaa !5
  %59 = load ptr, ptr %4, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.z_stream_s, ptr %59, i32 0, i32 6
  store ptr %58, ptr %60, align 8, !tbaa !21
  store i32 -2, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %1351

61:                                               ; preds = %54, %49
  %62 = load ptr, ptr %4, align 8, !tbaa !5
  %63 = getelementptr inbounds %struct.z_stream_s, ptr %62, i32 0, i32 4
  %64 = load i32, ptr %63, align 8, !tbaa !22
  %65 = icmp eq i32 %64, 0
  br i1 %65, label %66, label %70

66:                                               ; preds = %61
  %67 = load ptr, ptr getelementptr inbounds ([10 x ptr], ptr @z_errmsg, i64 0, i64 7), align 8, !tbaa !5
  %68 = load ptr, ptr %4, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.z_stream_s, ptr %68, i32 0, i32 6
  store ptr %67, ptr %69, align 8, !tbaa !21
  store i32 -5, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %1351

70:                                               ; preds = %61
  %71 = load ptr, ptr %4, align 8, !tbaa !5
  %72 = load ptr, ptr %7, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.internal_state, ptr %72, i32 0, i32 0
  store ptr %71, ptr %73, align 8, !tbaa !23
  %74 = load ptr, ptr %7, align 8, !tbaa !5
  %75 = getelementptr inbounds %struct.internal_state, ptr %74, i32 0, i32 10
  %76 = load i32, ptr %75, align 8, !tbaa !24
  store i32 %76, ptr %6, align 4, !tbaa !9
  %77 = load i32, ptr %5, align 4, !tbaa !9
  %78 = load ptr, ptr %7, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.internal_state, ptr %78, i32 0, i32 10
  store i32 %77, ptr %79, align 8, !tbaa !24
  %80 = load ptr, ptr %7, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.internal_state, ptr %80, i32 0, i32 1
  %82 = load i32, ptr %81, align 8, !tbaa !17
  %83 = icmp eq i32 %82, 42
  br i1 %83, label %84, label %524

84:                                               ; preds = %70
  %85 = load ptr, ptr %7, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct.internal_state, ptr %85, i32 0, i32 6
  %87 = load i32, ptr %86, align 4, !tbaa !25
  %88 = icmp eq i32 %87, 2
  br i1 %88, label %89, label %447

89:                                               ; preds = %84
  %90 = call i64 @z_crc32(i64 noundef 0, ptr noundef null, i32 noundef 0)
  %91 = load ptr, ptr %4, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct.z_stream_s, ptr %91, i32 0, i32 12
  store i64 %90, ptr %92, align 8, !tbaa !26
  %93 = load ptr, ptr %7, align 8, !tbaa !5
  %94 = getelementptr inbounds %struct.internal_state, ptr %93, i32 0, i32 2
  %95 = load ptr, ptr %94, align 8, !tbaa !27
  %96 = load ptr, ptr %7, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct.internal_state, ptr %96, i32 0, i32 5
  %98 = load i32, ptr %97, align 8, !tbaa !28
  %99 = add i32 %98, 1
  store i32 %99, ptr %97, align 8, !tbaa !28
  %100 = zext i32 %98 to i64
  %101 = getelementptr inbounds i8, ptr %95, i64 %100
  store i8 31, ptr %101, align 1, !tbaa !29
  %102 = load ptr, ptr %7, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct.internal_state, ptr %102, i32 0, i32 2
  %104 = load ptr, ptr %103, align 8, !tbaa !27
  %105 = load ptr, ptr %7, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.internal_state, ptr %105, i32 0, i32 5
  %107 = load i32, ptr %106, align 8, !tbaa !28
  %108 = add i32 %107, 1
  store i32 %108, ptr %106, align 8, !tbaa !28
  %109 = zext i32 %107 to i64
  %110 = getelementptr inbounds i8, ptr %104, i64 %109
  store i8 -117, ptr %110, align 1, !tbaa !29
  %111 = load ptr, ptr %7, align 8, !tbaa !5
  %112 = getelementptr inbounds %struct.internal_state, ptr %111, i32 0, i32 2
  %113 = load ptr, ptr %112, align 8, !tbaa !27
  %114 = load ptr, ptr %7, align 8, !tbaa !5
  %115 = getelementptr inbounds %struct.internal_state, ptr %114, i32 0, i32 5
  %116 = load i32, ptr %115, align 8, !tbaa !28
  %117 = add i32 %116, 1
  store i32 %117, ptr %115, align 8, !tbaa !28
  %118 = zext i32 %116 to i64
  %119 = getelementptr inbounds i8, ptr %113, i64 %118
  store i8 8, ptr %119, align 1, !tbaa !29
  %120 = load ptr, ptr %7, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.internal_state, ptr %120, i32 0, i32 7
  %122 = load ptr, ptr %121, align 8, !tbaa !30
  %123 = icmp eq ptr %122, null
  br i1 %123, label %124, label %212

124:                                              ; preds = %89
  %125 = load ptr, ptr %7, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.internal_state, ptr %125, i32 0, i32 2
  %127 = load ptr, ptr %126, align 8, !tbaa !27
  %128 = load ptr, ptr %7, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.internal_state, ptr %128, i32 0, i32 5
  %130 = load i32, ptr %129, align 8, !tbaa !28
  %131 = add i32 %130, 1
  store i32 %131, ptr %129, align 8, !tbaa !28
  %132 = zext i32 %130 to i64
  %133 = getelementptr inbounds i8, ptr %127, i64 %132
  store i8 0, ptr %133, align 1, !tbaa !29
  %134 = load ptr, ptr %7, align 8, !tbaa !5
  %135 = getelementptr inbounds %struct.internal_state, ptr %134, i32 0, i32 2
  %136 = load ptr, ptr %135, align 8, !tbaa !27
  %137 = load ptr, ptr %7, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.internal_state, ptr %137, i32 0, i32 5
  %139 = load i32, ptr %138, align 8, !tbaa !28
  %140 = add i32 %139, 1
  store i32 %140, ptr %138, align 8, !tbaa !28
  %141 = zext i32 %139 to i64
  %142 = getelementptr inbounds i8, ptr %136, i64 %141
  store i8 0, ptr %142, align 1, !tbaa !29
  %143 = load ptr, ptr %7, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.internal_state, ptr %143, i32 0, i32 2
  %145 = load ptr, ptr %144, align 8, !tbaa !27
  %146 = load ptr, ptr %7, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.internal_state, ptr %146, i32 0, i32 5
  %148 = load i32, ptr %147, align 8, !tbaa !28
  %149 = add i32 %148, 1
  store i32 %149, ptr %147, align 8, !tbaa !28
  %150 = zext i32 %148 to i64
  %151 = getelementptr inbounds i8, ptr %145, i64 %150
  store i8 0, ptr %151, align 1, !tbaa !29
  %152 = load ptr, ptr %7, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.internal_state, ptr %152, i32 0, i32 2
  %154 = load ptr, ptr %153, align 8, !tbaa !27
  %155 = load ptr, ptr %7, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.internal_state, ptr %155, i32 0, i32 5
  %157 = load i32, ptr %156, align 8, !tbaa !28
  %158 = add i32 %157, 1
  store i32 %158, ptr %156, align 8, !tbaa !28
  %159 = zext i32 %157 to i64
  %160 = getelementptr inbounds i8, ptr %154, i64 %159
  store i8 0, ptr %160, align 1, !tbaa !29
  %161 = load ptr, ptr %7, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.internal_state, ptr %161, i32 0, i32 2
  %163 = load ptr, ptr %162, align 8, !tbaa !27
  %164 = load ptr, ptr %7, align 8, !tbaa !5
  %165 = getelementptr inbounds %struct.internal_state, ptr %164, i32 0, i32 5
  %166 = load i32, ptr %165, align 8, !tbaa !28
  %167 = add i32 %166, 1
  store i32 %167, ptr %165, align 8, !tbaa !28
  %168 = zext i32 %166 to i64
  %169 = getelementptr inbounds i8, ptr %163, i64 %168
  store i8 0, ptr %169, align 1, !tbaa !29
  %170 = load ptr, ptr %7, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.internal_state, ptr %170, i32 0, i32 33
  %172 = load i32, ptr %171, align 4, !tbaa !31
  %173 = icmp eq i32 %172, 9
  br i1 %173, label %174, label %175

174:                                              ; preds = %124
  br label %189

175:                                              ; preds = %124
  %176 = load ptr, ptr %7, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.internal_state, ptr %176, i32 0, i32 34
  %178 = load i32, ptr %177, align 8, !tbaa !32
  %179 = icmp sge i32 %178, 2
  br i1 %179, label %185, label %180

180:                                              ; preds = %175
  %181 = load ptr, ptr %7, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.internal_state, ptr %181, i32 0, i32 33
  %183 = load i32, ptr %182, align 4, !tbaa !31
  %184 = icmp slt i32 %183, 2
  br label %185

185:                                              ; preds = %180, %175
  %186 = phi i1 [ true, %175 ], [ %184, %180 ]
  %187 = zext i1 %186 to i64
  %188 = select i1 %186, i32 4, i32 0
  br label %189

189:                                              ; preds = %185, %174
  %190 = phi i32 [ 2, %174 ], [ %188, %185 ]
  %191 = trunc i32 %190 to i8
  %192 = load ptr, ptr %7, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.internal_state, ptr %192, i32 0, i32 2
  %194 = load ptr, ptr %193, align 8, !tbaa !27
  %195 = load ptr, ptr %7, align 8, !tbaa !5
  %196 = getelementptr inbounds %struct.internal_state, ptr %195, i32 0, i32 5
  %197 = load i32, ptr %196, align 8, !tbaa !28
  %198 = add i32 %197, 1
  store i32 %198, ptr %196, align 8, !tbaa !28
  %199 = zext i32 %197 to i64
  %200 = getelementptr inbounds i8, ptr %194, i64 %199
  store i8 %191, ptr %200, align 1, !tbaa !29
  %201 = load ptr, ptr %7, align 8, !tbaa !5
  %202 = getelementptr inbounds %struct.internal_state, ptr %201, i32 0, i32 2
  %203 = load ptr, ptr %202, align 8, !tbaa !27
  %204 = load ptr, ptr %7, align 8, !tbaa !5
  %205 = getelementptr inbounds %struct.internal_state, ptr %204, i32 0, i32 5
  %206 = load i32, ptr %205, align 8, !tbaa !28
  %207 = add i32 %206, 1
  store i32 %207, ptr %205, align 8, !tbaa !28
  %208 = zext i32 %206 to i64
  %209 = getelementptr inbounds i8, ptr %203, i64 %208
  store i8 3, ptr %209, align 1, !tbaa !29
  %210 = load ptr, ptr %7, align 8, !tbaa !5
  %211 = getelementptr inbounds %struct.internal_state, ptr %210, i32 0, i32 1
  store i32 113, ptr %211, align 8, !tbaa !17
  br label %446

212:                                              ; preds = %89
  %213 = load ptr, ptr %7, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.internal_state, ptr %213, i32 0, i32 7
  %215 = load ptr, ptr %214, align 8, !tbaa !30
  %216 = getelementptr inbounds %struct.gz_header_s, ptr %215, i32 0, i32 0
  %217 = load i32, ptr %216, align 8, !tbaa !33
  %218 = icmp ne i32 %217, 0
  %219 = zext i1 %218 to i64
  %220 = select i1 %218, i32 1, i32 0
  %221 = load ptr, ptr %7, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.internal_state, ptr %221, i32 0, i32 7
  %223 = load ptr, ptr %222, align 8, !tbaa !30
  %224 = getelementptr inbounds %struct.gz_header_s, ptr %223, i32 0, i32 11
  %225 = load i32, ptr %224, align 4, !tbaa !35
  %226 = icmp ne i32 %225, 0
  %227 = zext i1 %226 to i64
  %228 = select i1 %226, i32 2, i32 0
  %229 = add nsw i32 %220, %228
  %230 = load ptr, ptr %7, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.internal_state, ptr %230, i32 0, i32 7
  %232 = load ptr, ptr %231, align 8, !tbaa !30
  %233 = getelementptr inbounds %struct.gz_header_s, ptr %232, i32 0, i32 4
  %234 = load ptr, ptr %233, align 8, !tbaa !36
  %235 = icmp eq ptr %234, null
  %236 = zext i1 %235 to i64
  %237 = select i1 %235, i32 0, i32 4
  %238 = add nsw i32 %229, %237
  %239 = load ptr, ptr %7, align 8, !tbaa !5
  %240 = getelementptr inbounds %struct.internal_state, ptr %239, i32 0, i32 7
  %241 = load ptr, ptr %240, align 8, !tbaa !30
  %242 = getelementptr inbounds %struct.gz_header_s, ptr %241, i32 0, i32 7
  %243 = load ptr, ptr %242, align 8, !tbaa !37
  %244 = icmp eq ptr %243, null
  %245 = zext i1 %244 to i64
  %246 = select i1 %244, i32 0, i32 8
  %247 = add nsw i32 %238, %246
  %248 = load ptr, ptr %7, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.internal_state, ptr %248, i32 0, i32 7
  %250 = load ptr, ptr %249, align 8, !tbaa !30
  %251 = getelementptr inbounds %struct.gz_header_s, ptr %250, i32 0, i32 9
  %252 = load ptr, ptr %251, align 8, !tbaa !38
  %253 = icmp eq ptr %252, null
  %254 = zext i1 %253 to i64
  %255 = select i1 %253, i32 0, i32 16
  %256 = add nsw i32 %247, %255
  %257 = trunc i32 %256 to i8
  %258 = load ptr, ptr %7, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.internal_state, ptr %258, i32 0, i32 2
  %260 = load ptr, ptr %259, align 8, !tbaa !27
  %261 = load ptr, ptr %7, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.internal_state, ptr %261, i32 0, i32 5
  %263 = load i32, ptr %262, align 8, !tbaa !28
  %264 = add i32 %263, 1
  store i32 %264, ptr %262, align 8, !tbaa !28
  %265 = zext i32 %263 to i64
  %266 = getelementptr inbounds i8, ptr %260, i64 %265
  store i8 %257, ptr %266, align 1, !tbaa !29
  %267 = load ptr, ptr %7, align 8, !tbaa !5
  %268 = getelementptr inbounds %struct.internal_state, ptr %267, i32 0, i32 7
  %269 = load ptr, ptr %268, align 8, !tbaa !30
  %270 = getelementptr inbounds %struct.gz_header_s, ptr %269, i32 0, i32 1
  %271 = load i64, ptr %270, align 8, !tbaa !39
  %272 = and i64 %271, 255
  %273 = trunc i64 %272 to i8
  %274 = load ptr, ptr %7, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.internal_state, ptr %274, i32 0, i32 2
  %276 = load ptr, ptr %275, align 8, !tbaa !27
  %277 = load ptr, ptr %7, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.internal_state, ptr %277, i32 0, i32 5
  %279 = load i32, ptr %278, align 8, !tbaa !28
  %280 = add i32 %279, 1
  store i32 %280, ptr %278, align 8, !tbaa !28
  %281 = zext i32 %279 to i64
  %282 = getelementptr inbounds i8, ptr %276, i64 %281
  store i8 %273, ptr %282, align 1, !tbaa !29
  %283 = load ptr, ptr %7, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.internal_state, ptr %283, i32 0, i32 7
  %285 = load ptr, ptr %284, align 8, !tbaa !30
  %286 = getelementptr inbounds %struct.gz_header_s, ptr %285, i32 0, i32 1
  %287 = load i64, ptr %286, align 8, !tbaa !39
  %288 = lshr i64 %287, 8
  %289 = and i64 %288, 255
  %290 = trunc i64 %289 to i8
  %291 = load ptr, ptr %7, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.internal_state, ptr %291, i32 0, i32 2
  %293 = load ptr, ptr %292, align 8, !tbaa !27
  %294 = load ptr, ptr %7, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.internal_state, ptr %294, i32 0, i32 5
  %296 = load i32, ptr %295, align 8, !tbaa !28
  %297 = add i32 %296, 1
  store i32 %297, ptr %295, align 8, !tbaa !28
  %298 = zext i32 %296 to i64
  %299 = getelementptr inbounds i8, ptr %293, i64 %298
  store i8 %290, ptr %299, align 1, !tbaa !29
  %300 = load ptr, ptr %7, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.internal_state, ptr %300, i32 0, i32 7
  %302 = load ptr, ptr %301, align 8, !tbaa !30
  %303 = getelementptr inbounds %struct.gz_header_s, ptr %302, i32 0, i32 1
  %304 = load i64, ptr %303, align 8, !tbaa !39
  %305 = lshr i64 %304, 16
  %306 = and i64 %305, 255
  %307 = trunc i64 %306 to i8
  %308 = load ptr, ptr %7, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.internal_state, ptr %308, i32 0, i32 2
  %310 = load ptr, ptr %309, align 8, !tbaa !27
  %311 = load ptr, ptr %7, align 8, !tbaa !5
  %312 = getelementptr inbounds %struct.internal_state, ptr %311, i32 0, i32 5
  %313 = load i32, ptr %312, align 8, !tbaa !28
  %314 = add i32 %313, 1
  store i32 %314, ptr %312, align 8, !tbaa !28
  %315 = zext i32 %313 to i64
  %316 = getelementptr inbounds i8, ptr %310, i64 %315
  store i8 %307, ptr %316, align 1, !tbaa !29
  %317 = load ptr, ptr %7, align 8, !tbaa !5
  %318 = getelementptr inbounds %struct.internal_state, ptr %317, i32 0, i32 7
  %319 = load ptr, ptr %318, align 8, !tbaa !30
  %320 = getelementptr inbounds %struct.gz_header_s, ptr %319, i32 0, i32 1
  %321 = load i64, ptr %320, align 8, !tbaa !39
  %322 = lshr i64 %321, 24
  %323 = and i64 %322, 255
  %324 = trunc i64 %323 to i8
  %325 = load ptr, ptr %7, align 8, !tbaa !5
  %326 = getelementptr inbounds %struct.internal_state, ptr %325, i32 0, i32 2
  %327 = load ptr, ptr %326, align 8, !tbaa !27
  %328 = load ptr, ptr %7, align 8, !tbaa !5
  %329 = getelementptr inbounds %struct.internal_state, ptr %328, i32 0, i32 5
  %330 = load i32, ptr %329, align 8, !tbaa !28
  %331 = add i32 %330, 1
  store i32 %331, ptr %329, align 8, !tbaa !28
  %332 = zext i32 %330 to i64
  %333 = getelementptr inbounds i8, ptr %327, i64 %332
  store i8 %324, ptr %333, align 1, !tbaa !29
  %334 = load ptr, ptr %7, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.internal_state, ptr %334, i32 0, i32 33
  %336 = load i32, ptr %335, align 4, !tbaa !31
  %337 = icmp eq i32 %336, 9
  br i1 %337, label %338, label %339

338:                                              ; preds = %212
  br label %353

339:                                              ; preds = %212
  %340 = load ptr, ptr %7, align 8, !tbaa !5
  %341 = getelementptr inbounds %struct.internal_state, ptr %340, i32 0, i32 34
  %342 = load i32, ptr %341, align 8, !tbaa !32
  %343 = icmp sge i32 %342, 2
  br i1 %343, label %349, label %344

344:                                              ; preds = %339
  %345 = load ptr, ptr %7, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.internal_state, ptr %345, i32 0, i32 33
  %347 = load i32, ptr %346, align 4, !tbaa !31
  %348 = icmp slt i32 %347, 2
  br label %349

349:                                              ; preds = %344, %339
  %350 = phi i1 [ true, %339 ], [ %348, %344 ]
  %351 = zext i1 %350 to i64
  %352 = select i1 %350, i32 4, i32 0
  br label %353

353:                                              ; preds = %349, %338
  %354 = phi i32 [ 2, %338 ], [ %352, %349 ]
  %355 = trunc i32 %354 to i8
  %356 = load ptr, ptr %7, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.internal_state, ptr %356, i32 0, i32 2
  %358 = load ptr, ptr %357, align 8, !tbaa !27
  %359 = load ptr, ptr %7, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.internal_state, ptr %359, i32 0, i32 5
  %361 = load i32, ptr %360, align 8, !tbaa !28
  %362 = add i32 %361, 1
  store i32 %362, ptr %360, align 8, !tbaa !28
  %363 = zext i32 %361 to i64
  %364 = getelementptr inbounds i8, ptr %358, i64 %363
  store i8 %355, ptr %364, align 1, !tbaa !29
  %365 = load ptr, ptr %7, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.internal_state, ptr %365, i32 0, i32 7
  %367 = load ptr, ptr %366, align 8, !tbaa !30
  %368 = getelementptr inbounds %struct.gz_header_s, ptr %367, i32 0, i32 3
  %369 = load i32, ptr %368, align 4, !tbaa !40
  %370 = and i32 %369, 255
  %371 = trunc i32 %370 to i8
  %372 = load ptr, ptr %7, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.internal_state, ptr %372, i32 0, i32 2
  %374 = load ptr, ptr %373, align 8, !tbaa !27
  %375 = load ptr, ptr %7, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.internal_state, ptr %375, i32 0, i32 5
  %377 = load i32, ptr %376, align 8, !tbaa !28
  %378 = add i32 %377, 1
  store i32 %378, ptr %376, align 8, !tbaa !28
  %379 = zext i32 %377 to i64
  %380 = getelementptr inbounds i8, ptr %374, i64 %379
  store i8 %371, ptr %380, align 1, !tbaa !29
  %381 = load ptr, ptr %7, align 8, !tbaa !5
  %382 = getelementptr inbounds %struct.internal_state, ptr %381, i32 0, i32 7
  %383 = load ptr, ptr %382, align 8, !tbaa !30
  %384 = getelementptr inbounds %struct.gz_header_s, ptr %383, i32 0, i32 4
  %385 = load ptr, ptr %384, align 8, !tbaa !36
  %386 = icmp ne ptr %385, null
  br i1 %386, label %387, label %421

387:                                              ; preds = %353
  %388 = load ptr, ptr %7, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.internal_state, ptr %388, i32 0, i32 7
  %390 = load ptr, ptr %389, align 8, !tbaa !30
  %391 = getelementptr inbounds %struct.gz_header_s, ptr %390, i32 0, i32 5
  %392 = load i32, ptr %391, align 8, !tbaa !41
  %393 = and i32 %392, 255
  %394 = trunc i32 %393 to i8
  %395 = load ptr, ptr %7, align 8, !tbaa !5
  %396 = getelementptr inbounds %struct.internal_state, ptr %395, i32 0, i32 2
  %397 = load ptr, ptr %396, align 8, !tbaa !27
  %398 = load ptr, ptr %7, align 8, !tbaa !5
  %399 = getelementptr inbounds %struct.internal_state, ptr %398, i32 0, i32 5
  %400 = load i32, ptr %399, align 8, !tbaa !28
  %401 = add i32 %400, 1
  store i32 %401, ptr %399, align 8, !tbaa !28
  %402 = zext i32 %400 to i64
  %403 = getelementptr inbounds i8, ptr %397, i64 %402
  store i8 %394, ptr %403, align 1, !tbaa !29
  %404 = load ptr, ptr %7, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct.internal_state, ptr %404, i32 0, i32 7
  %406 = load ptr, ptr %405, align 8, !tbaa !30
  %407 = getelementptr inbounds %struct.gz_header_s, ptr %406, i32 0, i32 5
  %408 = load i32, ptr %407, align 8, !tbaa !41
  %409 = lshr i32 %408, 8
  %410 = and i32 %409, 255
  %411 = trunc i32 %410 to i8
  %412 = load ptr, ptr %7, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.internal_state, ptr %412, i32 0, i32 2
  %414 = load ptr, ptr %413, align 8, !tbaa !27
  %415 = load ptr, ptr %7, align 8, !tbaa !5
  %416 = getelementptr inbounds %struct.internal_state, ptr %415, i32 0, i32 5
  %417 = load i32, ptr %416, align 8, !tbaa !28
  %418 = add i32 %417, 1
  store i32 %418, ptr %416, align 8, !tbaa !28
  %419 = zext i32 %417 to i64
  %420 = getelementptr inbounds i8, ptr %414, i64 %419
  store i8 %411, ptr %420, align 1, !tbaa !29
  br label %421

421:                                              ; preds = %387, %353
  %422 = load ptr, ptr %7, align 8, !tbaa !5
  %423 = getelementptr inbounds %struct.internal_state, ptr %422, i32 0, i32 7
  %424 = load ptr, ptr %423, align 8, !tbaa !30
  %425 = getelementptr inbounds %struct.gz_header_s, ptr %424, i32 0, i32 11
  %426 = load i32, ptr %425, align 4, !tbaa !35
  %427 = icmp ne i32 %426, 0
  br i1 %427, label %428, label %441

428:                                              ; preds = %421
  %429 = load ptr, ptr %4, align 8, !tbaa !5
  %430 = getelementptr inbounds %struct.z_stream_s, ptr %429, i32 0, i32 12
  %431 = load i64, ptr %430, align 8, !tbaa !26
  %432 = load ptr, ptr %7, align 8, !tbaa !5
  %433 = getelementptr inbounds %struct.internal_state, ptr %432, i32 0, i32 2
  %434 = load ptr, ptr %433, align 8, !tbaa !27
  %435 = load ptr, ptr %7, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.internal_state, ptr %435, i32 0, i32 5
  %437 = load i32, ptr %436, align 8, !tbaa !28
  %438 = call i64 @z_crc32(i64 noundef %431, ptr noundef %434, i32 noundef %437)
  %439 = load ptr, ptr %4, align 8, !tbaa !5
  %440 = getelementptr inbounds %struct.z_stream_s, ptr %439, i32 0, i32 12
  store i64 %438, ptr %440, align 8, !tbaa !26
  br label %441

441:                                              ; preds = %428, %421
  %442 = load ptr, ptr %7, align 8, !tbaa !5
  %443 = getelementptr inbounds %struct.internal_state, ptr %442, i32 0, i32 8
  store i32 0, ptr %443, align 8, !tbaa !42
  %444 = load ptr, ptr %7, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.internal_state, ptr %444, i32 0, i32 1
  store i32 69, ptr %445, align 8, !tbaa !17
  br label %446

446:                                              ; preds = %441, %189
  br label %523

447:                                              ; preds = %84
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #4
  %448 = load ptr, ptr %7, align 8, !tbaa !5
  %449 = getelementptr inbounds %struct.internal_state, ptr %448, i32 0, i32 12
  %450 = load i32, ptr %449, align 8, !tbaa !43
  %451 = sub i32 %450, 8
  %452 = shl i32 %451, 4
  %453 = add i32 8, %452
  %454 = shl i32 %453, 8
  store i32 %454, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #4
  %455 = load ptr, ptr %7, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.internal_state, ptr %455, i32 0, i32 34
  %457 = load i32, ptr %456, align 8, !tbaa !32
  %458 = icmp sge i32 %457, 2
  br i1 %458, label %464, label %459

459:                                              ; preds = %447
  %460 = load ptr, ptr %7, align 8, !tbaa !5
  %461 = getelementptr inbounds %struct.internal_state, ptr %460, i32 0, i32 33
  %462 = load i32, ptr %461, align 4, !tbaa !31
  %463 = icmp slt i32 %462, 2
  br i1 %463, label %464, label %465

464:                                              ; preds = %459, %447
  store i32 0, ptr %10, align 4, !tbaa !9
  br label %480

465:                                              ; preds = %459
  %466 = load ptr, ptr %7, align 8, !tbaa !5
  %467 = getelementptr inbounds %struct.internal_state, ptr %466, i32 0, i32 33
  %468 = load i32, ptr %467, align 4, !tbaa !31
  %469 = icmp slt i32 %468, 6
  br i1 %469, label %470, label %471

470:                                              ; preds = %465
  store i32 1, ptr %10, align 4, !tbaa !9
  br label %479

471:                                              ; preds = %465
  %472 = load ptr, ptr %7, align 8, !tbaa !5
  %473 = getelementptr inbounds %struct.internal_state, ptr %472, i32 0, i32 33
  %474 = load i32, ptr %473, align 4, !tbaa !31
  %475 = icmp eq i32 %474, 6
  br i1 %475, label %476, label %477

476:                                              ; preds = %471
  store i32 2, ptr %10, align 4, !tbaa !9
  br label %478

477:                                              ; preds = %471
  store i32 3, ptr %10, align 4, !tbaa !9
  br label %478

478:                                              ; preds = %477, %476
  br label %479

479:                                              ; preds = %478, %470
  br label %480

480:                                              ; preds = %479, %464
  %481 = load i32, ptr %10, align 4, !tbaa !9
  %482 = shl i32 %481, 6
  %483 = load i32, ptr %9, align 4, !tbaa !9
  %484 = or i32 %483, %482
  store i32 %484, ptr %9, align 4, !tbaa !9
  %485 = load ptr, ptr %7, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.internal_state, ptr %485, i32 0, i32 27
  %487 = load i32, ptr %486, align 4, !tbaa !44
  %488 = icmp ne i32 %487, 0
  br i1 %488, label %489, label %492

489:                                              ; preds = %480
  %490 = load i32, ptr %9, align 4, !tbaa !9
  %491 = or i32 %490, 32
  store i32 %491, ptr %9, align 4, !tbaa !9
  br label %492

492:                                              ; preds = %489, %480
  %493 = load i32, ptr %9, align 4, !tbaa !9
  %494 = urem i32 %493, 31
  %495 = sub i32 31, %494
  %496 = load i32, ptr %9, align 4, !tbaa !9
  %497 = add i32 %496, %495
  store i32 %497, ptr %9, align 4, !tbaa !9
  %498 = load ptr, ptr %7, align 8, !tbaa !5
  %499 = getelementptr inbounds %struct.internal_state, ptr %498, i32 0, i32 1
  store i32 113, ptr %499, align 8, !tbaa !17
  %500 = load ptr, ptr %7, align 8, !tbaa !5
  %501 = load i32, ptr %9, align 4, !tbaa !9
  call void @putShortMSB(ptr noundef %500, i32 noundef %501)
  %502 = load ptr, ptr %7, align 8, !tbaa !5
  %503 = getelementptr inbounds %struct.internal_state, ptr %502, i32 0, i32 27
  %504 = load i32, ptr %503, align 4, !tbaa !44
  %505 = icmp ne i32 %504, 0
  br i1 %505, label %506, label %519

506:                                              ; preds = %492
  %507 = load ptr, ptr %7, align 8, !tbaa !5
  %508 = load ptr, ptr %4, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.z_stream_s, ptr %508, i32 0, i32 12
  %510 = load i64, ptr %509, align 8, !tbaa !26
  %511 = lshr i64 %510, 16
  %512 = trunc i64 %511 to i32
  call void @putShortMSB(ptr noundef %507, i32 noundef %512)
  %513 = load ptr, ptr %7, align 8, !tbaa !5
  %514 = load ptr, ptr %4, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.z_stream_s, ptr %514, i32 0, i32 12
  %516 = load i64, ptr %515, align 8, !tbaa !26
  %517 = and i64 %516, 65535
  %518 = trunc i64 %517 to i32
  call void @putShortMSB(ptr noundef %513, i32 noundef %518)
  br label %519

519:                                              ; preds = %506, %492
  %520 = call i64 @z_adler32(i64 noundef 0, ptr noundef null, i32 noundef 0)
  %521 = load ptr, ptr %4, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.z_stream_s, ptr %521, i32 0, i32 12
  store i64 %520, ptr %522, align 8, !tbaa !26
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #4
  br label %523

523:                                              ; preds = %519, %446
  br label %524

524:                                              ; preds = %523, %70
  %525 = load ptr, ptr %7, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.internal_state, ptr %525, i32 0, i32 1
  %527 = load i32, ptr %526, align 8, !tbaa !17
  %528 = icmp eq i32 %527, 69
  br i1 %528, label %529, label %682

529:                                              ; preds = %524
  %530 = load ptr, ptr %7, align 8, !tbaa !5
  %531 = getelementptr inbounds %struct.internal_state, ptr %530, i32 0, i32 7
  %532 = load ptr, ptr %531, align 8, !tbaa !30
  %533 = getelementptr inbounds %struct.gz_header_s, ptr %532, i32 0, i32 4
  %534 = load ptr, ptr %533, align 8, !tbaa !36
  %535 = icmp ne ptr %534, null
  br i1 %535, label %536, label %678

536:                                              ; preds = %529
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #4
  %537 = load ptr, ptr %7, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.internal_state, ptr %537, i32 0, i32 5
  %539 = load i32, ptr %538, align 8, !tbaa !28
  store i32 %539, ptr %11, align 4, !tbaa !9
  br label %540

540:                                              ; preds = %606, %536
  %541 = load ptr, ptr %7, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.internal_state, ptr %541, i32 0, i32 8
  %543 = load i32, ptr %542, align 8, !tbaa !42
  %544 = load ptr, ptr %7, align 8, !tbaa !5
  %545 = getelementptr inbounds %struct.internal_state, ptr %544, i32 0, i32 7
  %546 = load ptr, ptr %545, align 8, !tbaa !30
  %547 = getelementptr inbounds %struct.gz_header_s, ptr %546, i32 0, i32 5
  %548 = load i32, ptr %547, align 8, !tbaa !41
  %549 = and i32 %548, 65535
  %550 = icmp ult i32 %543, %549
  br i1 %550, label %551, label %631

551:                                              ; preds = %540
  %552 = load ptr, ptr %7, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.internal_state, ptr %552, i32 0, i32 5
  %554 = load i32, ptr %553, align 8, !tbaa !28
  %555 = zext i32 %554 to i64
  %556 = load ptr, ptr %7, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.internal_state, ptr %556, i32 0, i32 3
  %558 = load i64, ptr %557, align 8, !tbaa !45
  %559 = icmp eq i64 %555, %558
  br i1 %559, label %560, label %606

560:                                              ; preds = %551
  %561 = load ptr, ptr %7, align 8, !tbaa !5
  %562 = getelementptr inbounds %struct.internal_state, ptr %561, i32 0, i32 7
  %563 = load ptr, ptr %562, align 8, !tbaa !30
  %564 = getelementptr inbounds %struct.gz_header_s, ptr %563, i32 0, i32 11
  %565 = load i32, ptr %564, align 4, !tbaa !35
  %566 = icmp ne i32 %565, 0
  br i1 %566, label %567, label %591

567:                                              ; preds = %560
  %568 = load ptr, ptr %7, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.internal_state, ptr %568, i32 0, i32 5
  %570 = load i32, ptr %569, align 8, !tbaa !28
  %571 = load i32, ptr %11, align 4, !tbaa !9
  %572 = icmp ugt i32 %570, %571
  br i1 %572, label %573, label %591

573:                                              ; preds = %567
  %574 = load ptr, ptr %4, align 8, !tbaa !5
  %575 = getelementptr inbounds %struct.z_stream_s, ptr %574, i32 0, i32 12
  %576 = load i64, ptr %575, align 8, !tbaa !26
  %577 = load ptr, ptr %7, align 8, !tbaa !5
  %578 = getelementptr inbounds %struct.internal_state, ptr %577, i32 0, i32 2
  %579 = load ptr, ptr %578, align 8, !tbaa !27
  %580 = load i32, ptr %11, align 4, !tbaa !9
  %581 = zext i32 %580 to i64
  %582 = getelementptr inbounds i8, ptr %579, i64 %581
  %583 = load ptr, ptr %7, align 8, !tbaa !5
  %584 = getelementptr inbounds %struct.internal_state, ptr %583, i32 0, i32 5
  %585 = load i32, ptr %584, align 8, !tbaa !28
  %586 = load i32, ptr %11, align 4, !tbaa !9
  %587 = sub i32 %585, %586
  %588 = call i64 @z_crc32(i64 noundef %576, ptr noundef %582, i32 noundef %587)
  %589 = load ptr, ptr %4, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.z_stream_s, ptr %589, i32 0, i32 12
  store i64 %588, ptr %590, align 8, !tbaa !26
  br label %591

591:                                              ; preds = %573, %567, %560
  %592 = load ptr, ptr %4, align 8, !tbaa !5
  call void @flush_pending(ptr noundef %592)
  %593 = load ptr, ptr %7, align 8, !tbaa !5
  %594 = getelementptr inbounds %struct.internal_state, ptr %593, i32 0, i32 5
  %595 = load i32, ptr %594, align 8, !tbaa !28
  store i32 %595, ptr %11, align 4, !tbaa !9
  %596 = load ptr, ptr %7, align 8, !tbaa !5
  %597 = getelementptr inbounds %struct.internal_state, ptr %596, i32 0, i32 5
  %598 = load i32, ptr %597, align 8, !tbaa !28
  %599 = zext i32 %598 to i64
  %600 = load ptr, ptr %7, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.internal_state, ptr %600, i32 0, i32 3
  %602 = load i64, ptr %601, align 8, !tbaa !45
  %603 = icmp eq i64 %599, %602
  br i1 %603, label %604, label %605

604:                                              ; preds = %591
  br label %631

605:                                              ; preds = %591
  br label %606

606:                                              ; preds = %605, %551
  %607 = load ptr, ptr %7, align 8, !tbaa !5
  %608 = getelementptr inbounds %struct.internal_state, ptr %607, i32 0, i32 7
  %609 = load ptr, ptr %608, align 8, !tbaa !30
  %610 = getelementptr inbounds %struct.gz_header_s, ptr %609, i32 0, i32 4
  %611 = load ptr, ptr %610, align 8, !tbaa !36
  %612 = load ptr, ptr %7, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.internal_state, ptr %612, i32 0, i32 8
  %614 = load i32, ptr %613, align 8, !tbaa !42
  %615 = zext i32 %614 to i64
  %616 = getelementptr inbounds i8, ptr %611, i64 %615
  %617 = load i8, ptr %616, align 1, !tbaa !29
  %618 = load ptr, ptr %7, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct.internal_state, ptr %618, i32 0, i32 2
  %620 = load ptr, ptr %619, align 8, !tbaa !27
  %621 = load ptr, ptr %7, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct.internal_state, ptr %621, i32 0, i32 5
  %623 = load i32, ptr %622, align 8, !tbaa !28
  %624 = add i32 %623, 1
  store i32 %624, ptr %622, align 8, !tbaa !28
  %625 = zext i32 %623 to i64
  %626 = getelementptr inbounds i8, ptr %620, i64 %625
  store i8 %617, ptr %626, align 1, !tbaa !29
  %627 = load ptr, ptr %7, align 8, !tbaa !5
  %628 = getelementptr inbounds %struct.internal_state, ptr %627, i32 0, i32 8
  %629 = load i32, ptr %628, align 8, !tbaa !42
  %630 = add i32 %629, 1
  store i32 %630, ptr %628, align 8, !tbaa !42
  br label %540, !llvm.loop !46

631:                                              ; preds = %604, %540
  %632 = load ptr, ptr %7, align 8, !tbaa !5
  %633 = getelementptr inbounds %struct.internal_state, ptr %632, i32 0, i32 7
  %634 = load ptr, ptr %633, align 8, !tbaa !30
  %635 = getelementptr inbounds %struct.gz_header_s, ptr %634, i32 0, i32 11
  %636 = load i32, ptr %635, align 4, !tbaa !35
  %637 = icmp ne i32 %636, 0
  br i1 %637, label %638, label %662

638:                                              ; preds = %631
  %639 = load ptr, ptr %7, align 8, !tbaa !5
  %640 = getelementptr inbounds %struct.internal_state, ptr %639, i32 0, i32 5
  %641 = load i32, ptr %640, align 8, !tbaa !28
  %642 = load i32, ptr %11, align 4, !tbaa !9
  %643 = icmp ugt i32 %641, %642
  br i1 %643, label %644, label %662

644:                                              ; preds = %638
  %645 = load ptr, ptr %4, align 8, !tbaa !5
  %646 = getelementptr inbounds %struct.z_stream_s, ptr %645, i32 0, i32 12
  %647 = load i64, ptr %646, align 8, !tbaa !26
  %648 = load ptr, ptr %7, align 8, !tbaa !5
  %649 = getelementptr inbounds %struct.internal_state, ptr %648, i32 0, i32 2
  %650 = load ptr, ptr %649, align 8, !tbaa !27
  %651 = load i32, ptr %11, align 4, !tbaa !9
  %652 = zext i32 %651 to i64
  %653 = getelementptr inbounds i8, ptr %650, i64 %652
  %654 = load ptr, ptr %7, align 8, !tbaa !5
  %655 = getelementptr inbounds %struct.internal_state, ptr %654, i32 0, i32 5
  %656 = load i32, ptr %655, align 8, !tbaa !28
  %657 = load i32, ptr %11, align 4, !tbaa !9
  %658 = sub i32 %656, %657
  %659 = call i64 @z_crc32(i64 noundef %647, ptr noundef %653, i32 noundef %658)
  %660 = load ptr, ptr %4, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.z_stream_s, ptr %660, i32 0, i32 12
  store i64 %659, ptr %661, align 8, !tbaa !26
  br label %662

662:                                              ; preds = %644, %638, %631
  %663 = load ptr, ptr %7, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct.internal_state, ptr %663, i32 0, i32 8
  %665 = load i32, ptr %664, align 8, !tbaa !42
  %666 = load ptr, ptr %7, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct.internal_state, ptr %666, i32 0, i32 7
  %668 = load ptr, ptr %667, align 8, !tbaa !30
  %669 = getelementptr inbounds %struct.gz_header_s, ptr %668, i32 0, i32 5
  %670 = load i32, ptr %669, align 8, !tbaa !41
  %671 = icmp eq i32 %665, %670
  br i1 %671, label %672, label %677

672:                                              ; preds = %662
  %673 = load ptr, ptr %7, align 8, !tbaa !5
  %674 = getelementptr inbounds %struct.internal_state, ptr %673, i32 0, i32 8
  store i32 0, ptr %674, align 8, !tbaa !42
  %675 = load ptr, ptr %7, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.internal_state, ptr %675, i32 0, i32 1
  store i32 73, ptr %676, align 8, !tbaa !17
  br label %677

677:                                              ; preds = %672, %662
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #4
  br label %681

678:                                              ; preds = %529
  %679 = load ptr, ptr %7, align 8, !tbaa !5
  %680 = getelementptr inbounds %struct.internal_state, ptr %679, i32 0, i32 1
  store i32 73, ptr %680, align 8, !tbaa !17
  br label %681

681:                                              ; preds = %678, %677
  br label %682

682:                                              ; preds = %681, %524
  %683 = load ptr, ptr %7, align 8, !tbaa !5
  %684 = getelementptr inbounds %struct.internal_state, ptr %683, i32 0, i32 1
  %685 = load i32, ptr %684, align 8, !tbaa !17
  %686 = icmp eq i32 %685, 73
  br i1 %686, label %687, label %825

687:                                              ; preds = %682
  %688 = load ptr, ptr %7, align 8, !tbaa !5
  %689 = getelementptr inbounds %struct.internal_state, ptr %688, i32 0, i32 7
  %690 = load ptr, ptr %689, align 8, !tbaa !30
  %691 = getelementptr inbounds %struct.gz_header_s, ptr %690, i32 0, i32 7
  %692 = load ptr, ptr %691, align 8, !tbaa !37
  %693 = icmp ne ptr %692, null
  br i1 %693, label %694, label %821

694:                                              ; preds = %687
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  %695 = load ptr, ptr %7, align 8, !tbaa !5
  %696 = getelementptr inbounds %struct.internal_state, ptr %695, i32 0, i32 5
  %697 = load i32, ptr %696, align 8, !tbaa !28
  store i32 %697, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  br label %698

698:                                              ; preds = %778, %694
  %699 = load ptr, ptr %7, align 8, !tbaa !5
  %700 = getelementptr inbounds %struct.internal_state, ptr %699, i32 0, i32 5
  %701 = load i32, ptr %700, align 8, !tbaa !28
  %702 = zext i32 %701 to i64
  %703 = load ptr, ptr %7, align 8, !tbaa !5
  %704 = getelementptr inbounds %struct.internal_state, ptr %703, i32 0, i32 3
  %705 = load i64, ptr %704, align 8, !tbaa !45
  %706 = icmp eq i64 %702, %705
  br i1 %706, label %707, label %753

707:                                              ; preds = %698
  %708 = load ptr, ptr %7, align 8, !tbaa !5
  %709 = getelementptr inbounds %struct.internal_state, ptr %708, i32 0, i32 7
  %710 = load ptr, ptr %709, align 8, !tbaa !30
  %711 = getelementptr inbounds %struct.gz_header_s, ptr %710, i32 0, i32 11
  %712 = load i32, ptr %711, align 4, !tbaa !35
  %713 = icmp ne i32 %712, 0
  br i1 %713, label %714, label %738

714:                                              ; preds = %707
  %715 = load ptr, ptr %7, align 8, !tbaa !5
  %716 = getelementptr inbounds %struct.internal_state, ptr %715, i32 0, i32 5
  %717 = load i32, ptr %716, align 8, !tbaa !28
  %718 = load i32, ptr %12, align 4, !tbaa !9
  %719 = icmp ugt i32 %717, %718
  br i1 %719, label %720, label %738

720:                                              ; preds = %714
  %721 = load ptr, ptr %4, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.z_stream_s, ptr %721, i32 0, i32 12
  %723 = load i64, ptr %722, align 8, !tbaa !26
  %724 = load ptr, ptr %7, align 8, !tbaa !5
  %725 = getelementptr inbounds %struct.internal_state, ptr %724, i32 0, i32 2
  %726 = load ptr, ptr %725, align 8, !tbaa !27
  %727 = load i32, ptr %12, align 4, !tbaa !9
  %728 = zext i32 %727 to i64
  %729 = getelementptr inbounds i8, ptr %726, i64 %728
  %730 = load ptr, ptr %7, align 8, !tbaa !5
  %731 = getelementptr inbounds %struct.internal_state, ptr %730, i32 0, i32 5
  %732 = load i32, ptr %731, align 8, !tbaa !28
  %733 = load i32, ptr %12, align 4, !tbaa !9
  %734 = sub i32 %732, %733
  %735 = call i64 @z_crc32(i64 noundef %723, ptr noundef %729, i32 noundef %734)
  %736 = load ptr, ptr %4, align 8, !tbaa !5
  %737 = getelementptr inbounds %struct.z_stream_s, ptr %736, i32 0, i32 12
  store i64 %735, ptr %737, align 8, !tbaa !26
  br label %738

738:                                              ; preds = %720, %714, %707
  %739 = load ptr, ptr %4, align 8, !tbaa !5
  call void @flush_pending(ptr noundef %739)
  %740 = load ptr, ptr %7, align 8, !tbaa !5
  %741 = getelementptr inbounds %struct.internal_state, ptr %740, i32 0, i32 5
  %742 = load i32, ptr %741, align 8, !tbaa !28
  store i32 %742, ptr %12, align 4, !tbaa !9
  %743 = load ptr, ptr %7, align 8, !tbaa !5
  %744 = getelementptr inbounds %struct.internal_state, ptr %743, i32 0, i32 5
  %745 = load i32, ptr %744, align 8, !tbaa !28
  %746 = zext i32 %745 to i64
  %747 = load ptr, ptr %7, align 8, !tbaa !5
  %748 = getelementptr inbounds %struct.internal_state, ptr %747, i32 0, i32 3
  %749 = load i64, ptr %748, align 8, !tbaa !45
  %750 = icmp eq i64 %746, %749
  br i1 %750, label %751, label %752

751:                                              ; preds = %738
  store i32 1, ptr %13, align 4, !tbaa !9
  br label %781

752:                                              ; preds = %738
  br label %753

753:                                              ; preds = %752, %698
  %754 = load ptr, ptr %7, align 8, !tbaa !5
  %755 = getelementptr inbounds %struct.internal_state, ptr %754, i32 0, i32 7
  %756 = load ptr, ptr %755, align 8, !tbaa !30
  %757 = getelementptr inbounds %struct.gz_header_s, ptr %756, i32 0, i32 7
  %758 = load ptr, ptr %757, align 8, !tbaa !37
  %759 = load ptr, ptr %7, align 8, !tbaa !5
  %760 = getelementptr inbounds %struct.internal_state, ptr %759, i32 0, i32 8
  %761 = load i32, ptr %760, align 8, !tbaa !42
  %762 = add i32 %761, 1
  store i32 %762, ptr %760, align 8, !tbaa !42
  %763 = zext i32 %761 to i64
  %764 = getelementptr inbounds i8, ptr %758, i64 %763
  %765 = load i8, ptr %764, align 1, !tbaa !29
  %766 = zext i8 %765 to i32
  store i32 %766, ptr %13, align 4, !tbaa !9
  %767 = load i32, ptr %13, align 4, !tbaa !9
  %768 = trunc i32 %767 to i8
  %769 = load ptr, ptr %7, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.internal_state, ptr %769, i32 0, i32 2
  %771 = load ptr, ptr %770, align 8, !tbaa !27
  %772 = load ptr, ptr %7, align 8, !tbaa !5
  %773 = getelementptr inbounds %struct.internal_state, ptr %772, i32 0, i32 5
  %774 = load i32, ptr %773, align 8, !tbaa !28
  %775 = add i32 %774, 1
  store i32 %775, ptr %773, align 8, !tbaa !28
  %776 = zext i32 %774 to i64
  %777 = getelementptr inbounds i8, ptr %771, i64 %776
  store i8 %768, ptr %777, align 1, !tbaa !29
  br label %778

778:                                              ; preds = %753
  %779 = load i32, ptr %13, align 4, !tbaa !9
  %780 = icmp ne i32 %779, 0
  br i1 %780, label %698, label %781, !llvm.loop !48

781:                                              ; preds = %778, %751
  %782 = load ptr, ptr %7, align 8, !tbaa !5
  %783 = getelementptr inbounds %struct.internal_state, ptr %782, i32 0, i32 7
  %784 = load ptr, ptr %783, align 8, !tbaa !30
  %785 = getelementptr inbounds %struct.gz_header_s, ptr %784, i32 0, i32 11
  %786 = load i32, ptr %785, align 4, !tbaa !35
  %787 = icmp ne i32 %786, 0
  br i1 %787, label %788, label %812

788:                                              ; preds = %781
  %789 = load ptr, ptr %7, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.internal_state, ptr %789, i32 0, i32 5
  %791 = load i32, ptr %790, align 8, !tbaa !28
  %792 = load i32, ptr %12, align 4, !tbaa !9
  %793 = icmp ugt i32 %791, %792
  br i1 %793, label %794, label %812

794:                                              ; preds = %788
  %795 = load ptr, ptr %4, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.z_stream_s, ptr %795, i32 0, i32 12
  %797 = load i64, ptr %796, align 8, !tbaa !26
  %798 = load ptr, ptr %7, align 8, !tbaa !5
  %799 = getelementptr inbounds %struct.internal_state, ptr %798, i32 0, i32 2
  %800 = load ptr, ptr %799, align 8, !tbaa !27
  %801 = load i32, ptr %12, align 4, !tbaa !9
  %802 = zext i32 %801 to i64
  %803 = getelementptr inbounds i8, ptr %800, i64 %802
  %804 = load ptr, ptr %7, align 8, !tbaa !5
  %805 = getelementptr inbounds %struct.internal_state, ptr %804, i32 0, i32 5
  %806 = load i32, ptr %805, align 8, !tbaa !28
  %807 = load i32, ptr %12, align 4, !tbaa !9
  %808 = sub i32 %806, %807
  %809 = call i64 @z_crc32(i64 noundef %797, ptr noundef %803, i32 noundef %808)
  %810 = load ptr, ptr %4, align 8, !tbaa !5
  %811 = getelementptr inbounds %struct.z_stream_s, ptr %810, i32 0, i32 12
  store i64 %809, ptr %811, align 8, !tbaa !26
  br label %812

812:                                              ; preds = %794, %788, %781
  %813 = load i32, ptr %13, align 4, !tbaa !9
  %814 = icmp eq i32 %813, 0
  br i1 %814, label %815, label %820

815:                                              ; preds = %812
  %816 = load ptr, ptr %7, align 8, !tbaa !5
  %817 = getelementptr inbounds %struct.internal_state, ptr %816, i32 0, i32 8
  store i32 0, ptr %817, align 8, !tbaa !42
  %818 = load ptr, ptr %7, align 8, !tbaa !5
  %819 = getelementptr inbounds %struct.internal_state, ptr %818, i32 0, i32 1
  store i32 91, ptr %819, align 8, !tbaa !17
  br label %820

820:                                              ; preds = %815, %812
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  br label %824

821:                                              ; preds = %687
  %822 = load ptr, ptr %7, align 8, !tbaa !5
  %823 = getelementptr inbounds %struct.internal_state, ptr %822, i32 0, i32 1
  store i32 91, ptr %823, align 8, !tbaa !17
  br label %824

824:                                              ; preds = %821, %820
  br label %825

825:                                              ; preds = %824, %682
  %826 = load ptr, ptr %7, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.internal_state, ptr %826, i32 0, i32 1
  %828 = load i32, ptr %827, align 8, !tbaa !17
  %829 = icmp eq i32 %828, 91
  br i1 %829, label %830, label %966

830:                                              ; preds = %825
  %831 = load ptr, ptr %7, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.internal_state, ptr %831, i32 0, i32 7
  %833 = load ptr, ptr %832, align 8, !tbaa !30
  %834 = getelementptr inbounds %struct.gz_header_s, ptr %833, i32 0, i32 9
  %835 = load ptr, ptr %834, align 8, !tbaa !38
  %836 = icmp ne ptr %835, null
  br i1 %836, label %837, label %962

837:                                              ; preds = %830
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  %838 = load ptr, ptr %7, align 8, !tbaa !5
  %839 = getelementptr inbounds %struct.internal_state, ptr %838, i32 0, i32 5
  %840 = load i32, ptr %839, align 8, !tbaa !28
  store i32 %840, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  br label %841

841:                                              ; preds = %921, %837
  %842 = load ptr, ptr %7, align 8, !tbaa !5
  %843 = getelementptr inbounds %struct.internal_state, ptr %842, i32 0, i32 5
  %844 = load i32, ptr %843, align 8, !tbaa !28
  %845 = zext i32 %844 to i64
  %846 = load ptr, ptr %7, align 8, !tbaa !5
  %847 = getelementptr inbounds %struct.internal_state, ptr %846, i32 0, i32 3
  %848 = load i64, ptr %847, align 8, !tbaa !45
  %849 = icmp eq i64 %845, %848
  br i1 %849, label %850, label %896

850:                                              ; preds = %841
  %851 = load ptr, ptr %7, align 8, !tbaa !5
  %852 = getelementptr inbounds %struct.internal_state, ptr %851, i32 0, i32 7
  %853 = load ptr, ptr %852, align 8, !tbaa !30
  %854 = getelementptr inbounds %struct.gz_header_s, ptr %853, i32 0, i32 11
  %855 = load i32, ptr %854, align 4, !tbaa !35
  %856 = icmp ne i32 %855, 0
  br i1 %856, label %857, label %881

857:                                              ; preds = %850
  %858 = load ptr, ptr %7, align 8, !tbaa !5
  %859 = getelementptr inbounds %struct.internal_state, ptr %858, i32 0, i32 5
  %860 = load i32, ptr %859, align 8, !tbaa !28
  %861 = load i32, ptr %14, align 4, !tbaa !9
  %862 = icmp ugt i32 %860, %861
  br i1 %862, label %863, label %881

863:                                              ; preds = %857
  %864 = load ptr, ptr %4, align 8, !tbaa !5
  %865 = getelementptr inbounds %struct.z_stream_s, ptr %864, i32 0, i32 12
  %866 = load i64, ptr %865, align 8, !tbaa !26
  %867 = load ptr, ptr %7, align 8, !tbaa !5
  %868 = getelementptr inbounds %struct.internal_state, ptr %867, i32 0, i32 2
  %869 = load ptr, ptr %868, align 8, !tbaa !27
  %870 = load i32, ptr %14, align 4, !tbaa !9
  %871 = zext i32 %870 to i64
  %872 = getelementptr inbounds i8, ptr %869, i64 %871
  %873 = load ptr, ptr %7, align 8, !tbaa !5
  %874 = getelementptr inbounds %struct.internal_state, ptr %873, i32 0, i32 5
  %875 = load i32, ptr %874, align 8, !tbaa !28
  %876 = load i32, ptr %14, align 4, !tbaa !9
  %877 = sub i32 %875, %876
  %878 = call i64 @z_crc32(i64 noundef %866, ptr noundef %872, i32 noundef %877)
  %879 = load ptr, ptr %4, align 8, !tbaa !5
  %880 = getelementptr inbounds %struct.z_stream_s, ptr %879, i32 0, i32 12
  store i64 %878, ptr %880, align 8, !tbaa !26
  br label %881

881:                                              ; preds = %863, %857, %850
  %882 = load ptr, ptr %4, align 8, !tbaa !5
  call void @flush_pending(ptr noundef %882)
  %883 = load ptr, ptr %7, align 8, !tbaa !5
  %884 = getelementptr inbounds %struct.internal_state, ptr %883, i32 0, i32 5
  %885 = load i32, ptr %884, align 8, !tbaa !28
  store i32 %885, ptr %14, align 4, !tbaa !9
  %886 = load ptr, ptr %7, align 8, !tbaa !5
  %887 = getelementptr inbounds %struct.internal_state, ptr %886, i32 0, i32 5
  %888 = load i32, ptr %887, align 8, !tbaa !28
  %889 = zext i32 %888 to i64
  %890 = load ptr, ptr %7, align 8, !tbaa !5
  %891 = getelementptr inbounds %struct.internal_state, ptr %890, i32 0, i32 3
  %892 = load i64, ptr %891, align 8, !tbaa !45
  %893 = icmp eq i64 %889, %892
  br i1 %893, label %894, label %895

894:                                              ; preds = %881
  store i32 1, ptr %15, align 4, !tbaa !9
  br label %924

895:                                              ; preds = %881
  br label %896

896:                                              ; preds = %895, %841
  %897 = load ptr, ptr %7, align 8, !tbaa !5
  %898 = getelementptr inbounds %struct.internal_state, ptr %897, i32 0, i32 7
  %899 = load ptr, ptr %898, align 8, !tbaa !30
  %900 = getelementptr inbounds %struct.gz_header_s, ptr %899, i32 0, i32 9
  %901 = load ptr, ptr %900, align 8, !tbaa !38
  %902 = load ptr, ptr %7, align 8, !tbaa !5
  %903 = getelementptr inbounds %struct.internal_state, ptr %902, i32 0, i32 8
  %904 = load i32, ptr %903, align 8, !tbaa !42
  %905 = add i32 %904, 1
  store i32 %905, ptr %903, align 8, !tbaa !42
  %906 = zext i32 %904 to i64
  %907 = getelementptr inbounds i8, ptr %901, i64 %906
  %908 = load i8, ptr %907, align 1, !tbaa !29
  %909 = zext i8 %908 to i32
  store i32 %909, ptr %15, align 4, !tbaa !9
  %910 = load i32, ptr %15, align 4, !tbaa !9
  %911 = trunc i32 %910 to i8
  %912 = load ptr, ptr %7, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.internal_state, ptr %912, i32 0, i32 2
  %914 = load ptr, ptr %913, align 8, !tbaa !27
  %915 = load ptr, ptr %7, align 8, !tbaa !5
  %916 = getelementptr inbounds %struct.internal_state, ptr %915, i32 0, i32 5
  %917 = load i32, ptr %916, align 8, !tbaa !28
  %918 = add i32 %917, 1
  store i32 %918, ptr %916, align 8, !tbaa !28
  %919 = zext i32 %917 to i64
  %920 = getelementptr inbounds i8, ptr %914, i64 %919
  store i8 %911, ptr %920, align 1, !tbaa !29
  br label %921

921:                                              ; preds = %896
  %922 = load i32, ptr %15, align 4, !tbaa !9
  %923 = icmp ne i32 %922, 0
  br i1 %923, label %841, label %924, !llvm.loop !49

924:                                              ; preds = %921, %894
  %925 = load ptr, ptr %7, align 8, !tbaa !5
  %926 = getelementptr inbounds %struct.internal_state, ptr %925, i32 0, i32 7
  %927 = load ptr, ptr %926, align 8, !tbaa !30
  %928 = getelementptr inbounds %struct.gz_header_s, ptr %927, i32 0, i32 11
  %929 = load i32, ptr %928, align 4, !tbaa !35
  %930 = icmp ne i32 %929, 0
  br i1 %930, label %931, label %955

931:                                              ; preds = %924
  %932 = load ptr, ptr %7, align 8, !tbaa !5
  %933 = getelementptr inbounds %struct.internal_state, ptr %932, i32 0, i32 5
  %934 = load i32, ptr %933, align 8, !tbaa !28
  %935 = load i32, ptr %14, align 4, !tbaa !9
  %936 = icmp ugt i32 %934, %935
  br i1 %936, label %937, label %955

937:                                              ; preds = %931
  %938 = load ptr, ptr %4, align 8, !tbaa !5
  %939 = getelementptr inbounds %struct.z_stream_s, ptr %938, i32 0, i32 12
  %940 = load i64, ptr %939, align 8, !tbaa !26
  %941 = load ptr, ptr %7, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.internal_state, ptr %941, i32 0, i32 2
  %943 = load ptr, ptr %942, align 8, !tbaa !27
  %944 = load i32, ptr %14, align 4, !tbaa !9
  %945 = zext i32 %944 to i64
  %946 = getelementptr inbounds i8, ptr %943, i64 %945
  %947 = load ptr, ptr %7, align 8, !tbaa !5
  %948 = getelementptr inbounds %struct.internal_state, ptr %947, i32 0, i32 5
  %949 = load i32, ptr %948, align 8, !tbaa !28
  %950 = load i32, ptr %14, align 4, !tbaa !9
  %951 = sub i32 %949, %950
  %952 = call i64 @z_crc32(i64 noundef %940, ptr noundef %946, i32 noundef %951)
  %953 = load ptr, ptr %4, align 8, !tbaa !5
  %954 = getelementptr inbounds %struct.z_stream_s, ptr %953, i32 0, i32 12
  store i64 %952, ptr %954, align 8, !tbaa !26
  br label %955

955:                                              ; preds = %937, %931, %924
  %956 = load i32, ptr %15, align 4, !tbaa !9
  %957 = icmp eq i32 %956, 0
  br i1 %957, label %958, label %961

958:                                              ; preds = %955
  %959 = load ptr, ptr %7, align 8, !tbaa !5
  %960 = getelementptr inbounds %struct.internal_state, ptr %959, i32 0, i32 1
  store i32 103, ptr %960, align 8, !tbaa !17
  br label %961

961:                                              ; preds = %958, %955
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  br label %965

962:                                              ; preds = %830
  %963 = load ptr, ptr %7, align 8, !tbaa !5
  %964 = getelementptr inbounds %struct.internal_state, ptr %963, i32 0, i32 1
  store i32 103, ptr %964, align 8, !tbaa !17
  br label %965

965:                                              ; preds = %962, %961
  br label %966

966:                                              ; preds = %965, %825
  %967 = load ptr, ptr %7, align 8, !tbaa !5
  %968 = getelementptr inbounds %struct.internal_state, ptr %967, i32 0, i32 1
  %969 = load i32, ptr %968, align 8, !tbaa !17
  %970 = icmp eq i32 %969, 103
  br i1 %970, label %971, label %1040

971:                                              ; preds = %966
  %972 = load ptr, ptr %7, align 8, !tbaa !5
  %973 = getelementptr inbounds %struct.internal_state, ptr %972, i32 0, i32 7
  %974 = load ptr, ptr %973, align 8, !tbaa !30
  %975 = getelementptr inbounds %struct.gz_header_s, ptr %974, i32 0, i32 11
  %976 = load i32, ptr %975, align 4, !tbaa !35
  %977 = icmp ne i32 %976, 0
  br i1 %977, label %978, label %1036

978:                                              ; preds = %971
  %979 = load ptr, ptr %7, align 8, !tbaa !5
  %980 = getelementptr inbounds %struct.internal_state, ptr %979, i32 0, i32 5
  %981 = load i32, ptr %980, align 8, !tbaa !28
  %982 = add i32 %981, 2
  %983 = zext i32 %982 to i64
  %984 = load ptr, ptr %7, align 8, !tbaa !5
  %985 = getelementptr inbounds %struct.internal_state, ptr %984, i32 0, i32 3
  %986 = load i64, ptr %985, align 8, !tbaa !45
  %987 = icmp ugt i64 %983, %986
  br i1 %987, label %988, label %990

988:                                              ; preds = %978
  %989 = load ptr, ptr %4, align 8, !tbaa !5
  call void @flush_pending(ptr noundef %989)
  br label %990

990:                                              ; preds = %988, %978
  %991 = load ptr, ptr %7, align 8, !tbaa !5
  %992 = getelementptr inbounds %struct.internal_state, ptr %991, i32 0, i32 5
  %993 = load i32, ptr %992, align 8, !tbaa !28
  %994 = add i32 %993, 2
  %995 = zext i32 %994 to i64
  %996 = load ptr, ptr %7, align 8, !tbaa !5
  %997 = getelementptr inbounds %struct.internal_state, ptr %996, i32 0, i32 3
  %998 = load i64, ptr %997, align 8, !tbaa !45
  %999 = icmp ule i64 %995, %998
  br i1 %999, label %1000, label %1035

1000:                                             ; preds = %990
  %1001 = load ptr, ptr %4, align 8, !tbaa !5
  %1002 = getelementptr inbounds %struct.z_stream_s, ptr %1001, i32 0, i32 12
  %1003 = load i64, ptr %1002, align 8, !tbaa !26
  %1004 = and i64 %1003, 255
  %1005 = trunc i64 %1004 to i8
  %1006 = load ptr, ptr %7, align 8, !tbaa !5
  %1007 = getelementptr inbounds %struct.internal_state, ptr %1006, i32 0, i32 2
  %1008 = load ptr, ptr %1007, align 8, !tbaa !27
  %1009 = load ptr, ptr %7, align 8, !tbaa !5
  %1010 = getelementptr inbounds %struct.internal_state, ptr %1009, i32 0, i32 5
  %1011 = load i32, ptr %1010, align 8, !tbaa !28
  %1012 = add i32 %1011, 1
  store i32 %1012, ptr %1010, align 8, !tbaa !28
  %1013 = zext i32 %1011 to i64
  %1014 = getelementptr inbounds i8, ptr %1008, i64 %1013
  store i8 %1005, ptr %1014, align 1, !tbaa !29
  %1015 = load ptr, ptr %4, align 8, !tbaa !5
  %1016 = getelementptr inbounds %struct.z_stream_s, ptr %1015, i32 0, i32 12
  %1017 = load i64, ptr %1016, align 8, !tbaa !26
  %1018 = lshr i64 %1017, 8
  %1019 = and i64 %1018, 255
  %1020 = trunc i64 %1019 to i8
  %1021 = load ptr, ptr %7, align 8, !tbaa !5
  %1022 = getelementptr inbounds %struct.internal_state, ptr %1021, i32 0, i32 2
  %1023 = load ptr, ptr %1022, align 8, !tbaa !27
  %1024 = load ptr, ptr %7, align 8, !tbaa !5
  %1025 = getelementptr inbounds %struct.internal_state, ptr %1024, i32 0, i32 5
  %1026 = load i32, ptr %1025, align 8, !tbaa !28
  %1027 = add i32 %1026, 1
  store i32 %1027, ptr %1025, align 8, !tbaa !28
  %1028 = zext i32 %1026 to i64
  %1029 = getelementptr inbounds i8, ptr %1023, i64 %1028
  store i8 %1020, ptr %1029, align 1, !tbaa !29
  %1030 = call i64 @z_crc32(i64 noundef 0, ptr noundef null, i32 noundef 0)
  %1031 = load ptr, ptr %4, align 8, !tbaa !5
  %1032 = getelementptr inbounds %struct.z_stream_s, ptr %1031, i32 0, i32 12
  store i64 %1030, ptr %1032, align 8, !tbaa !26
  %1033 = load ptr, ptr %7, align 8, !tbaa !5
  %1034 = getelementptr inbounds %struct.internal_state, ptr %1033, i32 0, i32 1
  store i32 113, ptr %1034, align 8, !tbaa !17
  br label %1035

1035:                                             ; preds = %1000, %990
  br label %1039

1036:                                             ; preds = %971
  %1037 = load ptr, ptr %7, align 8, !tbaa !5
  %1038 = getelementptr inbounds %struct.internal_state, ptr %1037, i32 0, i32 1
  store i32 113, ptr %1038, align 8, !tbaa !17
  br label %1039

1039:                                             ; preds = %1036, %1035
  br label %1040

1040:                                             ; preds = %1039, %966
  %1041 = load ptr, ptr %7, align 8, !tbaa !5
  %1042 = getelementptr inbounds %struct.internal_state, ptr %1041, i32 0, i32 5
  %1043 = load i32, ptr %1042, align 8, !tbaa !28
  %1044 = icmp ne i32 %1043, 0
  br i1 %1044, label %1045, label %1055

1045:                                             ; preds = %1040
  %1046 = load ptr, ptr %4, align 8, !tbaa !5
  call void @flush_pending(ptr noundef %1046)
  %1047 = load ptr, ptr %4, align 8, !tbaa !5
  %1048 = getelementptr inbounds %struct.z_stream_s, ptr %1047, i32 0, i32 4
  %1049 = load i32, ptr %1048, align 8, !tbaa !22
  %1050 = icmp eq i32 %1049, 0
  br i1 %1050, label %1051, label %1054

1051:                                             ; preds = %1045
  %1052 = load ptr, ptr %7, align 8, !tbaa !5
  %1053 = getelementptr inbounds %struct.internal_state, ptr %1052, i32 0, i32 10
  store i32 -1, ptr %1053, align 8, !tbaa !24
  store i32 0, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %1351

1054:                                             ; preds = %1045
  br label %1072

1055:                                             ; preds = %1040
  %1056 = load ptr, ptr %4, align 8, !tbaa !5
  %1057 = getelementptr inbounds %struct.z_stream_s, ptr %1056, i32 0, i32 1
  %1058 = load i32, ptr %1057, align 8, !tbaa !16
  %1059 = icmp eq i32 %1058, 0
  br i1 %1059, label %1060, label %1071

1060:                                             ; preds = %1055
  %1061 = load i32, ptr %5, align 4, !tbaa !9
  %1062 = load i32, ptr %6, align 4, !tbaa !9
  %1063 = icmp sle i32 %1061, %1062
  br i1 %1063, label %1064, label %1071

1064:                                             ; preds = %1060
  %1065 = load i32, ptr %5, align 4, !tbaa !9
  %1066 = icmp ne i32 %1065, 4
  br i1 %1066, label %1067, label %1071

1067:                                             ; preds = %1064
  %1068 = load ptr, ptr getelementptr inbounds ([10 x ptr], ptr @z_errmsg, i64 0, i64 7), align 8, !tbaa !5
  %1069 = load ptr, ptr %4, align 8, !tbaa !5
  %1070 = getelementptr inbounds %struct.z_stream_s, ptr %1069, i32 0, i32 6
  store ptr %1068, ptr %1070, align 8, !tbaa !21
  store i32 -5, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %1351

1071:                                             ; preds = %1064, %1060, %1055
  br label %1072

1072:                                             ; preds = %1071, %1054
  %1073 = load ptr, ptr %7, align 8, !tbaa !5
  %1074 = getelementptr inbounds %struct.internal_state, ptr %1073, i32 0, i32 1
  %1075 = load i32, ptr %1074, align 8, !tbaa !17
  %1076 = icmp eq i32 %1075, 666
  br i1 %1076, label %1077, label %1086

1077:                                             ; preds = %1072
  %1078 = load ptr, ptr %4, align 8, !tbaa !5
  %1079 = getelementptr inbounds %struct.z_stream_s, ptr %1078, i32 0, i32 1
  %1080 = load i32, ptr %1079, align 8, !tbaa !16
  %1081 = icmp ne i32 %1080, 0
  br i1 %1081, label %1082, label %1086

1082:                                             ; preds = %1077
  %1083 = load ptr, ptr getelementptr inbounds ([10 x ptr], ptr @z_errmsg, i64 0, i64 7), align 8, !tbaa !5
  %1084 = load ptr, ptr %4, align 8, !tbaa !5
  %1085 = getelementptr inbounds %struct.z_stream_s, ptr %1084, i32 0, i32 6
  store ptr %1083, ptr %1085, align 8, !tbaa !21
  store i32 -5, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %1351

1086:                                             ; preds = %1077, %1072
  %1087 = load ptr, ptr %4, align 8, !tbaa !5
  %1088 = getelementptr inbounds %struct.z_stream_s, ptr %1087, i32 0, i32 1
  %1089 = load i32, ptr %1088, align 8, !tbaa !16
  %1090 = icmp ne i32 %1089, 0
  br i1 %1090, label %1104, label %1091

1091:                                             ; preds = %1086
  %1092 = load ptr, ptr %7, align 8, !tbaa !5
  %1093 = getelementptr inbounds %struct.internal_state, ptr %1092, i32 0, i32 29
  %1094 = load i32, ptr %1093, align 4, !tbaa !50
  %1095 = icmp ne i32 %1094, 0
  br i1 %1095, label %1104, label %1096

1096:                                             ; preds = %1091
  %1097 = load i32, ptr %5, align 4, !tbaa !9
  %1098 = icmp ne i32 %1097, 0
  br i1 %1098, label %1099, label %1184

1099:                                             ; preds = %1096
  %1100 = load ptr, ptr %7, align 8, !tbaa !5
  %1101 = getelementptr inbounds %struct.internal_state, ptr %1100, i32 0, i32 1
  %1102 = load i32, ptr %1101, align 8, !tbaa !17
  %1103 = icmp ne i32 %1102, 666
  br i1 %1103, label %1104, label %1184

1104:                                             ; preds = %1099, %1091, %1086
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #4
  %1105 = load ptr, ptr %7, align 8, !tbaa !5
  %1106 = getelementptr inbounds %struct.internal_state, ptr %1105, i32 0, i32 33
  %1107 = load i32, ptr %1106, align 4, !tbaa !31
  %1108 = sext i32 %1107 to i64
  %1109 = getelementptr inbounds [10 x %struct.config_s], ptr @configuration_table, i64 0, i64 %1108
  %1110 = getelementptr inbounds %struct.config_s, ptr %1109, i32 0, i32 4
  %1111 = load ptr, ptr %1110, align 8, !tbaa !51
  %1112 = load ptr, ptr %7, align 8, !tbaa !5
  %1113 = load i32, ptr %5, align 4, !tbaa !9
  %1114 = call i32 %1111(ptr noundef %1112, i32 noundef %1113)
  store i32 %1114, ptr %16, align 4, !tbaa !9
  %1115 = load i32, ptr %16, align 4, !tbaa !9
  %1116 = icmp eq i32 %1115, 2
  br i1 %1116, label %1120, label %1117

1117:                                             ; preds = %1104
  %1118 = load i32, ptr %16, align 4, !tbaa !9
  %1119 = icmp eq i32 %1118, 3
  br i1 %1119, label %1120, label %1123

1120:                                             ; preds = %1117, %1104
  %1121 = load ptr, ptr %7, align 8, !tbaa !5
  %1122 = getelementptr inbounds %struct.internal_state, ptr %1121, i32 0, i32 1
  store i32 666, ptr %1122, align 8, !tbaa !17
  br label %1123

1123:                                             ; preds = %1120, %1117
  %1124 = load i32, ptr %16, align 4, !tbaa !9
  %1125 = icmp eq i32 %1124, 0
  br i1 %1125, label %1129, label %1126

1126:                                             ; preds = %1123
  %1127 = load i32, ptr %16, align 4, !tbaa !9
  %1128 = icmp eq i32 %1127, 2
  br i1 %1128, label %1129, label %1138

1129:                                             ; preds = %1126, %1123
  %1130 = load ptr, ptr %4, align 8, !tbaa !5
  %1131 = getelementptr inbounds %struct.z_stream_s, ptr %1130, i32 0, i32 4
  %1132 = load i32, ptr %1131, align 8, !tbaa !22
  %1133 = icmp eq i32 %1132, 0
  br i1 %1133, label %1134, label %1137

1134:                                             ; preds = %1129
  %1135 = load ptr, ptr %7, align 8, !tbaa !5
  %1136 = getelementptr inbounds %struct.internal_state, ptr %1135, i32 0, i32 10
  store i32 -1, ptr %1136, align 8, !tbaa !24
  br label %1137

1137:                                             ; preds = %1134, %1129
  store i32 0, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %1181

1138:                                             ; preds = %1126
  %1139 = load i32, ptr %16, align 4, !tbaa !9
  %1140 = icmp eq i32 %1139, 1
  br i1 %1140, label %1141, label %1180

1141:                                             ; preds = %1138
  %1142 = load i32, ptr %5, align 4, !tbaa !9
  %1143 = icmp eq i32 %1142, 1
  br i1 %1143, label %1144, label %1146

1144:                                             ; preds = %1141
  %1145 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_tr_align(ptr noundef %1145)
  br label %1170

1146:                                             ; preds = %1141
  %1147 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_tr_stored_block(ptr noundef %1147, ptr noundef null, i64 noundef 0, i32 noundef 0)
  %1148 = load i32, ptr %5, align 4, !tbaa !9
  %1149 = icmp eq i32 %1148, 3
  br i1 %1149, label %1150, label %1169

1150:                                             ; preds = %1146
  %1151 = load ptr, ptr %7, align 8, !tbaa !5
  %1152 = getelementptr inbounds %struct.internal_state, ptr %1151, i32 0, i32 17
  %1153 = load ptr, ptr %1152, align 8, !tbaa !53
  %1154 = load ptr, ptr %7, align 8, !tbaa !5
  %1155 = getelementptr inbounds %struct.internal_state, ptr %1154, i32 0, i32 19
  %1156 = load i32, ptr %1155, align 4, !tbaa !54
  %1157 = sub i32 %1156, 1
  %1158 = zext i32 %1157 to i64
  %1159 = getelementptr inbounds i16, ptr %1153, i64 %1158
  store i16 0, ptr %1159, align 2, !tbaa !55
  %1160 = load ptr, ptr %7, align 8, !tbaa !5
  %1161 = getelementptr inbounds %struct.internal_state, ptr %1160, i32 0, i32 17
  %1162 = load ptr, ptr %1161, align 8, !tbaa !53
  %1163 = load ptr, ptr %7, align 8, !tbaa !5
  %1164 = getelementptr inbounds %struct.internal_state, ptr %1163, i32 0, i32 19
  %1165 = load i32, ptr %1164, align 4, !tbaa !54
  %1166 = sub i32 %1165, 1
  %1167 = zext i32 %1166 to i64
  %1168 = mul i64 %1167, 2
  call void @llvm.memset.p0.i64(ptr align 1 %1162, i8 0, i64 %1168, i1 false)
  br label %1169

1169:                                             ; preds = %1150, %1146
  br label %1170

1170:                                             ; preds = %1169, %1144
  %1171 = load ptr, ptr %4, align 8, !tbaa !5
  call void @flush_pending(ptr noundef %1171)
  %1172 = load ptr, ptr %4, align 8, !tbaa !5
  %1173 = getelementptr inbounds %struct.z_stream_s, ptr %1172, i32 0, i32 4
  %1174 = load i32, ptr %1173, align 8, !tbaa !22
  %1175 = icmp eq i32 %1174, 0
  br i1 %1175, label %1176, label %1179

1176:                                             ; preds = %1170
  %1177 = load ptr, ptr %7, align 8, !tbaa !5
  %1178 = getelementptr inbounds %struct.internal_state, ptr %1177, i32 0, i32 10
  store i32 -1, ptr %1178, align 8, !tbaa !24
  store i32 0, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %1181

1179:                                             ; preds = %1170
  br label %1180

1180:                                             ; preds = %1179, %1138
  store i32 0, ptr %8, align 4
  br label %1181

1181:                                             ; preds = %1180, %1176, %1137
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #4
  %1182 = load i32, ptr %8, align 4
  switch i32 %1182, label %1351 [
    i32 0, label %1183
  ]

1183:                                             ; preds = %1181
  br label %1184

1184:                                             ; preds = %1183, %1099, %1096
  %1185 = load i32, ptr %5, align 4, !tbaa !9
  %1186 = icmp ne i32 %1185, 4
  br i1 %1186, label %1187, label %1188

1187:                                             ; preds = %1184
  store i32 0, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %1351

1188:                                             ; preds = %1184
  %1189 = load ptr, ptr %7, align 8, !tbaa !5
  %1190 = getelementptr inbounds %struct.internal_state, ptr %1189, i32 0, i32 6
  %1191 = load i32, ptr %1190, align 4, !tbaa !25
  %1192 = icmp sle i32 %1191, 0
  br i1 %1192, label %1193, label %1194

1193:                                             ; preds = %1188
  store i32 1, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %1351

1194:                                             ; preds = %1188
  %1195 = load ptr, ptr %7, align 8, !tbaa !5
  %1196 = getelementptr inbounds %struct.internal_state, ptr %1195, i32 0, i32 6
  %1197 = load i32, ptr %1196, align 4, !tbaa !25
  %1198 = icmp eq i32 %1197, 2
  br i1 %1198, label %1199, label %1318

1199:                                             ; preds = %1194
  %1200 = load ptr, ptr %4, align 8, !tbaa !5
  %1201 = getelementptr inbounds %struct.z_stream_s, ptr %1200, i32 0, i32 12
  %1202 = load i64, ptr %1201, align 8, !tbaa !26
  %1203 = and i64 %1202, 255
  %1204 = trunc i64 %1203 to i8
  %1205 = load ptr, ptr %7, align 8, !tbaa !5
  %1206 = getelementptr inbounds %struct.internal_state, ptr %1205, i32 0, i32 2
  %1207 = load ptr, ptr %1206, align 8, !tbaa !27
  %1208 = load ptr, ptr %7, align 8, !tbaa !5
  %1209 = getelementptr inbounds %struct.internal_state, ptr %1208, i32 0, i32 5
  %1210 = load i32, ptr %1209, align 8, !tbaa !28
  %1211 = add i32 %1210, 1
  store i32 %1211, ptr %1209, align 8, !tbaa !28
  %1212 = zext i32 %1210 to i64
  %1213 = getelementptr inbounds i8, ptr %1207, i64 %1212
  store i8 %1204, ptr %1213, align 1, !tbaa !29
  %1214 = load ptr, ptr %4, align 8, !tbaa !5
  %1215 = getelementptr inbounds %struct.z_stream_s, ptr %1214, i32 0, i32 12
  %1216 = load i64, ptr %1215, align 8, !tbaa !26
  %1217 = lshr i64 %1216, 8
  %1218 = and i64 %1217, 255
  %1219 = trunc i64 %1218 to i8
  %1220 = load ptr, ptr %7, align 8, !tbaa !5
  %1221 = getelementptr inbounds %struct.internal_state, ptr %1220, i32 0, i32 2
  %1222 = load ptr, ptr %1221, align 8, !tbaa !27
  %1223 = load ptr, ptr %7, align 8, !tbaa !5
  %1224 = getelementptr inbounds %struct.internal_state, ptr %1223, i32 0, i32 5
  %1225 = load i32, ptr %1224, align 8, !tbaa !28
  %1226 = add i32 %1225, 1
  store i32 %1226, ptr %1224, align 8, !tbaa !28
  %1227 = zext i32 %1225 to i64
  %1228 = getelementptr inbounds i8, ptr %1222, i64 %1227
  store i8 %1219, ptr %1228, align 1, !tbaa !29
  %1229 = load ptr, ptr %4, align 8, !tbaa !5
  %1230 = getelementptr inbounds %struct.z_stream_s, ptr %1229, i32 0, i32 12
  %1231 = load i64, ptr %1230, align 8, !tbaa !26
  %1232 = lshr i64 %1231, 16
  %1233 = and i64 %1232, 255
  %1234 = trunc i64 %1233 to i8
  %1235 = load ptr, ptr %7, align 8, !tbaa !5
  %1236 = getelementptr inbounds %struct.internal_state, ptr %1235, i32 0, i32 2
  %1237 = load ptr, ptr %1236, align 8, !tbaa !27
  %1238 = load ptr, ptr %7, align 8, !tbaa !5
  %1239 = getelementptr inbounds %struct.internal_state, ptr %1238, i32 0, i32 5
  %1240 = load i32, ptr %1239, align 8, !tbaa !28
  %1241 = add i32 %1240, 1
  store i32 %1241, ptr %1239, align 8, !tbaa !28
  %1242 = zext i32 %1240 to i64
  %1243 = getelementptr inbounds i8, ptr %1237, i64 %1242
  store i8 %1234, ptr %1243, align 1, !tbaa !29
  %1244 = load ptr, ptr %4, align 8, !tbaa !5
  %1245 = getelementptr inbounds %struct.z_stream_s, ptr %1244, i32 0, i32 12
  %1246 = load i64, ptr %1245, align 8, !tbaa !26
  %1247 = lshr i64 %1246, 24
  %1248 = and i64 %1247, 255
  %1249 = trunc i64 %1248 to i8
  %1250 = load ptr, ptr %7, align 8, !tbaa !5
  %1251 = getelementptr inbounds %struct.internal_state, ptr %1250, i32 0, i32 2
  %1252 = load ptr, ptr %1251, align 8, !tbaa !27
  %1253 = load ptr, ptr %7, align 8, !tbaa !5
  %1254 = getelementptr inbounds %struct.internal_state, ptr %1253, i32 0, i32 5
  %1255 = load i32, ptr %1254, align 8, !tbaa !28
  %1256 = add i32 %1255, 1
  store i32 %1256, ptr %1254, align 8, !tbaa !28
  %1257 = zext i32 %1255 to i64
  %1258 = getelementptr inbounds i8, ptr %1252, i64 %1257
  store i8 %1249, ptr %1258, align 1, !tbaa !29
  %1259 = load ptr, ptr %4, align 8, !tbaa !5
  %1260 = getelementptr inbounds %struct.z_stream_s, ptr %1259, i32 0, i32 2
  %1261 = load i64, ptr %1260, align 8, !tbaa !56
  %1262 = and i64 %1261, 255
  %1263 = trunc i64 %1262 to i8
  %1264 = load ptr, ptr %7, align 8, !tbaa !5
  %1265 = getelementptr inbounds %struct.internal_state, ptr %1264, i32 0, i32 2
  %1266 = load ptr, ptr %1265, align 8, !tbaa !27
  %1267 = load ptr, ptr %7, align 8, !tbaa !5
  %1268 = getelementptr inbounds %struct.internal_state, ptr %1267, i32 0, i32 5
  %1269 = load i32, ptr %1268, align 8, !tbaa !28
  %1270 = add i32 %1269, 1
  store i32 %1270, ptr %1268, align 8, !tbaa !28
  %1271 = zext i32 %1269 to i64
  %1272 = getelementptr inbounds i8, ptr %1266, i64 %1271
  store i8 %1263, ptr %1272, align 1, !tbaa !29
  %1273 = load ptr, ptr %4, align 8, !tbaa !5
  %1274 = getelementptr inbounds %struct.z_stream_s, ptr %1273, i32 0, i32 2
  %1275 = load i64, ptr %1274, align 8, !tbaa !56
  %1276 = lshr i64 %1275, 8
  %1277 = and i64 %1276, 255
  %1278 = trunc i64 %1277 to i8
  %1279 = load ptr, ptr %7, align 8, !tbaa !5
  %1280 = getelementptr inbounds %struct.internal_state, ptr %1279, i32 0, i32 2
  %1281 = load ptr, ptr %1280, align 8, !tbaa !27
  %1282 = load ptr, ptr %7, align 8, !tbaa !5
  %1283 = getelementptr inbounds %struct.internal_state, ptr %1282, i32 0, i32 5
  %1284 = load i32, ptr %1283, align 8, !tbaa !28
  %1285 = add i32 %1284, 1
  store i32 %1285, ptr %1283, align 8, !tbaa !28
  %1286 = zext i32 %1284 to i64
  %1287 = getelementptr inbounds i8, ptr %1281, i64 %1286
  store i8 %1278, ptr %1287, align 1, !tbaa !29
  %1288 = load ptr, ptr %4, align 8, !tbaa !5
  %1289 = getelementptr inbounds %struct.z_stream_s, ptr %1288, i32 0, i32 2
  %1290 = load i64, ptr %1289, align 8, !tbaa !56
  %1291 = lshr i64 %1290, 16
  %1292 = and i64 %1291, 255
  %1293 = trunc i64 %1292 to i8
  %1294 = load ptr, ptr %7, align 8, !tbaa !5
  %1295 = getelementptr inbounds %struct.internal_state, ptr %1294, i32 0, i32 2
  %1296 = load ptr, ptr %1295, align 8, !tbaa !27
  %1297 = load ptr, ptr %7, align 8, !tbaa !5
  %1298 = getelementptr inbounds %struct.internal_state, ptr %1297, i32 0, i32 5
  %1299 = load i32, ptr %1298, align 8, !tbaa !28
  %1300 = add i32 %1299, 1
  store i32 %1300, ptr %1298, align 8, !tbaa !28
  %1301 = zext i32 %1299 to i64
  %1302 = getelementptr inbounds i8, ptr %1296, i64 %1301
  store i8 %1293, ptr %1302, align 1, !tbaa !29
  %1303 = load ptr, ptr %4, align 8, !tbaa !5
  %1304 = getelementptr inbounds %struct.z_stream_s, ptr %1303, i32 0, i32 2
  %1305 = load i64, ptr %1304, align 8, !tbaa !56
  %1306 = lshr i64 %1305, 24
  %1307 = and i64 %1306, 255
  %1308 = trunc i64 %1307 to i8
  %1309 = load ptr, ptr %7, align 8, !tbaa !5
  %1310 = getelementptr inbounds %struct.internal_state, ptr %1309, i32 0, i32 2
  %1311 = load ptr, ptr %1310, align 8, !tbaa !27
  %1312 = load ptr, ptr %7, align 8, !tbaa !5
  %1313 = getelementptr inbounds %struct.internal_state, ptr %1312, i32 0, i32 5
  %1314 = load i32, ptr %1313, align 8, !tbaa !28
  %1315 = add i32 %1314, 1
  store i32 %1315, ptr %1313, align 8, !tbaa !28
  %1316 = zext i32 %1314 to i64
  %1317 = getelementptr inbounds i8, ptr %1311, i64 %1316
  store i8 %1308, ptr %1317, align 1, !tbaa !29
  br label %1331

1318:                                             ; preds = %1194
  %1319 = load ptr, ptr %7, align 8, !tbaa !5
  %1320 = load ptr, ptr %4, align 8, !tbaa !5
  %1321 = getelementptr inbounds %struct.z_stream_s, ptr %1320, i32 0, i32 12
  %1322 = load i64, ptr %1321, align 8, !tbaa !26
  %1323 = lshr i64 %1322, 16
  %1324 = trunc i64 %1323 to i32
  call void @putShortMSB(ptr noundef %1319, i32 noundef %1324)
  %1325 = load ptr, ptr %7, align 8, !tbaa !5
  %1326 = load ptr, ptr %4, align 8, !tbaa !5
  %1327 = getelementptr inbounds %struct.z_stream_s, ptr %1326, i32 0, i32 12
  %1328 = load i64, ptr %1327, align 8, !tbaa !26
  %1329 = and i64 %1328, 65535
  %1330 = trunc i64 %1329 to i32
  call void @putShortMSB(ptr noundef %1325, i32 noundef %1330)
  br label %1331

1331:                                             ; preds = %1318, %1199
  %1332 = load ptr, ptr %4, align 8, !tbaa !5
  call void @flush_pending(ptr noundef %1332)
  %1333 = load ptr, ptr %7, align 8, !tbaa !5
  %1334 = getelementptr inbounds %struct.internal_state, ptr %1333, i32 0, i32 6
  %1335 = load i32, ptr %1334, align 4, !tbaa !25
  %1336 = icmp sgt i32 %1335, 0
  br i1 %1336, label %1337, label %1344

1337:                                             ; preds = %1331
  %1338 = load ptr, ptr %7, align 8, !tbaa !5
  %1339 = getelementptr inbounds %struct.internal_state, ptr %1338, i32 0, i32 6
  %1340 = load i32, ptr %1339, align 4, !tbaa !25
  %1341 = sub nsw i32 0, %1340
  %1342 = load ptr, ptr %7, align 8, !tbaa !5
  %1343 = getelementptr inbounds %struct.internal_state, ptr %1342, i32 0, i32 6
  store i32 %1341, ptr %1343, align 4, !tbaa !25
  br label %1344

1344:                                             ; preds = %1337, %1331
  %1345 = load ptr, ptr %7, align 8, !tbaa !5
  %1346 = getelementptr inbounds %struct.internal_state, ptr %1345, i32 0, i32 5
  %1347 = load i32, ptr %1346, align 8, !tbaa !28
  %1348 = icmp ne i32 %1347, 0
  %1349 = zext i1 %1348 to i64
  %1350 = select i1 %1348, i32 0, i32 1
  store i32 %1350, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %1351

1351:                                             ; preds = %1344, %1193, %1187, %1181, %1082, %1067, %1051, %66, %57, %30
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #4
  %1352 = load i32, ptr %3, align 4
  ret i32 %1352
}

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

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

declare void @_tr_align(ptr noundef) #1

declare void @_tr_stored_block(ptr noundef, ptr noundef, i64 noundef, i32 noundef) #1

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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 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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
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 = !{!"int", !7, i64 0}
!11 = !{!12, !6, i64 56}
!12 = !{!"z_stream_s", !6, i64 0, !10, i64 8, !13, i64 16, !6, i64 24, !10, i64 32, !13, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !10, i64 88, !13, i64 96, !13, i64 104}
!13 = !{!"long", !7, i64 0}
!14 = !{!12, !6, i64 24}
!15 = !{!12, !6, i64 0}
!16 = !{!12, !10, i64 8}
!17 = !{!18, !10, i64 8}
!18 = !{!"internal_state", !6, i64 0, !10, i64 8, !6, i64 16, !13, i64 24, !6, i64 32, !10, i64 40, !10, i64 44, !6, i64 48, !10, i64 56, !7, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !6, i64 80, !13, i64 88, !6, i64 96, !6, i64 104, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !13, i64 136, !10, i64 144, !10, i64 148, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !7, i64 196, !7, i64 2488, !7, i64 2732, !19, i64 2888, !19, i64 2912, !19, i64 2936, !7, i64 2960, !7, i64 2992, !10, i64 5284, !10, i64 5288, !7, i64 5292, !6, i64 5872, !10, i64 5880, !10, i64 5884, !6, i64 5888, !13, i64 5896, !13, i64 5904, !10, i64 5912, !10, i64 5916, !20, i64 5920, !10, i64 5924}
!19 = !{!"tree_desc_s", !6, i64 0, !10, i64 8, !6, i64 16}
!20 = !{!"short", !7, i64 0}
!21 = !{!12, !6, i64 48}
!22 = !{!12, !10, i64 32}
!23 = !{!18, !6, i64 0}
!24 = !{!18, !10, i64 64}
!25 = !{!18, !10, i64 44}
!26 = !{!12, !13, i64 96}
!27 = !{!18, !6, i64 16}
!28 = !{!18, !10, i64 40}
!29 = !{!7, !7, i64 0}
!30 = !{!18, !6, i64 48}
!31 = !{!18, !10, i64 180}
!32 = !{!18, !10, i64 184}
!33 = !{!34, !10, i64 0}
!34 = !{!"gz_header_s", !10, i64 0, !13, i64 8, !10, i64 16, !10, i64 20, !6, i64 24, !10, i64 32, !10, i64 36, !6, i64 40, !10, i64 48, !6, i64 56, !10, i64 64, !10, i64 68, !10, i64 72}
!35 = !{!34, !10, i64 68}
!36 = !{!34, !6, i64 24}
!37 = !{!34, !6, i64 40}
!38 = !{!34, !6, i64 56}
!39 = !{!34, !13, i64 8}
!40 = !{!34, !10, i64 20}
!41 = !{!34, !10, i64 32}
!42 = !{!18, !10, i64 56}
!43 = !{!18, !10, i64 72}
!44 = !{!18, !10, i64 156}
!45 = !{!18, !13, i64 24}
!46 = distinct !{!46, !47}
!47 = !{!"llvm.loop.mustprogress"}
!48 = distinct !{!48, !47}
!49 = distinct !{!49, !47}
!50 = !{!18, !10, i64 164}
!51 = !{!52, !6, i64 8}
!52 = !{!"config_s", !20, i64 0, !20, i64 2, !20, i64 4, !20, i64 6, !6, i64 8}
!53 = !{!18, !6, i64 104}
!54 = !{!18, !10, i64 116}
!55 = !{!20, !20, i64 0}
!56 = !{!12, !13, i64 16}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.config_s = type { i16, i16, i16, i16, ptr }

@z_errmsg = external local_unnamed_addr constant [10 x ptr], align 16
@configuration_table = external hidden local_unnamed_addr constant [10 x %struct.config_s], align 16

declare i64 @z_adler32(i64 noundef, ptr noundef, i32 noundef) local_unnamed_addr #0

declare i64 @z_crc32(i64 noundef, ptr noundef, i32 noundef) local_unnamed_addr #0

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

4:                                                ; preds = %2
  %5 = getelementptr inbounds i8, ptr %0, i64 56
  %6 = load ptr, ptr %5, align 8, !tbaa !5
  %7 = icmp eq ptr %6, null
  %8 = icmp ugt i32 %1, 4
  %or.cond3 = or i1 %8, %7
  br i1 %or.cond3, label %.critedge, label %9

9:                                                ; preds = %4
  %10 = getelementptr inbounds i8, ptr %0, i64 24
  %11 = load ptr, ptr %10, align 8, !tbaa !12
  %12 = icmp eq ptr %11, null
  br i1 %12, label %24, label %13

13:                                               ; preds = %9
  %14 = load ptr, ptr %0, align 8, !tbaa !13
  %15 = icmp eq ptr %14, null
  br i1 %15, label %16, label %19

16:                                               ; preds = %13
  %17 = getelementptr inbounds i8, ptr %0, i64 8
  %18 = load i32, ptr %17, align 8, !tbaa !14
  %.not = icmp eq i32 %18, 0
  br i1 %.not, label %19, label %24

19:                                               ; preds = %16, %13
  %20 = getelementptr inbounds i8, ptr %6, i64 8
  %21 = load i32, ptr %20, align 8, !tbaa !15
  %22 = icmp eq i32 %21, 666
  %23 = icmp ne i32 %1, 4
  %or.cond5 = and i1 %23, %22
  br i1 %or.cond5, label %24, label %27

24:                                               ; preds = %19, %16, %9
  %25 = load ptr, ptr getelementptr inbounds (i8, ptr @z_errmsg, i64 32), align 16, !tbaa !19
  %26 = getelementptr inbounds i8, ptr %0, i64 48
  store ptr %25, ptr %26, align 8, !tbaa !20
  br label %.critedge

27:                                               ; preds = %19
  %28 = getelementptr inbounds i8, ptr %0, i64 32
  %29 = load i32, ptr %28, align 8, !tbaa !21
  %30 = icmp eq i32 %29, 0
  br i1 %30, label %31, label %34

31:                                               ; preds = %27
  %32 = load ptr, ptr getelementptr inbounds (i8, ptr @z_errmsg, i64 56), align 8, !tbaa !19
  %33 = getelementptr inbounds i8, ptr %0, i64 48
  store ptr %32, ptr %33, align 8, !tbaa !20
  br label %.critedge

34:                                               ; preds = %27
  store ptr %0, ptr %6, align 8, !tbaa !22
  %35 = getelementptr inbounds i8, ptr %6, i64 64
  %36 = load i32, ptr %35, align 8, !tbaa !23
  store i32 %1, ptr %35, align 8, !tbaa !23
  %37 = icmp eq i32 %21, 42
  br i1 %37, label %38, label %270

38:                                               ; preds = %34
  %39 = getelementptr inbounds i8, ptr %6, i64 44
  %40 = load i32, ptr %39, align 4, !tbaa !24
  %41 = icmp eq i32 %40, 2
  br i1 %41, label %42, label %234

42:                                               ; preds = %38
  %43 = tail call i64 @z_crc32(i64 noundef 0, ptr noundef null, i32 noundef 0) #3
  %44 = getelementptr inbounds i8, ptr %0, i64 96
  store i64 %43, ptr %44, align 8, !tbaa !25
  %45 = getelementptr inbounds i8, ptr %6, i64 16
  %46 = load ptr, ptr %45, align 8, !tbaa !26
  %47 = getelementptr inbounds i8, ptr %6, i64 40
  %48 = load i32, ptr %47, align 8, !tbaa !27
  %49 = add i32 %48, 1
  store i32 %49, ptr %47, align 8, !tbaa !27
  %50 = zext i32 %48 to i64
  %51 = getelementptr inbounds i8, ptr %46, i64 %50
  store i8 31, ptr %51, align 1, !tbaa !28
  %52 = load ptr, ptr %45, align 8, !tbaa !26
  %53 = load i32, ptr %47, align 8, !tbaa !27
  %54 = add i32 %53, 1
  store i32 %54, ptr %47, align 8, !tbaa !27
  %55 = zext i32 %53 to i64
  %56 = getelementptr inbounds i8, ptr %52, i64 %55
  store i8 -117, ptr %56, align 1, !tbaa !28
  %57 = load ptr, ptr %45, align 8, !tbaa !26
  %58 = load i32, ptr %47, align 8, !tbaa !27
  %59 = add i32 %58, 1
  store i32 %59, ptr %47, align 8, !tbaa !27
  %60 = zext i32 %58 to i64
  %61 = getelementptr inbounds i8, ptr %57, i64 %60
  store i8 8, ptr %61, align 1, !tbaa !28
  %62 = getelementptr inbounds i8, ptr %6, i64 48
  %63 = load ptr, ptr %62, align 8, !tbaa !29
  %64 = icmp eq ptr %63, null
  br i1 %64, label %65, label %111

65:                                               ; preds = %42
  %66 = load ptr, ptr %45, align 8, !tbaa !26
  %67 = load i32, ptr %47, align 8, !tbaa !27
  %68 = add i32 %67, 1
  store i32 %68, ptr %47, align 8, !tbaa !27
  %69 = zext i32 %67 to i64
  %70 = getelementptr inbounds i8, ptr %66, i64 %69
  store i8 0, ptr %70, align 1, !tbaa !28
  %71 = load ptr, ptr %45, align 8, !tbaa !26
  %72 = load i32, ptr %47, align 8, !tbaa !27
  %73 = add i32 %72, 1
  store i32 %73, ptr %47, align 8, !tbaa !27
  %74 = zext i32 %72 to i64
  %75 = getelementptr inbounds i8, ptr %71, i64 %74
  store i8 0, ptr %75, align 1, !tbaa !28
  %76 = load ptr, ptr %45, align 8, !tbaa !26
  %77 = load i32, ptr %47, align 8, !tbaa !27
  %78 = add i32 %77, 1
  store i32 %78, ptr %47, align 8, !tbaa !27
  %79 = zext i32 %77 to i64
  %80 = getelementptr inbounds i8, ptr %76, i64 %79
  store i8 0, ptr %80, align 1, !tbaa !28
  %81 = load ptr, ptr %45, align 8, !tbaa !26
  %82 = load i32, ptr %47, align 8, !tbaa !27
  %83 = add i32 %82, 1
  store i32 %83, ptr %47, align 8, !tbaa !27
  %84 = zext i32 %82 to i64
  %85 = getelementptr inbounds i8, ptr %81, i64 %84
  store i8 0, ptr %85, align 1, !tbaa !28
  %86 = load ptr, ptr %45, align 8, !tbaa !26
  %87 = load i32, ptr %47, align 8, !tbaa !27
  %88 = add i32 %87, 1
  store i32 %88, ptr %47, align 8, !tbaa !27
  %89 = zext i32 %87 to i64
  %90 = getelementptr inbounds i8, ptr %86, i64 %89
  store i8 0, ptr %90, align 1, !tbaa !28
  %91 = getelementptr inbounds i8, ptr %6, i64 180
  %92 = load i32, ptr %91, align 4, !tbaa !30
  %93 = icmp eq i32 %92, 9
  br i1 %93, label %.thread396, label %94

94:                                               ; preds = %65
  %95 = getelementptr inbounds i8, ptr %6, i64 184
  %96 = load i32, ptr %95, align 8, !tbaa !31
  %97 = icmp sgt i32 %96, 1
  %98 = icmp slt i32 %92, 2
  %spec.select = or i1 %98, %97
  %99 = select i1 %spec.select, i8 4, i8 0
  br label %.thread396

.thread396:                                       ; preds = %65, %94
  %100 = phi i8 [ %99, %94 ], [ 2, %65 ]
  %101 = load ptr, ptr %45, align 8, !tbaa !26
  %102 = load i32, ptr %47, align 8, !tbaa !27
  %103 = add i32 %102, 1
  store i32 %103, ptr %47, align 8, !tbaa !27
  %104 = zext i32 %102 to i64
  %105 = getelementptr inbounds i8, ptr %101, i64 %104
  store i8 %100, ptr %105, align 1, !tbaa !28
  %106 = load ptr, ptr %45, align 8, !tbaa !26
  %107 = load i32, ptr %47, align 8, !tbaa !27
  %108 = add i32 %107, 1
  store i32 %108, ptr %47, align 8, !tbaa !27
  %109 = zext i32 %107 to i64
  %110 = getelementptr inbounds i8, ptr %106, i64 %109
  store i8 3, ptr %110, align 1, !tbaa !28
  br label %.sink.split

111:                                              ; preds = %42
  %112 = load i32, ptr %63, align 8, !tbaa !32
  %.not353 = icmp ne i32 %112, 0
  %113 = zext i1 %.not353 to i8
  %114 = getelementptr inbounds i8, ptr %63, i64 68
  %115 = load i32, ptr %114, align 4, !tbaa !34
  %.not354 = icmp eq i32 %115, 0
  %116 = select i1 %.not354, i8 0, i8 2
  %117 = or disjoint i8 %116, %113
  %118 = getelementptr inbounds i8, ptr %63, i64 24
  %119 = load ptr, ptr %118, align 8, !tbaa !35
  %120 = icmp eq ptr %119, null
  %121 = select i1 %120, i8 0, i8 4
  %122 = or disjoint i8 %117, %121
  %123 = getelementptr inbounds i8, ptr %63, i64 40
  %124 = load ptr, ptr %123, align 8, !tbaa !36
  %125 = icmp eq ptr %124, null
  %126 = select i1 %125, i8 0, i8 8
  %127 = or disjoint i8 %122, %126
  %128 = getelementptr inbounds i8, ptr %63, i64 56
  %129 = load ptr, ptr %128, align 8, !tbaa !37
  %130 = icmp eq ptr %129, null
  %131 = select i1 %130, i8 0, i8 16
  %132 = or disjoint i8 %127, %131
  %133 = load ptr, ptr %45, align 8, !tbaa !26
  %134 = load i32, ptr %47, align 8, !tbaa !27
  %135 = add i32 %134, 1
  store i32 %135, ptr %47, align 8, !tbaa !27
  %136 = zext i32 %134 to i64
  %137 = getelementptr inbounds i8, ptr %133, i64 %136
  store i8 %132, ptr %137, align 1, !tbaa !28
  %138 = load ptr, ptr %62, align 8, !tbaa !29
  %139 = getelementptr inbounds i8, ptr %138, i64 8
  %140 = load i64, ptr %139, align 8, !tbaa !38
  %141 = trunc i64 %140 to i8
  %142 = load ptr, ptr %45, align 8, !tbaa !26
  %143 = load i32, ptr %47, align 8, !tbaa !27
  %144 = add i32 %143, 1
  store i32 %144, ptr %47, align 8, !tbaa !27
  %145 = zext i32 %143 to i64
  %146 = getelementptr inbounds i8, ptr %142, i64 %145
  store i8 %141, ptr %146, align 1, !tbaa !28
  %147 = load ptr, ptr %62, align 8, !tbaa !29
  %148 = getelementptr inbounds i8, ptr %147, i64 8
  %149 = load i64, ptr %148, align 8, !tbaa !38
  %150 = lshr i64 %149, 8
  %151 = trunc i64 %150 to i8
  %152 = load ptr, ptr %45, align 8, !tbaa !26
  %153 = load i32, ptr %47, align 8, !tbaa !27
  %154 = add i32 %153, 1
  store i32 %154, ptr %47, align 8, !tbaa !27
  %155 = zext i32 %153 to i64
  %156 = getelementptr inbounds i8, ptr %152, i64 %155
  store i8 %151, ptr %156, align 1, !tbaa !28
  %157 = load ptr, ptr %62, align 8, !tbaa !29
  %158 = getelementptr inbounds i8, ptr %157, i64 8
  %159 = load i64, ptr %158, align 8, !tbaa !38
  %160 = lshr i64 %159, 16
  %161 = trunc i64 %160 to i8
  %162 = load ptr, ptr %45, align 8, !tbaa !26
  %163 = load i32, ptr %47, align 8, !tbaa !27
  %164 = add i32 %163, 1
  store i32 %164, ptr %47, align 8, !tbaa !27
  %165 = zext i32 %163 to i64
  %166 = getelementptr inbounds i8, ptr %162, i64 %165
  store i8 %161, ptr %166, align 1, !tbaa !28
  %167 = load ptr, ptr %62, align 8, !tbaa !29
  %168 = getelementptr inbounds i8, ptr %167, i64 8
  %169 = load i64, ptr %168, align 8, !tbaa !38
  %170 = lshr i64 %169, 24
  %171 = trunc i64 %170 to i8
  %172 = load ptr, ptr %45, align 8, !tbaa !26
  %173 = load i32, ptr %47, align 8, !tbaa !27
  %174 = add i32 %173, 1
  store i32 %174, ptr %47, align 8, !tbaa !27
  %175 = zext i32 %173 to i64
  %176 = getelementptr inbounds i8, ptr %172, i64 %175
  store i8 %171, ptr %176, align 1, !tbaa !28
  %177 = getelementptr inbounds i8, ptr %6, i64 180
  %178 = load i32, ptr %177, align 4, !tbaa !30
  %179 = icmp eq i32 %178, 9
  br i1 %179, label %186, label %180

180:                                              ; preds = %111
  %181 = getelementptr inbounds i8, ptr %6, i64 184
  %182 = load i32, ptr %181, align 8, !tbaa !31
  %183 = icmp sgt i32 %182, 1
  %184 = icmp slt i32 %178, 2
  %spec.select377 = or i1 %184, %183
  %185 = select i1 %spec.select377, i8 4, i8 0
  br label %186

186:                                              ; preds = %111, %180
  %187 = phi i8 [ %185, %180 ], [ 2, %111 ]
  %188 = load ptr, ptr %45, align 8, !tbaa !26
  %189 = load i32, ptr %47, align 8, !tbaa !27
  %190 = add i32 %189, 1
  store i32 %190, ptr %47, align 8, !tbaa !27
  %191 = zext i32 %189 to i64
  %192 = getelementptr inbounds i8, ptr %188, i64 %191
  store i8 %187, ptr %192, align 1, !tbaa !28
  %193 = load ptr, ptr %62, align 8, !tbaa !29
  %194 = getelementptr inbounds i8, ptr %193, i64 20
  %195 = load i32, ptr %194, align 4, !tbaa !39
  %196 = trunc i32 %195 to i8
  %197 = load ptr, ptr %45, align 8, !tbaa !26
  %198 = load i32, ptr %47, align 8, !tbaa !27
  %199 = add i32 %198, 1
  store i32 %199, ptr %47, align 8, !tbaa !27
  %200 = zext i32 %198 to i64
  %201 = getelementptr inbounds i8, ptr %197, i64 %200
  store i8 %196, ptr %201, align 1, !tbaa !28
  %202 = load ptr, ptr %62, align 8, !tbaa !29
  %203 = getelementptr inbounds i8, ptr %202, i64 24
  %204 = load ptr, ptr %203, align 8, !tbaa !35
  %.not355 = icmp eq ptr %204, null
  br i1 %.not355, label %224, label %205

205:                                              ; preds = %186
  %206 = getelementptr inbounds i8, ptr %202, i64 32
  %207 = load i32, ptr %206, align 8, !tbaa !40
  %208 = trunc i32 %207 to i8
  %209 = load ptr, ptr %45, align 8, !tbaa !26
  %210 = load i32, ptr %47, align 8, !tbaa !27
  %211 = add i32 %210, 1
  store i32 %211, ptr %47, align 8, !tbaa !27
  %212 = zext i32 %210 to i64
  %213 = getelementptr inbounds i8, ptr %209, i64 %212
  store i8 %208, ptr %213, align 1, !tbaa !28
  %214 = load ptr, ptr %62, align 8, !tbaa !29
  %215 = getelementptr inbounds i8, ptr %214, i64 32
  %216 = load i32, ptr %215, align 8, !tbaa !40
  %217 = lshr i32 %216, 8
  %218 = trunc i32 %217 to i8
  %219 = load ptr, ptr %45, align 8, !tbaa !26
  %220 = load i32, ptr %47, align 8, !tbaa !27
  %221 = add i32 %220, 1
  store i32 %221, ptr %47, align 8, !tbaa !27
  %222 = zext i32 %220 to i64
  %223 = getelementptr inbounds i8, ptr %219, i64 %222
  store i8 %218, ptr %223, align 1, !tbaa !28
  %.pre = load ptr, ptr %62, align 8, !tbaa !29
  br label %224

224:                                              ; preds = %205, %186
  %225 = phi ptr [ %.pre, %205 ], [ %202, %186 ]
  %226 = getelementptr inbounds i8, ptr %225, i64 68
  %227 = load i32, ptr %226, align 4, !tbaa !34
  %.not356 = icmp eq i32 %227, 0
  br i1 %.not356, label %.thread, label %228

228:                                              ; preds = %224
  %229 = load i64, ptr %44, align 8, !tbaa !25
  %230 = load ptr, ptr %45, align 8, !tbaa !26
  %231 = load i32, ptr %47, align 8, !tbaa !27
  %232 = tail call i64 @z_crc32(i64 noundef %229, ptr noundef %230, i32 noundef %231) #3
  store i64 %232, ptr %44, align 8, !tbaa !25
  br label %.thread

.thread:                                          ; preds = %224, %228
  %233 = getelementptr inbounds i8, ptr %6, i64 56
  store i32 0, ptr %233, align 8, !tbaa !41
  store i32 69, ptr %20, align 8, !tbaa !15
  br label %272

234:                                              ; preds = %38
  %235 = getelementptr inbounds i8, ptr %6, i64 72
  %236 = load i32, ptr %235, align 8, !tbaa !42
  %237 = shl i32 %236, 12
  %238 = add i32 %237, -30720
  %239 = getelementptr inbounds i8, ptr %6, i64 184
  %240 = load i32, ptr %239, align 8, !tbaa !31
  %241 = icmp sgt i32 %240, 1
  br i1 %241, label %250, label %242

242:                                              ; preds = %234
  %243 = getelementptr inbounds i8, ptr %6, i64 180
  %244 = load i32, ptr %243, align 4, !tbaa !30
  %245 = icmp slt i32 %244, 2
  br i1 %245, label %250, label %246

246:                                              ; preds = %242
  %247 = icmp ult i32 %244, 6
  br i1 %247, label %250, label %248

248:                                              ; preds = %246
  %249 = icmp eq i32 %244, 6
  %. = select i1 %249, i32 128, i32 192
  br label %250

250:                                              ; preds = %248, %246, %234, %242
  %.0331 = phi i32 [ 0, %242 ], [ 0, %234 ], [ 64, %246 ], [ %., %248 ]
  %251 = or disjoint i32 %.0331, %238
  %252 = getelementptr inbounds i8, ptr %6, i64 156
  %253 = load i32, ptr %252, align 4, !tbaa !43
  %.not351 = icmp eq i32 %253, 0
  %254 = or disjoint i32 %251, 32
  %spec.select378 = select i1 %.not351, i32 %251, i32 %254
  %255 = urem i32 %spec.select378, 31
  %256 = or disjoint i32 %255, %spec.select378
  %257 = xor i32 %256, 31
  store i32 113, ptr %20, align 8, !tbaa !15
  tail call void @putShortMSB(ptr noundef nonnull %6, i32 noundef %257)
  %258 = load i32, ptr %252, align 4, !tbaa !43
  %.not352 = icmp eq i32 %258, 0
  br i1 %.not352, label %267, label %259

259:                                              ; preds = %250
  %260 = getelementptr inbounds i8, ptr %0, i64 96
  %261 = load i64, ptr %260, align 8, !tbaa !25
  %262 = lshr i64 %261, 16
  %263 = trunc i64 %262 to i32
  tail call void @putShortMSB(ptr noundef nonnull %6, i32 noundef %263)
  %264 = load i64, ptr %260, align 8, !tbaa !25
  %265 = trunc i64 %264 to i32
  %266 = and i32 %265, 65535
  tail call void @putShortMSB(ptr noundef nonnull %6, i32 noundef %266)
  br label %267

267:                                              ; preds = %259, %250
  %268 = tail call i64 @z_adler32(i64 noundef 0, ptr noundef null, i32 noundef 0) #3
  %269 = getelementptr inbounds i8, ptr %0, i64 96
  store i64 %268, ptr %269, align 8, !tbaa !25
  %.pr.pre = load i32, ptr %20, align 8, !tbaa !15
  br label %270

270:                                              ; preds = %267, %34
  %.pr = phi i32 [ %.pr.pre, %267 ], [ %21, %34 ]
  %271 = icmp eq i32 %.pr, 69
  br i1 %271, label %272, label %354

272:                                              ; preds = %.thread, %270
  %273 = getelementptr inbounds i8, ptr %6, i64 48
  %274 = load ptr, ptr %273, align 8, !tbaa !29
  %275 = getelementptr inbounds i8, ptr %274, i64 24
  %276 = load ptr, ptr %275, align 8, !tbaa !35
  %.not357 = icmp eq ptr %276, null
  br i1 %.not357, label %353, label %277

277:                                              ; preds = %272
  %278 = getelementptr inbounds i8, ptr %6, i64 40
  %279 = load i32, ptr %278, align 8, !tbaa !27
  %280 = getelementptr inbounds i8, ptr %6, i64 56
  %281 = load i32, ptr %280, align 8, !tbaa !41
  %282 = getelementptr inbounds i8, ptr %274, i64 32
  %283 = load i32, ptr %282, align 8, !tbaa !40
  %284 = and i32 %283, 65535
  %285 = icmp ult i32 %281, %284
  br i1 %285, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %277
  %286 = getelementptr inbounds i8, ptr %6, i64 24
  %287 = getelementptr inbounds i8, ptr %0, i64 96
  %288 = getelementptr inbounds i8, ptr %6, i64 16
  br label %289

289:                                              ; preds = %.lr.ph, %312
  %290 = phi i32 [ %281, %.lr.ph ], [ %325, %312 ]
  %291 = phi ptr [ %274, %.lr.ph ], [ %326, %312 ]
  %.0328398 = phi i32 [ %279, %.lr.ph ], [ %.1329, %312 ]
  %292 = load i32, ptr %278, align 8, !tbaa !27
  %293 = zext i32 %292 to i64
  %294 = load i64, ptr %286, align 8, !tbaa !44
  %295 = icmp eq i64 %294, %293
  br i1 %295, label %296, label %312

296:                                              ; preds = %289
  %297 = getelementptr inbounds i8, ptr %291, i64 68
  %298 = load i32, ptr %297, align 4, !tbaa !34
  %.not358 = icmp ne i32 %298, 0
  %299 = icmp ugt i32 %292, %.0328398
  %or.cond = select i1 %.not358, i1 %299, i1 false
  br i1 %or.cond, label %300, label %307

300:                                              ; preds = %296
  %301 = load i64, ptr %287, align 8, !tbaa !25
  %302 = load ptr, ptr %288, align 8, !tbaa !26
  %303 = zext i32 %.0328398 to i64
  %304 = getelementptr inbounds i8, ptr %302, i64 %303
  %305 = sub i32 %292, %.0328398
  %306 = tail call i64 @z_crc32(i64 noundef %301, ptr noundef %304, i32 noundef %305) #3
  store i64 %306, ptr %287, align 8, !tbaa !25
  br label %307

307:                                              ; preds = %300, %296
  tail call void @flush_pending(ptr noundef nonnull %0)
  %308 = load i32, ptr %278, align 8, !tbaa !27
  %309 = zext i32 %308 to i64
  %310 = load i64, ptr %286, align 8, !tbaa !44
  %311 = icmp eq i64 %310, %309
  %.pre407.pre = load ptr, ptr %273, align 8, !tbaa !29
  br i1 %311, label %._crit_edge, label %._crit_edge404

._crit_edge404:                                   ; preds = %307
  %.pre406 = load i32, ptr %280, align 8, !tbaa !41
  br label %312

312:                                              ; preds = %._crit_edge404, %289
  %.pre-phi429 = phi i64 [ %309, %._crit_edge404 ], [ %293, %289 ]
  %313 = phi i32 [ %308, %._crit_edge404 ], [ %292, %289 ]
  %314 = phi i32 [ %.pre406, %._crit_edge404 ], [ %290, %289 ]
  %315 = phi ptr [ %.pre407.pre, %._crit_edge404 ], [ %291, %289 ]
  %.1329 = phi i32 [ %308, %._crit_edge404 ], [ %.0328398, %289 ]
  %316 = getelementptr inbounds i8, ptr %315, i64 24
  %317 = load ptr, ptr %316, align 8, !tbaa !35
  %318 = zext i32 %314 to i64
  %319 = getelementptr inbounds i8, ptr %317, i64 %318
  %320 = load i8, ptr %319, align 1, !tbaa !28
  %321 = load ptr, ptr %288, align 8, !tbaa !26
  %322 = add i32 %313, 1
  store i32 %322, ptr %278, align 8, !tbaa !27
  %323 = getelementptr inbounds i8, ptr %321, i64 %.pre-phi429
  store i8 %320, ptr %323, align 1, !tbaa !28
  %324 = load i32, ptr %280, align 8, !tbaa !41
  %325 = add i32 %324, 1
  store i32 %325, ptr %280, align 8, !tbaa !41
  %326 = load ptr, ptr %273, align 8, !tbaa !29
  %327 = getelementptr inbounds i8, ptr %326, i64 32
  %328 = load i32, ptr %327, align 8, !tbaa !40
  %329 = and i32 %328, 65535
  %330 = icmp ult i32 %325, %329
  br i1 %330, label %289, label %._crit_edge, !llvm.loop !45

._crit_edge:                                      ; preds = %312, %307, %277
  %331 = phi ptr [ %274, %277 ], [ %.pre407.pre, %307 ], [ %326, %312 ]
  %.2330 = phi i32 [ %279, %277 ], [ %308, %307 ], [ %.1329, %312 ]
  %332 = getelementptr inbounds i8, ptr %331, i64 68
  %333 = load i32, ptr %332, align 4, !tbaa !34
  %.not359 = icmp eq i32 %333, 0
  br i1 %.not359, label %346, label %334

334:                                              ; preds = %._crit_edge
  %335 = load i32, ptr %278, align 8, !tbaa !27
  %336 = icmp ugt i32 %335, %.2330
  br i1 %336, label %337, label %346

337:                                              ; preds = %334
  %338 = getelementptr inbounds i8, ptr %0, i64 96
  %339 = load i64, ptr %338, align 8, !tbaa !25
  %340 = getelementptr inbounds i8, ptr %6, i64 16
  %341 = load ptr, ptr %340, align 8, !tbaa !26
  %342 = zext i32 %.2330 to i64
  %343 = getelementptr inbounds i8, ptr %341, i64 %342
  %344 = sub i32 %335, %.2330
  %345 = tail call i64 @z_crc32(i64 noundef %339, ptr noundef %343, i32 noundef %344) #3
  store i64 %345, ptr %338, align 8, !tbaa !25
  %.pre408 = load ptr, ptr %273, align 8, !tbaa !29
  br label %346

346:                                              ; preds = %337, %334, %._crit_edge
  %347 = phi ptr [ %.pre408, %337 ], [ %331, %334 ], [ %331, %._crit_edge ]
  %348 = load i32, ptr %280, align 8, !tbaa !41
  %349 = getelementptr inbounds i8, ptr %347, i64 32
  %350 = load i32, ptr %349, align 8, !tbaa !40
  %351 = icmp eq i32 %348, %350
  br i1 %351, label %352, label %thread-pre-split383

352:                                              ; preds = %346
  store i32 0, ptr %280, align 8, !tbaa !41
  store i32 73, ptr %20, align 8, !tbaa !15
  br label %.thread385

353:                                              ; preds = %272
  store i32 73, ptr %20, align 8, !tbaa !15
  br label %.thread385

thread-pre-split383:                              ; preds = %346
  %.pr384 = load i32, ptr %20, align 8, !tbaa !15
  br label %354

354:                                              ; preds = %thread-pre-split383, %270
  %355 = phi i32 [ %.pr384, %thread-pre-split383 ], [ %.pr, %270 ]
  %356 = icmp eq i32 %355, 73
  br i1 %356, label %..thread385_crit_edge, label %419

..thread385_crit_edge:                            ; preds = %354
  %.phi.trans.insert = getelementptr inbounds i8, ptr %6, i64 48
  %.pre409 = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !29
  br label %.thread385

.thread385:                                       ; preds = %..thread385_crit_edge, %353, %352
  %357 = phi ptr [ %.pre409, %..thread385_crit_edge ], [ %274, %353 ], [ %347, %352 ]
  %358 = getelementptr inbounds i8, ptr %6, i64 48
  %359 = getelementptr inbounds i8, ptr %357, i64 40
  %360 = load ptr, ptr %359, align 8, !tbaa !36
  %.not360 = icmp eq ptr %360, null
  br i1 %.not360, label %.thread390.sink.split, label %361

361:                                              ; preds = %.thread385
  %362 = getelementptr inbounds i8, ptr %6, i64 40
  %363 = load i32, ptr %362, align 8, !tbaa !27
  %364 = getelementptr inbounds i8, ptr %6, i64 24
  %365 = getelementptr inbounds i8, ptr %0, i64 96
  %366 = getelementptr inbounds i8, ptr %6, i64 16
  %367 = getelementptr inbounds i8, ptr %6, i64 56
  br label %368

368:                                              ; preds = %389, %361
  %.0325 = phi i32 [ %363, %361 ], [ %.1326, %389 ]
  %369 = load i32, ptr %362, align 8, !tbaa !27
  %370 = zext i32 %369 to i64
  %371 = load i64, ptr %364, align 8, !tbaa !44
  %372 = icmp eq i64 %371, %370
  %.pre412 = load ptr, ptr %358, align 8, !tbaa !29
  br i1 %372, label %373, label %389

373:                                              ; preds = %368
  %374 = getelementptr inbounds i8, ptr %.pre412, i64 68
  %375 = load i32, ptr %374, align 4, !tbaa !34
  %.not361 = icmp ne i32 %375, 0
  %376 = icmp ugt i32 %369, %.0325
  %or.cond379 = select i1 %.not361, i1 %376, i1 false
  br i1 %or.cond379, label %377, label %384

377:                                              ; preds = %373
  %378 = load i64, ptr %365, align 8, !tbaa !25
  %379 = load ptr, ptr %366, align 8, !tbaa !26
  %380 = zext i32 %.0325 to i64
  %381 = getelementptr inbounds i8, ptr %379, i64 %380
  %382 = sub i32 %369, %.0325
  %383 = tail call i64 @z_crc32(i64 noundef %378, ptr noundef %381, i32 noundef %382) #3
  store i64 %383, ptr %365, align 8, !tbaa !25
  br label %384

384:                                              ; preds = %377, %373
  tail call void @flush_pending(ptr noundef nonnull %0)
  %385 = load i32, ptr %362, align 8, !tbaa !27
  %386 = zext i32 %385 to i64
  %387 = load i64, ptr %364, align 8, !tbaa !44
  %388 = icmp eq i64 %387, %386
  br i1 %388, label %402, label %._crit_edge410

._crit_edge410:                                   ; preds = %384
  %.pre411 = load ptr, ptr %358, align 8, !tbaa !29
  br label %389

389:                                              ; preds = %._crit_edge410, %368
  %.pre-phi428 = phi i64 [ %386, %._crit_edge410 ], [ %370, %368 ]
  %390 = phi i32 [ %385, %._crit_edge410 ], [ %369, %368 ]
  %391 = phi ptr [ %.pre411, %._crit_edge410 ], [ %.pre412, %368 ]
  %.1326 = phi i32 [ %385, %._crit_edge410 ], [ %.0325, %368 ]
  %392 = getelementptr inbounds i8, ptr %391, i64 40
  %393 = load ptr, ptr %392, align 8, !tbaa !36
  %394 = load i32, ptr %367, align 8, !tbaa !41
  %395 = add i32 %394, 1
  store i32 %395, ptr %367, align 8, !tbaa !41
  %396 = zext i32 %394 to i64
  %397 = getelementptr inbounds i8, ptr %393, i64 %396
  %398 = load i8, ptr %397, align 1, !tbaa !28
  %399 = load ptr, ptr %366, align 8, !tbaa !26
  %400 = add i32 %390, 1
  store i32 %400, ptr %362, align 8, !tbaa !27
  %401 = getelementptr inbounds i8, ptr %399, i64 %.pre-phi428
  store i8 %398, ptr %401, align 1, !tbaa !28
  %.not362 = icmp eq i8 %398, 0
  br i1 %.not362, label %402, label %368, !llvm.loop !47

402:                                              ; preds = %384, %389
  %.2327 = phi i32 [ %.1326, %389 ], [ %385, %384 ]
  %403 = phi i1 [ true, %389 ], [ false, %384 ]
  %404 = load ptr, ptr %358, align 8, !tbaa !29
  %405 = getelementptr inbounds i8, ptr %404, i64 68
  %406 = load i32, ptr %405, align 4, !tbaa !34
  %.not363 = icmp eq i32 %406, 0
  br i1 %.not363, label %417, label %407

407:                                              ; preds = %402
  %408 = load i32, ptr %362, align 8, !tbaa !27
  %409 = icmp ugt i32 %408, %.2327
  br i1 %409, label %410, label %417

410:                                              ; preds = %407
  %411 = load i64, ptr %365, align 8, !tbaa !25
  %412 = load ptr, ptr %366, align 8, !tbaa !26
  %413 = zext i32 %.2327 to i64
  %414 = getelementptr inbounds i8, ptr %412, i64 %413
  %415 = sub i32 %408, %.2327
  %416 = tail call i64 @z_crc32(i64 noundef %411, ptr noundef %414, i32 noundef %415) #3
  store i64 %416, ptr %365, align 8, !tbaa !25
  br label %417

417:                                              ; preds = %410, %407, %402
  br i1 %403, label %418, label %._crit_edge413

._crit_edge413:                                   ; preds = %417
  %.pr388.pre = load i32, ptr %20, align 8, !tbaa !15
  br label %419

418:                                              ; preds = %417
  store i32 0, ptr %367, align 8, !tbaa !41
  br label %.thread390.sink.split

419:                                              ; preds = %._crit_edge413, %354
  %.pr388 = phi i32 [ %.pr388.pre, %._crit_edge413 ], [ %355, %354 ]
  %420 = icmp eq i32 %.pr388, 91
  br i1 %420, label %.thread390, label %482

.thread390.sink.split:                            ; preds = %.thread385, %418
  store i32 91, ptr %20, align 8, !tbaa !15
  br label %.thread390

.thread390:                                       ; preds = %.thread390.sink.split, %419
  %421 = getelementptr inbounds i8, ptr %6, i64 48
  %422 = load ptr, ptr %421, align 8, !tbaa !29
  %423 = getelementptr inbounds i8, ptr %422, i64 56
  %424 = load ptr, ptr %423, align 8, !tbaa !37
  %.not364 = icmp eq ptr %424, null
  br i1 %.not364, label %.thread395.sink.split, label %425

425:                                              ; preds = %.thread390
  %426 = getelementptr inbounds i8, ptr %6, i64 40
  %427 = load i32, ptr %426, align 8, !tbaa !27
  %428 = getelementptr inbounds i8, ptr %6, i64 24
  %429 = getelementptr inbounds i8, ptr %0, i64 96
  %430 = getelementptr inbounds i8, ptr %6, i64 16
  %431 = getelementptr inbounds i8, ptr %6, i64 56
  br label %432

432:                                              ; preds = %453, %425
  %.0322 = phi i32 [ %427, %425 ], [ %.1323, %453 ]
  %433 = load i32, ptr %426, align 8, !tbaa !27
  %434 = zext i32 %433 to i64
  %435 = load i64, ptr %428, align 8, !tbaa !44
  %436 = icmp eq i64 %435, %434
  %.pre417 = load ptr, ptr %421, align 8, !tbaa !29
  br i1 %436, label %437, label %453

437:                                              ; preds = %432
  %438 = getelementptr inbounds i8, ptr %.pre417, i64 68
  %439 = load i32, ptr %438, align 4, !tbaa !34
  %.not365 = icmp ne i32 %439, 0
  %440 = icmp ugt i32 %433, %.0322
  %or.cond380 = select i1 %.not365, i1 %440, i1 false
  br i1 %or.cond380, label %441, label %448

441:                                              ; preds = %437
  %442 = load i64, ptr %429, align 8, !tbaa !25
  %443 = load ptr, ptr %430, align 8, !tbaa !26
  %444 = zext i32 %.0322 to i64
  %445 = getelementptr inbounds i8, ptr %443, i64 %444
  %446 = sub i32 %433, %.0322
  %447 = tail call i64 @z_crc32(i64 noundef %442, ptr noundef %445, i32 noundef %446) #3
  store i64 %447, ptr %429, align 8, !tbaa !25
  br label %448

448:                                              ; preds = %441, %437
  tail call void @flush_pending(ptr noundef nonnull %0)
  %449 = load i32, ptr %426, align 8, !tbaa !27
  %450 = zext i32 %449 to i64
  %451 = load i64, ptr %428, align 8, !tbaa !44
  %452 = icmp eq i64 %451, %450
  br i1 %452, label %466, label %._crit_edge415

._crit_edge415:                                   ; preds = %448
  %.pre416 = load ptr, ptr %421, align 8, !tbaa !29
  br label %453

453:                                              ; preds = %._crit_edge415, %432
  %.pre-phi427 = phi i64 [ %450, %._crit_edge415 ], [ %434, %432 ]
  %454 = phi i32 [ %449, %._crit_edge415 ], [ %433, %432 ]
  %455 = phi ptr [ %.pre416, %._crit_edge415 ], [ %.pre417, %432 ]
  %.1323 = phi i32 [ %449, %._crit_edge415 ], [ %.0322, %432 ]
  %456 = getelementptr inbounds i8, ptr %455, i64 56
  %457 = load ptr, ptr %456, align 8, !tbaa !37
  %458 = load i32, ptr %431, align 8, !tbaa !41
  %459 = add i32 %458, 1
  store i32 %459, ptr %431, align 8, !tbaa !41
  %460 = zext i32 %458 to i64
  %461 = getelementptr inbounds i8, ptr %457, i64 %460
  %462 = load i8, ptr %461, align 1, !tbaa !28
  %463 = load ptr, ptr %430, align 8, !tbaa !26
  %464 = add i32 %454, 1
  store i32 %464, ptr %426, align 8, !tbaa !27
  %465 = getelementptr inbounds i8, ptr %463, i64 %.pre-phi427
  store i8 %462, ptr %465, align 1, !tbaa !28
  %.not366 = icmp eq i8 %462, 0
  br i1 %.not366, label %466, label %432, !llvm.loop !48

466:                                              ; preds = %448, %453
  %.2 = phi i32 [ %.1323, %453 ], [ %449, %448 ]
  %467 = phi i1 [ true, %453 ], [ false, %448 ]
  %468 = load ptr, ptr %421, align 8, !tbaa !29
  %469 = getelementptr inbounds i8, ptr %468, i64 68
  %470 = load i32, ptr %469, align 4, !tbaa !34
  %.not367 = icmp eq i32 %470, 0
  br i1 %.not367, label %481, label %471

471:                                              ; preds = %466
  %472 = load i32, ptr %426, align 8, !tbaa !27
  %473 = icmp ugt i32 %472, %.2
  br i1 %473, label %474, label %481

474:                                              ; preds = %471
  %475 = load i64, ptr %429, align 8, !tbaa !25
  %476 = load ptr, ptr %430, align 8, !tbaa !26
  %477 = zext i32 %.2 to i64
  %478 = getelementptr inbounds i8, ptr %476, i64 %477
  %479 = sub i32 %472, %.2
  %480 = tail call i64 @z_crc32(i64 noundef %475, ptr noundef %478, i32 noundef %479) #3
  store i64 %480, ptr %429, align 8, !tbaa !25
  br label %481

481:                                              ; preds = %474, %471, %466
  br i1 %467, label %.thread395.sink.split, label %thread-pre-split392

thread-pre-split392:                              ; preds = %481
  %.pr393 = load i32, ptr %20, align 8, !tbaa !15
  br label %482

482:                                              ; preds = %thread-pre-split392, %419
  %483 = phi i32 [ %.pr393, %thread-pre-split392 ], [ %.pr388, %419 ]
  %484 = icmp eq i32 %483, 103
  br i1 %484, label %.thread395, label %519

.thread395.sink.split:                            ; preds = %.thread390, %481
  store i32 103, ptr %20, align 8, !tbaa !15
  br label %.thread395

.thread395:                                       ; preds = %.thread395.sink.split, %482
  %485 = getelementptr inbounds i8, ptr %6, i64 48
  %486 = load ptr, ptr %485, align 8, !tbaa !29
  %487 = getelementptr inbounds i8, ptr %486, i64 68
  %488 = load i32, ptr %487, align 4, !tbaa !34
  %.not368 = icmp eq i32 %488, 0
  br i1 %.not368, label %.sink.split, label %489

489:                                              ; preds = %.thread395
  %490 = getelementptr inbounds i8, ptr %6, i64 40
  %491 = load i32, ptr %490, align 8, !tbaa !27
  %492 = add i32 %491, 2
  %493 = zext i32 %492 to i64
  %494 = getelementptr inbounds i8, ptr %6, i64 24
  %495 = load i64, ptr %494, align 8, !tbaa !44
  %496 = icmp ult i64 %495, %493
  br i1 %496, label %497, label %498

497:                                              ; preds = %489
  tail call void @flush_pending(ptr noundef nonnull %0)
  %.pre418 = load i32, ptr %490, align 8, !tbaa !27
  %.pre419 = load i64, ptr %494, align 8, !tbaa !44
  %.pre424 = add i32 %.pre418, 2
  %.pre425 = zext i32 %.pre424 to i64
  br label %498

498:                                              ; preds = %497, %489
  %.pre-phi426 = phi i64 [ %.pre425, %497 ], [ %493, %489 ]
  %499 = phi i64 [ %.pre419, %497 ], [ %495, %489 ]
  %500 = phi i32 [ %.pre418, %497 ], [ %491, %489 ]
  %.not369 = icmp ult i64 %499, %.pre-phi426
  br i1 %.not369, label %519, label %501

501:                                              ; preds = %498
  %502 = getelementptr inbounds i8, ptr %0, i64 96
  %503 = load i64, ptr %502, align 8, !tbaa !25
  %504 = trunc i64 %503 to i8
  %505 = getelementptr inbounds i8, ptr %6, i64 16
  %506 = load ptr, ptr %505, align 8, !tbaa !26
  %507 = add i32 %500, 1
  store i32 %507, ptr %490, align 8, !tbaa !27
  %508 = zext i32 %500 to i64
  %509 = getelementptr inbounds i8, ptr %506, i64 %508
  store i8 %504, ptr %509, align 1, !tbaa !28
  %510 = load i64, ptr %502, align 8, !tbaa !25
  %511 = lshr i64 %510, 8
  %512 = trunc i64 %511 to i8
  %513 = load ptr, ptr %505, align 8, !tbaa !26
  %514 = load i32, ptr %490, align 8, !tbaa !27
  %515 = add i32 %514, 1
  store i32 %515, ptr %490, align 8, !tbaa !27
  %516 = zext i32 %514 to i64
  %517 = getelementptr inbounds i8, ptr %513, i64 %516
  store i8 %512, ptr %517, align 1, !tbaa !28
  %518 = tail call i64 @z_crc32(i64 noundef 0, ptr noundef null, i32 noundef 0) #3
  store i64 %518, ptr %502, align 8, !tbaa !25
  br label %.sink.split

.sink.split:                                      ; preds = %.thread395, %501, %.thread396
  store i32 113, ptr %20, align 8, !tbaa !15
  br label %519

519:                                              ; preds = %.sink.split, %498, %482
  %520 = getelementptr inbounds i8, ptr %6, i64 40
  %521 = load i32, ptr %520, align 8, !tbaa !27
  %.not370 = icmp eq i32 %521, 0
  br i1 %.not370, label %526, label %522

522:                                              ; preds = %519
  tail call void @flush_pending(ptr noundef nonnull %0)
  %523 = load i32, ptr %28, align 8, !tbaa !21
  %524 = icmp eq i32 %523, 0
  br i1 %524, label %525, label %534

525:                                              ; preds = %522
  store i32 -1, ptr %35, align 8, !tbaa !23
  br label %.critedge

526:                                              ; preds = %519
  %527 = getelementptr inbounds i8, ptr %0, i64 8
  %528 = load i32, ptr %527, align 8, !tbaa !14
  %529 = icmp eq i32 %528, 0
  %530 = icmp sge i32 %36, %1
  %or.cond7 = and i1 %23, %530
  %or.cond381 = select i1 %529, i1 %or.cond7, i1 false
  br i1 %or.cond381, label %531, label %534

531:                                              ; preds = %526
  %532 = load ptr, ptr getelementptr inbounds (i8, ptr @z_errmsg, i64 56), align 8, !tbaa !19
  %533 = getelementptr inbounds i8, ptr %0, i64 48
  store ptr %532, ptr %533, align 8, !tbaa !20
  br label %.critedge

534:                                              ; preds = %526, %522
  %535 = load i32, ptr %20, align 8, !tbaa !15
  %536 = icmp eq i32 %535, 666
  %537 = getelementptr inbounds i8, ptr %0, i64 8
  %538 = load i32, ptr %537, align 8, !tbaa !14
  %.not371 = icmp eq i32 %538, 0
  br i1 %536, label %539, label %543

539:                                              ; preds = %534
  br i1 %.not371, label %.thread430, label %540

540:                                              ; preds = %539
  %541 = load ptr, ptr getelementptr inbounds (i8, ptr @z_errmsg, i64 56), align 8, !tbaa !19
  %542 = getelementptr inbounds i8, ptr %0, i64 48
  store ptr %541, ptr %542, align 8, !tbaa !20
  br label %.critedge

543:                                              ; preds = %534
  br i1 %.not371, label %.thread430, label %548

.thread430:                                       ; preds = %539, %543
  %544 = getelementptr inbounds i8, ptr %6, i64 164
  %545 = load i32, ptr %544, align 4, !tbaa !49
  %.not373 = icmp eq i32 %545, 0
  br i1 %.not373, label %546, label %548

546:                                              ; preds = %.thread430
  %.not374 = icmp eq i32 %1, 0
  br i1 %.not374, label %.critedge, label %547

547:                                              ; preds = %546
  br i1 %536, label %583, label %548

548:                                              ; preds = %547, %.thread430, %543
  %549 = getelementptr inbounds i8, ptr %6, i64 180
  %550 = load i32, ptr %549, align 4, !tbaa !30
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds [10 x %struct.config_s], ptr @configuration_table, i64 0, i64 %551, i32 4
  %553 = load ptr, ptr %552, align 8, !tbaa !50
  %554 = tail call i32 %553(ptr noundef nonnull %6, i32 noundef %1) #3
  %555 = and i32 %554, -2
  %or.cond9 = icmp eq i32 %555, 2
  br i1 %or.cond9, label %556, label %557

556:                                              ; preds = %548
  store i32 666, ptr %20, align 8, !tbaa !15
  br label %557

557:                                              ; preds = %548, %556
  %558 = and i32 %554, -3
  %or.cond11 = icmp eq i32 %558, 0
  br i1 %or.cond11, label %559, label %563

559:                                              ; preds = %557
  %560 = load i32, ptr %28, align 8, !tbaa !21
  %561 = icmp eq i32 %560, 0
  br i1 %561, label %562, label %.critedge

562:                                              ; preds = %559
  store i32 -1, ptr %35, align 8, !tbaa !23
  br label %.critedge

563:                                              ; preds = %557
  %564 = icmp eq i32 %554, 1
  br i1 %564, label %565, label %583

565:                                              ; preds = %563
  %566 = icmp eq i32 %1, 1
  br i1 %566, label %567, label %568

567:                                              ; preds = %565
  tail call void @_tr_align(ptr noundef nonnull %6) #3
  br label %579

568:                                              ; preds = %565
  tail call void @_tr_stored_block(ptr noundef nonnull %6, ptr noundef null, i64 noundef 0, i32 noundef 0) #3
  %569 = icmp eq i32 %1, 3
  br i1 %569, label %570, label %579

570:                                              ; preds = %568
  %571 = getelementptr inbounds i8, ptr %6, i64 104
  %572 = load ptr, ptr %571, align 8, !tbaa !52
  %573 = getelementptr inbounds i8, ptr %6, i64 116
  %574 = load i32, ptr %573, align 4, !tbaa !53
  %575 = add i32 %574, -1
  %576 = zext i32 %575 to i64
  %577 = getelementptr inbounds i16, ptr %572, i64 %576
  store i16 0, ptr %577, align 2, !tbaa !54
  %578 = shl nuw nsw i64 %576, 1
  tail call void @llvm.memset.p0.i64(ptr align 1 %572, i8 0, i64 %578, i1 false)
  br label %579

579:                                              ; preds = %568, %570, %567
  tail call void @flush_pending(ptr noundef nonnull %0)
  %580 = load i32, ptr %28, align 8, !tbaa !21
  %581 = icmp eq i32 %580, 0
  br i1 %581, label %582, label %583

582:                                              ; preds = %579
  store i32 -1, ptr %35, align 8, !tbaa !23
  br label %.critedge

583:                                              ; preds = %579, %563, %547
  br i1 %23, label %.critedge, label %584

584:                                              ; preds = %583
  %585 = getelementptr inbounds i8, ptr %6, i64 44
  %586 = load i32, ptr %585, align 4, !tbaa !24
  %587 = icmp slt i32 %586, 1
  br i1 %587, label %.critedge, label %588

588:                                              ; preds = %584
  %589 = icmp eq i32 %586, 2
  %590 = getelementptr inbounds i8, ptr %0, i64 96
  %591 = load i64, ptr %590, align 8, !tbaa !25
  br i1 %589, label %592, label %656

592:                                              ; preds = %588
  %593 = trunc i64 %591 to i8
  %594 = getelementptr inbounds i8, ptr %6, i64 16
  %595 = load ptr, ptr %594, align 8, !tbaa !26
  %596 = load i32, ptr %520, align 8, !tbaa !27
  %597 = add i32 %596, 1
  store i32 %597, ptr %520, align 8, !tbaa !27
  %598 = zext i32 %596 to i64
  %599 = getelementptr inbounds i8, ptr %595, i64 %598
  store i8 %593, ptr %599, align 1, !tbaa !28
  %600 = load i64, ptr %590, align 8, !tbaa !25
  %601 = lshr i64 %600, 8
  %602 = trunc i64 %601 to i8
  %603 = load ptr, ptr %594, align 8, !tbaa !26
  %604 = load i32, ptr %520, align 8, !tbaa !27
  %605 = add i32 %604, 1
  store i32 %605, ptr %520, align 8, !tbaa !27
  %606 = zext i32 %604 to i64
  %607 = getelementptr inbounds i8, ptr %603, i64 %606
  store i8 %602, ptr %607, align 1, !tbaa !28
  %608 = load i64, ptr %590, align 8, !tbaa !25
  %609 = lshr i64 %608, 16
  %610 = trunc i64 %609 to i8
  %611 = load ptr, ptr %594, align 8, !tbaa !26
  %612 = load i32, ptr %520, align 8, !tbaa !27
  %613 = add i32 %612, 1
  store i32 %613, ptr %520, align 8, !tbaa !27
  %614 = zext i32 %612 to i64
  %615 = getelementptr inbounds i8, ptr %611, i64 %614
  store i8 %610, ptr %615, align 1, !tbaa !28
  %616 = load i64, ptr %590, align 8, !tbaa !25
  %617 = lshr i64 %616, 24
  %618 = trunc i64 %617 to i8
  %619 = load ptr, ptr %594, align 8, !tbaa !26
  %620 = load i32, ptr %520, align 8, !tbaa !27
  %621 = add i32 %620, 1
  store i32 %621, ptr %520, align 8, !tbaa !27
  %622 = zext i32 %620 to i64
  %623 = getelementptr inbounds i8, ptr %619, i64 %622
  store i8 %618, ptr %623, align 1, !tbaa !28
  %624 = getelementptr inbounds i8, ptr %0, i64 16
  %625 = load i64, ptr %624, align 8, !tbaa !55
  %626 = trunc i64 %625 to i8
  %627 = load ptr, ptr %594, align 8, !tbaa !26
  %628 = load i32, ptr %520, align 8, !tbaa !27
  %629 = add i32 %628, 1
  store i32 %629, ptr %520, align 8, !tbaa !27
  %630 = zext i32 %628 to i64
  %631 = getelementptr inbounds i8, ptr %627, i64 %630
  store i8 %626, ptr %631, align 1, !tbaa !28
  %632 = load i64, ptr %624, align 8, !tbaa !55
  %633 = lshr i64 %632, 8
  %634 = trunc i64 %633 to i8
  %635 = load ptr, ptr %594, align 8, !tbaa !26
  %636 = load i32, ptr %520, align 8, !tbaa !27
  %637 = add i32 %636, 1
  store i32 %637, ptr %520, align 8, !tbaa !27
  %638 = zext i32 %636 to i64
  %639 = getelementptr inbounds i8, ptr %635, i64 %638
  store i8 %634, ptr %639, align 1, !tbaa !28
  %640 = load i64, ptr %624, align 8, !tbaa !55
  %641 = lshr i64 %640, 16
  %642 = trunc i64 %641 to i8
  %643 = load ptr, ptr %594, align 8, !tbaa !26
  %644 = load i32, ptr %520, align 8, !tbaa !27
  %645 = add i32 %644, 1
  store i32 %645, ptr %520, align 8, !tbaa !27
  %646 = zext i32 %644 to i64
  %647 = getelementptr inbounds i8, ptr %643, i64 %646
  store i8 %642, ptr %647, align 1, !tbaa !28
  %648 = load i64, ptr %624, align 8, !tbaa !55
  %649 = lshr i64 %648, 24
  %650 = trunc i64 %649 to i8
  %651 = load ptr, ptr %594, align 8, !tbaa !26
  %652 = load i32, ptr %520, align 8, !tbaa !27
  %653 = add i32 %652, 1
  store i32 %653, ptr %520, align 8, !tbaa !27
  %654 = zext i32 %652 to i64
  %655 = getelementptr inbounds i8, ptr %651, i64 %654
  store i8 %650, ptr %655, align 1, !tbaa !28
  br label %662

656:                                              ; preds = %588
  %657 = lshr i64 %591, 16
  %658 = trunc i64 %657 to i32
  tail call void @putShortMSB(ptr noundef nonnull %6, i32 noundef %658)
  %659 = load i64, ptr %590, align 8, !tbaa !25
  %660 = trunc i64 %659 to i32
  %661 = and i32 %660, 65535
  tail call void @putShortMSB(ptr noundef nonnull %6, i32 noundef %661)
  br label %662

662:                                              ; preds = %656, %592
  tail call void @flush_pending(ptr noundef nonnull %0)
  %663 = load i32, ptr %585, align 4, !tbaa !24
  %664 = icmp sgt i32 %663, 0
  br i1 %664, label %665, label %667

665:                                              ; preds = %662
  %666 = sub nsw i32 0, %663
  store i32 %666, ptr %585, align 4, !tbaa !24
  br label %667

667:                                              ; preds = %665, %662
  %668 = load i32, ptr %520, align 8, !tbaa !27
  %.not376 = icmp eq i32 %668, 0
  %669 = zext i1 %.not376 to i32
  br label %.critedge

.critedge:                                        ; preds = %546, %582, %562, %559, %584, %583, %2, %4, %667, %540, %531, %525, %31, %24
  %.1 = phi i32 [ -2, %24 ], [ -5, %31 ], [ 0, %525 ], [ -5, %540 ], [ %669, %667 ], [ -5, %531 ], [ -2, %4 ], [ -2, %2 ], [ 0, %583 ], [ 1, %584 ], [ 0, %559 ], [ 0, %562 ], [ 0, %582 ], [ 0, %546 ]
  ret i32 %.1
}

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

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

declare void @_tr_align(ptr noundef) local_unnamed_addr #0

declare void @_tr_stored_block(ptr noundef, ptr noundef, i64 noundef, i32 noundef) local_unnamed_addr #0

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

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 nocallback nofree nounwind willreturn memory(argmem: write) }
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, !7, i64 56}
!6 = !{!"z_stream_s", !7, i64 0, !10, i64 8, !11, i64 16, !7, i64 24, !10, i64 32, !11, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !10, i64 88, !11, i64 96, !11, i64 104}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"long", !8, i64 0}
!12 = !{!6, !7, i64 24}
!13 = !{!6, !7, i64 0}
!14 = !{!6, !10, i64 8}
!15 = !{!16, !10, i64 8}
!16 = !{!"internal_state", !7, i64 0, !10, i64 8, !7, i64 16, !11, i64 24, !7, i64 32, !10, i64 40, !10, i64 44, !7, i64 48, !10, i64 56, !8, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !7, i64 80, !11, i64 88, !7, i64 96, !7, i64 104, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !11, i64 136, !10, i64 144, !10, i64 148, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !8, i64 196, !8, i64 2488, !8, i64 2732, !17, i64 2888, !17, i64 2912, !17, i64 2936, !8, i64 2960, !8, i64 2992, !10, i64 5284, !10, i64 5288, !8, i64 5292, !7, i64 5872, !10, i64 5880, !10, i64 5884, !7, i64 5888, !11, i64 5896, !11, i64 5904, !10, i64 5912, !10, i64 5916, !18, i64 5920, !10, i64 5924}
!17 = !{!"tree_desc_s", !7, i64 0, !10, i64 8, !7, i64 16}
!18 = !{!"short", !8, i64 0}
!19 = !{!7, !7, i64 0}
!20 = !{!6, !7, i64 48}
!21 = !{!6, !10, i64 32}
!22 = !{!16, !7, i64 0}
!23 = !{!16, !10, i64 64}
!24 = !{!16, !10, i64 44}
!25 = !{!6, !11, i64 96}
!26 = !{!16, !7, i64 16}
!27 = !{!16, !10, i64 40}
!28 = !{!8, !8, i64 0}
!29 = !{!16, !7, i64 48}
!30 = !{!16, !10, i64 180}
!31 = !{!16, !10, i64 184}
!32 = !{!33, !10, i64 0}
!33 = !{!"gz_header_s", !10, i64 0, !11, i64 8, !10, i64 16, !10, i64 20, !7, i64 24, !10, i64 32, !10, i64 36, !7, i64 40, !10, i64 48, !7, i64 56, !10, i64 64, !10, i64 68, !10, i64 72}
!34 = !{!33, !10, i64 68}
!35 = !{!33, !7, i64 24}
!36 = !{!33, !7, i64 40}
!37 = !{!33, !7, i64 56}
!38 = !{!33, !11, i64 8}
!39 = !{!33, !10, i64 20}
!40 = !{!33, !10, i64 32}
!41 = !{!16, !10, i64 56}
!42 = !{!16, !10, i64 72}
!43 = !{!16, !10, i64 156}
!44 = !{!16, !11, i64 24}
!45 = distinct !{!45, !46}
!46 = !{!"llvm.loop.mustprogress"}
!47 = distinct !{!47, !46}
!48 = distinct !{!48, !46}
!49 = !{!16, !10, i64 164}
!50 = !{!51, !7, i64 8}
!51 = !{!"config_s", !18, i64 0, !18, i64 2, !18, i64 4, !18, i64 6, !7, i64 8}
!52 = !{!16, !7, i64 104}
!53 = !{!16, !10, i64 116}
!54 = !{!18, !18, i64 0}
!55 = !{!6, !11, i64 16}


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