; LLVM IR from mkazhdan/DMG :: Util/ZLIB (inflate)

; 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.z_stream_s = type { ptr, i32, i64, ptr, i32, i64, ptr, ptr, ptr, ptr, ptr, i32, i64, i64 }
%struct.internal_state = type { i32, %union.anon, i32, i32, ptr }
%union.anon = type { %struct.anon }
%struct.anon = type { i64, i64 }

@.str.1 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [21 x i8], align 1

declare void @inflate_blocks_reset(ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
define dso_local i32 @inflate(ptr noundef %0, i32 noundef %1) #1 {
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = 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) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #3
  %9 = load ptr, ptr %4, align 8, !tbaa !5
  %10 = icmp eq ptr %9, null
  br i1 %10, label %21, label %11

11:                                               ; preds = %2
  %12 = load ptr, ptr %4, align 8, !tbaa !5
  %13 = getelementptr inbounds %struct.z_stream_s, ptr %12, i32 0, i32 7
  %14 = load ptr, ptr %13, align 8, !tbaa !11
  %15 = icmp eq ptr %14, null
  br i1 %15, label %21, label %16

16:                                               ; preds = %11
  %17 = load ptr, ptr %4, align 8, !tbaa !5
  %18 = getelementptr inbounds %struct.z_stream_s, ptr %17, i32 0, i32 0
  %19 = load ptr, ptr %18, align 8, !tbaa !14
  %20 = icmp eq ptr %19, null
  br i1 %20, label %21, label %22

21:                                               ; preds = %16, %11, %2
  store i32 -2, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %543

22:                                               ; preds = %16
  %23 = load i32, ptr %5, align 4, !tbaa !9
  %24 = icmp eq i32 %23, 4
  %25 = zext i1 %24 to i64
  %26 = select i1 %24, i32 -5, i32 0
  store i32 %26, ptr %5, align 4, !tbaa !9
  store i32 -5, ptr %6, align 4, !tbaa !9
  br label %27

27:                                               ; preds = %542, %22
  br label %28

28:                                               ; preds = %27
  %29 = load ptr, ptr %4, align 8, !tbaa !5
  %30 = getelementptr inbounds %struct.z_stream_s, ptr %29, i32 0, i32 7
  %31 = load ptr, ptr %30, align 8, !tbaa !11
  %32 = getelementptr inbounds %struct.internal_state, ptr %31, i32 0, i32 0
  %33 = load i32, ptr %32, align 8, !tbaa !15
  switch i32 %33, label %541 [
    i32 0, label %34
    i32 1, label %104
    i32 2, label %162
    i32 3, label %195
    i32 4, label %230
    i32 5, label %265
    i32 6, label %307
    i32 7, label %318
    i32 8, label %377
    i32 9, label %410
    i32 10, label %445
    i32 11, label %480
    i32 12, label %539
    i32 13, label %540
  ]

34:                                               ; preds = %28
  %35 = load ptr, ptr %4, align 8, !tbaa !5
  %36 = getelementptr inbounds %struct.z_stream_s, ptr %35, i32 0, i32 1
  %37 = load i32, ptr %36, align 8, !tbaa !17
  %38 = icmp eq i32 %37, 0
  br i1 %38, label %39, label %41

39:                                               ; preds = %34
  %40 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %40, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %543

41:                                               ; preds = %34
  %42 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %42, ptr %6, align 4, !tbaa !9
  %43 = load ptr, ptr %4, align 8, !tbaa !5
  %44 = getelementptr inbounds %struct.z_stream_s, ptr %43, i32 0, i32 1
  %45 = load i32, ptr %44, align 8, !tbaa !17
  %46 = add i32 %45, -1
  store i32 %46, ptr %44, align 8, !tbaa !17
  %47 = load ptr, ptr %4, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.z_stream_s, ptr %47, i32 0, i32 2
  %49 = load i64, ptr %48, align 8, !tbaa !18
  %50 = add i64 %49, 1
  store i64 %50, ptr %48, align 8, !tbaa !18
  %51 = load ptr, ptr %4, align 8, !tbaa !5
  %52 = getelementptr inbounds %struct.z_stream_s, ptr %51, i32 0, i32 0
  %53 = load ptr, ptr %52, align 8, !tbaa !14
  %54 = getelementptr inbounds i8, ptr %53, i32 1
  store ptr %54, ptr %52, align 8, !tbaa !14
  %55 = load i8, ptr %53, align 1, !tbaa !19
  %56 = zext i8 %55 to i32
  %57 = load ptr, ptr %4, align 8, !tbaa !5
  %58 = getelementptr inbounds %struct.z_stream_s, ptr %57, i32 0, i32 7
  %59 = load ptr, ptr %58, align 8, !tbaa !11
  %60 = getelementptr inbounds %struct.internal_state, ptr %59, i32 0, i32 1
  store i32 %56, ptr %60, align 8, !tbaa !19
  %61 = and i32 %56, 15
  %62 = icmp ne i32 %61, 8
  br i1 %62, label %63, label %74

63:                                               ; preds = %41
  %64 = load ptr, ptr %4, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.z_stream_s, ptr %64, i32 0, i32 7
  %66 = load ptr, ptr %65, align 8, !tbaa !11
  %67 = getelementptr inbounds %struct.internal_state, ptr %66, i32 0, i32 0
  store i32 13, ptr %67, align 8, !tbaa !15
  %68 = load ptr, ptr %4, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.z_stream_s, ptr %68, i32 0, i32 6
  store ptr @.str.1, ptr %69, align 8, !tbaa !20
  %70 = load ptr, ptr %4, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.z_stream_s, ptr %70, i32 0, i32 7
  %72 = load ptr, ptr %71, align 8, !tbaa !11
  %73 = getelementptr inbounds %struct.internal_state, ptr %72, i32 0, i32 1
  store i32 5, ptr %73, align 8, !tbaa !19
  br label %542

74:                                               ; preds = %41
  %75 = load ptr, ptr %4, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.z_stream_s, ptr %75, i32 0, i32 7
  %77 = load ptr, ptr %76, align 8, !tbaa !11
  %78 = getelementptr inbounds %struct.internal_state, ptr %77, i32 0, i32 1
  %79 = load i32, ptr %78, align 8, !tbaa !19
  %80 = lshr i32 %79, 4
  %81 = add i32 %80, 8
  %82 = load ptr, ptr %4, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.z_stream_s, ptr %82, i32 0, i32 7
  %84 = load ptr, ptr %83, align 8, !tbaa !11
  %85 = getelementptr inbounds %struct.internal_state, ptr %84, i32 0, i32 3
  %86 = load i32, ptr %85, align 4, !tbaa !21
  %87 = icmp ugt i32 %81, %86
  br i1 %87, label %88, label %99

88:                                               ; preds = %74
  %89 = load ptr, ptr %4, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.z_stream_s, ptr %89, i32 0, i32 7
  %91 = load ptr, ptr %90, align 8, !tbaa !11
  %92 = getelementptr inbounds %struct.internal_state, ptr %91, i32 0, i32 0
  store i32 13, ptr %92, align 8, !tbaa !15
  %93 = load ptr, ptr %4, align 8, !tbaa !5
  %94 = getelementptr inbounds %struct.z_stream_s, ptr %93, i32 0, i32 6
  store ptr @.str.2, ptr %94, align 8, !tbaa !20
  %95 = load ptr, ptr %4, align 8, !tbaa !5
  %96 = getelementptr inbounds %struct.z_stream_s, ptr %95, i32 0, i32 7
  %97 = load ptr, ptr %96, align 8, !tbaa !11
  %98 = getelementptr inbounds %struct.internal_state, ptr %97, i32 0, i32 1
  store i32 5, ptr %98, align 8, !tbaa !19
  br label %542

99:                                               ; preds = %74
  %100 = load ptr, ptr %4, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.z_stream_s, ptr %100, i32 0, i32 7
  %102 = load ptr, ptr %101, align 8, !tbaa !11
  %103 = getelementptr inbounds %struct.internal_state, ptr %102, i32 0, i32 0
  store i32 1, ptr %103, align 8, !tbaa !15
  br label %104

104:                                              ; preds = %99, %28
  %105 = load ptr, ptr %4, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.z_stream_s, ptr %105, i32 0, i32 1
  %107 = load i32, ptr %106, align 8, !tbaa !17
  %108 = icmp eq i32 %107, 0
  br i1 %108, label %109, label %111

109:                                              ; preds = %104
  %110 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %110, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %543

111:                                              ; preds = %104
  %112 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %112, ptr %6, align 4, !tbaa !9
  %113 = load ptr, ptr %4, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.z_stream_s, ptr %113, i32 0, i32 1
  %115 = load i32, ptr %114, align 8, !tbaa !17
  %116 = add i32 %115, -1
  store i32 %116, ptr %114, align 8, !tbaa !17
  %117 = load ptr, ptr %4, align 8, !tbaa !5
  %118 = getelementptr inbounds %struct.z_stream_s, ptr %117, i32 0, i32 2
  %119 = load i64, ptr %118, align 8, !tbaa !18
  %120 = add i64 %119, 1
  store i64 %120, ptr %118, align 8, !tbaa !18
  %121 = load ptr, ptr %4, align 8, !tbaa !5
  %122 = getelementptr inbounds %struct.z_stream_s, ptr %121, i32 0, i32 0
  %123 = load ptr, ptr %122, align 8, !tbaa !14
  %124 = getelementptr inbounds i8, ptr %123, i32 1
  store ptr %124, ptr %122, align 8, !tbaa !14
  %125 = load i8, ptr %123, align 1, !tbaa !19
  %126 = zext i8 %125 to i32
  store i32 %126, ptr %7, align 4, !tbaa !9
  %127 = load ptr, ptr %4, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.z_stream_s, ptr %127, i32 0, i32 7
  %129 = load ptr, ptr %128, align 8, !tbaa !11
  %130 = getelementptr inbounds %struct.internal_state, ptr %129, i32 0, i32 1
  %131 = load i32, ptr %130, align 8, !tbaa !19
  %132 = shl i32 %131, 8
  %133 = load i32, ptr %7, align 4, !tbaa !9
  %134 = add i32 %132, %133
  %135 = urem i32 %134, 31
  %136 = icmp ne i32 %135, 0
  br i1 %136, label %137, label %148

137:                                              ; preds = %111
  %138 = load ptr, ptr %4, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.z_stream_s, ptr %138, i32 0, i32 7
  %140 = load ptr, ptr %139, align 8, !tbaa !11
  %141 = getelementptr inbounds %struct.internal_state, ptr %140, i32 0, i32 0
  store i32 13, ptr %141, align 8, !tbaa !15
  %142 = load ptr, ptr %4, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.z_stream_s, ptr %142, i32 0, i32 6
  store ptr @.str.3, ptr %143, align 8, !tbaa !20
  %144 = load ptr, ptr %4, align 8, !tbaa !5
  %145 = getelementptr inbounds %struct.z_stream_s, ptr %144, i32 0, i32 7
  %146 = load ptr, ptr %145, align 8, !tbaa !11
  %147 = getelementptr inbounds %struct.internal_state, ptr %146, i32 0, i32 1
  store i32 5, ptr %147, align 8, !tbaa !19
  br label %542

148:                                              ; preds = %111
  %149 = load i32, ptr %7, align 4, !tbaa !9
  %150 = and i32 %149, 32
  %151 = icmp ne i32 %150, 0
  br i1 %151, label %157, label %152

152:                                              ; preds = %148
  %153 = load ptr, ptr %4, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.z_stream_s, ptr %153, i32 0, i32 7
  %155 = load ptr, ptr %154, align 8, !tbaa !11
  %156 = getelementptr inbounds %struct.internal_state, ptr %155, i32 0, i32 0
  store i32 7, ptr %156, align 8, !tbaa !15
  br label %542

157:                                              ; preds = %148
  %158 = load ptr, ptr %4, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.z_stream_s, ptr %158, i32 0, i32 7
  %160 = load ptr, ptr %159, align 8, !tbaa !11
  %161 = getelementptr inbounds %struct.internal_state, ptr %160, i32 0, i32 0
  store i32 2, ptr %161, align 8, !tbaa !15
  br label %162

162:                                              ; preds = %157, %28
  %163 = load ptr, ptr %4, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.z_stream_s, ptr %163, i32 0, i32 1
  %165 = load i32, ptr %164, align 8, !tbaa !17
  %166 = icmp eq i32 %165, 0
  br i1 %166, label %167, label %169

167:                                              ; preds = %162
  %168 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %168, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %543

169:                                              ; preds = %162
  %170 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %170, ptr %6, align 4, !tbaa !9
  %171 = load ptr, ptr %4, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.z_stream_s, ptr %171, i32 0, i32 1
  %173 = load i32, ptr %172, align 8, !tbaa !17
  %174 = add i32 %173, -1
  store i32 %174, ptr %172, align 8, !tbaa !17
  %175 = load ptr, ptr %4, align 8, !tbaa !5
  %176 = getelementptr inbounds %struct.z_stream_s, ptr %175, i32 0, i32 2
  %177 = load i64, ptr %176, align 8, !tbaa !18
  %178 = add i64 %177, 1
  store i64 %178, ptr %176, align 8, !tbaa !18
  %179 = load ptr, ptr %4, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.z_stream_s, ptr %179, i32 0, i32 0
  %181 = load ptr, ptr %180, align 8, !tbaa !14
  %182 = getelementptr inbounds i8, ptr %181, i32 1
  store ptr %182, ptr %180, align 8, !tbaa !14
  %183 = load i8, ptr %181, align 1, !tbaa !19
  %184 = zext i8 %183 to i64
  %185 = shl i64 %184, 24
  %186 = load ptr, ptr %4, align 8, !tbaa !5
  %187 = getelementptr inbounds %struct.z_stream_s, ptr %186, i32 0, i32 7
  %188 = load ptr, ptr %187, align 8, !tbaa !11
  %189 = getelementptr inbounds %struct.internal_state, ptr %188, i32 0, i32 1
  %190 = getelementptr inbounds %struct.anon, ptr %189, i32 0, i32 1
  store i64 %185, ptr %190, align 8, !tbaa !19
  %191 = load ptr, ptr %4, align 8, !tbaa !5
  %192 = getelementptr inbounds %struct.z_stream_s, ptr %191, i32 0, i32 7
  %193 = load ptr, ptr %192, align 8, !tbaa !11
  %194 = getelementptr inbounds %struct.internal_state, ptr %193, i32 0, i32 0
  store i32 3, ptr %194, align 8, !tbaa !15
  br label %195

195:                                              ; preds = %169, %28
  %196 = load ptr, ptr %4, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.z_stream_s, ptr %196, i32 0, i32 1
  %198 = load i32, ptr %197, align 8, !tbaa !17
  %199 = icmp eq i32 %198, 0
  br i1 %199, label %200, label %202

200:                                              ; preds = %195
  %201 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %201, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %543

202:                                              ; preds = %195
  %203 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %203, ptr %6, align 4, !tbaa !9
  %204 = load ptr, ptr %4, align 8, !tbaa !5
  %205 = getelementptr inbounds %struct.z_stream_s, ptr %204, i32 0, i32 1
  %206 = load i32, ptr %205, align 8, !tbaa !17
  %207 = add i32 %206, -1
  store i32 %207, ptr %205, align 8, !tbaa !17
  %208 = load ptr, ptr %4, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.z_stream_s, ptr %208, i32 0, i32 2
  %210 = load i64, ptr %209, align 8, !tbaa !18
  %211 = add i64 %210, 1
  store i64 %211, ptr %209, align 8, !tbaa !18
  %212 = load ptr, ptr %4, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.z_stream_s, ptr %212, i32 0, i32 0
  %214 = load ptr, ptr %213, align 8, !tbaa !14
  %215 = getelementptr inbounds i8, ptr %214, i32 1
  store ptr %215, ptr %213, align 8, !tbaa !14
  %216 = load i8, ptr %214, align 1, !tbaa !19
  %217 = zext i8 %216 to i64
  %218 = shl i64 %217, 16
  %219 = load ptr, ptr %4, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.z_stream_s, ptr %219, i32 0, i32 7
  %221 = load ptr, ptr %220, align 8, !tbaa !11
  %222 = getelementptr inbounds %struct.internal_state, ptr %221, i32 0, i32 1
  %223 = getelementptr inbounds %struct.anon, ptr %222, i32 0, i32 1
  %224 = load i64, ptr %223, align 8, !tbaa !19
  %225 = add i64 %224, %218
  store i64 %225, ptr %223, align 8, !tbaa !19
  %226 = load ptr, ptr %4, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.z_stream_s, ptr %226, i32 0, i32 7
  %228 = load ptr, ptr %227, align 8, !tbaa !11
  %229 = getelementptr inbounds %struct.internal_state, ptr %228, i32 0, i32 0
  store i32 4, ptr %229, align 8, !tbaa !15
  br label %230

230:                                              ; preds = %202, %28
  %231 = load ptr, ptr %4, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.z_stream_s, ptr %231, i32 0, i32 1
  %233 = load i32, ptr %232, align 8, !tbaa !17
  %234 = icmp eq i32 %233, 0
  br i1 %234, label %235, label %237

235:                                              ; preds = %230
  %236 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %236, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %543

237:                                              ; preds = %230
  %238 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %238, ptr %6, align 4, !tbaa !9
  %239 = load ptr, ptr %4, align 8, !tbaa !5
  %240 = getelementptr inbounds %struct.z_stream_s, ptr %239, i32 0, i32 1
  %241 = load i32, ptr %240, align 8, !tbaa !17
  %242 = add i32 %241, -1
  store i32 %242, ptr %240, align 8, !tbaa !17
  %243 = load ptr, ptr %4, align 8, !tbaa !5
  %244 = getelementptr inbounds %struct.z_stream_s, ptr %243, i32 0, i32 2
  %245 = load i64, ptr %244, align 8, !tbaa !18
  %246 = add i64 %245, 1
  store i64 %246, ptr %244, align 8, !tbaa !18
  %247 = load ptr, ptr %4, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.z_stream_s, ptr %247, i32 0, i32 0
  %249 = load ptr, ptr %248, align 8, !tbaa !14
  %250 = getelementptr inbounds i8, ptr %249, i32 1
  store ptr %250, ptr %248, align 8, !tbaa !14
  %251 = load i8, ptr %249, align 1, !tbaa !19
  %252 = zext i8 %251 to i64
  %253 = shl i64 %252, 8
  %254 = load ptr, ptr %4, align 8, !tbaa !5
  %255 = getelementptr inbounds %struct.z_stream_s, ptr %254, i32 0, i32 7
  %256 = load ptr, ptr %255, align 8, !tbaa !11
  %257 = getelementptr inbounds %struct.internal_state, ptr %256, i32 0, i32 1
  %258 = getelementptr inbounds %struct.anon, ptr %257, i32 0, i32 1
  %259 = load i64, ptr %258, align 8, !tbaa !19
  %260 = add i64 %259, %253
  store i64 %260, ptr %258, align 8, !tbaa !19
  %261 = load ptr, ptr %4, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.z_stream_s, ptr %261, i32 0, i32 7
  %263 = load ptr, ptr %262, align 8, !tbaa !11
  %264 = getelementptr inbounds %struct.internal_state, ptr %263, i32 0, i32 0
  store i32 5, ptr %264, align 8, !tbaa !15
  br label %265

265:                                              ; preds = %237, %28
  %266 = load ptr, ptr %4, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.z_stream_s, ptr %266, i32 0, i32 1
  %268 = load i32, ptr %267, align 8, !tbaa !17
  %269 = icmp eq i32 %268, 0
  br i1 %269, label %270, label %272

270:                                              ; preds = %265
  %271 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %271, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %543

272:                                              ; preds = %265
  %273 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %273, ptr %6, align 4, !tbaa !9
  %274 = load ptr, ptr %4, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.z_stream_s, ptr %274, i32 0, i32 1
  %276 = load i32, ptr %275, align 8, !tbaa !17
  %277 = add i32 %276, -1
  store i32 %277, ptr %275, align 8, !tbaa !17
  %278 = load ptr, ptr %4, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.z_stream_s, ptr %278, i32 0, i32 2
  %280 = load i64, ptr %279, align 8, !tbaa !18
  %281 = add i64 %280, 1
  store i64 %281, ptr %279, align 8, !tbaa !18
  %282 = load ptr, ptr %4, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.z_stream_s, ptr %282, i32 0, i32 0
  %284 = load ptr, ptr %283, align 8, !tbaa !14
  %285 = getelementptr inbounds i8, ptr %284, i32 1
  store ptr %285, ptr %283, align 8, !tbaa !14
  %286 = load i8, ptr %284, align 1, !tbaa !19
  %287 = zext i8 %286 to i64
  %288 = load ptr, ptr %4, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.z_stream_s, ptr %288, i32 0, i32 7
  %290 = load ptr, ptr %289, align 8, !tbaa !11
  %291 = getelementptr inbounds %struct.internal_state, ptr %290, i32 0, i32 1
  %292 = getelementptr inbounds %struct.anon, ptr %291, i32 0, i32 1
  %293 = load i64, ptr %292, align 8, !tbaa !19
  %294 = add i64 %293, %287
  store i64 %294, ptr %292, align 8, !tbaa !19
  %295 = load ptr, ptr %4, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.z_stream_s, ptr %295, i32 0, i32 7
  %297 = load ptr, ptr %296, align 8, !tbaa !11
  %298 = getelementptr inbounds %struct.internal_state, ptr %297, i32 0, i32 1
  %299 = getelementptr inbounds %struct.anon, ptr %298, i32 0, i32 1
  %300 = load i64, ptr %299, align 8, !tbaa !19
  %301 = load ptr, ptr %4, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.z_stream_s, ptr %301, i32 0, i32 12
  store i64 %300, ptr %302, align 8, !tbaa !22
  %303 = load ptr, ptr %4, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct.z_stream_s, ptr %303, i32 0, i32 7
  %305 = load ptr, ptr %304, align 8, !tbaa !11
  %306 = getelementptr inbounds %struct.internal_state, ptr %305, i32 0, i32 0
  store i32 6, ptr %306, align 8, !tbaa !15
  store i32 2, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %543

307:                                              ; preds = %28
  %308 = load ptr, ptr %4, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.z_stream_s, ptr %308, i32 0, i32 7
  %310 = load ptr, ptr %309, align 8, !tbaa !11
  %311 = getelementptr inbounds %struct.internal_state, ptr %310, i32 0, i32 0
  store i32 13, ptr %311, align 8, !tbaa !15
  %312 = load ptr, ptr %4, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.z_stream_s, ptr %312, i32 0, i32 6
  store ptr @.str.4, ptr %313, align 8, !tbaa !20
  %314 = load ptr, ptr %4, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.z_stream_s, ptr %314, i32 0, i32 7
  %316 = load ptr, ptr %315, align 8, !tbaa !11
  %317 = getelementptr inbounds %struct.internal_state, ptr %316, i32 0, i32 1
  store i32 0, ptr %317, align 8, !tbaa !19
  store i32 -2, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %543

318:                                              ; preds = %28
  %319 = load ptr, ptr %4, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.z_stream_s, ptr %319, i32 0, i32 7
  %321 = load ptr, ptr %320, align 8, !tbaa !11
  %322 = getelementptr inbounds %struct.internal_state, ptr %321, i32 0, i32 4
  %323 = load ptr, ptr %322, align 8, !tbaa !23
  %324 = load ptr, ptr %4, align 8, !tbaa !5
  %325 = load i32, ptr %6, align 4, !tbaa !9
  %326 = call i32 @inflate_blocks(ptr noundef %323, ptr noundef %324, i32 noundef %325)
  store i32 %326, ptr %6, align 4, !tbaa !9
  %327 = load i32, ptr %6, align 4, !tbaa !9
  %328 = icmp eq i32 %327, -3
  br i1 %328, label %329, label %338

329:                                              ; preds = %318
  %330 = load ptr, ptr %4, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.z_stream_s, ptr %330, i32 0, i32 7
  %332 = load ptr, ptr %331, align 8, !tbaa !11
  %333 = getelementptr inbounds %struct.internal_state, ptr %332, i32 0, i32 0
  store i32 13, ptr %333, align 8, !tbaa !15
  %334 = load ptr, ptr %4, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.z_stream_s, ptr %334, i32 0, i32 7
  %336 = load ptr, ptr %335, align 8, !tbaa !11
  %337 = getelementptr inbounds %struct.internal_state, ptr %336, i32 0, i32 1
  store i32 0, ptr %337, align 8, !tbaa !19
  br label %542

338:                                              ; preds = %318
  %339 = load i32, ptr %6, align 4, !tbaa !9
  %340 = icmp eq i32 %339, 0
  br i1 %340, label %341, label %343

341:                                              ; preds = %338
  %342 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %342, ptr %6, align 4, !tbaa !9
  br label %343

343:                                              ; preds = %341, %338
  %344 = load i32, ptr %6, align 4, !tbaa !9
  %345 = icmp ne i32 %344, 1
  br i1 %345, label %346, label %348

346:                                              ; preds = %343
  %347 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %347, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %543

348:                                              ; preds = %343
  %349 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %349, ptr %6, align 4, !tbaa !9
  %350 = load ptr, ptr %4, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct.z_stream_s, ptr %350, i32 0, i32 7
  %352 = load ptr, ptr %351, align 8, !tbaa !11
  %353 = getelementptr inbounds %struct.internal_state, ptr %352, i32 0, i32 4
  %354 = load ptr, ptr %353, align 8, !tbaa !23
  %355 = load ptr, ptr %4, align 8, !tbaa !5
  %356 = load ptr, ptr %4, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.z_stream_s, ptr %356, i32 0, i32 7
  %358 = load ptr, ptr %357, align 8, !tbaa !11
  %359 = getelementptr inbounds %struct.internal_state, ptr %358, i32 0, i32 1
  %360 = getelementptr inbounds %struct.anon, ptr %359, i32 0, i32 0
  call void @inflate_blocks_reset(ptr noundef %354, ptr noundef %355, ptr noundef %360)
  %361 = load ptr, ptr %4, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.z_stream_s, ptr %361, i32 0, i32 7
  %363 = load ptr, ptr %362, align 8, !tbaa !11
  %364 = getelementptr inbounds %struct.internal_state, ptr %363, i32 0, i32 2
  %365 = load i32, ptr %364, align 8, !tbaa !24
  %366 = icmp ne i32 %365, 0
  br i1 %366, label %367, label %372

367:                                              ; preds = %348
  %368 = load ptr, ptr %4, align 8, !tbaa !5
  %369 = getelementptr inbounds %struct.z_stream_s, ptr %368, i32 0, i32 7
  %370 = load ptr, ptr %369, align 8, !tbaa !11
  %371 = getelementptr inbounds %struct.internal_state, ptr %370, i32 0, i32 0
  store i32 12, ptr %371, align 8, !tbaa !15
  br label %542

372:                                              ; preds = %348
  %373 = load ptr, ptr %4, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.z_stream_s, ptr %373, i32 0, i32 7
  %375 = load ptr, ptr %374, align 8, !tbaa !11
  %376 = getelementptr inbounds %struct.internal_state, ptr %375, i32 0, i32 0
  store i32 8, ptr %376, align 8, !tbaa !15
  br label %377

377:                                              ; preds = %372, %28
  %378 = load ptr, ptr %4, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.z_stream_s, ptr %378, i32 0, i32 1
  %380 = load i32, ptr %379, align 8, !tbaa !17
  %381 = icmp eq i32 %380, 0
  br i1 %381, label %382, label %384

382:                                              ; preds = %377
  %383 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %383, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %543

384:                                              ; preds = %377
  %385 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %385, ptr %6, align 4, !tbaa !9
  %386 = load ptr, ptr %4, align 8, !tbaa !5
  %387 = getelementptr inbounds %struct.z_stream_s, ptr %386, i32 0, i32 1
  %388 = load i32, ptr %387, align 8, !tbaa !17
  %389 = add i32 %388, -1
  store i32 %389, ptr %387, align 8, !tbaa !17
  %390 = load ptr, ptr %4, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.z_stream_s, ptr %390, i32 0, i32 2
  %392 = load i64, ptr %391, align 8, !tbaa !18
  %393 = add i64 %392, 1
  store i64 %393, ptr %391, align 8, !tbaa !18
  %394 = load ptr, ptr %4, align 8, !tbaa !5
  %395 = getelementptr inbounds %struct.z_stream_s, ptr %394, i32 0, i32 0
  %396 = load ptr, ptr %395, align 8, !tbaa !14
  %397 = getelementptr inbounds i8, ptr %396, i32 1
  store ptr %397, ptr %395, align 8, !tbaa !14
  %398 = load i8, ptr %396, align 1, !tbaa !19
  %399 = zext i8 %398 to i64
  %400 = shl i64 %399, 24
  %401 = load ptr, ptr %4, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.z_stream_s, ptr %401, i32 0, i32 7
  %403 = load ptr, ptr %402, align 8, !tbaa !11
  %404 = getelementptr inbounds %struct.internal_state, ptr %403, i32 0, i32 1
  %405 = getelementptr inbounds %struct.anon, ptr %404, i32 0, i32 1
  store i64 %400, ptr %405, align 8, !tbaa !19
  %406 = load ptr, ptr %4, align 8, !tbaa !5
  %407 = getelementptr inbounds %struct.z_stream_s, ptr %406, i32 0, i32 7
  %408 = load ptr, ptr %407, align 8, !tbaa !11
  %409 = getelementptr inbounds %struct.internal_state, ptr %408, i32 0, i32 0
  store i32 9, ptr %409, align 8, !tbaa !15
  br label %410

410:                                              ; preds = %384, %28
  %411 = load ptr, ptr %4, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.z_stream_s, ptr %411, i32 0, i32 1
  %413 = load i32, ptr %412, align 8, !tbaa !17
  %414 = icmp eq i32 %413, 0
  br i1 %414, label %415, label %417

415:                                              ; preds = %410
  %416 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %416, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %543

417:                                              ; preds = %410
  %418 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %418, ptr %6, align 4, !tbaa !9
  %419 = load ptr, ptr %4, align 8, !tbaa !5
  %420 = getelementptr inbounds %struct.z_stream_s, ptr %419, i32 0, i32 1
  %421 = load i32, ptr %420, align 8, !tbaa !17
  %422 = add i32 %421, -1
  store i32 %422, ptr %420, align 8, !tbaa !17
  %423 = load ptr, ptr %4, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.z_stream_s, ptr %423, i32 0, i32 2
  %425 = load i64, ptr %424, align 8, !tbaa !18
  %426 = add i64 %425, 1
  store i64 %426, ptr %424, align 8, !tbaa !18
  %427 = load ptr, ptr %4, align 8, !tbaa !5
  %428 = getelementptr inbounds %struct.z_stream_s, ptr %427, i32 0, i32 0
  %429 = load ptr, ptr %428, align 8, !tbaa !14
  %430 = getelementptr inbounds i8, ptr %429, i32 1
  store ptr %430, ptr %428, align 8, !tbaa !14
  %431 = load i8, ptr %429, align 1, !tbaa !19
  %432 = zext i8 %431 to i64
  %433 = shl i64 %432, 16
  %434 = load ptr, ptr %4, align 8, !tbaa !5
  %435 = getelementptr inbounds %struct.z_stream_s, ptr %434, i32 0, i32 7
  %436 = load ptr, ptr %435, align 8, !tbaa !11
  %437 = getelementptr inbounds %struct.internal_state, ptr %436, i32 0, i32 1
  %438 = getelementptr inbounds %struct.anon, ptr %437, i32 0, i32 1
  %439 = load i64, ptr %438, align 8, !tbaa !19
  %440 = add i64 %439, %433
  store i64 %440, ptr %438, align 8, !tbaa !19
  %441 = load ptr, ptr %4, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.z_stream_s, ptr %441, i32 0, i32 7
  %443 = load ptr, ptr %442, align 8, !tbaa !11
  %444 = getelementptr inbounds %struct.internal_state, ptr %443, i32 0, i32 0
  store i32 10, ptr %444, align 8, !tbaa !15
  br label %445

445:                                              ; preds = %417, %28
  %446 = load ptr, ptr %4, align 8, !tbaa !5
  %447 = getelementptr inbounds %struct.z_stream_s, ptr %446, i32 0, i32 1
  %448 = load i32, ptr %447, align 8, !tbaa !17
  %449 = icmp eq i32 %448, 0
  br i1 %449, label %450, label %452

450:                                              ; preds = %445
  %451 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %451, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %543

452:                                              ; preds = %445
  %453 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %453, ptr %6, align 4, !tbaa !9
  %454 = load ptr, ptr %4, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.z_stream_s, ptr %454, i32 0, i32 1
  %456 = load i32, ptr %455, align 8, !tbaa !17
  %457 = add i32 %456, -1
  store i32 %457, ptr %455, align 8, !tbaa !17
  %458 = load ptr, ptr %4, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.z_stream_s, ptr %458, i32 0, i32 2
  %460 = load i64, ptr %459, align 8, !tbaa !18
  %461 = add i64 %460, 1
  store i64 %461, ptr %459, align 8, !tbaa !18
  %462 = load ptr, ptr %4, align 8, !tbaa !5
  %463 = getelementptr inbounds %struct.z_stream_s, ptr %462, i32 0, i32 0
  %464 = load ptr, ptr %463, align 8, !tbaa !14
  %465 = getelementptr inbounds i8, ptr %464, i32 1
  store ptr %465, ptr %463, align 8, !tbaa !14
  %466 = load i8, ptr %464, align 1, !tbaa !19
  %467 = zext i8 %466 to i64
  %468 = shl i64 %467, 8
  %469 = load ptr, ptr %4, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.z_stream_s, ptr %469, i32 0, i32 7
  %471 = load ptr, ptr %470, align 8, !tbaa !11
  %472 = getelementptr inbounds %struct.internal_state, ptr %471, i32 0, i32 1
  %473 = getelementptr inbounds %struct.anon, ptr %472, i32 0, i32 1
  %474 = load i64, ptr %473, align 8, !tbaa !19
  %475 = add i64 %474, %468
  store i64 %475, ptr %473, align 8, !tbaa !19
  %476 = load ptr, ptr %4, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.z_stream_s, ptr %476, i32 0, i32 7
  %478 = load ptr, ptr %477, align 8, !tbaa !11
  %479 = getelementptr inbounds %struct.internal_state, ptr %478, i32 0, i32 0
  store i32 11, ptr %479, align 8, !tbaa !15
  br label %480

480:                                              ; preds = %452, %28
  %481 = load ptr, ptr %4, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.z_stream_s, ptr %481, i32 0, i32 1
  %483 = load i32, ptr %482, align 8, !tbaa !17
  %484 = icmp eq i32 %483, 0
  br i1 %484, label %485, label %487

485:                                              ; preds = %480
  %486 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %486, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %543

487:                                              ; preds = %480
  %488 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %488, ptr %6, align 4, !tbaa !9
  %489 = load ptr, ptr %4, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.z_stream_s, ptr %489, i32 0, i32 1
  %491 = load i32, ptr %490, align 8, !tbaa !17
  %492 = add i32 %491, -1
  store i32 %492, ptr %490, align 8, !tbaa !17
  %493 = load ptr, ptr %4, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.z_stream_s, ptr %493, i32 0, i32 2
  %495 = load i64, ptr %494, align 8, !tbaa !18
  %496 = add i64 %495, 1
  store i64 %496, ptr %494, align 8, !tbaa !18
  %497 = load ptr, ptr %4, align 8, !tbaa !5
  %498 = getelementptr inbounds %struct.z_stream_s, ptr %497, i32 0, i32 0
  %499 = load ptr, ptr %498, align 8, !tbaa !14
  %500 = getelementptr inbounds i8, ptr %499, i32 1
  store ptr %500, ptr %498, align 8, !tbaa !14
  %501 = load i8, ptr %499, align 1, !tbaa !19
  %502 = zext i8 %501 to i64
  %503 = load ptr, ptr %4, align 8, !tbaa !5
  %504 = getelementptr inbounds %struct.z_stream_s, ptr %503, i32 0, i32 7
  %505 = load ptr, ptr %504, align 8, !tbaa !11
  %506 = getelementptr inbounds %struct.internal_state, ptr %505, i32 0, i32 1
  %507 = getelementptr inbounds %struct.anon, ptr %506, i32 0, i32 1
  %508 = load i64, ptr %507, align 8, !tbaa !19
  %509 = add i64 %508, %502
  store i64 %509, ptr %507, align 8, !tbaa !19
  %510 = load ptr, ptr %4, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.z_stream_s, ptr %510, i32 0, i32 7
  %512 = load ptr, ptr %511, align 8, !tbaa !11
  %513 = getelementptr inbounds %struct.internal_state, ptr %512, i32 0, i32 1
  %514 = getelementptr inbounds %struct.anon, ptr %513, i32 0, i32 0
  %515 = load i64, ptr %514, align 8, !tbaa !19
  %516 = load ptr, ptr %4, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.z_stream_s, ptr %516, i32 0, i32 7
  %518 = load ptr, ptr %517, align 8, !tbaa !11
  %519 = getelementptr inbounds %struct.internal_state, ptr %518, i32 0, i32 1
  %520 = getelementptr inbounds %struct.anon, ptr %519, i32 0, i32 1
  %521 = load i64, ptr %520, align 8, !tbaa !19
  %522 = icmp ne i64 %515, %521
  br i1 %522, label %523, label %534

523:                                              ; preds = %487
  %524 = load ptr, ptr %4, align 8, !tbaa !5
  %525 = getelementptr inbounds %struct.z_stream_s, ptr %524, i32 0, i32 7
  %526 = load ptr, ptr %525, align 8, !tbaa !11
  %527 = getelementptr inbounds %struct.internal_state, ptr %526, i32 0, i32 0
  store i32 13, ptr %527, align 8, !tbaa !15
  %528 = load ptr, ptr %4, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.z_stream_s, ptr %528, i32 0, i32 6
  store ptr @.str.5, ptr %529, align 8, !tbaa !20
  %530 = load ptr, ptr %4, align 8, !tbaa !5
  %531 = getelementptr inbounds %struct.z_stream_s, ptr %530, i32 0, i32 7
  %532 = load ptr, ptr %531, align 8, !tbaa !11
  %533 = getelementptr inbounds %struct.internal_state, ptr %532, i32 0, i32 1
  store i32 5, ptr %533, align 8, !tbaa !19
  br label %542

534:                                              ; preds = %487
  %535 = load ptr, ptr %4, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.z_stream_s, ptr %535, i32 0, i32 7
  %537 = load ptr, ptr %536, align 8, !tbaa !11
  %538 = getelementptr inbounds %struct.internal_state, ptr %537, i32 0, i32 0
  store i32 12, ptr %538, align 8, !tbaa !15
  br label %539

539:                                              ; preds = %534, %28
  store i32 1, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %543

540:                                              ; preds = %28
  store i32 -3, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %543

541:                                              ; preds = %28
  store i32 -2, ptr %3, align 4
  store i32 1, ptr %8, align 4
  br label %543

542:                                              ; preds = %523, %367, %329, %152, %137, %88, %63
  br label %27

543:                                              ; preds = %541, %540, %539, %485, %450, %415, %382, %346, %307, %272, %270, %235, %200, %167, %109, %39, %21
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #3
  %544 = load i32, ptr %3, align 4
  ret i32 %544
}

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

declare i32 @inflate_blocks(ptr noundef, ptr noundef, i32 noundef) #0

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #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 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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, !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 0}
!15 = !{!16, !10, i64 0}
!16 = !{!"internal_state", !10, i64 0, !7, i64 8, !10, i64 24, !10, i64 28, !6, i64 32}
!17 = !{!12, !10, i64 8}
!18 = !{!12, !13, i64 16}
!19 = !{!7, !7, i64 0}
!20 = !{!12, !6, i64 48}
!21 = !{!16, !10, i64 28}
!22 = !{!12, !13, i64 96}
!23 = !{!16, !6, i64 32}
!24 = !{!16, !10, i64 24}


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

@.str.1 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [21 x i8], align 1

declare void @inflate_blocks_reset(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local i32 @inflate(ptr noundef %0, i32 noundef %1) local_unnamed_addr #1 {
  %3 = icmp eq ptr %0, null
  br i1 %3, label %.thread, 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
  br i1 %7, label %.thread, label %8

8:                                                ; preds = %4
  %9 = load ptr, ptr %0, align 8, !tbaa !12
  %10 = icmp eq ptr %9, null
  br i1 %10, label %.thread, label %11

11:                                               ; preds = %8
  %12 = icmp eq i32 %1, 4
  %13 = select i1 %12, i32 -5, i32 0
  %14 = getelementptr inbounds i8, ptr %0, i64 8
  %15 = getelementptr inbounds i8, ptr %0, i64 16
  %16 = getelementptr inbounds i8, ptr %0, i64 48
  br label %17

17:                                               ; preds = %222, %11
  %18 = phi ptr [ %6, %11 ], [ %.pre, %222 ]
  %.0126 = phi i32 [ -5, %11 ], [ %.11, %222 ]
  %19 = load i32, ptr %18, align 8, !tbaa !13
  switch i32 %19, label %.thread [
    i32 0, label %20
    i32 1, label %46
    i32 2, label %.loopexit.loopexit
    i32 3, label %.loopexit147
    i32 4, label %.loopexit148
    i32 5, label %.loopexit149
    i32 6, label %132
    i32 7, label %134
    i32 8, label %151
    i32 9, label %166
    i32 10, label %183
    i32 11, label %200
    i32 12, label %.thread.loopexit
    i32 13, label %.thread.loopexit240
  ]

20:                                               ; preds = %17
  %21 = load i32, ptr %14, align 8, !tbaa !15
  %22 = icmp eq i32 %21, 0
  br i1 %22, label %.thread.loopexit240, label %23

23:                                               ; preds = %20
  %24 = add i32 %21, -1
  store i32 %24, ptr %14, align 8, !tbaa !15
  %25 = load i64, ptr %15, align 8, !tbaa !16
  %26 = add i64 %25, 1
  store i64 %26, ptr %15, align 8, !tbaa !16
  %27 = load ptr, ptr %0, align 8, !tbaa !12
  %28 = getelementptr inbounds i8, ptr %27, i64 1
  store ptr %28, ptr %0, align 8, !tbaa !12
  %29 = load i8, ptr %27, align 1, !tbaa !17
  %30 = zext i8 %29 to i32
  %31 = getelementptr inbounds i8, ptr %18, i64 8
  store i32 %30, ptr %31, align 8, !tbaa !17
  %32 = and i32 %30, 15
  %.not142 = icmp eq i32 %32, 8
  %33 = load ptr, ptr %5, align 8, !tbaa !5
  br i1 %.not142, label %36, label %34

34:                                               ; preds = %23
  store i32 13, ptr %33, align 8, !tbaa !13
  store ptr @.str.1, ptr %16, align 8, !tbaa !18
  %35 = getelementptr inbounds i8, ptr %33, i64 8
  store i32 5, ptr %35, align 8, !tbaa !17
  br label %222

36:                                               ; preds = %23
  %37 = getelementptr inbounds i8, ptr %33, i64 8
  %38 = load i32, ptr %37, align 8, !tbaa !17
  %39 = lshr i32 %38, 4
  %40 = add nuw nsw i32 %39, 8
  %41 = getelementptr inbounds i8, ptr %33, i64 28
  %42 = load i32, ptr %41, align 4, !tbaa !19
  %43 = icmp ugt i32 %40, %42
  br i1 %43, label %44, label %45

44:                                               ; preds = %36
  store i32 13, ptr %33, align 8, !tbaa !13
  store ptr @.str.2, ptr %16, align 8, !tbaa !18
  store i32 5, ptr %37, align 8, !tbaa !17
  br label %222

45:                                               ; preds = %36
  store i32 1, ptr %33, align 8, !tbaa !13
  br label %46

46:                                               ; preds = %45, %17
  %47 = phi ptr [ %18, %17 ], [ %33, %45 ]
  %.1 = phi i32 [ %.0126, %17 ], [ %13, %45 ]
  %48 = load i32, ptr %14, align 8, !tbaa !15
  %49 = icmp eq i32 %48, 0
  br i1 %49, label %.thread.loopexit240, label %50

50:                                               ; preds = %46
  %51 = add i32 %48, -1
  store i32 %51, ptr %14, align 8, !tbaa !15
  %52 = load i64, ptr %15, align 8, !tbaa !16
  %53 = add i64 %52, 1
  store i64 %53, ptr %15, align 8, !tbaa !16
  %54 = load ptr, ptr %0, align 8, !tbaa !12
  %55 = getelementptr inbounds i8, ptr %54, i64 1
  store ptr %55, ptr %0, align 8, !tbaa !12
  %56 = load i8, ptr %54, align 1, !tbaa !17
  %57 = zext i8 %56 to i32
  %58 = getelementptr inbounds i8, ptr %47, i64 8
  %59 = load i32, ptr %58, align 8, !tbaa !17
  %60 = shl i32 %59, 8
  %61 = or disjoint i32 %60, %57
  %62 = urem i32 %61, 31
  %.not143 = icmp eq i32 %62, 0
  br i1 %.not143, label %64, label %63

63:                                               ; preds = %50
  store i32 13, ptr %47, align 8, !tbaa !13
  store ptr @.str.3, ptr %16, align 8, !tbaa !18
  store i32 5, ptr %58, align 8, !tbaa !17
  br label %222

64:                                               ; preds = %50
  %65 = and i32 %57, 32
  %.not144 = icmp eq i32 %65, 0
  br i1 %.not144, label %66, label %67

66:                                               ; preds = %64
  store i32 7, ptr %47, align 8, !tbaa !13
  br label %222

67:                                               ; preds = %64
  store i32 2, ptr %47, align 8, !tbaa !13
  br label %.loopexit

.loopexit.loopexit:                               ; preds = %17
  %.pre195 = load i32, ptr %14, align 8, !tbaa !15
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %67
  %68 = phi ptr [ %47, %67 ], [ %18, %.loopexit.loopexit ]
  %69 = phi i32 [ %51, %67 ], [ %.pre195, %.loopexit.loopexit ]
  %.2 = phi i32 [ %13, %67 ], [ %.0126, %.loopexit.loopexit ]
  %70 = icmp eq i32 %69, 0
  br i1 %70, label %.thread, label %71

71:                                               ; preds = %.loopexit
  %72 = add i32 %69, -1
  store i32 %72, ptr %14, align 8, !tbaa !15
  %73 = load i64, ptr %15, align 8, !tbaa !16
  %74 = add i64 %73, 1
  store i64 %74, ptr %15, align 8, !tbaa !16
  %75 = load ptr, ptr %0, align 8, !tbaa !12
  %76 = getelementptr inbounds i8, ptr %75, i64 1
  store ptr %76, ptr %0, align 8, !tbaa !12
  %77 = load i8, ptr %75, align 1, !tbaa !17
  %78 = zext i8 %77 to i64
  %79 = shl nuw nsw i64 %78, 24
  %80 = getelementptr inbounds i8, ptr %68, i64 16
  store i64 %79, ptr %80, align 8, !tbaa !17
  %81 = load ptr, ptr %5, align 8, !tbaa !5
  store i32 3, ptr %81, align 8, !tbaa !13
  br label %.loopexit147

.loopexit147:                                     ; preds = %17, %71
  %82 = phi ptr [ %81, %71 ], [ %18, %17 ]
  %.3 = phi i32 [ %13, %71 ], [ %.0126, %17 ]
  %83 = load i32, ptr %14, align 8, !tbaa !15
  %84 = icmp eq i32 %83, 0
  br i1 %84, label %.thread, label %85

85:                                               ; preds = %.loopexit147
  %86 = add i32 %83, -1
  store i32 %86, ptr %14, align 8, !tbaa !15
  %87 = load i64, ptr %15, align 8, !tbaa !16
  %88 = add i64 %87, 1
  store i64 %88, ptr %15, align 8, !tbaa !16
  %89 = load ptr, ptr %0, align 8, !tbaa !12
  %90 = getelementptr inbounds i8, ptr %89, i64 1
  store ptr %90, ptr %0, align 8, !tbaa !12
  %91 = load i8, ptr %89, align 1, !tbaa !17
  %92 = zext i8 %91 to i64
  %93 = shl nuw nsw i64 %92, 16
  %94 = getelementptr inbounds i8, ptr %82, i64 16
  %95 = load i64, ptr %94, align 8, !tbaa !17
  %96 = add i64 %95, %93
  store i64 %96, ptr %94, align 8, !tbaa !17
  %97 = load ptr, ptr %5, align 8, !tbaa !5
  store i32 4, ptr %97, align 8, !tbaa !13
  br label %.loopexit148

.loopexit148:                                     ; preds = %17, %85
  %98 = phi ptr [ %97, %85 ], [ %18, %17 ]
  %.4 = phi i32 [ %13, %85 ], [ %.0126, %17 ]
  %99 = load i32, ptr %14, align 8, !tbaa !15
  %100 = icmp eq i32 %99, 0
  br i1 %100, label %.thread, label %101

101:                                              ; preds = %.loopexit148
  %102 = add i32 %99, -1
  store i32 %102, ptr %14, align 8, !tbaa !15
  %103 = load i64, ptr %15, align 8, !tbaa !16
  %104 = add i64 %103, 1
  store i64 %104, ptr %15, align 8, !tbaa !16
  %105 = load ptr, ptr %0, align 8, !tbaa !12
  %106 = getelementptr inbounds i8, ptr %105, i64 1
  store ptr %106, ptr %0, align 8, !tbaa !12
  %107 = load i8, ptr %105, align 1, !tbaa !17
  %108 = zext i8 %107 to i64
  %109 = shl nuw nsw i64 %108, 8
  %110 = getelementptr inbounds i8, ptr %98, i64 16
  %111 = load i64, ptr %110, align 8, !tbaa !17
  %112 = add i64 %111, %109
  store i64 %112, ptr %110, align 8, !tbaa !17
  %113 = load ptr, ptr %5, align 8, !tbaa !5
  store i32 5, ptr %113, align 8, !tbaa !13
  br label %.loopexit149

.loopexit149:                                     ; preds = %17, %101
  %114 = phi ptr [ %113, %101 ], [ %18, %17 ]
  %.5 = phi i32 [ %13, %101 ], [ %.0126, %17 ]
  %115 = load i32, ptr %14, align 8, !tbaa !15
  %116 = icmp eq i32 %115, 0
  br i1 %116, label %.thread, label %117

117:                                              ; preds = %.loopexit149
  %118 = add i32 %115, -1
  store i32 %118, ptr %14, align 8, !tbaa !15
  %119 = load i64, ptr %15, align 8, !tbaa !16
  %120 = add i64 %119, 1
  store i64 %120, ptr %15, align 8, !tbaa !16
  %121 = load ptr, ptr %0, align 8, !tbaa !12
  %122 = getelementptr inbounds i8, ptr %121, i64 1
  store ptr %122, ptr %0, align 8, !tbaa !12
  %123 = load i8, ptr %121, align 1, !tbaa !17
  %124 = zext i8 %123 to i64
  %125 = getelementptr inbounds i8, ptr %114, i64 16
  %126 = load i64, ptr %125, align 8, !tbaa !17
  %127 = add i64 %126, %124
  store i64 %127, ptr %125, align 8, !tbaa !17
  %128 = load ptr, ptr %5, align 8, !tbaa !5
  %129 = getelementptr inbounds i8, ptr %128, i64 16
  %130 = load i64, ptr %129, align 8, !tbaa !17
  %131 = getelementptr inbounds i8, ptr %0, i64 96
  store i64 %130, ptr %131, align 8, !tbaa !20
  store i32 6, ptr %128, align 8, !tbaa !13
  br label %.thread

132:                                              ; preds = %17
  store i32 13, ptr %18, align 8, !tbaa !13
  store ptr @.str.4, ptr %16, align 8, !tbaa !18
  %133 = getelementptr inbounds i8, ptr %18, i64 8
  store i32 0, ptr %133, align 8, !tbaa !17
  br label %.thread

134:                                              ; preds = %17
  %135 = getelementptr inbounds i8, ptr %18, i64 32
  %136 = load ptr, ptr %135, align 8, !tbaa !21
  %137 = tail call i32 @inflate_blocks(ptr noundef %136, ptr noundef nonnull %0, i32 noundef %.0126) #2
  switch i32 %137, label %.thread [
    i32 -3, label %138
    i32 0, label %.thread.loopexit240
    i32 1, label %141
  ]

138:                                              ; preds = %134
  %139 = load ptr, ptr %5, align 8, !tbaa !5
  store i32 13, ptr %139, align 8, !tbaa !13
  %140 = getelementptr inbounds i8, ptr %139, i64 8
  store i32 0, ptr %140, align 8, !tbaa !17
  br label %222

141:                                              ; preds = %134
  %142 = load ptr, ptr %5, align 8, !tbaa !5
  %143 = getelementptr inbounds i8, ptr %142, i64 32
  %144 = load ptr, ptr %143, align 8, !tbaa !21
  %145 = getelementptr inbounds i8, ptr %142, i64 8
  tail call void @inflate_blocks_reset(ptr noundef %144, ptr noundef nonnull %0, ptr noundef nonnull %145) #2
  %146 = load ptr, ptr %5, align 8, !tbaa !5
  %147 = getelementptr inbounds i8, ptr %146, i64 24
  %148 = load i32, ptr %147, align 8, !tbaa !22
  %.not140 = icmp eq i32 %148, 0
  br i1 %.not140, label %150, label %149

149:                                              ; preds = %141
  store i32 12, ptr %146, align 8, !tbaa !13
  br label %222

150:                                              ; preds = %141
  store i32 8, ptr %146, align 8, !tbaa !13
  br label %151

151:                                              ; preds = %150, %17
  %152 = phi ptr [ %18, %17 ], [ %146, %150 ]
  %.7 = phi i32 [ %.0126, %17 ], [ %13, %150 ]
  %153 = load i32, ptr %14, align 8, !tbaa !15
  %154 = icmp eq i32 %153, 0
  br i1 %154, label %.thread.loopexit240, label %155

155:                                              ; preds = %151
  %156 = add i32 %153, -1
  store i32 %156, ptr %14, align 8, !tbaa !15
  %157 = load i64, ptr %15, align 8, !tbaa !16
  %158 = add i64 %157, 1
  store i64 %158, ptr %15, align 8, !tbaa !16
  %159 = load ptr, ptr %0, align 8, !tbaa !12
  %160 = getelementptr inbounds i8, ptr %159, i64 1
  store ptr %160, ptr %0, align 8, !tbaa !12
  %161 = load i8, ptr %159, align 1, !tbaa !17
  %162 = zext i8 %161 to i64
  %163 = shl nuw nsw i64 %162, 24
  %164 = getelementptr inbounds i8, ptr %152, i64 16
  store i64 %163, ptr %164, align 8, !tbaa !17
  %165 = load ptr, ptr %5, align 8, !tbaa !5
  store i32 9, ptr %165, align 8, !tbaa !13
  br label %166

166:                                              ; preds = %155, %17
  %167 = phi ptr [ %18, %17 ], [ %165, %155 ]
  %.8 = phi i32 [ %.0126, %17 ], [ %13, %155 ]
  %168 = load i32, ptr %14, align 8, !tbaa !15
  %169 = icmp eq i32 %168, 0
  br i1 %169, label %.thread.loopexit240, label %170

170:                                              ; preds = %166
  %171 = add i32 %168, -1
  store i32 %171, ptr %14, align 8, !tbaa !15
  %172 = load i64, ptr %15, align 8, !tbaa !16
  %173 = add i64 %172, 1
  store i64 %173, ptr %15, align 8, !tbaa !16
  %174 = load ptr, ptr %0, align 8, !tbaa !12
  %175 = getelementptr inbounds i8, ptr %174, i64 1
  store ptr %175, ptr %0, align 8, !tbaa !12
  %176 = load i8, ptr %174, align 1, !tbaa !17
  %177 = zext i8 %176 to i64
  %178 = shl nuw nsw i64 %177, 16
  %179 = getelementptr inbounds i8, ptr %167, i64 16
  %180 = load i64, ptr %179, align 8, !tbaa !17
  %181 = add i64 %180, %178
  store i64 %181, ptr %179, align 8, !tbaa !17
  %182 = load ptr, ptr %5, align 8, !tbaa !5
  store i32 10, ptr %182, align 8, !tbaa !13
  br label %183

183:                                              ; preds = %170, %17
  %184 = phi ptr [ %18, %17 ], [ %182, %170 ]
  %.9 = phi i32 [ %.0126, %17 ], [ %13, %170 ]
  %185 = load i32, ptr %14, align 8, !tbaa !15
  %186 = icmp eq i32 %185, 0
  br i1 %186, label %.thread.loopexit240, label %187

187:                                              ; preds = %183
  %188 = add i32 %185, -1
  store i32 %188, ptr %14, align 8, !tbaa !15
  %189 = load i64, ptr %15, align 8, !tbaa !16
  %190 = add i64 %189, 1
  store i64 %190, ptr %15, align 8, !tbaa !16
  %191 = load ptr, ptr %0, align 8, !tbaa !12
  %192 = getelementptr inbounds i8, ptr %191, i64 1
  store ptr %192, ptr %0, align 8, !tbaa !12
  %193 = load i8, ptr %191, align 1, !tbaa !17
  %194 = zext i8 %193 to i64
  %195 = shl nuw nsw i64 %194, 8
  %196 = getelementptr inbounds i8, ptr %184, i64 16
  %197 = load i64, ptr %196, align 8, !tbaa !17
  %198 = add i64 %197, %195
  store i64 %198, ptr %196, align 8, !tbaa !17
  %199 = load ptr, ptr %5, align 8, !tbaa !5
  store i32 11, ptr %199, align 8, !tbaa !13
  br label %200

200:                                              ; preds = %187, %17
  %201 = phi ptr [ %18, %17 ], [ %199, %187 ]
  %.10 = phi i32 [ %.0126, %17 ], [ %13, %187 ]
  %202 = load i32, ptr %14, align 8, !tbaa !15
  %203 = icmp eq i32 %202, 0
  br i1 %203, label %.thread.loopexit240, label %204

204:                                              ; preds = %200
  %205 = add i32 %202, -1
  store i32 %205, ptr %14, align 8, !tbaa !15
  %206 = load i64, ptr %15, align 8, !tbaa !16
  %207 = add i64 %206, 1
  store i64 %207, ptr %15, align 8, !tbaa !16
  %208 = load ptr, ptr %0, align 8, !tbaa !12
  %209 = getelementptr inbounds i8, ptr %208, i64 1
  store ptr %209, ptr %0, align 8, !tbaa !12
  %210 = load i8, ptr %208, align 1, !tbaa !17
  %211 = zext i8 %210 to i64
  %212 = getelementptr inbounds i8, ptr %201, i64 16
  %213 = load i64, ptr %212, align 8, !tbaa !17
  %214 = add i64 %213, %211
  store i64 %214, ptr %212, align 8, !tbaa !17
  %215 = load ptr, ptr %5, align 8, !tbaa !5
  %216 = getelementptr inbounds i8, ptr %215, i64 8
  %217 = load i64, ptr %216, align 8, !tbaa !17
  %218 = getelementptr inbounds i8, ptr %215, i64 16
  %219 = load i64, ptr %218, align 8, !tbaa !17
  %.not141 = icmp eq i64 %217, %219
  br i1 %.not141, label %221, label %220

220:                                              ; preds = %204
  store i32 13, ptr %215, align 8, !tbaa !13
  store ptr @.str.5, ptr %16, align 8, !tbaa !18
  store i32 5, ptr %216, align 8, !tbaa !17
  br label %222

221:                                              ; preds = %204
  store i32 12, ptr %215, align 8, !tbaa !13
  br label %.thread

222:                                              ; preds = %220, %149, %138, %66, %63, %44, %34
  %.11 = phi i32 [ %13, %220 ], [ -3, %138 ], [ %13, %149 ], [ %13, %63 ], [ %13, %66 ], [ %13, %34 ], [ %13, %44 ]
  %.pre = load ptr, ptr %5, align 8, !tbaa !5
  br label %17

.thread.loopexit:                                 ; preds = %17
  br label %.thread

.thread.loopexit240:                              ; preds = %17, %20, %46, %151, %166, %183, %200, %134
  %.0.ph = phi i32 [ %13, %134 ], [ %.10, %200 ], [ %.9, %183 ], [ %.8, %166 ], [ %.7, %151 ], [ %.1, %46 ], [ %.0126, %20 ], [ -3, %17 ]
  br label %.thread

.thread:                                          ; preds = %134, %17, %.thread.loopexit240, %.thread.loopexit, %221, %.loopexit149, %.loopexit148, %.loopexit147, %.loopexit, %2, %4, %8, %132, %117
  %.0 = phi i32 [ -2, %132 ], [ 2, %117 ], [ -2, %8 ], [ -2, %4 ], [ -2, %2 ], [ %.2, %.loopexit ], [ %.3, %.loopexit147 ], [ %.4, %.loopexit148 ], [ %.5, %.loopexit149 ], [ 1, %221 ], [ %.0.ph, %.thread.loopexit240 ], [ -2, %17 ], [ %137, %134 ], [ 1, %.thread.loopexit ]
  ret i32 %.0
}

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

attributes #0 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 0}
!13 = !{!14, !10, i64 0}
!14 = !{!"internal_state", !10, i64 0, !8, i64 8, !10, i64 24, !10, i64 28, !7, i64 32}
!15 = !{!6, !10, i64 8}
!16 = !{!6, !11, i64 16}
!17 = !{!8, !8, i64 0}
!18 = !{!6, !7, i64 48}
!19 = !{!14, !10, i64 28}
!20 = !{!6, !11, i64 96}
!21 = !{!14, !7, i64 32}
!22 = !{!14, !10, i64 24}


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