; LLVM IR from fhanau/Efficient-Compression-Tool :: src/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.code = type { i8, i8, i16 }
%struct.z_stream_s = type { ptr, i32, i64, ptr, i32, i64, ptr, ptr, ptr, ptr, ptr, i32, i64, i64 }
%struct.inflate_state = type { ptr, i32, i32, i32, i32, i32, i32, i64, i64, ptr, i32, i32, i32, i32, ptr, i64, i32, i32, i32, i32, ptr, ptr, i32, i32, i32, i32, i32, i32, ptr, [320 x i16], [288 x i16], [1924 x %struct.code], i32, i32, i32 }
%struct.gz_header_s = type { i32, i64, i32, i32, ptr, i32, i32, ptr, i32, ptr, i32, i32, i32 }

@inflate.order = external hidden constant [19 x i16], align 16
@.str.1 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [23 x i8], align 1

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

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

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

; Function Attrs: nounwind 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 ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i64, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca %struct.code, align 2
  %18 = alloca %struct.code, align 2
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca [4 x i8], align 1
  %22 = 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 8, ptr %6) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #4
  %23 = load ptr, ptr %4, align 8, !tbaa !5
  %24 = call i32 @inflateStateCheck(ptr noundef %23)
  %25 = icmp ne i32 %24, 0
  br i1 %25, label %41, label %26

26:                                               ; preds = %2
  %27 = load ptr, ptr %4, align 8, !tbaa !5
  %28 = getelementptr inbounds %struct.z_stream_s, ptr %27, i32 0, i32 3
  %29 = load ptr, ptr %28, align 8, !tbaa !11
  %30 = icmp eq ptr %29, null
  br i1 %30, label %41, label %31

31:                                               ; preds = %26
  %32 = load ptr, ptr %4, align 8, !tbaa !5
  %33 = getelementptr inbounds %struct.z_stream_s, ptr %32, i32 0, i32 0
  %34 = load ptr, ptr %33, align 8, !tbaa !14
  %35 = icmp eq ptr %34, null
  br i1 %35, label %36, label %42

36:                                               ; preds = %31
  %37 = load ptr, ptr %4, align 8, !tbaa !5
  %38 = getelementptr inbounds %struct.z_stream_s, ptr %37, i32 0, i32 1
  %39 = load i32, ptr %38, align 8, !tbaa !15
  %40 = icmp ne i32 %39, 0
  br i1 %40, label %41, label %42

41:                                               ; preds = %36, %26, %2
  store i32 -2, ptr %3, align 4
  store i32 1, ptr %22, align 4
  br label %3108

42:                                               ; preds = %36, %31
  %43 = load ptr, ptr %4, align 8, !tbaa !5
  %44 = getelementptr inbounds %struct.z_stream_s, ptr %43, i32 0, i32 7
  %45 = load ptr, ptr %44, align 8, !tbaa !16
  store ptr %45, ptr %6, align 8, !tbaa !5
  %46 = load ptr, ptr %6, align 8, !tbaa !5
  %47 = getelementptr inbounds %struct.inflate_state, ptr %46, i32 0, i32 1
  %48 = load i32, ptr %47, align 8, !tbaa !17
  %49 = icmp eq i32 %48, 16191
  br i1 %49, label %50, label %53

50:                                               ; preds = %42
  %51 = load ptr, ptr %6, align 8, !tbaa !5
  %52 = getelementptr inbounds %struct.inflate_state, ptr %51, i32 0, i32 1
  store i32 16192, ptr %52, align 8, !tbaa !17
  br label %53

53:                                               ; preds = %50, %42
  br label %54

54:                                               ; preds = %53
  %55 = load ptr, ptr %4, align 8, !tbaa !5
  %56 = getelementptr inbounds %struct.z_stream_s, ptr %55, i32 0, i32 3
  %57 = load ptr, ptr %56, align 8, !tbaa !11
  store ptr %57, ptr %8, align 8, !tbaa !5
  %58 = load ptr, ptr %4, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.z_stream_s, ptr %58, i32 0, i32 4
  %60 = load i32, ptr %59, align 8, !tbaa !19
  store i32 %60, ptr %10, align 4, !tbaa !9
  %61 = load ptr, ptr %4, align 8, !tbaa !5
  %62 = getelementptr inbounds %struct.z_stream_s, ptr %61, i32 0, i32 0
  %63 = load ptr, ptr %62, align 8, !tbaa !14
  store ptr %63, ptr %7, align 8, !tbaa !5
  %64 = load ptr, ptr %4, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.z_stream_s, ptr %64, i32 0, i32 1
  %66 = load i32, ptr %65, align 8, !tbaa !15
  store i32 %66, ptr %9, align 4, !tbaa !9
  %67 = load ptr, ptr %6, align 8, !tbaa !5
  %68 = getelementptr inbounds %struct.inflate_state, ptr %67, i32 0, i32 15
  %69 = load i64, ptr %68, align 8, !tbaa !20
  store i64 %69, ptr %11, align 8, !tbaa !21
  %70 = load ptr, ptr %6, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.inflate_state, ptr %70, i32 0, i32 16
  %72 = load i32, ptr %71, align 8, !tbaa !22
  store i32 %72, ptr %12, align 4, !tbaa !9
  br label %73

73:                                               ; preds = %54
  br label %74

74:                                               ; preds = %73
  %75 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %75, ptr %13, align 4, !tbaa !9
  %76 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %76, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %77

77:                                               ; preds = %2924, %74
  %78 = load ptr, ptr %6, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.inflate_state, ptr %78, i32 0, i32 1
  %80 = load i32, ptr %79, align 8, !tbaa !17
  switch i32 %80, label %2923 [
    i32 16180, label %81
    i32 16181, label %258
    i32 16182, label %362
    i32 16183, label %445
    i32 16184, label %529
    i32 16185, label %627
    i32 16186, label %751
    i32 16187, label %864
    i32 16188, label %975
    i32 16189, label %1058
    i32 16190, label %1111
    i32 16191, label %1146
    i32 16192, label %1154
    i32 16193, label %1252
    i32 16194, label %1319
    i32 16195, label %1322
    i32 16196, label %1371
    i32 16197, label %1458
    i32 16198, label %1572
    i32 16199, label %1992
    i32 16200, label %1995
    i32 16201, label %2254
    i32 16202, label %2332
    i32 16203, label %2506
    i32 16204, label %2579
    i32 16205, label %2703
    i32 16206, label %2718
    i32 16207, label %2856
    i32 16208, label %2919
    i32 16209, label %2920
    i32 16210, label %2921
    i32 16211, label %2922
  ]

81:                                               ; preds = %77
  %82 = load ptr, ptr %6, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.inflate_state, ptr %82, i32 0, i32 3
  %84 = load i32, ptr %83, align 8, !tbaa !23
  %85 = icmp eq i32 %84, 0
  br i1 %85, label %86, label %89

86:                                               ; preds = %81
  %87 = load ptr, ptr %6, align 8, !tbaa !5
  %88 = getelementptr inbounds %struct.inflate_state, ptr %87, i32 0, i32 1
  store i32 16192, ptr %88, align 8, !tbaa !17
  br label %2924

89:                                               ; preds = %81
  br label %90

90:                                               ; preds = %89
  br label %91

91:                                               ; preds = %114, %90
  %92 = load i32, ptr %12, align 4, !tbaa !9
  %93 = icmp ult i32 %92, 16
  br i1 %93, label %94, label %115

94:                                               ; preds = %91
  br label %95

95:                                               ; preds = %94
  %96 = load i32, ptr %9, align 4, !tbaa !9
  %97 = icmp eq i32 %96, 0
  br i1 %97, label %98, label %99

98:                                               ; preds = %95
  br label %2925

99:                                               ; preds = %95
  %100 = load i32, ptr %9, align 4, !tbaa !9
  %101 = add i32 %100, -1
  store i32 %101, ptr %9, align 4, !tbaa !9
  %102 = load ptr, ptr %7, align 8, !tbaa !5
  %103 = getelementptr inbounds i8, ptr %102, i32 1
  store ptr %103, ptr %7, align 8, !tbaa !5
  %104 = load i8, ptr %102, align 1, !tbaa !24
  %105 = zext i8 %104 to i64
  %106 = load i32, ptr %12, align 4, !tbaa !9
  %107 = zext i32 %106 to i64
  %108 = shl i64 %105, %107
  %109 = load i64, ptr %11, align 8, !tbaa !21
  %110 = add i64 %109, %108
  store i64 %110, ptr %11, align 8, !tbaa !21
  %111 = load i32, ptr %12, align 4, !tbaa !9
  %112 = add i32 %111, 8
  store i32 %112, ptr %12, align 4, !tbaa !9
  br label %113

113:                                              ; preds = %99
  br label %114

114:                                              ; preds = %113
  br label %91, !llvm.loop !25

115:                                              ; preds = %91
  br label %116

116:                                              ; preds = %115
  br label %117

117:                                              ; preds = %116
  %118 = load ptr, ptr %6, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.inflate_state, ptr %118, i32 0, i32 3
  %120 = load i32, ptr %119, align 8, !tbaa !23
  %121 = and i32 %120, 2
  %122 = icmp ne i32 %121, 0
  br i1 %122, label %123, label %160

123:                                              ; preds = %117
  %124 = load i64, ptr %11, align 8, !tbaa !21
  %125 = icmp eq i64 %124, 35615
  br i1 %125, label %126, label %160

126:                                              ; preds = %123
  %127 = load ptr, ptr %6, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.inflate_state, ptr %127, i32 0, i32 10
  %129 = load i32, ptr %128, align 8, !tbaa !27
  %130 = icmp eq i32 %129, 0
  br i1 %130, label %131, label %134

131:                                              ; preds = %126
  %132 = load ptr, ptr %6, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.inflate_state, ptr %132, i32 0, i32 10
  store i32 15, ptr %133, align 8, !tbaa !27
  br label %134

134:                                              ; preds = %131, %126
  %135 = call i64 @crc32(i64 noundef 0, ptr noundef null, i32 noundef 0)
  %136 = load ptr, ptr %6, align 8, !tbaa !5
  %137 = getelementptr inbounds %struct.inflate_state, ptr %136, i32 0, i32 7
  store i64 %135, ptr %137, align 8, !tbaa !28
  br label %138

138:                                              ; preds = %134
  %139 = load i64, ptr %11, align 8, !tbaa !21
  %140 = trunc i64 %139 to i8
  %141 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 0
  store i8 %140, ptr %141, align 1, !tbaa !24
  %142 = load i64, ptr %11, align 8, !tbaa !21
  %143 = lshr i64 %142, 8
  %144 = trunc i64 %143 to i8
  %145 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 1
  store i8 %144, ptr %145, align 1, !tbaa !24
  %146 = load ptr, ptr %6, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.inflate_state, ptr %146, i32 0, i32 7
  %148 = load i64, ptr %147, align 8, !tbaa !28
  %149 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 0
  %150 = call i64 @crc32(i64 noundef %148, ptr noundef %149, i32 noundef 2)
  %151 = load ptr, ptr %6, align 8, !tbaa !5
  %152 = getelementptr inbounds %struct.inflate_state, ptr %151, i32 0, i32 7
  store i64 %150, ptr %152, align 8, !tbaa !28
  br label %153

153:                                              ; preds = %138
  br label %154

154:                                              ; preds = %153
  br label %155

155:                                              ; preds = %154
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %156

156:                                              ; preds = %155
  br label %157

157:                                              ; preds = %156
  %158 = load ptr, ptr %6, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.inflate_state, ptr %158, i32 0, i32 1
  store i32 16181, ptr %159, align 8, !tbaa !17
  br label %2924

160:                                              ; preds = %123, %117
  %161 = load ptr, ptr %6, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.inflate_state, ptr %161, i32 0, i32 9
  %163 = load ptr, ptr %162, align 8, !tbaa !29
  %164 = icmp ne ptr %163, null
  br i1 %164, label %165, label %170

165:                                              ; preds = %160
  %166 = load ptr, ptr %6, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.inflate_state, ptr %166, i32 0, i32 9
  %168 = load ptr, ptr %167, align 8, !tbaa !29
  %169 = getelementptr inbounds %struct.gz_header_s, ptr %168, i32 0, i32 12
  store i32 -1, ptr %169, align 8, !tbaa !30
  br label %170

170:                                              ; preds = %165, %160
  %171 = load ptr, ptr %6, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.inflate_state, ptr %171, i32 0, i32 3
  %173 = load i32, ptr %172, align 8, !tbaa !23
  %174 = and i32 %173, 1
  %175 = icmp ne i32 %174, 0
  br i1 %175, label %176, label %187

176:                                              ; preds = %170
  %177 = load i64, ptr %11, align 8, !tbaa !21
  %178 = trunc i64 %177 to i32
  %179 = and i32 %178, 255
  %180 = shl i32 %179, 8
  %181 = zext i32 %180 to i64
  %182 = load i64, ptr %11, align 8, !tbaa !21
  %183 = lshr i64 %182, 8
  %184 = add i64 %181, %183
  %185 = urem i64 %184, 31
  %186 = icmp ne i64 %185, 0
  br i1 %186, label %187, label %192

187:                                              ; preds = %176, %170
  %188 = load ptr, ptr %4, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.z_stream_s, ptr %188, i32 0, i32 6
  store ptr @.str.1, ptr %189, align 8, !tbaa !32
  %190 = load ptr, ptr %6, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.inflate_state, ptr %190, i32 0, i32 1
  store i32 16209, ptr %191, align 8, !tbaa !17
  br label %2924

192:                                              ; preds = %176
  %193 = load i64, ptr %11, align 8, !tbaa !21
  %194 = trunc i64 %193 to i32
  %195 = and i32 %194, 15
  %196 = icmp ne i32 %195, 8
  br i1 %196, label %197, label %202

197:                                              ; preds = %192
  %198 = load ptr, ptr %4, align 8, !tbaa !5
  %199 = getelementptr inbounds %struct.z_stream_s, ptr %198, i32 0, i32 6
  store ptr @.str.2, ptr %199, align 8, !tbaa !32
  %200 = load ptr, ptr %6, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.inflate_state, ptr %200, i32 0, i32 1
  store i32 16209, ptr %201, align 8, !tbaa !17
  br label %2924

202:                                              ; preds = %192
  br label %203

203:                                              ; preds = %202
  %204 = load i64, ptr %11, align 8, !tbaa !21
  %205 = lshr i64 %204, 4
  store i64 %205, ptr %11, align 8, !tbaa !21
  %206 = load i32, ptr %12, align 4, !tbaa !9
  %207 = sub i32 %206, 4
  store i32 %207, ptr %12, align 4, !tbaa !9
  br label %208

208:                                              ; preds = %203
  br label %209

209:                                              ; preds = %208
  %210 = load i64, ptr %11, align 8, !tbaa !21
  %211 = trunc i64 %210 to i32
  %212 = and i32 %211, 15
  %213 = add i32 %212, 8
  store i32 %213, ptr %19, align 4, !tbaa !9
  %214 = load ptr, ptr %6, align 8, !tbaa !5
  %215 = getelementptr inbounds %struct.inflate_state, ptr %214, i32 0, i32 10
  %216 = load i32, ptr %215, align 8, !tbaa !27
  %217 = icmp eq i32 %216, 0
  br i1 %217, label %218, label %222

218:                                              ; preds = %209
  %219 = load i32, ptr %19, align 4, !tbaa !9
  %220 = load ptr, ptr %6, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.inflate_state, ptr %220, i32 0, i32 10
  store i32 %219, ptr %221, align 8, !tbaa !27
  br label %222

222:                                              ; preds = %218, %209
  %223 = load i32, ptr %19, align 4, !tbaa !9
  %224 = icmp ugt i32 %223, 15
  br i1 %224, label %231, label %225

225:                                              ; preds = %222
  %226 = load i32, ptr %19, align 4, !tbaa !9
  %227 = load ptr, ptr %6, align 8, !tbaa !5
  %228 = getelementptr inbounds %struct.inflate_state, ptr %227, i32 0, i32 10
  %229 = load i32, ptr %228, align 8, !tbaa !27
  %230 = icmp ugt i32 %226, %229
  br i1 %230, label %231, label %236

231:                                              ; preds = %225, %222
  %232 = load ptr, ptr %4, align 8, !tbaa !5
  %233 = getelementptr inbounds %struct.z_stream_s, ptr %232, i32 0, i32 6
  store ptr @.str.3, ptr %233, align 8, !tbaa !32
  %234 = load ptr, ptr %6, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.inflate_state, ptr %234, i32 0, i32 1
  store i32 16209, ptr %235, align 8, !tbaa !17
  br label %2924

236:                                              ; preds = %225
  %237 = load i32, ptr %19, align 4, !tbaa !9
  %238 = shl i32 1, %237
  %239 = load ptr, ptr %6, align 8, !tbaa !5
  %240 = getelementptr inbounds %struct.inflate_state, ptr %239, i32 0, i32 6
  store i32 %238, ptr %240, align 4, !tbaa !33
  %241 = load ptr, ptr %6, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.inflate_state, ptr %241, i32 0, i32 5
  store i32 0, ptr %242, align 8, !tbaa !34
  %243 = call i64 @adler32(i64 noundef 0, ptr noundef null, i32 noundef 0)
  %244 = load ptr, ptr %6, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.inflate_state, ptr %244, i32 0, i32 7
  store i64 %243, ptr %245, align 8, !tbaa !28
  %246 = load ptr, ptr %4, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.z_stream_s, ptr %246, i32 0, i32 12
  store i64 %243, ptr %247, align 8, !tbaa !35
  %248 = load i64, ptr %11, align 8, !tbaa !21
  %249 = and i64 %248, 512
  %250 = icmp ne i64 %249, 0
  %251 = zext i1 %250 to i64
  %252 = select i1 %250, i32 16189, i32 16191
  %253 = load ptr, ptr %6, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.inflate_state, ptr %253, i32 0, i32 1
  store i32 %252, ptr %254, align 8, !tbaa !17
  br label %255

255:                                              ; preds = %236
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %256

256:                                              ; preds = %255
  br label %257

257:                                              ; preds = %256
  br label %2924

258:                                              ; preds = %77
  br label %259

259:                                              ; preds = %258
  br label %260

260:                                              ; preds = %283, %259
  %261 = load i32, ptr %12, align 4, !tbaa !9
  %262 = icmp ult i32 %261, 16
  br i1 %262, label %263, label %284

263:                                              ; preds = %260
  br label %264

264:                                              ; preds = %263
  %265 = load i32, ptr %9, align 4, !tbaa !9
  %266 = icmp eq i32 %265, 0
  br i1 %266, label %267, label %268

267:                                              ; preds = %264
  br label %2925

268:                                              ; preds = %264
  %269 = load i32, ptr %9, align 4, !tbaa !9
  %270 = add i32 %269, -1
  store i32 %270, ptr %9, align 4, !tbaa !9
  %271 = load ptr, ptr %7, align 8, !tbaa !5
  %272 = getelementptr inbounds i8, ptr %271, i32 1
  store ptr %272, ptr %7, align 8, !tbaa !5
  %273 = load i8, ptr %271, align 1, !tbaa !24
  %274 = zext i8 %273 to i64
  %275 = load i32, ptr %12, align 4, !tbaa !9
  %276 = zext i32 %275 to i64
  %277 = shl i64 %274, %276
  %278 = load i64, ptr %11, align 8, !tbaa !21
  %279 = add i64 %278, %277
  store i64 %279, ptr %11, align 8, !tbaa !21
  %280 = load i32, ptr %12, align 4, !tbaa !9
  %281 = add i32 %280, 8
  store i32 %281, ptr %12, align 4, !tbaa !9
  br label %282

282:                                              ; preds = %268
  br label %283

283:                                              ; preds = %282
  br label %260, !llvm.loop !36

284:                                              ; preds = %260
  br label %285

285:                                              ; preds = %284
  br label %286

286:                                              ; preds = %285
  %287 = load i64, ptr %11, align 8, !tbaa !21
  %288 = trunc i64 %287 to i32
  %289 = load ptr, ptr %6, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.inflate_state, ptr %289, i32 0, i32 5
  store i32 %288, ptr %290, align 8, !tbaa !34
  %291 = load ptr, ptr %6, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.inflate_state, ptr %291, i32 0, i32 5
  %293 = load i32, ptr %292, align 8, !tbaa !34
  %294 = and i32 %293, 255
  %295 = icmp ne i32 %294, 8
  br i1 %295, label %296, label %301

296:                                              ; preds = %286
  %297 = load ptr, ptr %4, align 8, !tbaa !5
  %298 = getelementptr inbounds %struct.z_stream_s, ptr %297, i32 0, i32 6
  store ptr @.str.2, ptr %298, align 8, !tbaa !32
  %299 = load ptr, ptr %6, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.inflate_state, ptr %299, i32 0, i32 1
  store i32 16209, ptr %300, align 8, !tbaa !17
  br label %2924

301:                                              ; preds = %286
  %302 = load ptr, ptr %6, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.inflate_state, ptr %302, i32 0, i32 5
  %304 = load i32, ptr %303, align 8, !tbaa !34
  %305 = and i32 %304, 57344
  %306 = icmp ne i32 %305, 0
  br i1 %306, label %307, label %312

307:                                              ; preds = %301
  %308 = load ptr, ptr %4, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.z_stream_s, ptr %308, i32 0, i32 6
  store ptr @.str.4, ptr %309, align 8, !tbaa !32
  %310 = load ptr, ptr %6, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.inflate_state, ptr %310, i32 0, i32 1
  store i32 16209, ptr %311, align 8, !tbaa !17
  br label %2924

312:                                              ; preds = %301
  %313 = load ptr, ptr %6, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.inflate_state, ptr %313, i32 0, i32 9
  %315 = load ptr, ptr %314, align 8, !tbaa !29
  %316 = icmp ne ptr %315, null
  br i1 %316, label %317, label %326

317:                                              ; preds = %312
  %318 = load i64, ptr %11, align 8, !tbaa !21
  %319 = lshr i64 %318, 8
  %320 = and i64 %319, 1
  %321 = trunc i64 %320 to i32
  %322 = load ptr, ptr %6, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.inflate_state, ptr %322, i32 0, i32 9
  %324 = load ptr, ptr %323, align 8, !tbaa !29
  %325 = getelementptr inbounds %struct.gz_header_s, ptr %324, i32 0, i32 0
  store i32 %321, ptr %325, align 8, !tbaa !37
  br label %326

326:                                              ; preds = %317, %312
  %327 = load ptr, ptr %6, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.inflate_state, ptr %327, i32 0, i32 5
  %329 = load i32, ptr %328, align 8, !tbaa !34
  %330 = and i32 %329, 512
  %331 = icmp ne i32 %330, 0
  br i1 %331, label %332, label %356

332:                                              ; preds = %326
  %333 = load ptr, ptr %6, align 8, !tbaa !5
  %334 = getelementptr inbounds %struct.inflate_state, ptr %333, i32 0, i32 3
  %335 = load i32, ptr %334, align 8, !tbaa !23
  %336 = and i32 %335, 4
  %337 = icmp ne i32 %336, 0
  br i1 %337, label %338, label %356

338:                                              ; preds = %332
  br label %339

339:                                              ; preds = %338
  %340 = load i64, ptr %11, align 8, !tbaa !21
  %341 = trunc i64 %340 to i8
  %342 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 0
  store i8 %341, ptr %342, align 1, !tbaa !24
  %343 = load i64, ptr %11, align 8, !tbaa !21
  %344 = lshr i64 %343, 8
  %345 = trunc i64 %344 to i8
  %346 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 1
  store i8 %345, ptr %346, align 1, !tbaa !24
  %347 = load ptr, ptr %6, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.inflate_state, ptr %347, i32 0, i32 7
  %349 = load i64, ptr %348, align 8, !tbaa !28
  %350 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 0
  %351 = call i64 @crc32(i64 noundef %349, ptr noundef %350, i32 noundef 2)
  %352 = load ptr, ptr %6, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.inflate_state, ptr %352, i32 0, i32 7
  store i64 %351, ptr %353, align 8, !tbaa !28
  br label %354

354:                                              ; preds = %339
  br label %355

355:                                              ; preds = %354
  br label %356

356:                                              ; preds = %355, %332, %326
  br label %357

357:                                              ; preds = %356
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %358

358:                                              ; preds = %357
  br label %359

359:                                              ; preds = %358
  %360 = load ptr, ptr %6, align 8, !tbaa !5
  %361 = getelementptr inbounds %struct.inflate_state, ptr %360, i32 0, i32 1
  store i32 16182, ptr %361, align 8, !tbaa !17
  br label %362

362:                                              ; preds = %359, %77
  br label %363

363:                                              ; preds = %362
  br label %364

364:                                              ; preds = %387, %363
  %365 = load i32, ptr %12, align 4, !tbaa !9
  %366 = icmp ult i32 %365, 32
  br i1 %366, label %367, label %388

367:                                              ; preds = %364
  br label %368

368:                                              ; preds = %367
  %369 = load i32, ptr %9, align 4, !tbaa !9
  %370 = icmp eq i32 %369, 0
  br i1 %370, label %371, label %372

371:                                              ; preds = %368
  br label %2925

372:                                              ; preds = %368
  %373 = load i32, ptr %9, align 4, !tbaa !9
  %374 = add i32 %373, -1
  store i32 %374, ptr %9, align 4, !tbaa !9
  %375 = load ptr, ptr %7, align 8, !tbaa !5
  %376 = getelementptr inbounds i8, ptr %375, i32 1
  store ptr %376, ptr %7, align 8, !tbaa !5
  %377 = load i8, ptr %375, align 1, !tbaa !24
  %378 = zext i8 %377 to i64
  %379 = load i32, ptr %12, align 4, !tbaa !9
  %380 = zext i32 %379 to i64
  %381 = shl i64 %378, %380
  %382 = load i64, ptr %11, align 8, !tbaa !21
  %383 = add i64 %382, %381
  store i64 %383, ptr %11, align 8, !tbaa !21
  %384 = load i32, ptr %12, align 4, !tbaa !9
  %385 = add i32 %384, 8
  store i32 %385, ptr %12, align 4, !tbaa !9
  br label %386

386:                                              ; preds = %372
  br label %387

387:                                              ; preds = %386
  br label %364, !llvm.loop !38

388:                                              ; preds = %364
  br label %389

389:                                              ; preds = %388
  br label %390

390:                                              ; preds = %389
  %391 = load ptr, ptr %6, align 8, !tbaa !5
  %392 = getelementptr inbounds %struct.inflate_state, ptr %391, i32 0, i32 9
  %393 = load ptr, ptr %392, align 8, !tbaa !29
  %394 = icmp ne ptr %393, null
  br i1 %394, label %395, label %401

395:                                              ; preds = %390
  %396 = load i64, ptr %11, align 8, !tbaa !21
  %397 = load ptr, ptr %6, align 8, !tbaa !5
  %398 = getelementptr inbounds %struct.inflate_state, ptr %397, i32 0, i32 9
  %399 = load ptr, ptr %398, align 8, !tbaa !29
  %400 = getelementptr inbounds %struct.gz_header_s, ptr %399, i32 0, i32 1
  store i64 %396, ptr %400, align 8, !tbaa !39
  br label %401

401:                                              ; preds = %395, %390
  %402 = load ptr, ptr %6, align 8, !tbaa !5
  %403 = getelementptr inbounds %struct.inflate_state, ptr %402, i32 0, i32 5
  %404 = load i32, ptr %403, align 8, !tbaa !34
  %405 = and i32 %404, 512
  %406 = icmp ne i32 %405, 0
  br i1 %406, label %407, label %439

407:                                              ; preds = %401
  %408 = load ptr, ptr %6, align 8, !tbaa !5
  %409 = getelementptr inbounds %struct.inflate_state, ptr %408, i32 0, i32 3
  %410 = load i32, ptr %409, align 8, !tbaa !23
  %411 = and i32 %410, 4
  %412 = icmp ne i32 %411, 0
  br i1 %412, label %413, label %439

413:                                              ; preds = %407
  br label %414

414:                                              ; preds = %413
  %415 = load i64, ptr %11, align 8, !tbaa !21
  %416 = trunc i64 %415 to i8
  %417 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 0
  store i8 %416, ptr %417, align 1, !tbaa !24
  %418 = load i64, ptr %11, align 8, !tbaa !21
  %419 = lshr i64 %418, 8
  %420 = trunc i64 %419 to i8
  %421 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 1
  store i8 %420, ptr %421, align 1, !tbaa !24
  %422 = load i64, ptr %11, align 8, !tbaa !21
  %423 = lshr i64 %422, 16
  %424 = trunc i64 %423 to i8
  %425 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 2
  store i8 %424, ptr %425, align 1, !tbaa !24
  %426 = load i64, ptr %11, align 8, !tbaa !21
  %427 = lshr i64 %426, 24
  %428 = trunc i64 %427 to i8
  %429 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 3
  store i8 %428, ptr %429, align 1, !tbaa !24
  %430 = load ptr, ptr %6, align 8, !tbaa !5
  %431 = getelementptr inbounds %struct.inflate_state, ptr %430, i32 0, i32 7
  %432 = load i64, ptr %431, align 8, !tbaa !28
  %433 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 0
  %434 = call i64 @crc32(i64 noundef %432, ptr noundef %433, i32 noundef 4)
  %435 = load ptr, ptr %6, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.inflate_state, ptr %435, i32 0, i32 7
  store i64 %434, ptr %436, align 8, !tbaa !28
  br label %437

437:                                              ; preds = %414
  br label %438

438:                                              ; preds = %437
  br label %439

439:                                              ; preds = %438, %407, %401
  br label %440

440:                                              ; preds = %439
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %441

441:                                              ; preds = %440
  br label %442

442:                                              ; preds = %441
  %443 = load ptr, ptr %6, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct.inflate_state, ptr %443, i32 0, i32 1
  store i32 16183, ptr %444, align 8, !tbaa !17
  br label %445

445:                                              ; preds = %442, %77
  br label %446

446:                                              ; preds = %445
  br label %447

447:                                              ; preds = %470, %446
  %448 = load i32, ptr %12, align 4, !tbaa !9
  %449 = icmp ult i32 %448, 16
  br i1 %449, label %450, label %471

450:                                              ; preds = %447
  br label %451

451:                                              ; preds = %450
  %452 = load i32, ptr %9, align 4, !tbaa !9
  %453 = icmp eq i32 %452, 0
  br i1 %453, label %454, label %455

454:                                              ; preds = %451
  br label %2925

455:                                              ; preds = %451
  %456 = load i32, ptr %9, align 4, !tbaa !9
  %457 = add i32 %456, -1
  store i32 %457, ptr %9, align 4, !tbaa !9
  %458 = load ptr, ptr %7, align 8, !tbaa !5
  %459 = getelementptr inbounds i8, ptr %458, i32 1
  store ptr %459, ptr %7, align 8, !tbaa !5
  %460 = load i8, ptr %458, align 1, !tbaa !24
  %461 = zext i8 %460 to i64
  %462 = load i32, ptr %12, align 4, !tbaa !9
  %463 = zext i32 %462 to i64
  %464 = shl i64 %461, %463
  %465 = load i64, ptr %11, align 8, !tbaa !21
  %466 = add i64 %465, %464
  store i64 %466, ptr %11, align 8, !tbaa !21
  %467 = load i32, ptr %12, align 4, !tbaa !9
  %468 = add i32 %467, 8
  store i32 %468, ptr %12, align 4, !tbaa !9
  br label %469

469:                                              ; preds = %455
  br label %470

470:                                              ; preds = %469
  br label %447, !llvm.loop !40

471:                                              ; preds = %447
  br label %472

472:                                              ; preds = %471
  br label %473

473:                                              ; preds = %472
  %474 = load ptr, ptr %6, align 8, !tbaa !5
  %475 = getelementptr inbounds %struct.inflate_state, ptr %474, i32 0, i32 9
  %476 = load ptr, ptr %475, align 8, !tbaa !29
  %477 = icmp ne ptr %476, null
  br i1 %477, label %478, label %493

478:                                              ; preds = %473
  %479 = load i64, ptr %11, align 8, !tbaa !21
  %480 = and i64 %479, 255
  %481 = trunc i64 %480 to i32
  %482 = load ptr, ptr %6, align 8, !tbaa !5
  %483 = getelementptr inbounds %struct.inflate_state, ptr %482, i32 0, i32 9
  %484 = load ptr, ptr %483, align 8, !tbaa !29
  %485 = getelementptr inbounds %struct.gz_header_s, ptr %484, i32 0, i32 2
  store i32 %481, ptr %485, align 8, !tbaa !41
  %486 = load i64, ptr %11, align 8, !tbaa !21
  %487 = lshr i64 %486, 8
  %488 = trunc i64 %487 to i32
  %489 = load ptr, ptr %6, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.inflate_state, ptr %489, i32 0, i32 9
  %491 = load ptr, ptr %490, align 8, !tbaa !29
  %492 = getelementptr inbounds %struct.gz_header_s, ptr %491, i32 0, i32 3
  store i32 %488, ptr %492, align 4, !tbaa !42
  br label %493

493:                                              ; preds = %478, %473
  %494 = load ptr, ptr %6, align 8, !tbaa !5
  %495 = getelementptr inbounds %struct.inflate_state, ptr %494, i32 0, i32 5
  %496 = load i32, ptr %495, align 8, !tbaa !34
  %497 = and i32 %496, 512
  %498 = icmp ne i32 %497, 0
  br i1 %498, label %499, label %523

499:                                              ; preds = %493
  %500 = load ptr, ptr %6, align 8, !tbaa !5
  %501 = getelementptr inbounds %struct.inflate_state, ptr %500, i32 0, i32 3
  %502 = load i32, ptr %501, align 8, !tbaa !23
  %503 = and i32 %502, 4
  %504 = icmp ne i32 %503, 0
  br i1 %504, label %505, label %523

505:                                              ; preds = %499
  br label %506

506:                                              ; preds = %505
  %507 = load i64, ptr %11, align 8, !tbaa !21
  %508 = trunc i64 %507 to i8
  %509 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 0
  store i8 %508, ptr %509, align 1, !tbaa !24
  %510 = load i64, ptr %11, align 8, !tbaa !21
  %511 = lshr i64 %510, 8
  %512 = trunc i64 %511 to i8
  %513 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 1
  store i8 %512, ptr %513, align 1, !tbaa !24
  %514 = load ptr, ptr %6, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.inflate_state, ptr %514, i32 0, i32 7
  %516 = load i64, ptr %515, align 8, !tbaa !28
  %517 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 0
  %518 = call i64 @crc32(i64 noundef %516, ptr noundef %517, i32 noundef 2)
  %519 = load ptr, ptr %6, align 8, !tbaa !5
  %520 = getelementptr inbounds %struct.inflate_state, ptr %519, i32 0, i32 7
  store i64 %518, ptr %520, align 8, !tbaa !28
  br label %521

521:                                              ; preds = %506
  br label %522

522:                                              ; preds = %521
  br label %523

523:                                              ; preds = %522, %499, %493
  br label %524

524:                                              ; preds = %523
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %525

525:                                              ; preds = %524
  br label %526

526:                                              ; preds = %525
  %527 = load ptr, ptr %6, align 8, !tbaa !5
  %528 = getelementptr inbounds %struct.inflate_state, ptr %527, i32 0, i32 1
  store i32 16184, ptr %528, align 8, !tbaa !17
  br label %529

529:                                              ; preds = %526, %77
  %530 = load ptr, ptr %6, align 8, !tbaa !5
  %531 = getelementptr inbounds %struct.inflate_state, ptr %530, i32 0, i32 5
  %532 = load i32, ptr %531, align 8, !tbaa !34
  %533 = and i32 %532, 1024
  %534 = icmp ne i32 %533, 0
  br i1 %534, label %535, label %613

535:                                              ; preds = %529
  br label %536

536:                                              ; preds = %535
  br label %537

537:                                              ; preds = %560, %536
  %538 = load i32, ptr %12, align 4, !tbaa !9
  %539 = icmp ult i32 %538, 16
  br i1 %539, label %540, label %561

540:                                              ; preds = %537
  br label %541

541:                                              ; preds = %540
  %542 = load i32, ptr %9, align 4, !tbaa !9
  %543 = icmp eq i32 %542, 0
  br i1 %543, label %544, label %545

544:                                              ; preds = %541
  br label %2925

545:                                              ; preds = %541
  %546 = load i32, ptr %9, align 4, !tbaa !9
  %547 = add i32 %546, -1
  store i32 %547, ptr %9, align 4, !tbaa !9
  %548 = load ptr, ptr %7, align 8, !tbaa !5
  %549 = getelementptr inbounds i8, ptr %548, i32 1
  store ptr %549, ptr %7, align 8, !tbaa !5
  %550 = load i8, ptr %548, align 1, !tbaa !24
  %551 = zext i8 %550 to i64
  %552 = load i32, ptr %12, align 4, !tbaa !9
  %553 = zext i32 %552 to i64
  %554 = shl i64 %551, %553
  %555 = load i64, ptr %11, align 8, !tbaa !21
  %556 = add i64 %555, %554
  store i64 %556, ptr %11, align 8, !tbaa !21
  %557 = load i32, ptr %12, align 4, !tbaa !9
  %558 = add i32 %557, 8
  store i32 %558, ptr %12, align 4, !tbaa !9
  br label %559

559:                                              ; preds = %545
  br label %560

560:                                              ; preds = %559
  br label %537, !llvm.loop !43

561:                                              ; preds = %537
  br label %562

562:                                              ; preds = %561
  br label %563

563:                                              ; preds = %562
  %564 = load i64, ptr %11, align 8, !tbaa !21
  %565 = trunc i64 %564 to i32
  %566 = load ptr, ptr %6, align 8, !tbaa !5
  %567 = getelementptr inbounds %struct.inflate_state, ptr %566, i32 0, i32 17
  store i32 %565, ptr %567, align 4, !tbaa !44
  %568 = load ptr, ptr %6, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.inflate_state, ptr %568, i32 0, i32 9
  %570 = load ptr, ptr %569, align 8, !tbaa !29
  %571 = icmp ne ptr %570, null
  br i1 %571, label %572, label %579

572:                                              ; preds = %563
  %573 = load i64, ptr %11, align 8, !tbaa !21
  %574 = trunc i64 %573 to i32
  %575 = load ptr, ptr %6, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.inflate_state, ptr %575, i32 0, i32 9
  %577 = load ptr, ptr %576, align 8, !tbaa !29
  %578 = getelementptr inbounds %struct.gz_header_s, ptr %577, i32 0, i32 5
  store i32 %574, ptr %578, align 8, !tbaa !45
  br label %579

579:                                              ; preds = %572, %563
  %580 = load ptr, ptr %6, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct.inflate_state, ptr %580, i32 0, i32 5
  %582 = load i32, ptr %581, align 8, !tbaa !34
  %583 = and i32 %582, 512
  %584 = icmp ne i32 %583, 0
  br i1 %584, label %585, label %609

585:                                              ; preds = %579
  %586 = load ptr, ptr %6, align 8, !tbaa !5
  %587 = getelementptr inbounds %struct.inflate_state, ptr %586, i32 0, i32 3
  %588 = load i32, ptr %587, align 8, !tbaa !23
  %589 = and i32 %588, 4
  %590 = icmp ne i32 %589, 0
  br i1 %590, label %591, label %609

591:                                              ; preds = %585
  br label %592

592:                                              ; preds = %591
  %593 = load i64, ptr %11, align 8, !tbaa !21
  %594 = trunc i64 %593 to i8
  %595 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 0
  store i8 %594, ptr %595, align 1, !tbaa !24
  %596 = load i64, ptr %11, align 8, !tbaa !21
  %597 = lshr i64 %596, 8
  %598 = trunc i64 %597 to i8
  %599 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 1
  store i8 %598, ptr %599, align 1, !tbaa !24
  %600 = load ptr, ptr %6, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.inflate_state, ptr %600, i32 0, i32 7
  %602 = load i64, ptr %601, align 8, !tbaa !28
  %603 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 0
  %604 = call i64 @crc32(i64 noundef %602, ptr noundef %603, i32 noundef 2)
  %605 = load ptr, ptr %6, align 8, !tbaa !5
  %606 = getelementptr inbounds %struct.inflate_state, ptr %605, i32 0, i32 7
  store i64 %604, ptr %606, align 8, !tbaa !28
  br label %607

607:                                              ; preds = %592
  br label %608

608:                                              ; preds = %607
  br label %609

609:                                              ; preds = %608, %585, %579
  br label %610

610:                                              ; preds = %609
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %611

611:                                              ; preds = %610
  br label %612

612:                                              ; preds = %611
  br label %624

613:                                              ; preds = %529
  %614 = load ptr, ptr %6, align 8, !tbaa !5
  %615 = getelementptr inbounds %struct.inflate_state, ptr %614, i32 0, i32 9
  %616 = load ptr, ptr %615, align 8, !tbaa !29
  %617 = icmp ne ptr %616, null
  br i1 %617, label %618, label %623

618:                                              ; preds = %613
  %619 = load ptr, ptr %6, align 8, !tbaa !5
  %620 = getelementptr inbounds %struct.inflate_state, ptr %619, i32 0, i32 9
  %621 = load ptr, ptr %620, align 8, !tbaa !29
  %622 = getelementptr inbounds %struct.gz_header_s, ptr %621, i32 0, i32 4
  store ptr null, ptr %622, align 8, !tbaa !46
  br label %623

623:                                              ; preds = %618, %613
  br label %624

624:                                              ; preds = %623, %612
  %625 = load ptr, ptr %6, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.inflate_state, ptr %625, i32 0, i32 1
  store i32 16185, ptr %626, align 8, !tbaa !17
  br label %627

627:                                              ; preds = %624, %77
  %628 = load ptr, ptr %6, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.inflate_state, ptr %628, i32 0, i32 5
  %630 = load i32, ptr %629, align 8, !tbaa !34
  %631 = and i32 %630, 1024
  %632 = icmp ne i32 %631, 0
  br i1 %632, label %633, label %746

633:                                              ; preds = %627
  %634 = load ptr, ptr %6, align 8, !tbaa !5
  %635 = getelementptr inbounds %struct.inflate_state, ptr %634, i32 0, i32 17
  %636 = load i32, ptr %635, align 4, !tbaa !44
  store i32 %636, ptr %15, align 4, !tbaa !9
  %637 = load i32, ptr %15, align 4, !tbaa !9
  %638 = load i32, ptr %9, align 4, !tbaa !9
  %639 = icmp ugt i32 %637, %638
  br i1 %639, label %640, label %642

640:                                              ; preds = %633
  %641 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %641, ptr %15, align 4, !tbaa !9
  br label %642

642:                                              ; preds = %640, %633
  %643 = load i32, ptr %15, align 4, !tbaa !9
  %644 = icmp ne i32 %643, 0
  br i1 %644, label %645, label %739

645:                                              ; preds = %642
  %646 = load ptr, ptr %6, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.inflate_state, ptr %646, i32 0, i32 9
  %648 = load ptr, ptr %647, align 8, !tbaa !29
  %649 = icmp ne ptr %648, null
  br i1 %649, label %650, label %705

650:                                              ; preds = %645
  %651 = load ptr, ptr %6, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.inflate_state, ptr %651, i32 0, i32 9
  %653 = load ptr, ptr %652, align 8, !tbaa !29
  %654 = getelementptr inbounds %struct.gz_header_s, ptr %653, i32 0, i32 4
  %655 = load ptr, ptr %654, align 8, !tbaa !46
  %656 = icmp ne ptr %655, null
  br i1 %656, label %657, label %705

657:                                              ; preds = %650
  %658 = load ptr, ptr %6, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.inflate_state, ptr %658, i32 0, i32 9
  %660 = load ptr, ptr %659, align 8, !tbaa !29
  %661 = getelementptr inbounds %struct.gz_header_s, ptr %660, i32 0, i32 5
  %662 = load i32, ptr %661, align 8, !tbaa !45
  %663 = load ptr, ptr %6, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct.inflate_state, ptr %663, i32 0, i32 17
  %665 = load i32, ptr %664, align 4, !tbaa !44
  %666 = sub i32 %662, %665
  store i32 %666, ptr %19, align 4, !tbaa !9
  %667 = load ptr, ptr %6, align 8, !tbaa !5
  %668 = getelementptr inbounds %struct.inflate_state, ptr %667, i32 0, i32 9
  %669 = load ptr, ptr %668, align 8, !tbaa !29
  %670 = getelementptr inbounds %struct.gz_header_s, ptr %669, i32 0, i32 6
  %671 = load i32, ptr %670, align 4, !tbaa !47
  %672 = icmp ult i32 %666, %671
  br i1 %672, label %673, label %705

673:                                              ; preds = %657
  %674 = load ptr, ptr %6, align 8, !tbaa !5
  %675 = getelementptr inbounds %struct.inflate_state, ptr %674, i32 0, i32 9
  %676 = load ptr, ptr %675, align 8, !tbaa !29
  %677 = getelementptr inbounds %struct.gz_header_s, ptr %676, i32 0, i32 4
  %678 = load ptr, ptr %677, align 8, !tbaa !46
  %679 = load i32, ptr %19, align 4, !tbaa !9
  %680 = zext i32 %679 to i64
  %681 = getelementptr inbounds i8, ptr %678, i64 %680
  %682 = load ptr, ptr %7, align 8, !tbaa !5
  %683 = load i32, ptr %19, align 4, !tbaa !9
  %684 = load i32, ptr %15, align 4, !tbaa !9
  %685 = add i32 %683, %684
  %686 = load ptr, ptr %6, align 8, !tbaa !5
  %687 = getelementptr inbounds %struct.inflate_state, ptr %686, i32 0, i32 9
  %688 = load ptr, ptr %687, align 8, !tbaa !29
  %689 = getelementptr inbounds %struct.gz_header_s, ptr %688, i32 0, i32 6
  %690 = load i32, ptr %689, align 4, !tbaa !47
  %691 = icmp ugt i32 %685, %690
  br i1 %691, label %692, label %700

692:                                              ; preds = %673
  %693 = load ptr, ptr %6, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.inflate_state, ptr %693, i32 0, i32 9
  %695 = load ptr, ptr %694, align 8, !tbaa !29
  %696 = getelementptr inbounds %struct.gz_header_s, ptr %695, i32 0, i32 6
  %697 = load i32, ptr %696, align 4, !tbaa !47
  %698 = load i32, ptr %19, align 4, !tbaa !9
  %699 = sub i32 %697, %698
  br label %702

700:                                              ; preds = %673
  %701 = load i32, ptr %15, align 4, !tbaa !9
  br label %702

702:                                              ; preds = %700, %692
  %703 = phi i32 [ %699, %692 ], [ %701, %700 ]
  %704 = zext i32 %703 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %681, ptr align 1 %682, i64 %704, i1 false)
  br label %705

705:                                              ; preds = %702, %657, %650, %645
  %706 = load ptr, ptr %6, align 8, !tbaa !5
  %707 = getelementptr inbounds %struct.inflate_state, ptr %706, i32 0, i32 5
  %708 = load i32, ptr %707, align 8, !tbaa !34
  %709 = and i32 %708, 512
  %710 = icmp ne i32 %709, 0
  br i1 %710, label %711, label %726

711:                                              ; preds = %705
  %712 = load ptr, ptr %6, align 8, !tbaa !5
  %713 = getelementptr inbounds %struct.inflate_state, ptr %712, i32 0, i32 3
  %714 = load i32, ptr %713, align 8, !tbaa !23
  %715 = and i32 %714, 4
  %716 = icmp ne i32 %715, 0
  br i1 %716, label %717, label %726

717:                                              ; preds = %711
  %718 = load ptr, ptr %6, align 8, !tbaa !5
  %719 = getelementptr inbounds %struct.inflate_state, ptr %718, i32 0, i32 7
  %720 = load i64, ptr %719, align 8, !tbaa !28
  %721 = load ptr, ptr %7, align 8, !tbaa !5
  %722 = load i32, ptr %15, align 4, !tbaa !9
  %723 = call i64 @crc32(i64 noundef %720, ptr noundef %721, i32 noundef %722)
  %724 = load ptr, ptr %6, align 8, !tbaa !5
  %725 = getelementptr inbounds %struct.inflate_state, ptr %724, i32 0, i32 7
  store i64 %723, ptr %725, align 8, !tbaa !28
  br label %726

726:                                              ; preds = %717, %711, %705
  %727 = load i32, ptr %15, align 4, !tbaa !9
  %728 = load i32, ptr %9, align 4, !tbaa !9
  %729 = sub i32 %728, %727
  store i32 %729, ptr %9, align 4, !tbaa !9
  %730 = load i32, ptr %15, align 4, !tbaa !9
  %731 = load ptr, ptr %7, align 8, !tbaa !5
  %732 = zext i32 %730 to i64
  %733 = getelementptr inbounds i8, ptr %731, i64 %732
  store ptr %733, ptr %7, align 8, !tbaa !5
  %734 = load i32, ptr %15, align 4, !tbaa !9
  %735 = load ptr, ptr %6, align 8, !tbaa !5
  %736 = getelementptr inbounds %struct.inflate_state, ptr %735, i32 0, i32 17
  %737 = load i32, ptr %736, align 4, !tbaa !44
  %738 = sub i32 %737, %734
  store i32 %738, ptr %736, align 4, !tbaa !44
  br label %739

739:                                              ; preds = %726, %642
  %740 = load ptr, ptr %6, align 8, !tbaa !5
  %741 = getelementptr inbounds %struct.inflate_state, ptr %740, i32 0, i32 17
  %742 = load i32, ptr %741, align 4, !tbaa !44
  %743 = icmp ne i32 %742, 0
  br i1 %743, label %744, label %745

744:                                              ; preds = %739
  br label %2925

745:                                              ; preds = %739
  br label %746

746:                                              ; preds = %745, %627
  %747 = load ptr, ptr %6, align 8, !tbaa !5
  %748 = getelementptr inbounds %struct.inflate_state, ptr %747, i32 0, i32 17
  store i32 0, ptr %748, align 4, !tbaa !44
  %749 = load ptr, ptr %6, align 8, !tbaa !5
  %750 = getelementptr inbounds %struct.inflate_state, ptr %749, i32 0, i32 1
  store i32 16186, ptr %750, align 8, !tbaa !17
  br label %751

751:                                              ; preds = %746, %77
  %752 = load ptr, ptr %6, align 8, !tbaa !5
  %753 = getelementptr inbounds %struct.inflate_state, ptr %752, i32 0, i32 5
  %754 = load i32, ptr %753, align 8, !tbaa !34
  %755 = and i32 %754, 2048
  %756 = icmp ne i32 %755, 0
  br i1 %756, label %757, label %848

757:                                              ; preds = %751
  %758 = load i32, ptr %9, align 4, !tbaa !9
  %759 = icmp eq i32 %758, 0
  br i1 %759, label %760, label %761

760:                                              ; preds = %757
  br label %2925

761:                                              ; preds = %757
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %762

762:                                              ; preds = %813, %761
  %763 = load ptr, ptr %7, align 8, !tbaa !5
  %764 = load i32, ptr %15, align 4, !tbaa !9
  %765 = add i32 %764, 1
  store i32 %765, ptr %15, align 4, !tbaa !9
  %766 = zext i32 %764 to i64
  %767 = getelementptr inbounds i8, ptr %763, i64 %766
  %768 = load i8, ptr %767, align 1, !tbaa !24
  %769 = zext i8 %768 to i32
  store i32 %769, ptr %19, align 4, !tbaa !9
  %770 = load ptr, ptr %6, align 8, !tbaa !5
  %771 = getelementptr inbounds %struct.inflate_state, ptr %770, i32 0, i32 9
  %772 = load ptr, ptr %771, align 8, !tbaa !29
  %773 = icmp ne ptr %772, null
  br i1 %773, label %774, label %805

774:                                              ; preds = %762
  %775 = load ptr, ptr %6, align 8, !tbaa !5
  %776 = getelementptr inbounds %struct.inflate_state, ptr %775, i32 0, i32 9
  %777 = load ptr, ptr %776, align 8, !tbaa !29
  %778 = getelementptr inbounds %struct.gz_header_s, ptr %777, i32 0, i32 7
  %779 = load ptr, ptr %778, align 8, !tbaa !48
  %780 = icmp ne ptr %779, null
  br i1 %780, label %781, label %805

781:                                              ; preds = %774
  %782 = load ptr, ptr %6, align 8, !tbaa !5
  %783 = getelementptr inbounds %struct.inflate_state, ptr %782, i32 0, i32 17
  %784 = load i32, ptr %783, align 4, !tbaa !44
  %785 = load ptr, ptr %6, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.inflate_state, ptr %785, i32 0, i32 9
  %787 = load ptr, ptr %786, align 8, !tbaa !29
  %788 = getelementptr inbounds %struct.gz_header_s, ptr %787, i32 0, i32 8
  %789 = load i32, ptr %788, align 8, !tbaa !49
  %790 = icmp ult i32 %784, %789
  br i1 %790, label %791, label %805

791:                                              ; preds = %781
  %792 = load i32, ptr %19, align 4, !tbaa !9
  %793 = trunc i32 %792 to i8
  %794 = load ptr, ptr %6, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.inflate_state, ptr %794, i32 0, i32 9
  %796 = load ptr, ptr %795, align 8, !tbaa !29
  %797 = getelementptr inbounds %struct.gz_header_s, ptr %796, i32 0, i32 7
  %798 = load ptr, ptr %797, align 8, !tbaa !48
  %799 = load ptr, ptr %6, align 8, !tbaa !5
  %800 = getelementptr inbounds %struct.inflate_state, ptr %799, i32 0, i32 17
  %801 = load i32, ptr %800, align 4, !tbaa !44
  %802 = add i32 %801, 1
  store i32 %802, ptr %800, align 4, !tbaa !44
  %803 = zext i32 %801 to i64
  %804 = getelementptr inbounds i8, ptr %798, i64 %803
  store i8 %793, ptr %804, align 1, !tbaa !24
  br label %805

805:                                              ; preds = %791, %781, %774, %762
  br label %806

806:                                              ; preds = %805
  %807 = load i32, ptr %19, align 4, !tbaa !9
  %808 = icmp ne i32 %807, 0
  br i1 %808, label %809, label %813

809:                                              ; preds = %806
  %810 = load i32, ptr %15, align 4, !tbaa !9
  %811 = load i32, ptr %9, align 4, !tbaa !9
  %812 = icmp ult i32 %810, %811
  br label %813

813:                                              ; preds = %809, %806
  %814 = phi i1 [ false, %806 ], [ %812, %809 ]
  br i1 %814, label %762, label %815, !llvm.loop !50

815:                                              ; preds = %813
  %816 = load ptr, ptr %6, align 8, !tbaa !5
  %817 = getelementptr inbounds %struct.inflate_state, ptr %816, i32 0, i32 5
  %818 = load i32, ptr %817, align 8, !tbaa !34
  %819 = and i32 %818, 512
  %820 = icmp ne i32 %819, 0
  br i1 %820, label %821, label %836

821:                                              ; preds = %815
  %822 = load ptr, ptr %6, align 8, !tbaa !5
  %823 = getelementptr inbounds %struct.inflate_state, ptr %822, i32 0, i32 3
  %824 = load i32, ptr %823, align 8, !tbaa !23
  %825 = and i32 %824, 4
  %826 = icmp ne i32 %825, 0
  br i1 %826, label %827, label %836

827:                                              ; preds = %821
  %828 = load ptr, ptr %6, align 8, !tbaa !5
  %829 = getelementptr inbounds %struct.inflate_state, ptr %828, i32 0, i32 7
  %830 = load i64, ptr %829, align 8, !tbaa !28
  %831 = load ptr, ptr %7, align 8, !tbaa !5
  %832 = load i32, ptr %15, align 4, !tbaa !9
  %833 = call i64 @crc32(i64 noundef %830, ptr noundef %831, i32 noundef %832)
  %834 = load ptr, ptr %6, align 8, !tbaa !5
  %835 = getelementptr inbounds %struct.inflate_state, ptr %834, i32 0, i32 7
  store i64 %833, ptr %835, align 8, !tbaa !28
  br label %836

836:                                              ; preds = %827, %821, %815
  %837 = load i32, ptr %15, align 4, !tbaa !9
  %838 = load i32, ptr %9, align 4, !tbaa !9
  %839 = sub i32 %838, %837
  store i32 %839, ptr %9, align 4, !tbaa !9
  %840 = load i32, ptr %15, align 4, !tbaa !9
  %841 = load ptr, ptr %7, align 8, !tbaa !5
  %842 = zext i32 %840 to i64
  %843 = getelementptr inbounds i8, ptr %841, i64 %842
  store ptr %843, ptr %7, align 8, !tbaa !5
  %844 = load i32, ptr %19, align 4, !tbaa !9
  %845 = icmp ne i32 %844, 0
  br i1 %845, label %846, label %847

846:                                              ; preds = %836
  br label %2925

847:                                              ; preds = %836
  br label %859

848:                                              ; preds = %751
  %849 = load ptr, ptr %6, align 8, !tbaa !5
  %850 = getelementptr inbounds %struct.inflate_state, ptr %849, i32 0, i32 9
  %851 = load ptr, ptr %850, align 8, !tbaa !29
  %852 = icmp ne ptr %851, null
  br i1 %852, label %853, label %858

853:                                              ; preds = %848
  %854 = load ptr, ptr %6, align 8, !tbaa !5
  %855 = getelementptr inbounds %struct.inflate_state, ptr %854, i32 0, i32 9
  %856 = load ptr, ptr %855, align 8, !tbaa !29
  %857 = getelementptr inbounds %struct.gz_header_s, ptr %856, i32 0, i32 7
  store ptr null, ptr %857, align 8, !tbaa !48
  br label %858

858:                                              ; preds = %853, %848
  br label %859

859:                                              ; preds = %858, %847
  %860 = load ptr, ptr %6, align 8, !tbaa !5
  %861 = getelementptr inbounds %struct.inflate_state, ptr %860, i32 0, i32 17
  store i32 0, ptr %861, align 4, !tbaa !44
  %862 = load ptr, ptr %6, align 8, !tbaa !5
  %863 = getelementptr inbounds %struct.inflate_state, ptr %862, i32 0, i32 1
  store i32 16187, ptr %863, align 8, !tbaa !17
  br label %864

864:                                              ; preds = %859, %77
  %865 = load ptr, ptr %6, align 8, !tbaa !5
  %866 = getelementptr inbounds %struct.inflate_state, ptr %865, i32 0, i32 5
  %867 = load i32, ptr %866, align 8, !tbaa !34
  %868 = and i32 %867, 4096
  %869 = icmp ne i32 %868, 0
  br i1 %869, label %870, label %961

870:                                              ; preds = %864
  %871 = load i32, ptr %9, align 4, !tbaa !9
  %872 = icmp eq i32 %871, 0
  br i1 %872, label %873, label %874

873:                                              ; preds = %870
  br label %2925

874:                                              ; preds = %870
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %875

875:                                              ; preds = %926, %874
  %876 = load ptr, ptr %7, align 8, !tbaa !5
  %877 = load i32, ptr %15, align 4, !tbaa !9
  %878 = add i32 %877, 1
  store i32 %878, ptr %15, align 4, !tbaa !9
  %879 = zext i32 %877 to i64
  %880 = getelementptr inbounds i8, ptr %876, i64 %879
  %881 = load i8, ptr %880, align 1, !tbaa !24
  %882 = zext i8 %881 to i32
  store i32 %882, ptr %19, align 4, !tbaa !9
  %883 = load ptr, ptr %6, align 8, !tbaa !5
  %884 = getelementptr inbounds %struct.inflate_state, ptr %883, i32 0, i32 9
  %885 = load ptr, ptr %884, align 8, !tbaa !29
  %886 = icmp ne ptr %885, null
  br i1 %886, label %887, label %918

887:                                              ; preds = %875
  %888 = load ptr, ptr %6, align 8, !tbaa !5
  %889 = getelementptr inbounds %struct.inflate_state, ptr %888, i32 0, i32 9
  %890 = load ptr, ptr %889, align 8, !tbaa !29
  %891 = getelementptr inbounds %struct.gz_header_s, ptr %890, i32 0, i32 9
  %892 = load ptr, ptr %891, align 8, !tbaa !51
  %893 = icmp ne ptr %892, null
  br i1 %893, label %894, label %918

894:                                              ; preds = %887
  %895 = load ptr, ptr %6, align 8, !tbaa !5
  %896 = getelementptr inbounds %struct.inflate_state, ptr %895, i32 0, i32 17
  %897 = load i32, ptr %896, align 4, !tbaa !44
  %898 = load ptr, ptr %6, align 8, !tbaa !5
  %899 = getelementptr inbounds %struct.inflate_state, ptr %898, i32 0, i32 9
  %900 = load ptr, ptr %899, align 8, !tbaa !29
  %901 = getelementptr inbounds %struct.gz_header_s, ptr %900, i32 0, i32 10
  %902 = load i32, ptr %901, align 8, !tbaa !52
  %903 = icmp ult i32 %897, %902
  br i1 %903, label %904, label %918

904:                                              ; preds = %894
  %905 = load i32, ptr %19, align 4, !tbaa !9
  %906 = trunc i32 %905 to i8
  %907 = load ptr, ptr %6, align 8, !tbaa !5
  %908 = getelementptr inbounds %struct.inflate_state, ptr %907, i32 0, i32 9
  %909 = load ptr, ptr %908, align 8, !tbaa !29
  %910 = getelementptr inbounds %struct.gz_header_s, ptr %909, i32 0, i32 9
  %911 = load ptr, ptr %910, align 8, !tbaa !51
  %912 = load ptr, ptr %6, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.inflate_state, ptr %912, i32 0, i32 17
  %914 = load i32, ptr %913, align 4, !tbaa !44
  %915 = add i32 %914, 1
  store i32 %915, ptr %913, align 4, !tbaa !44
  %916 = zext i32 %914 to i64
  %917 = getelementptr inbounds i8, ptr %911, i64 %916
  store i8 %906, ptr %917, align 1, !tbaa !24
  br label %918

918:                                              ; preds = %904, %894, %887, %875
  br label %919

919:                                              ; preds = %918
  %920 = load i32, ptr %19, align 4, !tbaa !9
  %921 = icmp ne i32 %920, 0
  br i1 %921, label %922, label %926

922:                                              ; preds = %919
  %923 = load i32, ptr %15, align 4, !tbaa !9
  %924 = load i32, ptr %9, align 4, !tbaa !9
  %925 = icmp ult i32 %923, %924
  br label %926

926:                                              ; preds = %922, %919
  %927 = phi i1 [ false, %919 ], [ %925, %922 ]
  br i1 %927, label %875, label %928, !llvm.loop !53

928:                                              ; preds = %926
  %929 = load ptr, ptr %6, align 8, !tbaa !5
  %930 = getelementptr inbounds %struct.inflate_state, ptr %929, i32 0, i32 5
  %931 = load i32, ptr %930, align 8, !tbaa !34
  %932 = and i32 %931, 512
  %933 = icmp ne i32 %932, 0
  br i1 %933, label %934, label %949

934:                                              ; preds = %928
  %935 = load ptr, ptr %6, align 8, !tbaa !5
  %936 = getelementptr inbounds %struct.inflate_state, ptr %935, i32 0, i32 3
  %937 = load i32, ptr %936, align 8, !tbaa !23
  %938 = and i32 %937, 4
  %939 = icmp ne i32 %938, 0
  br i1 %939, label %940, label %949

940:                                              ; preds = %934
  %941 = load ptr, ptr %6, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.inflate_state, ptr %941, i32 0, i32 7
  %943 = load i64, ptr %942, align 8, !tbaa !28
  %944 = load ptr, ptr %7, align 8, !tbaa !5
  %945 = load i32, ptr %15, align 4, !tbaa !9
  %946 = call i64 @crc32(i64 noundef %943, ptr noundef %944, i32 noundef %945)
  %947 = load ptr, ptr %6, align 8, !tbaa !5
  %948 = getelementptr inbounds %struct.inflate_state, ptr %947, i32 0, i32 7
  store i64 %946, ptr %948, align 8, !tbaa !28
  br label %949

949:                                              ; preds = %940, %934, %928
  %950 = load i32, ptr %15, align 4, !tbaa !9
  %951 = load i32, ptr %9, align 4, !tbaa !9
  %952 = sub i32 %951, %950
  store i32 %952, ptr %9, align 4, !tbaa !9
  %953 = load i32, ptr %15, align 4, !tbaa !9
  %954 = load ptr, ptr %7, align 8, !tbaa !5
  %955 = zext i32 %953 to i64
  %956 = getelementptr inbounds i8, ptr %954, i64 %955
  store ptr %956, ptr %7, align 8, !tbaa !5
  %957 = load i32, ptr %19, align 4, !tbaa !9
  %958 = icmp ne i32 %957, 0
  br i1 %958, label %959, label %960

959:                                              ; preds = %949
  br label %2925

960:                                              ; preds = %949
  br label %972

961:                                              ; preds = %864
  %962 = load ptr, ptr %6, align 8, !tbaa !5
  %963 = getelementptr inbounds %struct.inflate_state, ptr %962, i32 0, i32 9
  %964 = load ptr, ptr %963, align 8, !tbaa !29
  %965 = icmp ne ptr %964, null
  br i1 %965, label %966, label %971

966:                                              ; preds = %961
  %967 = load ptr, ptr %6, align 8, !tbaa !5
  %968 = getelementptr inbounds %struct.inflate_state, ptr %967, i32 0, i32 9
  %969 = load ptr, ptr %968, align 8, !tbaa !29
  %970 = getelementptr inbounds %struct.gz_header_s, ptr %969, i32 0, i32 9
  store ptr null, ptr %970, align 8, !tbaa !51
  br label %971

971:                                              ; preds = %966, %961
  br label %972

972:                                              ; preds = %971, %960
  %973 = load ptr, ptr %6, align 8, !tbaa !5
  %974 = getelementptr inbounds %struct.inflate_state, ptr %973, i32 0, i32 1
  store i32 16188, ptr %974, align 8, !tbaa !17
  br label %975

975:                                              ; preds = %972, %77
  %976 = load ptr, ptr %6, align 8, !tbaa !5
  %977 = getelementptr inbounds %struct.inflate_state, ptr %976, i32 0, i32 5
  %978 = load i32, ptr %977, align 8, !tbaa !34
  %979 = and i32 %978, 512
  %980 = icmp ne i32 %979, 0
  br i1 %980, label %981, label %1031

981:                                              ; preds = %975
  br label %982

982:                                              ; preds = %981
  br label %983

983:                                              ; preds = %1006, %982
  %984 = load i32, ptr %12, align 4, !tbaa !9
  %985 = icmp ult i32 %984, 16
  br i1 %985, label %986, label %1007

986:                                              ; preds = %983
  br label %987

987:                                              ; preds = %986
  %988 = load i32, ptr %9, align 4, !tbaa !9
  %989 = icmp eq i32 %988, 0
  br i1 %989, label %990, label %991

990:                                              ; preds = %987
  br label %2925

991:                                              ; preds = %987
  %992 = load i32, ptr %9, align 4, !tbaa !9
  %993 = add i32 %992, -1
  store i32 %993, ptr %9, align 4, !tbaa !9
  %994 = load ptr, ptr %7, align 8, !tbaa !5
  %995 = getelementptr inbounds i8, ptr %994, i32 1
  store ptr %995, ptr %7, align 8, !tbaa !5
  %996 = load i8, ptr %994, align 1, !tbaa !24
  %997 = zext i8 %996 to i64
  %998 = load i32, ptr %12, align 4, !tbaa !9
  %999 = zext i32 %998 to i64
  %1000 = shl i64 %997, %999
  %1001 = load i64, ptr %11, align 8, !tbaa !21
  %1002 = add i64 %1001, %1000
  store i64 %1002, ptr %11, align 8, !tbaa !21
  %1003 = load i32, ptr %12, align 4, !tbaa !9
  %1004 = add i32 %1003, 8
  store i32 %1004, ptr %12, align 4, !tbaa !9
  br label %1005

1005:                                             ; preds = %991
  br label %1006

1006:                                             ; preds = %1005
  br label %983, !llvm.loop !54

1007:                                             ; preds = %983
  br label %1008

1008:                                             ; preds = %1007
  br label %1009

1009:                                             ; preds = %1008
  %1010 = load ptr, ptr %6, align 8, !tbaa !5
  %1011 = getelementptr inbounds %struct.inflate_state, ptr %1010, i32 0, i32 3
  %1012 = load i32, ptr %1011, align 8, !tbaa !23
  %1013 = and i32 %1012, 4
  %1014 = icmp ne i32 %1013, 0
  br i1 %1014, label %1015, label %1027

1015:                                             ; preds = %1009
  %1016 = load i64, ptr %11, align 8, !tbaa !21
  %1017 = load ptr, ptr %6, align 8, !tbaa !5
  %1018 = getelementptr inbounds %struct.inflate_state, ptr %1017, i32 0, i32 7
  %1019 = load i64, ptr %1018, align 8, !tbaa !28
  %1020 = and i64 %1019, 65535
  %1021 = icmp ne i64 %1016, %1020
  br i1 %1021, label %1022, label %1027

1022:                                             ; preds = %1015
  %1023 = load ptr, ptr %4, align 8, !tbaa !5
  %1024 = getelementptr inbounds %struct.z_stream_s, ptr %1023, i32 0, i32 6
  store ptr @.str.5, ptr %1024, align 8, !tbaa !32
  %1025 = load ptr, ptr %6, align 8, !tbaa !5
  %1026 = getelementptr inbounds %struct.inflate_state, ptr %1025, i32 0, i32 1
  store i32 16209, ptr %1026, align 8, !tbaa !17
  br label %2924

1027:                                             ; preds = %1015, %1009
  br label %1028

1028:                                             ; preds = %1027
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %1029

1029:                                             ; preds = %1028
  br label %1030

1030:                                             ; preds = %1029
  br label %1031

1031:                                             ; preds = %1030, %975
  %1032 = load ptr, ptr %6, align 8, !tbaa !5
  %1033 = getelementptr inbounds %struct.inflate_state, ptr %1032, i32 0, i32 9
  %1034 = load ptr, ptr %1033, align 8, !tbaa !29
  %1035 = icmp ne ptr %1034, null
  br i1 %1035, label %1036, label %1050

1036:                                             ; preds = %1031
  %1037 = load ptr, ptr %6, align 8, !tbaa !5
  %1038 = getelementptr inbounds %struct.inflate_state, ptr %1037, i32 0, i32 5
  %1039 = load i32, ptr %1038, align 8, !tbaa !34
  %1040 = ashr i32 %1039, 9
  %1041 = and i32 %1040, 1
  %1042 = load ptr, ptr %6, align 8, !tbaa !5
  %1043 = getelementptr inbounds %struct.inflate_state, ptr %1042, i32 0, i32 9
  %1044 = load ptr, ptr %1043, align 8, !tbaa !29
  %1045 = getelementptr inbounds %struct.gz_header_s, ptr %1044, i32 0, i32 11
  store i32 %1041, ptr %1045, align 4, !tbaa !55
  %1046 = load ptr, ptr %6, align 8, !tbaa !5
  %1047 = getelementptr inbounds %struct.inflate_state, ptr %1046, i32 0, i32 9
  %1048 = load ptr, ptr %1047, align 8, !tbaa !29
  %1049 = getelementptr inbounds %struct.gz_header_s, ptr %1048, i32 0, i32 12
  store i32 1, ptr %1049, align 8, !tbaa !30
  br label %1050

1050:                                             ; preds = %1036, %1031
  %1051 = call i64 @crc32(i64 noundef 0, ptr noundef null, i32 noundef 0)
  %1052 = load ptr, ptr %6, align 8, !tbaa !5
  %1053 = getelementptr inbounds %struct.inflate_state, ptr %1052, i32 0, i32 7
  store i64 %1051, ptr %1053, align 8, !tbaa !28
  %1054 = load ptr, ptr %4, align 8, !tbaa !5
  %1055 = getelementptr inbounds %struct.z_stream_s, ptr %1054, i32 0, i32 12
  store i64 %1051, ptr %1055, align 8, !tbaa !35
  %1056 = load ptr, ptr %6, align 8, !tbaa !5
  %1057 = getelementptr inbounds %struct.inflate_state, ptr %1056, i32 0, i32 1
  store i32 16191, ptr %1057, align 8, !tbaa !17
  br label %2924

1058:                                             ; preds = %77
  br label %1059

1059:                                             ; preds = %1058
  br label %1060

1060:                                             ; preds = %1083, %1059
  %1061 = load i32, ptr %12, align 4, !tbaa !9
  %1062 = icmp ult i32 %1061, 32
  br i1 %1062, label %1063, label %1084

1063:                                             ; preds = %1060
  br label %1064

1064:                                             ; preds = %1063
  %1065 = load i32, ptr %9, align 4, !tbaa !9
  %1066 = icmp eq i32 %1065, 0
  br i1 %1066, label %1067, label %1068

1067:                                             ; preds = %1064
  br label %2925

1068:                                             ; preds = %1064
  %1069 = load i32, ptr %9, align 4, !tbaa !9
  %1070 = add i32 %1069, -1
  store i32 %1070, ptr %9, align 4, !tbaa !9
  %1071 = load ptr, ptr %7, align 8, !tbaa !5
  %1072 = getelementptr inbounds i8, ptr %1071, i32 1
  store ptr %1072, ptr %7, align 8, !tbaa !5
  %1073 = load i8, ptr %1071, align 1, !tbaa !24
  %1074 = zext i8 %1073 to i64
  %1075 = load i32, ptr %12, align 4, !tbaa !9
  %1076 = zext i32 %1075 to i64
  %1077 = shl i64 %1074, %1076
  %1078 = load i64, ptr %11, align 8, !tbaa !21
  %1079 = add i64 %1078, %1077
  store i64 %1079, ptr %11, align 8, !tbaa !21
  %1080 = load i32, ptr %12, align 4, !tbaa !9
  %1081 = add i32 %1080, 8
  store i32 %1081, ptr %12, align 4, !tbaa !9
  br label %1082

1082:                                             ; preds = %1068
  br label %1083

1083:                                             ; preds = %1082
  br label %1060, !llvm.loop !56

1084:                                             ; preds = %1060
  br label %1085

1085:                                             ; preds = %1084
  br label %1086

1086:                                             ; preds = %1085
  %1087 = load i64, ptr %11, align 8, !tbaa !21
  %1088 = lshr i64 %1087, 24
  %1089 = and i64 %1088, 255
  %1090 = load i64, ptr %11, align 8, !tbaa !21
  %1091 = lshr i64 %1090, 8
  %1092 = and i64 %1091, 65280
  %1093 = add i64 %1089, %1092
  %1094 = load i64, ptr %11, align 8, !tbaa !21
  %1095 = and i64 %1094, 65280
  %1096 = shl i64 %1095, 8
  %1097 = add i64 %1093, %1096
  %1098 = load i64, ptr %11, align 8, !tbaa !21
  %1099 = and i64 %1098, 255
  %1100 = shl i64 %1099, 24
  %1101 = add i64 %1097, %1100
  %1102 = load ptr, ptr %6, align 8, !tbaa !5
  %1103 = getelementptr inbounds %struct.inflate_state, ptr %1102, i32 0, i32 7
  store i64 %1101, ptr %1103, align 8, !tbaa !28
  %1104 = load ptr, ptr %4, align 8, !tbaa !5
  %1105 = getelementptr inbounds %struct.z_stream_s, ptr %1104, i32 0, i32 12
  store i64 %1101, ptr %1105, align 8, !tbaa !35
  br label %1106

1106:                                             ; preds = %1086
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %1107

1107:                                             ; preds = %1106
  br label %1108

1108:                                             ; preds = %1107
  %1109 = load ptr, ptr %6, align 8, !tbaa !5
  %1110 = getelementptr inbounds %struct.inflate_state, ptr %1109, i32 0, i32 1
  store i32 16190, ptr %1110, align 8, !tbaa !17
  br label %1111

1111:                                             ; preds = %1108, %77
  %1112 = load ptr, ptr %6, align 8, !tbaa !5
  %1113 = getelementptr inbounds %struct.inflate_state, ptr %1112, i32 0, i32 4
  %1114 = load i32, ptr %1113, align 4, !tbaa !57
  %1115 = icmp eq i32 %1114, 0
  br i1 %1115, label %1116, label %1138

1116:                                             ; preds = %1111
  br label %1117

1117:                                             ; preds = %1116
  %1118 = load ptr, ptr %8, align 8, !tbaa !5
  %1119 = load ptr, ptr %4, align 8, !tbaa !5
  %1120 = getelementptr inbounds %struct.z_stream_s, ptr %1119, i32 0, i32 3
  store ptr %1118, ptr %1120, align 8, !tbaa !11
  %1121 = load i32, ptr %10, align 4, !tbaa !9
  %1122 = load ptr, ptr %4, align 8, !tbaa !5
  %1123 = getelementptr inbounds %struct.z_stream_s, ptr %1122, i32 0, i32 4
  store i32 %1121, ptr %1123, align 8, !tbaa !19
  %1124 = load ptr, ptr %7, align 8, !tbaa !5
  %1125 = load ptr, ptr %4, align 8, !tbaa !5
  %1126 = getelementptr inbounds %struct.z_stream_s, ptr %1125, i32 0, i32 0
  store ptr %1124, ptr %1126, align 8, !tbaa !14
  %1127 = load i32, ptr %9, align 4, !tbaa !9
  %1128 = load ptr, ptr %4, align 8, !tbaa !5
  %1129 = getelementptr inbounds %struct.z_stream_s, ptr %1128, i32 0, i32 1
  store i32 %1127, ptr %1129, align 8, !tbaa !15
  %1130 = load i64, ptr %11, align 8, !tbaa !21
  %1131 = load ptr, ptr %6, align 8, !tbaa !5
  %1132 = getelementptr inbounds %struct.inflate_state, ptr %1131, i32 0, i32 15
  store i64 %1130, ptr %1132, align 8, !tbaa !20
  %1133 = load i32, ptr %12, align 4, !tbaa !9
  %1134 = load ptr, ptr %6, align 8, !tbaa !5
  %1135 = getelementptr inbounds %struct.inflate_state, ptr %1134, i32 0, i32 16
  store i32 %1133, ptr %1135, align 8, !tbaa !22
  br label %1136

1136:                                             ; preds = %1117
  br label %1137

1137:                                             ; preds = %1136
  store i32 2, ptr %3, align 4
  store i32 1, ptr %22, align 4
  br label %3108

1138:                                             ; preds = %1111
  %1139 = call i64 @adler32(i64 noundef 0, ptr noundef null, i32 noundef 0)
  %1140 = load ptr, ptr %6, align 8, !tbaa !5
  %1141 = getelementptr inbounds %struct.inflate_state, ptr %1140, i32 0, i32 7
  store i64 %1139, ptr %1141, align 8, !tbaa !28
  %1142 = load ptr, ptr %4, align 8, !tbaa !5
  %1143 = getelementptr inbounds %struct.z_stream_s, ptr %1142, i32 0, i32 12
  store i64 %1139, ptr %1143, align 8, !tbaa !35
  %1144 = load ptr, ptr %6, align 8, !tbaa !5
  %1145 = getelementptr inbounds %struct.inflate_state, ptr %1144, i32 0, i32 1
  store i32 16191, ptr %1145, align 8, !tbaa !17
  br label %1146

1146:                                             ; preds = %1138, %77
  %1147 = load i32, ptr %5, align 4, !tbaa !9
  %1148 = icmp eq i32 %1147, 5
  br i1 %1148, label %1152, label %1149

1149:                                             ; preds = %1146
  %1150 = load i32, ptr %5, align 4, !tbaa !9
  %1151 = icmp eq i32 %1150, 6
  br i1 %1151, label %1152, label %1153

1152:                                             ; preds = %1149, %1146
  br label %2925

1153:                                             ; preds = %1149
  br label %1154

1154:                                             ; preds = %1153, %77
  %1155 = load ptr, ptr %6, align 8, !tbaa !5
  %1156 = getelementptr inbounds %struct.inflate_state, ptr %1155, i32 0, i32 2
  %1157 = load i32, ptr %1156, align 4, !tbaa !58
  %1158 = icmp ne i32 %1157, 0
  br i1 %1158, label %1159, label %1174

1159:                                             ; preds = %1154
  br label %1160

1160:                                             ; preds = %1159
  %1161 = load i32, ptr %12, align 4, !tbaa !9
  %1162 = and i32 %1161, 7
  %1163 = load i64, ptr %11, align 8, !tbaa !21
  %1164 = zext i32 %1162 to i64
  %1165 = lshr i64 %1163, %1164
  store i64 %1165, ptr %11, align 8, !tbaa !21
  %1166 = load i32, ptr %12, align 4, !tbaa !9
  %1167 = and i32 %1166, 7
  %1168 = load i32, ptr %12, align 4, !tbaa !9
  %1169 = sub i32 %1168, %1167
  store i32 %1169, ptr %12, align 4, !tbaa !9
  br label %1170

1170:                                             ; preds = %1160
  br label %1171

1171:                                             ; preds = %1170
  %1172 = load ptr, ptr %6, align 8, !tbaa !5
  %1173 = getelementptr inbounds %struct.inflate_state, ptr %1172, i32 0, i32 1
  store i32 16206, ptr %1173, align 8, !tbaa !17
  br label %2924

1174:                                             ; preds = %1154
  br label %1175

1175:                                             ; preds = %1174
  br label %1176

1176:                                             ; preds = %1199, %1175
  %1177 = load i32, ptr %12, align 4, !tbaa !9
  %1178 = icmp ult i32 %1177, 3
  br i1 %1178, label %1179, label %1200

1179:                                             ; preds = %1176
  br label %1180

1180:                                             ; preds = %1179
  %1181 = load i32, ptr %9, align 4, !tbaa !9
  %1182 = icmp eq i32 %1181, 0
  br i1 %1182, label %1183, label %1184

1183:                                             ; preds = %1180
  br label %2925

1184:                                             ; preds = %1180
  %1185 = load i32, ptr %9, align 4, !tbaa !9
  %1186 = add i32 %1185, -1
  store i32 %1186, ptr %9, align 4, !tbaa !9
  %1187 = load ptr, ptr %7, align 8, !tbaa !5
  %1188 = getelementptr inbounds i8, ptr %1187, i32 1
  store ptr %1188, ptr %7, align 8, !tbaa !5
  %1189 = load i8, ptr %1187, align 1, !tbaa !24
  %1190 = zext i8 %1189 to i64
  %1191 = load i32, ptr %12, align 4, !tbaa !9
  %1192 = zext i32 %1191 to i64
  %1193 = shl i64 %1190, %1192
  %1194 = load i64, ptr %11, align 8, !tbaa !21
  %1195 = add i64 %1194, %1193
  store i64 %1195, ptr %11, align 8, !tbaa !21
  %1196 = load i32, ptr %12, align 4, !tbaa !9
  %1197 = add i32 %1196, 8
  store i32 %1197, ptr %12, align 4, !tbaa !9
  br label %1198

1198:                                             ; preds = %1184
  br label %1199

1199:                                             ; preds = %1198
  br label %1176, !llvm.loop !59

1200:                                             ; preds = %1176
  br label %1201

1201:                                             ; preds = %1200
  br label %1202

1202:                                             ; preds = %1201
  %1203 = load i64, ptr %11, align 8, !tbaa !21
  %1204 = trunc i64 %1203 to i32
  %1205 = and i32 %1204, 1
  %1206 = load ptr, ptr %6, align 8, !tbaa !5
  %1207 = getelementptr inbounds %struct.inflate_state, ptr %1206, i32 0, i32 2
  store i32 %1205, ptr %1207, align 4, !tbaa !58
  br label %1208

1208:                                             ; preds = %1202
  %1209 = load i64, ptr %11, align 8, !tbaa !21
  %1210 = lshr i64 %1209, 1
  store i64 %1210, ptr %11, align 8, !tbaa !21
  %1211 = load i32, ptr %12, align 4, !tbaa !9
  %1212 = sub i32 %1211, 1
  store i32 %1212, ptr %12, align 4, !tbaa !9
  br label %1213

1213:                                             ; preds = %1208
  br label %1214

1214:                                             ; preds = %1213
  %1215 = load i64, ptr %11, align 8, !tbaa !21
  %1216 = trunc i64 %1215 to i32
  %1217 = and i32 %1216, 3
  switch i32 %1217, label %1244 [
    i32 0, label %1218
    i32 1, label %1221
    i32 2, label %1236
    i32 3, label %1239
  ]

1218:                                             ; preds = %1214
  %1219 = load ptr, ptr %6, align 8, !tbaa !5
  %1220 = getelementptr inbounds %struct.inflate_state, ptr %1219, i32 0, i32 1
  store i32 16193, ptr %1220, align 8, !tbaa !17
  br label %1244

1221:                                             ; preds = %1214
  %1222 = load ptr, ptr %6, align 8, !tbaa !5
  call void @fixedtables(ptr noundef %1222)
  %1223 = load ptr, ptr %6, align 8, !tbaa !5
  %1224 = getelementptr inbounds %struct.inflate_state, ptr %1223, i32 0, i32 1
  store i32 16199, ptr %1224, align 8, !tbaa !17
  %1225 = load i32, ptr %5, align 4, !tbaa !9
  %1226 = icmp eq i32 %1225, 6
  br i1 %1226, label %1227, label %1235

1227:                                             ; preds = %1221
  br label %1228

1228:                                             ; preds = %1227
  %1229 = load i64, ptr %11, align 8, !tbaa !21
  %1230 = lshr i64 %1229, 2
  store i64 %1230, ptr %11, align 8, !tbaa !21
  %1231 = load i32, ptr %12, align 4, !tbaa !9
  %1232 = sub i32 %1231, 2
  store i32 %1232, ptr %12, align 4, !tbaa !9
  br label %1233

1233:                                             ; preds = %1228
  br label %1234

1234:                                             ; preds = %1233
  br label %2925

1235:                                             ; preds = %1221
  br label %1244

1236:                                             ; preds = %1214
  %1237 = load ptr, ptr %6, align 8, !tbaa !5
  %1238 = getelementptr inbounds %struct.inflate_state, ptr %1237, i32 0, i32 1
  store i32 16196, ptr %1238, align 8, !tbaa !17
  br label %1244

1239:                                             ; preds = %1214
  %1240 = load ptr, ptr %4, align 8, !tbaa !5
  %1241 = getelementptr inbounds %struct.z_stream_s, ptr %1240, i32 0, i32 6
  store ptr @.str.6, ptr %1241, align 8, !tbaa !32
  %1242 = load ptr, ptr %6, align 8, !tbaa !5
  %1243 = getelementptr inbounds %struct.inflate_state, ptr %1242, i32 0, i32 1
  store i32 16209, ptr %1243, align 8, !tbaa !17
  br label %1244

1244:                                             ; preds = %1239, %1236, %1235, %1218, %1214
  br label %1245

1245:                                             ; preds = %1244
  %1246 = load i64, ptr %11, align 8, !tbaa !21
  %1247 = lshr i64 %1246, 2
  store i64 %1247, ptr %11, align 8, !tbaa !21
  %1248 = load i32, ptr %12, align 4, !tbaa !9
  %1249 = sub i32 %1248, 2
  store i32 %1249, ptr %12, align 4, !tbaa !9
  br label %1250

1250:                                             ; preds = %1245
  br label %1251

1251:                                             ; preds = %1250
  br label %2924

1252:                                             ; preds = %77
  br label %1253

1253:                                             ; preds = %1252
  %1254 = load i32, ptr %12, align 4, !tbaa !9
  %1255 = and i32 %1254, 7
  %1256 = load i64, ptr %11, align 8, !tbaa !21
  %1257 = zext i32 %1255 to i64
  %1258 = lshr i64 %1256, %1257
  store i64 %1258, ptr %11, align 8, !tbaa !21
  %1259 = load i32, ptr %12, align 4, !tbaa !9
  %1260 = and i32 %1259, 7
  %1261 = load i32, ptr %12, align 4, !tbaa !9
  %1262 = sub i32 %1261, %1260
  store i32 %1262, ptr %12, align 4, !tbaa !9
  br label %1263

1263:                                             ; preds = %1253
  br label %1264

1264:                                             ; preds = %1263
  br label %1265

1265:                                             ; preds = %1264
  br label %1266

1266:                                             ; preds = %1289, %1265
  %1267 = load i32, ptr %12, align 4, !tbaa !9
  %1268 = icmp ult i32 %1267, 32
  br i1 %1268, label %1269, label %1290

1269:                                             ; preds = %1266
  br label %1270

1270:                                             ; preds = %1269
  %1271 = load i32, ptr %9, align 4, !tbaa !9
  %1272 = icmp eq i32 %1271, 0
  br i1 %1272, label %1273, label %1274

1273:                                             ; preds = %1270
  br label %2925

1274:                                             ; preds = %1270
  %1275 = load i32, ptr %9, align 4, !tbaa !9
  %1276 = add i32 %1275, -1
  store i32 %1276, ptr %9, align 4, !tbaa !9
  %1277 = load ptr, ptr %7, align 8, !tbaa !5
  %1278 = getelementptr inbounds i8, ptr %1277, i32 1
  store ptr %1278, ptr %7, align 8, !tbaa !5
  %1279 = load i8, ptr %1277, align 1, !tbaa !24
  %1280 = zext i8 %1279 to i64
  %1281 = load i32, ptr %12, align 4, !tbaa !9
  %1282 = zext i32 %1281 to i64
  %1283 = shl i64 %1280, %1282
  %1284 = load i64, ptr %11, align 8, !tbaa !21
  %1285 = add i64 %1284, %1283
  store i64 %1285, ptr %11, align 8, !tbaa !21
  %1286 = load i32, ptr %12, align 4, !tbaa !9
  %1287 = add i32 %1286, 8
  store i32 %1287, ptr %12, align 4, !tbaa !9
  br label %1288

1288:                                             ; preds = %1274
  br label %1289

1289:                                             ; preds = %1288
  br label %1266, !llvm.loop !60

1290:                                             ; preds = %1266
  br label %1291

1291:                                             ; preds = %1290
  br label %1292

1292:                                             ; preds = %1291
  %1293 = load i64, ptr %11, align 8, !tbaa !21
  %1294 = and i64 %1293, 65535
  %1295 = load i64, ptr %11, align 8, !tbaa !21
  %1296 = lshr i64 %1295, 16
  %1297 = xor i64 %1296, 65535
  %1298 = icmp ne i64 %1294, %1297
  br i1 %1298, label %1299, label %1304

1299:                                             ; preds = %1292
  %1300 = load ptr, ptr %4, align 8, !tbaa !5
  %1301 = getelementptr inbounds %struct.z_stream_s, ptr %1300, i32 0, i32 6
  store ptr @.str.7, ptr %1301, align 8, !tbaa !32
  %1302 = load ptr, ptr %6, align 8, !tbaa !5
  %1303 = getelementptr inbounds %struct.inflate_state, ptr %1302, i32 0, i32 1
  store i32 16209, ptr %1303, align 8, !tbaa !17
  br label %2924

1304:                                             ; preds = %1292
  %1305 = load i64, ptr %11, align 8, !tbaa !21
  %1306 = trunc i64 %1305 to i32
  %1307 = and i32 %1306, 65535
  %1308 = load ptr, ptr %6, align 8, !tbaa !5
  %1309 = getelementptr inbounds %struct.inflate_state, ptr %1308, i32 0, i32 17
  store i32 %1307, ptr %1309, align 4, !tbaa !44
  br label %1310

1310:                                             ; preds = %1304
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %1311

1311:                                             ; preds = %1310
  br label %1312

1312:                                             ; preds = %1311
  %1313 = load ptr, ptr %6, align 8, !tbaa !5
  %1314 = getelementptr inbounds %struct.inflate_state, ptr %1313, i32 0, i32 1
  store i32 16194, ptr %1314, align 8, !tbaa !17
  %1315 = load i32, ptr %5, align 4, !tbaa !9
  %1316 = icmp eq i32 %1315, 6
  br i1 %1316, label %1317, label %1318

1317:                                             ; preds = %1312
  br label %2925

1318:                                             ; preds = %1312
  br label %1319

1319:                                             ; preds = %1318, %77
  %1320 = load ptr, ptr %6, align 8, !tbaa !5
  %1321 = getelementptr inbounds %struct.inflate_state, ptr %1320, i32 0, i32 1
  store i32 16195, ptr %1321, align 8, !tbaa !17
  br label %1322

1322:                                             ; preds = %1319, %77
  %1323 = load ptr, ptr %6, align 8, !tbaa !5
  %1324 = getelementptr inbounds %struct.inflate_state, ptr %1323, i32 0, i32 17
  %1325 = load i32, ptr %1324, align 4, !tbaa !44
  store i32 %1325, ptr %15, align 4, !tbaa !9
  %1326 = load i32, ptr %15, align 4, !tbaa !9
  %1327 = icmp ne i32 %1326, 0
  br i1 %1327, label %1328, label %1368

1328:                                             ; preds = %1322
  %1329 = load i32, ptr %15, align 4, !tbaa !9
  %1330 = load i32, ptr %9, align 4, !tbaa !9
  %1331 = icmp ugt i32 %1329, %1330
  br i1 %1331, label %1332, label %1334

1332:                                             ; preds = %1328
  %1333 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %1333, ptr %15, align 4, !tbaa !9
  br label %1334

1334:                                             ; preds = %1332, %1328
  %1335 = load i32, ptr %15, align 4, !tbaa !9
  %1336 = load i32, ptr %10, align 4, !tbaa !9
  %1337 = icmp ugt i32 %1335, %1336
  br i1 %1337, label %1338, label %1340

1338:                                             ; preds = %1334
  %1339 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1339, ptr %15, align 4, !tbaa !9
  br label %1340

1340:                                             ; preds = %1338, %1334
  %1341 = load i32, ptr %15, align 4, !tbaa !9
  %1342 = icmp eq i32 %1341, 0
  br i1 %1342, label %1343, label %1344

1343:                                             ; preds = %1340
  br label %2925

1344:                                             ; preds = %1340
  %1345 = load ptr, ptr %8, align 8, !tbaa !5
  %1346 = load ptr, ptr %7, align 8, !tbaa !5
  %1347 = load i32, ptr %15, align 4, !tbaa !9
  %1348 = zext i32 %1347 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %1345, ptr align 1 %1346, i64 %1348, i1 false)
  %1349 = load i32, ptr %15, align 4, !tbaa !9
  %1350 = load i32, ptr %9, align 4, !tbaa !9
  %1351 = sub i32 %1350, %1349
  store i32 %1351, ptr %9, align 4, !tbaa !9
  %1352 = load i32, ptr %15, align 4, !tbaa !9
  %1353 = load ptr, ptr %7, align 8, !tbaa !5
  %1354 = zext i32 %1352 to i64
  %1355 = getelementptr inbounds i8, ptr %1353, i64 %1354
  store ptr %1355, ptr %7, align 8, !tbaa !5
  %1356 = load i32, ptr %15, align 4, !tbaa !9
  %1357 = load i32, ptr %10, align 4, !tbaa !9
  %1358 = sub i32 %1357, %1356
  store i32 %1358, ptr %10, align 4, !tbaa !9
  %1359 = load i32, ptr %15, align 4, !tbaa !9
  %1360 = load ptr, ptr %8, align 8, !tbaa !5
  %1361 = zext i32 %1359 to i64
  %1362 = getelementptr inbounds i8, ptr %1360, i64 %1361
  store ptr %1362, ptr %8, align 8, !tbaa !5
  %1363 = load i32, ptr %15, align 4, !tbaa !9
  %1364 = load ptr, ptr %6, align 8, !tbaa !5
  %1365 = getelementptr inbounds %struct.inflate_state, ptr %1364, i32 0, i32 17
  %1366 = load i32, ptr %1365, align 4, !tbaa !44
  %1367 = sub i32 %1366, %1363
  store i32 %1367, ptr %1365, align 4, !tbaa !44
  br label %2924

1368:                                             ; preds = %1322
  %1369 = load ptr, ptr %6, align 8, !tbaa !5
  %1370 = getelementptr inbounds %struct.inflate_state, ptr %1369, i32 0, i32 1
  store i32 16191, ptr %1370, align 8, !tbaa !17
  br label %2924

1371:                                             ; preds = %77
  br label %1372

1372:                                             ; preds = %1371
  br label %1373

1373:                                             ; preds = %1396, %1372
  %1374 = load i32, ptr %12, align 4, !tbaa !9
  %1375 = icmp ult i32 %1374, 14
  br i1 %1375, label %1376, label %1397

1376:                                             ; preds = %1373
  br label %1377

1377:                                             ; preds = %1376
  %1378 = load i32, ptr %9, align 4, !tbaa !9
  %1379 = icmp eq i32 %1378, 0
  br i1 %1379, label %1380, label %1381

1380:                                             ; preds = %1377
  br label %2925

1381:                                             ; preds = %1377
  %1382 = load i32, ptr %9, align 4, !tbaa !9
  %1383 = add i32 %1382, -1
  store i32 %1383, ptr %9, align 4, !tbaa !9
  %1384 = load ptr, ptr %7, align 8, !tbaa !5
  %1385 = getelementptr inbounds i8, ptr %1384, i32 1
  store ptr %1385, ptr %7, align 8, !tbaa !5
  %1386 = load i8, ptr %1384, align 1, !tbaa !24
  %1387 = zext i8 %1386 to i64
  %1388 = load i32, ptr %12, align 4, !tbaa !9
  %1389 = zext i32 %1388 to i64
  %1390 = shl i64 %1387, %1389
  %1391 = load i64, ptr %11, align 8, !tbaa !21
  %1392 = add i64 %1391, %1390
  store i64 %1392, ptr %11, align 8, !tbaa !21
  %1393 = load i32, ptr %12, align 4, !tbaa !9
  %1394 = add i32 %1393, 8
  store i32 %1394, ptr %12, align 4, !tbaa !9
  br label %1395

1395:                                             ; preds = %1381
  br label %1396

1396:                                             ; preds = %1395
  br label %1373, !llvm.loop !61

1397:                                             ; preds = %1373
  br label %1398

1398:                                             ; preds = %1397
  br label %1399

1399:                                             ; preds = %1398
  %1400 = load i64, ptr %11, align 8, !tbaa !21
  %1401 = trunc i64 %1400 to i32
  %1402 = and i32 %1401, 31
  %1403 = add i32 %1402, 257
  %1404 = load ptr, ptr %6, align 8, !tbaa !5
  %1405 = getelementptr inbounds %struct.inflate_state, ptr %1404, i32 0, i32 25
  store i32 %1403, ptr %1405, align 4, !tbaa !62
  br label %1406

1406:                                             ; preds = %1399
  %1407 = load i64, ptr %11, align 8, !tbaa !21
  %1408 = lshr i64 %1407, 5
  store i64 %1408, ptr %11, align 8, !tbaa !21
  %1409 = load i32, ptr %12, align 4, !tbaa !9
  %1410 = sub i32 %1409, 5
  store i32 %1410, ptr %12, align 4, !tbaa !9
  br label %1411

1411:                                             ; preds = %1406
  br label %1412

1412:                                             ; preds = %1411
  %1413 = load i64, ptr %11, align 8, !tbaa !21
  %1414 = trunc i64 %1413 to i32
  %1415 = and i32 %1414, 31
  %1416 = add i32 %1415, 1
  %1417 = load ptr, ptr %6, align 8, !tbaa !5
  %1418 = getelementptr inbounds %struct.inflate_state, ptr %1417, i32 0, i32 26
  store i32 %1416, ptr %1418, align 8, !tbaa !63
  br label %1419

1419:                                             ; preds = %1412
  %1420 = load i64, ptr %11, align 8, !tbaa !21
  %1421 = lshr i64 %1420, 5
  store i64 %1421, ptr %11, align 8, !tbaa !21
  %1422 = load i32, ptr %12, align 4, !tbaa !9
  %1423 = sub i32 %1422, 5
  store i32 %1423, ptr %12, align 4, !tbaa !9
  br label %1424

1424:                                             ; preds = %1419
  br label %1425

1425:                                             ; preds = %1424
  %1426 = load i64, ptr %11, align 8, !tbaa !21
  %1427 = trunc i64 %1426 to i32
  %1428 = and i32 %1427, 15
  %1429 = add i32 %1428, 4
  %1430 = load ptr, ptr %6, align 8, !tbaa !5
  %1431 = getelementptr inbounds %struct.inflate_state, ptr %1430, i32 0, i32 24
  store i32 %1429, ptr %1431, align 8, !tbaa !64
  br label %1432

1432:                                             ; preds = %1425
  %1433 = load i64, ptr %11, align 8, !tbaa !21
  %1434 = lshr i64 %1433, 4
  store i64 %1434, ptr %11, align 8, !tbaa !21
  %1435 = load i32, ptr %12, align 4, !tbaa !9
  %1436 = sub i32 %1435, 4
  store i32 %1436, ptr %12, align 4, !tbaa !9
  br label %1437

1437:                                             ; preds = %1432
  br label %1438

1438:                                             ; preds = %1437
  %1439 = load ptr, ptr %6, align 8, !tbaa !5
  %1440 = getelementptr inbounds %struct.inflate_state, ptr %1439, i32 0, i32 25
  %1441 = load i32, ptr %1440, align 4, !tbaa !62
  %1442 = icmp ugt i32 %1441, 286
  br i1 %1442, label %1448, label %1443

1443:                                             ; preds = %1438
  %1444 = load ptr, ptr %6, align 8, !tbaa !5
  %1445 = getelementptr inbounds %struct.inflate_state, ptr %1444, i32 0, i32 26
  %1446 = load i32, ptr %1445, align 8, !tbaa !63
  %1447 = icmp ugt i32 %1446, 30
  br i1 %1447, label %1448, label %1453

1448:                                             ; preds = %1443, %1438
  %1449 = load ptr, ptr %4, align 8, !tbaa !5
  %1450 = getelementptr inbounds %struct.z_stream_s, ptr %1449, i32 0, i32 6
  store ptr @.str.8, ptr %1450, align 8, !tbaa !32
  %1451 = load ptr, ptr %6, align 8, !tbaa !5
  %1452 = getelementptr inbounds %struct.inflate_state, ptr %1451, i32 0, i32 1
  store i32 16209, ptr %1452, align 8, !tbaa !17
  br label %2924

1453:                                             ; preds = %1443
  %1454 = load ptr, ptr %6, align 8, !tbaa !5
  %1455 = getelementptr inbounds %struct.inflate_state, ptr %1454, i32 0, i32 27
  store i32 0, ptr %1455, align 4, !tbaa !65
  %1456 = load ptr, ptr %6, align 8, !tbaa !5
  %1457 = getelementptr inbounds %struct.inflate_state, ptr %1456, i32 0, i32 1
  store i32 16197, ptr %1457, align 8, !tbaa !17
  br label %1458

1458:                                             ; preds = %1453, %77
  br label %1459

1459:                                             ; preds = %1517, %1458
  %1460 = load ptr, ptr %6, align 8, !tbaa !5
  %1461 = getelementptr inbounds %struct.inflate_state, ptr %1460, i32 0, i32 27
  %1462 = load i32, ptr %1461, align 4, !tbaa !65
  %1463 = load ptr, ptr %6, align 8, !tbaa !5
  %1464 = getelementptr inbounds %struct.inflate_state, ptr %1463, i32 0, i32 24
  %1465 = load i32, ptr %1464, align 8, !tbaa !64
  %1466 = icmp ult i32 %1462, %1465
  br i1 %1466, label %1467, label %1518

1467:                                             ; preds = %1459
  br label %1468

1468:                                             ; preds = %1467
  br label %1469

1469:                                             ; preds = %1492, %1468
  %1470 = load i32, ptr %12, align 4, !tbaa !9
  %1471 = icmp ult i32 %1470, 3
  br i1 %1471, label %1472, label %1493

1472:                                             ; preds = %1469
  br label %1473

1473:                                             ; preds = %1472
  %1474 = load i32, ptr %9, align 4, !tbaa !9
  %1475 = icmp eq i32 %1474, 0
  br i1 %1475, label %1476, label %1477

1476:                                             ; preds = %1473
  br label %2925

1477:                                             ; preds = %1473
  %1478 = load i32, ptr %9, align 4, !tbaa !9
  %1479 = add i32 %1478, -1
  store i32 %1479, ptr %9, align 4, !tbaa !9
  %1480 = load ptr, ptr %7, align 8, !tbaa !5
  %1481 = getelementptr inbounds i8, ptr %1480, i32 1
  store ptr %1481, ptr %7, align 8, !tbaa !5
  %1482 = load i8, ptr %1480, align 1, !tbaa !24
  %1483 = zext i8 %1482 to i64
  %1484 = load i32, ptr %12, align 4, !tbaa !9
  %1485 = zext i32 %1484 to i64
  %1486 = shl i64 %1483, %1485
  %1487 = load i64, ptr %11, align 8, !tbaa !21
  %1488 = add i64 %1487, %1486
  store i64 %1488, ptr %11, align 8, !tbaa !21
  %1489 = load i32, ptr %12, align 4, !tbaa !9
  %1490 = add i32 %1489, 8
  store i32 %1490, ptr %12, align 4, !tbaa !9
  br label %1491

1491:                                             ; preds = %1477
  br label %1492

1492:                                             ; preds = %1491
  br label %1469, !llvm.loop !66

1493:                                             ; preds = %1469
  br label %1494

1494:                                             ; preds = %1493
  br label %1495

1495:                                             ; preds = %1494
  %1496 = load i64, ptr %11, align 8, !tbaa !21
  %1497 = trunc i64 %1496 to i32
  %1498 = and i32 %1497, 7
  %1499 = trunc i32 %1498 to i16
  %1500 = load ptr, ptr %6, align 8, !tbaa !5
  %1501 = getelementptr inbounds %struct.inflate_state, ptr %1500, i32 0, i32 29
  %1502 = load ptr, ptr %6, align 8, !tbaa !5
  %1503 = getelementptr inbounds %struct.inflate_state, ptr %1502, i32 0, i32 27
  %1504 = load i32, ptr %1503, align 4, !tbaa !65
  %1505 = add i32 %1504, 1
  store i32 %1505, ptr %1503, align 4, !tbaa !65
  %1506 = zext i32 %1504 to i64
  %1507 = getelementptr inbounds [19 x i16], ptr @inflate.order, i64 0, i64 %1506
  %1508 = load i16, ptr %1507, align 2, !tbaa !67
  %1509 = zext i16 %1508 to i64
  %1510 = getelementptr inbounds [320 x i16], ptr %1501, i64 0, i64 %1509
  store i16 %1499, ptr %1510, align 2, !tbaa !67
  br label %1511

1511:                                             ; preds = %1495
  %1512 = load i64, ptr %11, align 8, !tbaa !21
  %1513 = lshr i64 %1512, 3
  store i64 %1513, ptr %11, align 8, !tbaa !21
  %1514 = load i32, ptr %12, align 4, !tbaa !9
  %1515 = sub i32 %1514, 3
  store i32 %1515, ptr %12, align 4, !tbaa !9
  br label %1516

1516:                                             ; preds = %1511
  br label %1517

1517:                                             ; preds = %1516
  br label %1459, !llvm.loop !69

1518:                                             ; preds = %1459
  br label %1519

1519:                                             ; preds = %1524, %1518
  %1520 = load ptr, ptr %6, align 8, !tbaa !5
  %1521 = getelementptr inbounds %struct.inflate_state, ptr %1520, i32 0, i32 27
  %1522 = load i32, ptr %1521, align 4, !tbaa !65
  %1523 = icmp ult i32 %1522, 19
  br i1 %1523, label %1524, label %1536

1524:                                             ; preds = %1519
  %1525 = load ptr, ptr %6, align 8, !tbaa !5
  %1526 = getelementptr inbounds %struct.inflate_state, ptr %1525, i32 0, i32 29
  %1527 = load ptr, ptr %6, align 8, !tbaa !5
  %1528 = getelementptr inbounds %struct.inflate_state, ptr %1527, i32 0, i32 27
  %1529 = load i32, ptr %1528, align 4, !tbaa !65
  %1530 = add i32 %1529, 1
  store i32 %1530, ptr %1528, align 4, !tbaa !65
  %1531 = zext i32 %1529 to i64
  %1532 = getelementptr inbounds [19 x i16], ptr @inflate.order, i64 0, i64 %1531
  %1533 = load i16, ptr %1532, align 2, !tbaa !67
  %1534 = zext i16 %1533 to i64
  %1535 = getelementptr inbounds [320 x i16], ptr %1526, i64 0, i64 %1534
  store i16 0, ptr %1535, align 2, !tbaa !67
  br label %1519, !llvm.loop !70

1536:                                             ; preds = %1519
  %1537 = load ptr, ptr %6, align 8, !tbaa !5
  %1538 = getelementptr inbounds %struct.inflate_state, ptr %1537, i32 0, i32 31
  %1539 = getelementptr inbounds [1924 x %struct.code], ptr %1538, i64 0, i64 0
  %1540 = load ptr, ptr %6, align 8, !tbaa !5
  %1541 = getelementptr inbounds %struct.inflate_state, ptr %1540, i32 0, i32 28
  store ptr %1539, ptr %1541, align 8, !tbaa !71
  %1542 = load ptr, ptr %6, align 8, !tbaa !5
  %1543 = getelementptr inbounds %struct.inflate_state, ptr %1542, i32 0, i32 28
  %1544 = load ptr, ptr %1543, align 8, !tbaa !71
  %1545 = load ptr, ptr %6, align 8, !tbaa !5
  %1546 = getelementptr inbounds %struct.inflate_state, ptr %1545, i32 0, i32 20
  store ptr %1544, ptr %1546, align 8, !tbaa !72
  %1547 = load ptr, ptr %6, align 8, !tbaa !5
  %1548 = getelementptr inbounds %struct.inflate_state, ptr %1547, i32 0, i32 22
  store i32 7, ptr %1548, align 8, !tbaa !73
  %1549 = load ptr, ptr %6, align 8, !tbaa !5
  %1550 = getelementptr inbounds %struct.inflate_state, ptr %1549, i32 0, i32 29
  %1551 = getelementptr inbounds [320 x i16], ptr %1550, i64 0, i64 0
  %1552 = load ptr, ptr %6, align 8, !tbaa !5
  %1553 = getelementptr inbounds %struct.inflate_state, ptr %1552, i32 0, i32 28
  %1554 = load ptr, ptr %6, align 8, !tbaa !5
  %1555 = getelementptr inbounds %struct.inflate_state, ptr %1554, i32 0, i32 22
  %1556 = load ptr, ptr %6, align 8, !tbaa !5
  %1557 = getelementptr inbounds %struct.inflate_state, ptr %1556, i32 0, i32 30
  %1558 = getelementptr inbounds [288 x i16], ptr %1557, i64 0, i64 0
  %1559 = call i32 @inflate_table(i32 noundef 0, ptr noundef %1551, i32 noundef 19, ptr noundef %1553, ptr noundef %1555, ptr noundef %1558)
  store i32 %1559, ptr %20, align 4, !tbaa !9
  %1560 = load i32, ptr %20, align 4, !tbaa !9
  %1561 = icmp ne i32 %1560, 0
  br i1 %1561, label %1562, label %1567

1562:                                             ; preds = %1536
  %1563 = load ptr, ptr %4, align 8, !tbaa !5
  %1564 = getelementptr inbounds %struct.z_stream_s, ptr %1563, i32 0, i32 6
  store ptr @.str.9, ptr %1564, align 8, !tbaa !32
  %1565 = load ptr, ptr %6, align 8, !tbaa !5
  %1566 = getelementptr inbounds %struct.inflate_state, ptr %1565, i32 0, i32 1
  store i32 16209, ptr %1566, align 8, !tbaa !17
  br label %2924

1567:                                             ; preds = %1536
  %1568 = load ptr, ptr %6, align 8, !tbaa !5
  %1569 = getelementptr inbounds %struct.inflate_state, ptr %1568, i32 0, i32 27
  store i32 0, ptr %1569, align 4, !tbaa !65
  %1570 = load ptr, ptr %6, align 8, !tbaa !5
  %1571 = getelementptr inbounds %struct.inflate_state, ptr %1570, i32 0, i32 1
  store i32 16198, ptr %1571, align 8, !tbaa !17
  br label %1572

1572:                                             ; preds = %1567, %77
  br label %1573

1573:                                             ; preds = %1898, %1572
  %1574 = load ptr, ptr %6, align 8, !tbaa !5
  %1575 = getelementptr inbounds %struct.inflate_state, ptr %1574, i32 0, i32 27
  %1576 = load i32, ptr %1575, align 4, !tbaa !65
  %1577 = load ptr, ptr %6, align 8, !tbaa !5
  %1578 = getelementptr inbounds %struct.inflate_state, ptr %1577, i32 0, i32 25
  %1579 = load i32, ptr %1578, align 4, !tbaa !62
  %1580 = load ptr, ptr %6, align 8, !tbaa !5
  %1581 = getelementptr inbounds %struct.inflate_state, ptr %1580, i32 0, i32 26
  %1582 = load i32, ptr %1581, align 8, !tbaa !63
  %1583 = add i32 %1579, %1582
  %1584 = icmp ult i32 %1576, %1583
  br i1 %1584, label %1585, label %1899

1585:                                             ; preds = %1573
  br label %1586

1586:                                             ; preds = %1626, %1585
  %1587 = load ptr, ptr %6, align 8, !tbaa !5
  %1588 = getelementptr inbounds %struct.inflate_state, ptr %1587, i32 0, i32 20
  %1589 = load ptr, ptr %1588, align 8, !tbaa !72
  %1590 = load i64, ptr %11, align 8, !tbaa !21
  %1591 = trunc i64 %1590 to i32
  %1592 = load ptr, ptr %6, align 8, !tbaa !5
  %1593 = getelementptr inbounds %struct.inflate_state, ptr %1592, i32 0, i32 22
  %1594 = load i32, ptr %1593, align 8, !tbaa !73
  %1595 = shl i32 1, %1594
  %1596 = sub i32 %1595, 1
  %1597 = and i32 %1591, %1596
  %1598 = zext i32 %1597 to i64
  %1599 = getelementptr inbounds %struct.code, ptr %1589, i64 %1598
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %17, ptr align 2 %1599, i64 4, i1 false), !tbaa.struct !74
  %1600 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1601 = load i8, ptr %1600, align 1, !tbaa !75
  %1602 = zext i8 %1601 to i32
  %1603 = load i32, ptr %12, align 4, !tbaa !9
  %1604 = icmp ule i32 %1602, %1603
  br i1 %1604, label %1605, label %1606

1605:                                             ; preds = %1586
  br label %1627

1606:                                             ; preds = %1586
  br label %1607

1607:                                             ; preds = %1606
  %1608 = load i32, ptr %9, align 4, !tbaa !9
  %1609 = icmp eq i32 %1608, 0
  br i1 %1609, label %1610, label %1611

1610:                                             ; preds = %1607
  br label %2925

1611:                                             ; preds = %1607
  %1612 = load i32, ptr %9, align 4, !tbaa !9
  %1613 = add i32 %1612, -1
  store i32 %1613, ptr %9, align 4, !tbaa !9
  %1614 = load ptr, ptr %7, align 8, !tbaa !5
  %1615 = getelementptr inbounds i8, ptr %1614, i32 1
  store ptr %1615, ptr %7, align 8, !tbaa !5
  %1616 = load i8, ptr %1614, align 1, !tbaa !24
  %1617 = zext i8 %1616 to i64
  %1618 = load i32, ptr %12, align 4, !tbaa !9
  %1619 = zext i32 %1618 to i64
  %1620 = shl i64 %1617, %1619
  %1621 = load i64, ptr %11, align 8, !tbaa !21
  %1622 = add i64 %1621, %1620
  store i64 %1622, ptr %11, align 8, !tbaa !21
  %1623 = load i32, ptr %12, align 4, !tbaa !9
  %1624 = add i32 %1623, 8
  store i32 %1624, ptr %12, align 4, !tbaa !9
  br label %1625

1625:                                             ; preds = %1611
  br label %1626

1626:                                             ; preds = %1625
  br label %1586

1627:                                             ; preds = %1605
  %1628 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 2
  %1629 = load i16, ptr %1628, align 2, !tbaa !77
  %1630 = zext i16 %1629 to i32
  %1631 = icmp slt i32 %1630, 16
  br i1 %1631, label %1632, label %1657

1632:                                             ; preds = %1627
  br label %1633

1633:                                             ; preds = %1632
  %1634 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1635 = load i8, ptr %1634, align 1, !tbaa !75
  %1636 = zext i8 %1635 to i32
  %1637 = load i64, ptr %11, align 8, !tbaa !21
  %1638 = zext i32 %1636 to i64
  %1639 = lshr i64 %1637, %1638
  store i64 %1639, ptr %11, align 8, !tbaa !21
  %1640 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1641 = load i8, ptr %1640, align 1, !tbaa !75
  %1642 = zext i8 %1641 to i32
  %1643 = load i32, ptr %12, align 4, !tbaa !9
  %1644 = sub i32 %1643, %1642
  store i32 %1644, ptr %12, align 4, !tbaa !9
  br label %1645

1645:                                             ; preds = %1633
  br label %1646

1646:                                             ; preds = %1645
  %1647 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 2
  %1648 = load i16, ptr %1647, align 2, !tbaa !77
  %1649 = load ptr, ptr %6, align 8, !tbaa !5
  %1650 = getelementptr inbounds %struct.inflate_state, ptr %1649, i32 0, i32 29
  %1651 = load ptr, ptr %6, align 8, !tbaa !5
  %1652 = getelementptr inbounds %struct.inflate_state, ptr %1651, i32 0, i32 27
  %1653 = load i32, ptr %1652, align 4, !tbaa !65
  %1654 = add i32 %1653, 1
  store i32 %1654, ptr %1652, align 4, !tbaa !65
  %1655 = zext i32 %1653 to i64
  %1656 = getelementptr inbounds [320 x i16], ptr %1650, i64 0, i64 %1655
  store i16 %1648, ptr %1656, align 2, !tbaa !67
  br label %1898

1657:                                             ; preds = %1627
  %1658 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 2
  %1659 = load i16, ptr %1658, align 2, !tbaa !77
  %1660 = zext i16 %1659 to i32
  %1661 = icmp eq i32 %1660, 16
  br i1 %1661, label %1662, label %1740

1662:                                             ; preds = %1657
  br label %1663

1663:                                             ; preds = %1662
  br label %1664

1664:                                             ; preds = %1691, %1663
  %1665 = load i32, ptr %12, align 4, !tbaa !9
  %1666 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1667 = load i8, ptr %1666, align 1, !tbaa !75
  %1668 = zext i8 %1667 to i32
  %1669 = add nsw i32 %1668, 2
  %1670 = icmp ult i32 %1665, %1669
  br i1 %1670, label %1671, label %1692

1671:                                             ; preds = %1664
  br label %1672

1672:                                             ; preds = %1671
  %1673 = load i32, ptr %9, align 4, !tbaa !9
  %1674 = icmp eq i32 %1673, 0
  br i1 %1674, label %1675, label %1676

1675:                                             ; preds = %1672
  br label %2925

1676:                                             ; preds = %1672
  %1677 = load i32, ptr %9, align 4, !tbaa !9
  %1678 = add i32 %1677, -1
  store i32 %1678, ptr %9, align 4, !tbaa !9
  %1679 = load ptr, ptr %7, align 8, !tbaa !5
  %1680 = getelementptr inbounds i8, ptr %1679, i32 1
  store ptr %1680, ptr %7, align 8, !tbaa !5
  %1681 = load i8, ptr %1679, align 1, !tbaa !24
  %1682 = zext i8 %1681 to i64
  %1683 = load i32, ptr %12, align 4, !tbaa !9
  %1684 = zext i32 %1683 to i64
  %1685 = shl i64 %1682, %1684
  %1686 = load i64, ptr %11, align 8, !tbaa !21
  %1687 = add i64 %1686, %1685
  store i64 %1687, ptr %11, align 8, !tbaa !21
  %1688 = load i32, ptr %12, align 4, !tbaa !9
  %1689 = add i32 %1688, 8
  store i32 %1689, ptr %12, align 4, !tbaa !9
  br label %1690

1690:                                             ; preds = %1676
  br label %1691

1691:                                             ; preds = %1690
  br label %1664, !llvm.loop !78

1692:                                             ; preds = %1664
  br label %1693

1693:                                             ; preds = %1692
  br label %1694

1694:                                             ; preds = %1693
  br label %1695

1695:                                             ; preds = %1694
  %1696 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1697 = load i8, ptr %1696, align 1, !tbaa !75
  %1698 = zext i8 %1697 to i32
  %1699 = load i64, ptr %11, align 8, !tbaa !21
  %1700 = zext i32 %1698 to i64
  %1701 = lshr i64 %1699, %1700
  store i64 %1701, ptr %11, align 8, !tbaa !21
  %1702 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1703 = load i8, ptr %1702, align 1, !tbaa !75
  %1704 = zext i8 %1703 to i32
  %1705 = load i32, ptr %12, align 4, !tbaa !9
  %1706 = sub i32 %1705, %1704
  store i32 %1706, ptr %12, align 4, !tbaa !9
  br label %1707

1707:                                             ; preds = %1695
  br label %1708

1708:                                             ; preds = %1707
  %1709 = load ptr, ptr %6, align 8, !tbaa !5
  %1710 = getelementptr inbounds %struct.inflate_state, ptr %1709, i32 0, i32 27
  %1711 = load i32, ptr %1710, align 4, !tbaa !65
  %1712 = icmp eq i32 %1711, 0
  br i1 %1712, label %1713, label %1718

1713:                                             ; preds = %1708
  %1714 = load ptr, ptr %4, align 8, !tbaa !5
  %1715 = getelementptr inbounds %struct.z_stream_s, ptr %1714, i32 0, i32 6
  store ptr @.str.10, ptr %1715, align 8, !tbaa !32
  %1716 = load ptr, ptr %6, align 8, !tbaa !5
  %1717 = getelementptr inbounds %struct.inflate_state, ptr %1716, i32 0, i32 1
  store i32 16209, ptr %1717, align 8, !tbaa !17
  br label %1899

1718:                                             ; preds = %1708
  %1719 = load ptr, ptr %6, align 8, !tbaa !5
  %1720 = getelementptr inbounds %struct.inflate_state, ptr %1719, i32 0, i32 29
  %1721 = load ptr, ptr %6, align 8, !tbaa !5
  %1722 = getelementptr inbounds %struct.inflate_state, ptr %1721, i32 0, i32 27
  %1723 = load i32, ptr %1722, align 4, !tbaa !65
  %1724 = sub i32 %1723, 1
  %1725 = zext i32 %1724 to i64
  %1726 = getelementptr inbounds [320 x i16], ptr %1720, i64 0, i64 %1725
  %1727 = load i16, ptr %1726, align 2, !tbaa !67
  %1728 = zext i16 %1727 to i32
  store i32 %1728, ptr %19, align 4, !tbaa !9
  %1729 = load i64, ptr %11, align 8, !tbaa !21
  %1730 = trunc i64 %1729 to i32
  %1731 = and i32 %1730, 3
  %1732 = add i32 3, %1731
  store i32 %1732, ptr %15, align 4, !tbaa !9
  br label %1733

1733:                                             ; preds = %1718
  %1734 = load i64, ptr %11, align 8, !tbaa !21
  %1735 = lshr i64 %1734, 2
  store i64 %1735, ptr %11, align 8, !tbaa !21
  %1736 = load i32, ptr %12, align 4, !tbaa !9
  %1737 = sub i32 %1736, 2
  store i32 %1737, ptr %12, align 4, !tbaa !9
  br label %1738

1738:                                             ; preds = %1733
  br label %1739

1739:                                             ; preds = %1738
  br label %1862

1740:                                             ; preds = %1657
  %1741 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 2
  %1742 = load i16, ptr %1741, align 2, !tbaa !77
  %1743 = zext i16 %1742 to i32
  %1744 = icmp eq i32 %1743, 17
  br i1 %1744, label %1745, label %1803

1745:                                             ; preds = %1740
  br label %1746

1746:                                             ; preds = %1745
  br label %1747

1747:                                             ; preds = %1774, %1746
  %1748 = load i32, ptr %12, align 4, !tbaa !9
  %1749 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1750 = load i8, ptr %1749, align 1, !tbaa !75
  %1751 = zext i8 %1750 to i32
  %1752 = add nsw i32 %1751, 3
  %1753 = icmp ult i32 %1748, %1752
  br i1 %1753, label %1754, label %1775

1754:                                             ; preds = %1747
  br label %1755

1755:                                             ; preds = %1754
  %1756 = load i32, ptr %9, align 4, !tbaa !9
  %1757 = icmp eq i32 %1756, 0
  br i1 %1757, label %1758, label %1759

1758:                                             ; preds = %1755
  br label %2925

1759:                                             ; preds = %1755
  %1760 = load i32, ptr %9, align 4, !tbaa !9
  %1761 = add i32 %1760, -1
  store i32 %1761, ptr %9, align 4, !tbaa !9
  %1762 = load ptr, ptr %7, align 8, !tbaa !5
  %1763 = getelementptr inbounds i8, ptr %1762, i32 1
  store ptr %1763, ptr %7, align 8, !tbaa !5
  %1764 = load i8, ptr %1762, align 1, !tbaa !24
  %1765 = zext i8 %1764 to i64
  %1766 = load i32, ptr %12, align 4, !tbaa !9
  %1767 = zext i32 %1766 to i64
  %1768 = shl i64 %1765, %1767
  %1769 = load i64, ptr %11, align 8, !tbaa !21
  %1770 = add i64 %1769, %1768
  store i64 %1770, ptr %11, align 8, !tbaa !21
  %1771 = load i32, ptr %12, align 4, !tbaa !9
  %1772 = add i32 %1771, 8
  store i32 %1772, ptr %12, align 4, !tbaa !9
  br label %1773

1773:                                             ; preds = %1759
  br label %1774

1774:                                             ; preds = %1773
  br label %1747, !llvm.loop !79

1775:                                             ; preds = %1747
  br label %1776

1776:                                             ; preds = %1775
  br label %1777

1777:                                             ; preds = %1776
  br label %1778

1778:                                             ; preds = %1777
  %1779 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1780 = load i8, ptr %1779, align 1, !tbaa !75
  %1781 = zext i8 %1780 to i32
  %1782 = load i64, ptr %11, align 8, !tbaa !21
  %1783 = zext i32 %1781 to i64
  %1784 = lshr i64 %1782, %1783
  store i64 %1784, ptr %11, align 8, !tbaa !21
  %1785 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1786 = load i8, ptr %1785, align 1, !tbaa !75
  %1787 = zext i8 %1786 to i32
  %1788 = load i32, ptr %12, align 4, !tbaa !9
  %1789 = sub i32 %1788, %1787
  store i32 %1789, ptr %12, align 4, !tbaa !9
  br label %1790

1790:                                             ; preds = %1778
  br label %1791

1791:                                             ; preds = %1790
  store i32 0, ptr %19, align 4, !tbaa !9
  %1792 = load i64, ptr %11, align 8, !tbaa !21
  %1793 = trunc i64 %1792 to i32
  %1794 = and i32 %1793, 7
  %1795 = add i32 3, %1794
  store i32 %1795, ptr %15, align 4, !tbaa !9
  br label %1796

1796:                                             ; preds = %1791
  %1797 = load i64, ptr %11, align 8, !tbaa !21
  %1798 = lshr i64 %1797, 3
  store i64 %1798, ptr %11, align 8, !tbaa !21
  %1799 = load i32, ptr %12, align 4, !tbaa !9
  %1800 = sub i32 %1799, 3
  store i32 %1800, ptr %12, align 4, !tbaa !9
  br label %1801

1801:                                             ; preds = %1796
  br label %1802

1802:                                             ; preds = %1801
  br label %1861

1803:                                             ; preds = %1740
  br label %1804

1804:                                             ; preds = %1803
  br label %1805

1805:                                             ; preds = %1832, %1804
  %1806 = load i32, ptr %12, align 4, !tbaa !9
  %1807 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1808 = load i8, ptr %1807, align 1, !tbaa !75
  %1809 = zext i8 %1808 to i32
  %1810 = add nsw i32 %1809, 7
  %1811 = icmp ult i32 %1806, %1810
  br i1 %1811, label %1812, label %1833

1812:                                             ; preds = %1805
  br label %1813

1813:                                             ; preds = %1812
  %1814 = load i32, ptr %9, align 4, !tbaa !9
  %1815 = icmp eq i32 %1814, 0
  br i1 %1815, label %1816, label %1817

1816:                                             ; preds = %1813
  br label %2925

1817:                                             ; preds = %1813
  %1818 = load i32, ptr %9, align 4, !tbaa !9
  %1819 = add i32 %1818, -1
  store i32 %1819, ptr %9, align 4, !tbaa !9
  %1820 = load ptr, ptr %7, align 8, !tbaa !5
  %1821 = getelementptr inbounds i8, ptr %1820, i32 1
  store ptr %1821, ptr %7, align 8, !tbaa !5
  %1822 = load i8, ptr %1820, align 1, !tbaa !24
  %1823 = zext i8 %1822 to i64
  %1824 = load i32, ptr %12, align 4, !tbaa !9
  %1825 = zext i32 %1824 to i64
  %1826 = shl i64 %1823, %1825
  %1827 = load i64, ptr %11, align 8, !tbaa !21
  %1828 = add i64 %1827, %1826
  store i64 %1828, ptr %11, align 8, !tbaa !21
  %1829 = load i32, ptr %12, align 4, !tbaa !9
  %1830 = add i32 %1829, 8
  store i32 %1830, ptr %12, align 4, !tbaa !9
  br label %1831

1831:                                             ; preds = %1817
  br label %1832

1832:                                             ; preds = %1831
  br label %1805, !llvm.loop !80

1833:                                             ; preds = %1805
  br label %1834

1834:                                             ; preds = %1833
  br label %1835

1835:                                             ; preds = %1834
  br label %1836

1836:                                             ; preds = %1835
  %1837 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1838 = load i8, ptr %1837, align 1, !tbaa !75
  %1839 = zext i8 %1838 to i32
  %1840 = load i64, ptr %11, align 8, !tbaa !21
  %1841 = zext i32 %1839 to i64
  %1842 = lshr i64 %1840, %1841
  store i64 %1842, ptr %11, align 8, !tbaa !21
  %1843 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1844 = load i8, ptr %1843, align 1, !tbaa !75
  %1845 = zext i8 %1844 to i32
  %1846 = load i32, ptr %12, align 4, !tbaa !9
  %1847 = sub i32 %1846, %1845
  store i32 %1847, ptr %12, align 4, !tbaa !9
  br label %1848

1848:                                             ; preds = %1836
  br label %1849

1849:                                             ; preds = %1848
  store i32 0, ptr %19, align 4, !tbaa !9
  %1850 = load i64, ptr %11, align 8, !tbaa !21
  %1851 = trunc i64 %1850 to i32
  %1852 = and i32 %1851, 127
  %1853 = add i32 11, %1852
  store i32 %1853, ptr %15, align 4, !tbaa !9
  br label %1854

1854:                                             ; preds = %1849
  %1855 = load i64, ptr %11, align 8, !tbaa !21
  %1856 = lshr i64 %1855, 7
  store i64 %1856, ptr %11, align 8, !tbaa !21
  %1857 = load i32, ptr %12, align 4, !tbaa !9
  %1858 = sub i32 %1857, 7
  store i32 %1858, ptr %12, align 4, !tbaa !9
  br label %1859

1859:                                             ; preds = %1854
  br label %1860

1860:                                             ; preds = %1859
  br label %1861

1861:                                             ; preds = %1860, %1802
  br label %1862

1862:                                             ; preds = %1861, %1739
  %1863 = load ptr, ptr %6, align 8, !tbaa !5
  %1864 = getelementptr inbounds %struct.inflate_state, ptr %1863, i32 0, i32 27
  %1865 = load i32, ptr %1864, align 4, !tbaa !65
  %1866 = load i32, ptr %15, align 4, !tbaa !9
  %1867 = add i32 %1865, %1866
  %1868 = load ptr, ptr %6, align 8, !tbaa !5
  %1869 = getelementptr inbounds %struct.inflate_state, ptr %1868, i32 0, i32 25
  %1870 = load i32, ptr %1869, align 4, !tbaa !62
  %1871 = load ptr, ptr %6, align 8, !tbaa !5
  %1872 = getelementptr inbounds %struct.inflate_state, ptr %1871, i32 0, i32 26
  %1873 = load i32, ptr %1872, align 8, !tbaa !63
  %1874 = add i32 %1870, %1873
  %1875 = icmp ugt i32 %1867, %1874
  br i1 %1875, label %1876, label %1881

1876:                                             ; preds = %1862
  %1877 = load ptr, ptr %4, align 8, !tbaa !5
  %1878 = getelementptr inbounds %struct.z_stream_s, ptr %1877, i32 0, i32 6
  store ptr @.str.10, ptr %1878, align 8, !tbaa !32
  %1879 = load ptr, ptr %6, align 8, !tbaa !5
  %1880 = getelementptr inbounds %struct.inflate_state, ptr %1879, i32 0, i32 1
  store i32 16209, ptr %1880, align 8, !tbaa !17
  br label %1899

1881:                                             ; preds = %1862
  br label %1882

1882:                                             ; preds = %1886, %1881
  %1883 = load i32, ptr %15, align 4, !tbaa !9
  %1884 = add i32 %1883, -1
  store i32 %1884, ptr %15, align 4, !tbaa !9
  %1885 = icmp ne i32 %1883, 0
  br i1 %1885, label %1886, label %1897

1886:                                             ; preds = %1882
  %1887 = load i32, ptr %19, align 4, !tbaa !9
  %1888 = trunc i32 %1887 to i16
  %1889 = load ptr, ptr %6, align 8, !tbaa !5
  %1890 = getelementptr inbounds %struct.inflate_state, ptr %1889, i32 0, i32 29
  %1891 = load ptr, ptr %6, align 8, !tbaa !5
  %1892 = getelementptr inbounds %struct.inflate_state, ptr %1891, i32 0, i32 27
  %1893 = load i32, ptr %1892, align 4, !tbaa !65
  %1894 = add i32 %1893, 1
  store i32 %1894, ptr %1892, align 4, !tbaa !65
  %1895 = zext i32 %1893 to i64
  %1896 = getelementptr inbounds [320 x i16], ptr %1890, i64 0, i64 %1895
  store i16 %1888, ptr %1896, align 2, !tbaa !67
  br label %1882, !llvm.loop !81

1897:                                             ; preds = %1882
  br label %1898

1898:                                             ; preds = %1897, %1646
  br label %1573, !llvm.loop !82

1899:                                             ; preds = %1876, %1713, %1573
  %1900 = load ptr, ptr %6, align 8, !tbaa !5
  %1901 = getelementptr inbounds %struct.inflate_state, ptr %1900, i32 0, i32 1
  %1902 = load i32, ptr %1901, align 8, !tbaa !17
  %1903 = icmp eq i32 %1902, 16209
  br i1 %1903, label %1904, label %1905

1904:                                             ; preds = %1899
  br label %2924

1905:                                             ; preds = %1899
  %1906 = load ptr, ptr %6, align 8, !tbaa !5
  %1907 = getelementptr inbounds %struct.inflate_state, ptr %1906, i32 0, i32 29
  %1908 = getelementptr inbounds [320 x i16], ptr %1907, i64 0, i64 256
  %1909 = load i16, ptr %1908, align 8, !tbaa !67
  %1910 = zext i16 %1909 to i32
  %1911 = icmp eq i32 %1910, 0
  br i1 %1911, label %1912, label %1917

1912:                                             ; preds = %1905
  %1913 = load ptr, ptr %4, align 8, !tbaa !5
  %1914 = getelementptr inbounds %struct.z_stream_s, ptr %1913, i32 0, i32 6
  store ptr @.str.11, ptr %1914, align 8, !tbaa !32
  %1915 = load ptr, ptr %6, align 8, !tbaa !5
  %1916 = getelementptr inbounds %struct.inflate_state, ptr %1915, i32 0, i32 1
  store i32 16209, ptr %1916, align 8, !tbaa !17
  br label %2924

1917:                                             ; preds = %1905
  %1918 = load ptr, ptr %6, align 8, !tbaa !5
  %1919 = getelementptr inbounds %struct.inflate_state, ptr %1918, i32 0, i32 31
  %1920 = getelementptr inbounds [1924 x %struct.code], ptr %1919, i64 0, i64 0
  %1921 = load ptr, ptr %6, align 8, !tbaa !5
  %1922 = getelementptr inbounds %struct.inflate_state, ptr %1921, i32 0, i32 28
  store ptr %1920, ptr %1922, align 8, !tbaa !71
  %1923 = load ptr, ptr %6, align 8, !tbaa !5
  %1924 = getelementptr inbounds %struct.inflate_state, ptr %1923, i32 0, i32 28
  %1925 = load ptr, ptr %1924, align 8, !tbaa !71
  %1926 = load ptr, ptr %6, align 8, !tbaa !5
  %1927 = getelementptr inbounds %struct.inflate_state, ptr %1926, i32 0, i32 20
  store ptr %1925, ptr %1927, align 8, !tbaa !72
  %1928 = load ptr, ptr %6, align 8, !tbaa !5
  %1929 = getelementptr inbounds %struct.inflate_state, ptr %1928, i32 0, i32 22
  store i32 10, ptr %1929, align 8, !tbaa !73
  %1930 = load ptr, ptr %6, align 8, !tbaa !5
  %1931 = getelementptr inbounds %struct.inflate_state, ptr %1930, i32 0, i32 29
  %1932 = getelementptr inbounds [320 x i16], ptr %1931, i64 0, i64 0
  %1933 = load ptr, ptr %6, align 8, !tbaa !5
  %1934 = getelementptr inbounds %struct.inflate_state, ptr %1933, i32 0, i32 25
  %1935 = load i32, ptr %1934, align 4, !tbaa !62
  %1936 = load ptr, ptr %6, align 8, !tbaa !5
  %1937 = getelementptr inbounds %struct.inflate_state, ptr %1936, i32 0, i32 28
  %1938 = load ptr, ptr %6, align 8, !tbaa !5
  %1939 = getelementptr inbounds %struct.inflate_state, ptr %1938, i32 0, i32 22
  %1940 = load ptr, ptr %6, align 8, !tbaa !5
  %1941 = getelementptr inbounds %struct.inflate_state, ptr %1940, i32 0, i32 30
  %1942 = getelementptr inbounds [288 x i16], ptr %1941, i64 0, i64 0
  %1943 = call i32 @inflate_table(i32 noundef 1, ptr noundef %1932, i32 noundef %1935, ptr noundef %1937, ptr noundef %1939, ptr noundef %1942)
  store i32 %1943, ptr %20, align 4, !tbaa !9
  %1944 = load i32, ptr %20, align 4, !tbaa !9
  %1945 = icmp ne i32 %1944, 0
  br i1 %1945, label %1946, label %1951

1946:                                             ; preds = %1917
  %1947 = load ptr, ptr %4, align 8, !tbaa !5
  %1948 = getelementptr inbounds %struct.z_stream_s, ptr %1947, i32 0, i32 6
  store ptr @.str.12, ptr %1948, align 8, !tbaa !32
  %1949 = load ptr, ptr %6, align 8, !tbaa !5
  %1950 = getelementptr inbounds %struct.inflate_state, ptr %1949, i32 0, i32 1
  store i32 16209, ptr %1950, align 8, !tbaa !17
  br label %2924

1951:                                             ; preds = %1917
  %1952 = load ptr, ptr %6, align 8, !tbaa !5
  %1953 = getelementptr inbounds %struct.inflate_state, ptr %1952, i32 0, i32 28
  %1954 = load ptr, ptr %1953, align 8, !tbaa !71
  %1955 = load ptr, ptr %6, align 8, !tbaa !5
  %1956 = getelementptr inbounds %struct.inflate_state, ptr %1955, i32 0, i32 21
  store ptr %1954, ptr %1956, align 8, !tbaa !83
  %1957 = load ptr, ptr %6, align 8, !tbaa !5
  %1958 = getelementptr inbounds %struct.inflate_state, ptr %1957, i32 0, i32 23
  store i32 9, ptr %1958, align 4, !tbaa !84
  %1959 = load ptr, ptr %6, align 8, !tbaa !5
  %1960 = getelementptr inbounds %struct.inflate_state, ptr %1959, i32 0, i32 29
  %1961 = getelementptr inbounds [320 x i16], ptr %1960, i64 0, i64 0
  %1962 = load ptr, ptr %6, align 8, !tbaa !5
  %1963 = getelementptr inbounds %struct.inflate_state, ptr %1962, i32 0, i32 25
  %1964 = load i32, ptr %1963, align 4, !tbaa !62
  %1965 = zext i32 %1964 to i64
  %1966 = getelementptr inbounds i16, ptr %1961, i64 %1965
  %1967 = load ptr, ptr %6, align 8, !tbaa !5
  %1968 = getelementptr inbounds %struct.inflate_state, ptr %1967, i32 0, i32 26
  %1969 = load i32, ptr %1968, align 8, !tbaa !63
  %1970 = load ptr, ptr %6, align 8, !tbaa !5
  %1971 = getelementptr inbounds %struct.inflate_state, ptr %1970, i32 0, i32 28
  %1972 = load ptr, ptr %6, align 8, !tbaa !5
  %1973 = getelementptr inbounds %struct.inflate_state, ptr %1972, i32 0, i32 23
  %1974 = load ptr, ptr %6, align 8, !tbaa !5
  %1975 = getelementptr inbounds %struct.inflate_state, ptr %1974, i32 0, i32 30
  %1976 = getelementptr inbounds [288 x i16], ptr %1975, i64 0, i64 0
  %1977 = call i32 @inflate_table(i32 noundef 2, ptr noundef %1966, i32 noundef %1969, ptr noundef %1971, ptr noundef %1973, ptr noundef %1976)
  store i32 %1977, ptr %20, align 4, !tbaa !9
  %1978 = load i32, ptr %20, align 4, !tbaa !9
  %1979 = icmp ne i32 %1978, 0
  br i1 %1979, label %1980, label %1985

1980:                                             ; preds = %1951
  %1981 = load ptr, ptr %4, align 8, !tbaa !5
  %1982 = getelementptr inbounds %struct.z_stream_s, ptr %1981, i32 0, i32 6
  store ptr @.str.13, ptr %1982, align 8, !tbaa !32
  %1983 = load ptr, ptr %6, align 8, !tbaa !5
  %1984 = getelementptr inbounds %struct.inflate_state, ptr %1983, i32 0, i32 1
  store i32 16209, ptr %1984, align 8, !tbaa !17
  br label %2924

1985:                                             ; preds = %1951
  %1986 = load ptr, ptr %6, align 8, !tbaa !5
  %1987 = getelementptr inbounds %struct.inflate_state, ptr %1986, i32 0, i32 1
  store i32 16199, ptr %1987, align 8, !tbaa !17
  %1988 = load i32, ptr %5, align 4, !tbaa !9
  %1989 = icmp eq i32 %1988, 6
  br i1 %1989, label %1990, label %1991

1990:                                             ; preds = %1985
  br label %2925

1991:                                             ; preds = %1985
  br label %1992

1992:                                             ; preds = %1991, %77
  %1993 = load ptr, ptr %6, align 8, !tbaa !5
  %1994 = getelementptr inbounds %struct.inflate_state, ptr %1993, i32 0, i32 1
  store i32 16200, ptr %1994, align 8, !tbaa !17
  br label %1995

1995:                                             ; preds = %1992, %77
  %1996 = load i32, ptr %9, align 4, !tbaa !9
  %1997 = icmp uge i32 %1996, 6
  br i1 %1997, label %1998, label %2054

1998:                                             ; preds = %1995
  %1999 = load i32, ptr %10, align 4, !tbaa !9
  %2000 = icmp uge i32 %1999, 258
  br i1 %2000, label %2001, label %2054

2001:                                             ; preds = %1998
  br label %2002

2002:                                             ; preds = %2001
  %2003 = load ptr, ptr %8, align 8, !tbaa !5
  %2004 = load ptr, ptr %4, align 8, !tbaa !5
  %2005 = getelementptr inbounds %struct.z_stream_s, ptr %2004, i32 0, i32 3
  store ptr %2003, ptr %2005, align 8, !tbaa !11
  %2006 = load i32, ptr %10, align 4, !tbaa !9
  %2007 = load ptr, ptr %4, align 8, !tbaa !5
  %2008 = getelementptr inbounds %struct.z_stream_s, ptr %2007, i32 0, i32 4
  store i32 %2006, ptr %2008, align 8, !tbaa !19
  %2009 = load ptr, ptr %7, align 8, !tbaa !5
  %2010 = load ptr, ptr %4, align 8, !tbaa !5
  %2011 = getelementptr inbounds %struct.z_stream_s, ptr %2010, i32 0, i32 0
  store ptr %2009, ptr %2011, align 8, !tbaa !14
  %2012 = load i32, ptr %9, align 4, !tbaa !9
  %2013 = load ptr, ptr %4, align 8, !tbaa !5
  %2014 = getelementptr inbounds %struct.z_stream_s, ptr %2013, i32 0, i32 1
  store i32 %2012, ptr %2014, align 8, !tbaa !15
  %2015 = load i64, ptr %11, align 8, !tbaa !21
  %2016 = load ptr, ptr %6, align 8, !tbaa !5
  %2017 = getelementptr inbounds %struct.inflate_state, ptr %2016, i32 0, i32 15
  store i64 %2015, ptr %2017, align 8, !tbaa !20
  %2018 = load i32, ptr %12, align 4, !tbaa !9
  %2019 = load ptr, ptr %6, align 8, !tbaa !5
  %2020 = getelementptr inbounds %struct.inflate_state, ptr %2019, i32 0, i32 16
  store i32 %2018, ptr %2020, align 8, !tbaa !22
  br label %2021

2021:                                             ; preds = %2002
  br label %2022

2022:                                             ; preds = %2021
  %2023 = load ptr, ptr %4, align 8, !tbaa !5
  %2024 = load i32, ptr %14, align 4, !tbaa !9
  call void @inflate_fast(ptr noundef %2023, i32 noundef %2024)
  br label %2025

2025:                                             ; preds = %2022
  %2026 = load ptr, ptr %4, align 8, !tbaa !5
  %2027 = getelementptr inbounds %struct.z_stream_s, ptr %2026, i32 0, i32 3
  %2028 = load ptr, ptr %2027, align 8, !tbaa !11
  store ptr %2028, ptr %8, align 8, !tbaa !5
  %2029 = load ptr, ptr %4, align 8, !tbaa !5
  %2030 = getelementptr inbounds %struct.z_stream_s, ptr %2029, i32 0, i32 4
  %2031 = load i32, ptr %2030, align 8, !tbaa !19
  store i32 %2031, ptr %10, align 4, !tbaa !9
  %2032 = load ptr, ptr %4, align 8, !tbaa !5
  %2033 = getelementptr inbounds %struct.z_stream_s, ptr %2032, i32 0, i32 0
  %2034 = load ptr, ptr %2033, align 8, !tbaa !14
  store ptr %2034, ptr %7, align 8, !tbaa !5
  %2035 = load ptr, ptr %4, align 8, !tbaa !5
  %2036 = getelementptr inbounds %struct.z_stream_s, ptr %2035, i32 0, i32 1
  %2037 = load i32, ptr %2036, align 8, !tbaa !15
  store i32 %2037, ptr %9, align 4, !tbaa !9
  %2038 = load ptr, ptr %6, align 8, !tbaa !5
  %2039 = getelementptr inbounds %struct.inflate_state, ptr %2038, i32 0, i32 15
  %2040 = load i64, ptr %2039, align 8, !tbaa !20
  store i64 %2040, ptr %11, align 8, !tbaa !21
  %2041 = load ptr, ptr %6, align 8, !tbaa !5
  %2042 = getelementptr inbounds %struct.inflate_state, ptr %2041, i32 0, i32 16
  %2043 = load i32, ptr %2042, align 8, !tbaa !22
  store i32 %2043, ptr %12, align 4, !tbaa !9
  br label %2044

2044:                                             ; preds = %2025
  br label %2045

2045:                                             ; preds = %2044
  %2046 = load ptr, ptr %6, align 8, !tbaa !5
  %2047 = getelementptr inbounds %struct.inflate_state, ptr %2046, i32 0, i32 1
  %2048 = load i32, ptr %2047, align 8, !tbaa !17
  %2049 = icmp eq i32 %2048, 16191
  br i1 %2049, label %2050, label %2053

2050:                                             ; preds = %2045
  %2051 = load ptr, ptr %6, align 8, !tbaa !5
  %2052 = getelementptr inbounds %struct.inflate_state, ptr %2051, i32 0, i32 33
  store i32 -1, ptr %2052, align 4, !tbaa !85
  br label %2053

2053:                                             ; preds = %2050, %2045
  br label %2924

2054:                                             ; preds = %1998, %1995
  %2055 = load ptr, ptr %6, align 8, !tbaa !5
  %2056 = getelementptr inbounds %struct.inflate_state, ptr %2055, i32 0, i32 33
  store i32 0, ptr %2056, align 4, !tbaa !85
  br label %2057

2057:                                             ; preds = %2097, %2054
  %2058 = load ptr, ptr %6, align 8, !tbaa !5
  %2059 = getelementptr inbounds %struct.inflate_state, ptr %2058, i32 0, i32 20
  %2060 = load ptr, ptr %2059, align 8, !tbaa !72
  %2061 = load i64, ptr %11, align 8, !tbaa !21
  %2062 = trunc i64 %2061 to i32
  %2063 = load ptr, ptr %6, align 8, !tbaa !5
  %2064 = getelementptr inbounds %struct.inflate_state, ptr %2063, i32 0, i32 22
  %2065 = load i32, ptr %2064, align 8, !tbaa !73
  %2066 = shl i32 1, %2065
  %2067 = sub i32 %2066, 1
  %2068 = and i32 %2062, %2067
  %2069 = zext i32 %2068 to i64
  %2070 = getelementptr inbounds %struct.code, ptr %2060, i64 %2069
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %17, ptr align 2 %2070, i64 4, i1 false), !tbaa.struct !74
  %2071 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2072 = load i8, ptr %2071, align 1, !tbaa !75
  %2073 = zext i8 %2072 to i32
  %2074 = load i32, ptr %12, align 4, !tbaa !9
  %2075 = icmp ule i32 %2073, %2074
  br i1 %2075, label %2076, label %2077

2076:                                             ; preds = %2057
  br label %2098

2077:                                             ; preds = %2057
  br label %2078

2078:                                             ; preds = %2077
  %2079 = load i32, ptr %9, align 4, !tbaa !9
  %2080 = icmp eq i32 %2079, 0
  br i1 %2080, label %2081, label %2082

2081:                                             ; preds = %2078
  br label %2925

2082:                                             ; preds = %2078
  %2083 = load i32, ptr %9, align 4, !tbaa !9
  %2084 = add i32 %2083, -1
  store i32 %2084, ptr %9, align 4, !tbaa !9
  %2085 = load ptr, ptr %7, align 8, !tbaa !5
  %2086 = getelementptr inbounds i8, ptr %2085, i32 1
  store ptr %2086, ptr %7, align 8, !tbaa !5
  %2087 = load i8, ptr %2085, align 1, !tbaa !24
  %2088 = zext i8 %2087 to i64
  %2089 = load i32, ptr %12, align 4, !tbaa !9
  %2090 = zext i32 %2089 to i64
  %2091 = shl i64 %2088, %2090
  %2092 = load i64, ptr %11, align 8, !tbaa !21
  %2093 = add i64 %2092, %2091
  store i64 %2093, ptr %11, align 8, !tbaa !21
  %2094 = load i32, ptr %12, align 4, !tbaa !9
  %2095 = add i32 %2094, 8
  store i32 %2095, ptr %12, align 4, !tbaa !9
  br label %2096

2096:                                             ; preds = %2082
  br label %2097

2097:                                             ; preds = %2096
  br label %2057

2098:                                             ; preds = %2076
  %2099 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2100 = load i8, ptr %2099, align 2, !tbaa !86
  %2101 = zext i8 %2100 to i32
  %2102 = icmp ne i32 %2101, 0
  br i1 %2102, label %2103, label %2189

2103:                                             ; preds = %2098
  %2104 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2105 = load i8, ptr %2104, align 2, !tbaa !86
  %2106 = zext i8 %2105 to i32
  %2107 = and i32 %2106, 240
  %2108 = icmp eq i32 %2107, 0
  br i1 %2108, label %2109, label %2189

2109:                                             ; preds = %2103
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %18, ptr align 2 %17, i64 4, i1 false), !tbaa.struct !74
  br label %2110

2110:                                             ; preds = %2166, %2109
  %2111 = load ptr, ptr %6, align 8, !tbaa !5
  %2112 = getelementptr inbounds %struct.inflate_state, ptr %2111, i32 0, i32 20
  %2113 = load ptr, ptr %2112, align 8, !tbaa !72
  %2114 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 2
  %2115 = load i16, ptr %2114, align 2, !tbaa !77
  %2116 = zext i16 %2115 to i32
  %2117 = load i64, ptr %11, align 8, !tbaa !21
  %2118 = trunc i64 %2117 to i32
  %2119 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2120 = load i8, ptr %2119, align 1, !tbaa !75
  %2121 = zext i8 %2120 to i32
  %2122 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 0
  %2123 = load i8, ptr %2122, align 2, !tbaa !86
  %2124 = zext i8 %2123 to i32
  %2125 = add nsw i32 %2121, %2124
  %2126 = shl i32 1, %2125
  %2127 = sub i32 %2126, 1
  %2128 = and i32 %2118, %2127
  %2129 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2130 = load i8, ptr %2129, align 1, !tbaa !75
  %2131 = zext i8 %2130 to i32
  %2132 = lshr i32 %2128, %2131
  %2133 = add i32 %2116, %2132
  %2134 = zext i32 %2133 to i64
  %2135 = getelementptr inbounds %struct.code, ptr %2113, i64 %2134
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %17, ptr align 2 %2135, i64 4, i1 false), !tbaa.struct !74
  %2136 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2137 = load i8, ptr %2136, align 1, !tbaa !75
  %2138 = zext i8 %2137 to i32
  %2139 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2140 = load i8, ptr %2139, align 1, !tbaa !75
  %2141 = zext i8 %2140 to i32
  %2142 = add nsw i32 %2138, %2141
  %2143 = load i32, ptr %12, align 4, !tbaa !9
  %2144 = icmp ule i32 %2142, %2143
  br i1 %2144, label %2145, label %2146

2145:                                             ; preds = %2110
  br label %2167

2146:                                             ; preds = %2110
  br label %2147

2147:                                             ; preds = %2146
  %2148 = load i32, ptr %9, align 4, !tbaa !9
  %2149 = icmp eq i32 %2148, 0
  br i1 %2149, label %2150, label %2151

2150:                                             ; preds = %2147
  br label %2925

2151:                                             ; preds = %2147
  %2152 = load i32, ptr %9, align 4, !tbaa !9
  %2153 = add i32 %2152, -1
  store i32 %2153, ptr %9, align 4, !tbaa !9
  %2154 = load ptr, ptr %7, align 8, !tbaa !5
  %2155 = getelementptr inbounds i8, ptr %2154, i32 1
  store ptr %2155, ptr %7, align 8, !tbaa !5
  %2156 = load i8, ptr %2154, align 1, !tbaa !24
  %2157 = zext i8 %2156 to i64
  %2158 = load i32, ptr %12, align 4, !tbaa !9
  %2159 = zext i32 %2158 to i64
  %2160 = shl i64 %2157, %2159
  %2161 = load i64, ptr %11, align 8, !tbaa !21
  %2162 = add i64 %2161, %2160
  store i64 %2162, ptr %11, align 8, !tbaa !21
  %2163 = load i32, ptr %12, align 4, !tbaa !9
  %2164 = add i32 %2163, 8
  store i32 %2164, ptr %12, align 4, !tbaa !9
  br label %2165

2165:                                             ; preds = %2151
  br label %2166

2166:                                             ; preds = %2165
  br label %2110

2167:                                             ; preds = %2145
  br label %2168

2168:                                             ; preds = %2167
  %2169 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2170 = load i8, ptr %2169, align 1, !tbaa !75
  %2171 = zext i8 %2170 to i32
  %2172 = load i64, ptr %11, align 8, !tbaa !21
  %2173 = zext i32 %2171 to i64
  %2174 = lshr i64 %2172, %2173
  store i64 %2174, ptr %11, align 8, !tbaa !21
  %2175 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2176 = load i8, ptr %2175, align 1, !tbaa !75
  %2177 = zext i8 %2176 to i32
  %2178 = load i32, ptr %12, align 4, !tbaa !9
  %2179 = sub i32 %2178, %2177
  store i32 %2179, ptr %12, align 4, !tbaa !9
  br label %2180

2180:                                             ; preds = %2168
  br label %2181

2181:                                             ; preds = %2180
  %2182 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2183 = load i8, ptr %2182, align 1, !tbaa !75
  %2184 = zext i8 %2183 to i32
  %2185 = load ptr, ptr %6, align 8, !tbaa !5
  %2186 = getelementptr inbounds %struct.inflate_state, ptr %2185, i32 0, i32 33
  %2187 = load i32, ptr %2186, align 4, !tbaa !85
  %2188 = add nsw i32 %2187, %2184
  store i32 %2188, ptr %2186, align 4, !tbaa !85
  br label %2189

2189:                                             ; preds = %2181, %2103, %2098
  br label %2190

2190:                                             ; preds = %2189
  %2191 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2192 = load i8, ptr %2191, align 1, !tbaa !75
  %2193 = zext i8 %2192 to i32
  %2194 = load i64, ptr %11, align 8, !tbaa !21
  %2195 = zext i32 %2193 to i64
  %2196 = lshr i64 %2194, %2195
  store i64 %2196, ptr %11, align 8, !tbaa !21
  %2197 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2198 = load i8, ptr %2197, align 1, !tbaa !75
  %2199 = zext i8 %2198 to i32
  %2200 = load i32, ptr %12, align 4, !tbaa !9
  %2201 = sub i32 %2200, %2199
  store i32 %2201, ptr %12, align 4, !tbaa !9
  br label %2202

2202:                                             ; preds = %2190
  br label %2203

2203:                                             ; preds = %2202
  %2204 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2205 = load i8, ptr %2204, align 1, !tbaa !75
  %2206 = zext i8 %2205 to i32
  %2207 = load ptr, ptr %6, align 8, !tbaa !5
  %2208 = getelementptr inbounds %struct.inflate_state, ptr %2207, i32 0, i32 33
  %2209 = load i32, ptr %2208, align 4, !tbaa !85
  %2210 = add nsw i32 %2209, %2206
  store i32 %2210, ptr %2208, align 4, !tbaa !85
  %2211 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 2
  %2212 = load i16, ptr %2211, align 2, !tbaa !77
  %2213 = zext i16 %2212 to i32
  %2214 = load ptr, ptr %6, align 8, !tbaa !5
  %2215 = getelementptr inbounds %struct.inflate_state, ptr %2214, i32 0, i32 17
  store i32 %2213, ptr %2215, align 4, !tbaa !44
  %2216 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2217 = load i8, ptr %2216, align 2, !tbaa !86
  %2218 = zext i8 %2217 to i32
  %2219 = icmp eq i32 %2218, 0
  br i1 %2219, label %2220, label %2223

2220:                                             ; preds = %2203
  %2221 = load ptr, ptr %6, align 8, !tbaa !5
  %2222 = getelementptr inbounds %struct.inflate_state, ptr %2221, i32 0, i32 1
  store i32 16205, ptr %2222, align 8, !tbaa !17
  br label %2924

2223:                                             ; preds = %2203
  %2224 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2225 = load i8, ptr %2224, align 2, !tbaa !86
  %2226 = zext i8 %2225 to i32
  %2227 = and i32 %2226, 32
  %2228 = icmp ne i32 %2227, 0
  br i1 %2228, label %2229, label %2234

2229:                                             ; preds = %2223
  %2230 = load ptr, ptr %6, align 8, !tbaa !5
  %2231 = getelementptr inbounds %struct.inflate_state, ptr %2230, i32 0, i32 33
  store i32 -1, ptr %2231, align 4, !tbaa !85
  %2232 = load ptr, ptr %6, align 8, !tbaa !5
  %2233 = getelementptr inbounds %struct.inflate_state, ptr %2232, i32 0, i32 1
  store i32 16191, ptr %2233, align 8, !tbaa !17
  br label %2924

2234:                                             ; preds = %2223
  %2235 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2236 = load i8, ptr %2235, align 2, !tbaa !86
  %2237 = zext i8 %2236 to i32
  %2238 = and i32 %2237, 64
  %2239 = icmp ne i32 %2238, 0
  br i1 %2239, label %2240, label %2245

2240:                                             ; preds = %2234
  %2241 = load ptr, ptr %4, align 8, !tbaa !5
  %2242 = getelementptr inbounds %struct.z_stream_s, ptr %2241, i32 0, i32 6
  store ptr @.str.14, ptr %2242, align 8, !tbaa !32
  %2243 = load ptr, ptr %6, align 8, !tbaa !5
  %2244 = getelementptr inbounds %struct.inflate_state, ptr %2243, i32 0, i32 1
  store i32 16209, ptr %2244, align 8, !tbaa !17
  br label %2924

2245:                                             ; preds = %2234
  %2246 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2247 = load i8, ptr %2246, align 2, !tbaa !86
  %2248 = zext i8 %2247 to i32
  %2249 = and i32 %2248, 15
  %2250 = load ptr, ptr %6, align 8, !tbaa !5
  %2251 = getelementptr inbounds %struct.inflate_state, ptr %2250, i32 0, i32 19
  store i32 %2249, ptr %2251, align 4, !tbaa !87
  %2252 = load ptr, ptr %6, align 8, !tbaa !5
  %2253 = getelementptr inbounds %struct.inflate_state, ptr %2252, i32 0, i32 1
  store i32 16201, ptr %2253, align 8, !tbaa !17
  br label %2254

2254:                                             ; preds = %2245, %77
  %2255 = load ptr, ptr %6, align 8, !tbaa !5
  %2256 = getelementptr inbounds %struct.inflate_state, ptr %2255, i32 0, i32 19
  %2257 = load i32, ptr %2256, align 4, !tbaa !87
  %2258 = icmp ne i32 %2257, 0
  br i1 %2258, label %2259, label %2324

2259:                                             ; preds = %2254
  br label %2260

2260:                                             ; preds = %2259
  br label %2261

2261:                                             ; preds = %2287, %2260
  %2262 = load i32, ptr %12, align 4, !tbaa !9
  %2263 = load ptr, ptr %6, align 8, !tbaa !5
  %2264 = getelementptr inbounds %struct.inflate_state, ptr %2263, i32 0, i32 19
  %2265 = load i32, ptr %2264, align 4, !tbaa !87
  %2266 = icmp ult i32 %2262, %2265
  br i1 %2266, label %2267, label %2288

2267:                                             ; preds = %2261
  br label %2268

2268:                                             ; preds = %2267
  %2269 = load i32, ptr %9, align 4, !tbaa !9
  %2270 = icmp eq i32 %2269, 0
  br i1 %2270, label %2271, label %2272

2271:                                             ; preds = %2268
  br label %2925

2272:                                             ; preds = %2268
  %2273 = load i32, ptr %9, align 4, !tbaa !9
  %2274 = add i32 %2273, -1
  store i32 %2274, ptr %9, align 4, !tbaa !9
  %2275 = load ptr, ptr %7, align 8, !tbaa !5
  %2276 = getelementptr inbounds i8, ptr %2275, i32 1
  store ptr %2276, ptr %7, align 8, !tbaa !5
  %2277 = load i8, ptr %2275, align 1, !tbaa !24
  %2278 = zext i8 %2277 to i64
  %2279 = load i32, ptr %12, align 4, !tbaa !9
  %2280 = zext i32 %2279 to i64
  %2281 = shl i64 %2278, %2280
  %2282 = load i64, ptr %11, align 8, !tbaa !21
  %2283 = add i64 %2282, %2281
  store i64 %2283, ptr %11, align 8, !tbaa !21
  %2284 = load i32, ptr %12, align 4, !tbaa !9
  %2285 = add i32 %2284, 8
  store i32 %2285, ptr %12, align 4, !tbaa !9
  br label %2286

2286:                                             ; preds = %2272
  br label %2287

2287:                                             ; preds = %2286
  br label %2261, !llvm.loop !88

2288:                                             ; preds = %2261
  br label %2289

2289:                                             ; preds = %2288
  br label %2290

2290:                                             ; preds = %2289
  %2291 = load i64, ptr %11, align 8, !tbaa !21
  %2292 = trunc i64 %2291 to i32
  %2293 = load ptr, ptr %6, align 8, !tbaa !5
  %2294 = getelementptr inbounds %struct.inflate_state, ptr %2293, i32 0, i32 19
  %2295 = load i32, ptr %2294, align 4, !tbaa !87
  %2296 = shl i32 1, %2295
  %2297 = sub i32 %2296, 1
  %2298 = and i32 %2292, %2297
  %2299 = load ptr, ptr %6, align 8, !tbaa !5
  %2300 = getelementptr inbounds %struct.inflate_state, ptr %2299, i32 0, i32 17
  %2301 = load i32, ptr %2300, align 4, !tbaa !44
  %2302 = add i32 %2301, %2298
  store i32 %2302, ptr %2300, align 4, !tbaa !44
  br label %2303

2303:                                             ; preds = %2290
  %2304 = load ptr, ptr %6, align 8, !tbaa !5
  %2305 = getelementptr inbounds %struct.inflate_state, ptr %2304, i32 0, i32 19
  %2306 = load i32, ptr %2305, align 4, !tbaa !87
  %2307 = load i64, ptr %11, align 8, !tbaa !21
  %2308 = zext i32 %2306 to i64
  %2309 = lshr i64 %2307, %2308
  store i64 %2309, ptr %11, align 8, !tbaa !21
  %2310 = load ptr, ptr %6, align 8, !tbaa !5
  %2311 = getelementptr inbounds %struct.inflate_state, ptr %2310, i32 0, i32 19
  %2312 = load i32, ptr %2311, align 4, !tbaa !87
  %2313 = load i32, ptr %12, align 4, !tbaa !9
  %2314 = sub i32 %2313, %2312
  store i32 %2314, ptr %12, align 4, !tbaa !9
  br label %2315

2315:                                             ; preds = %2303
  br label %2316

2316:                                             ; preds = %2315
  %2317 = load ptr, ptr %6, align 8, !tbaa !5
  %2318 = getelementptr inbounds %struct.inflate_state, ptr %2317, i32 0, i32 19
  %2319 = load i32, ptr %2318, align 4, !tbaa !87
  %2320 = load ptr, ptr %6, align 8, !tbaa !5
  %2321 = getelementptr inbounds %struct.inflate_state, ptr %2320, i32 0, i32 33
  %2322 = load i32, ptr %2321, align 4, !tbaa !85
  %2323 = add i32 %2322, %2319
  store i32 %2323, ptr %2321, align 4, !tbaa !85
  br label %2324

2324:                                             ; preds = %2316, %2254
  %2325 = load ptr, ptr %6, align 8, !tbaa !5
  %2326 = getelementptr inbounds %struct.inflate_state, ptr %2325, i32 0, i32 17
  %2327 = load i32, ptr %2326, align 4, !tbaa !44
  %2328 = load ptr, ptr %6, align 8, !tbaa !5
  %2329 = getelementptr inbounds %struct.inflate_state, ptr %2328, i32 0, i32 34
  store i32 %2327, ptr %2329, align 8, !tbaa !89
  %2330 = load ptr, ptr %6, align 8, !tbaa !5
  %2331 = getelementptr inbounds %struct.inflate_state, ptr %2330, i32 0, i32 1
  store i32 16202, ptr %2331, align 8, !tbaa !17
  br label %2332

2332:                                             ; preds = %2324, %77
  br label %2333

2333:                                             ; preds = %2373, %2332
  %2334 = load ptr, ptr %6, align 8, !tbaa !5
  %2335 = getelementptr inbounds %struct.inflate_state, ptr %2334, i32 0, i32 21
  %2336 = load ptr, ptr %2335, align 8, !tbaa !83
  %2337 = load i64, ptr %11, align 8, !tbaa !21
  %2338 = trunc i64 %2337 to i32
  %2339 = load ptr, ptr %6, align 8, !tbaa !5
  %2340 = getelementptr inbounds %struct.inflate_state, ptr %2339, i32 0, i32 23
  %2341 = load i32, ptr %2340, align 4, !tbaa !84
  %2342 = shl i32 1, %2341
  %2343 = sub i32 %2342, 1
  %2344 = and i32 %2338, %2343
  %2345 = zext i32 %2344 to i64
  %2346 = getelementptr inbounds %struct.code, ptr %2336, i64 %2345
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %17, ptr align 2 %2346, i64 4, i1 false), !tbaa.struct !74
  %2347 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2348 = load i8, ptr %2347, align 1, !tbaa !75
  %2349 = zext i8 %2348 to i32
  %2350 = load i32, ptr %12, align 4, !tbaa !9
  %2351 = icmp ule i32 %2349, %2350
  br i1 %2351, label %2352, label %2353

2352:                                             ; preds = %2333
  br label %2374

2353:                                             ; preds = %2333
  br label %2354

2354:                                             ; preds = %2353
  %2355 = load i32, ptr %9, align 4, !tbaa !9
  %2356 = icmp eq i32 %2355, 0
  br i1 %2356, label %2357, label %2358

2357:                                             ; preds = %2354
  br label %2925

2358:                                             ; preds = %2354
  %2359 = load i32, ptr %9, align 4, !tbaa !9
  %2360 = add i32 %2359, -1
  store i32 %2360, ptr %9, align 4, !tbaa !9
  %2361 = load ptr, ptr %7, align 8, !tbaa !5
  %2362 = getelementptr inbounds i8, ptr %2361, i32 1
  store ptr %2362, ptr %7, align 8, !tbaa !5
  %2363 = load i8, ptr %2361, align 1, !tbaa !24
  %2364 = zext i8 %2363 to i64
  %2365 = load i32, ptr %12, align 4, !tbaa !9
  %2366 = zext i32 %2365 to i64
  %2367 = shl i64 %2364, %2366
  %2368 = load i64, ptr %11, align 8, !tbaa !21
  %2369 = add i64 %2368, %2367
  store i64 %2369, ptr %11, align 8, !tbaa !21
  %2370 = load i32, ptr %12, align 4, !tbaa !9
  %2371 = add i32 %2370, 8
  store i32 %2371, ptr %12, align 4, !tbaa !9
  br label %2372

2372:                                             ; preds = %2358
  br label %2373

2373:                                             ; preds = %2372
  br label %2333

2374:                                             ; preds = %2352
  %2375 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2376 = load i8, ptr %2375, align 2, !tbaa !86
  %2377 = zext i8 %2376 to i32
  %2378 = and i32 %2377, 240
  %2379 = icmp eq i32 %2378, 0
  br i1 %2379, label %2380, label %2460

2380:                                             ; preds = %2374
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %18, ptr align 2 %17, i64 4, i1 false), !tbaa.struct !74
  br label %2381

2381:                                             ; preds = %2437, %2380
  %2382 = load ptr, ptr %6, align 8, !tbaa !5
  %2383 = getelementptr inbounds %struct.inflate_state, ptr %2382, i32 0, i32 21
  %2384 = load ptr, ptr %2383, align 8, !tbaa !83
  %2385 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 2
  %2386 = load i16, ptr %2385, align 2, !tbaa !77
  %2387 = zext i16 %2386 to i32
  %2388 = load i64, ptr %11, align 8, !tbaa !21
  %2389 = trunc i64 %2388 to i32
  %2390 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2391 = load i8, ptr %2390, align 1, !tbaa !75
  %2392 = zext i8 %2391 to i32
  %2393 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 0
  %2394 = load i8, ptr %2393, align 2, !tbaa !86
  %2395 = zext i8 %2394 to i32
  %2396 = add nsw i32 %2392, %2395
  %2397 = shl i32 1, %2396
  %2398 = sub i32 %2397, 1
  %2399 = and i32 %2389, %2398
  %2400 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2401 = load i8, ptr %2400, align 1, !tbaa !75
  %2402 = zext i8 %2401 to i32
  %2403 = lshr i32 %2399, %2402
  %2404 = add i32 %2387, %2403
  %2405 = zext i32 %2404 to i64
  %2406 = getelementptr inbounds %struct.code, ptr %2384, i64 %2405
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %17, ptr align 2 %2406, i64 4, i1 false), !tbaa.struct !74
  %2407 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2408 = load i8, ptr %2407, align 1, !tbaa !75
  %2409 = zext i8 %2408 to i32
  %2410 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2411 = load i8, ptr %2410, align 1, !tbaa !75
  %2412 = zext i8 %2411 to i32
  %2413 = add nsw i32 %2409, %2412
  %2414 = load i32, ptr %12, align 4, !tbaa !9
  %2415 = icmp ule i32 %2413, %2414
  br i1 %2415, label %2416, label %2417

2416:                                             ; preds = %2381
  br label %2438

2417:                                             ; preds = %2381
  br label %2418

2418:                                             ; preds = %2417
  %2419 = load i32, ptr %9, align 4, !tbaa !9
  %2420 = icmp eq i32 %2419, 0
  br i1 %2420, label %2421, label %2422

2421:                                             ; preds = %2418
  br label %2925

2422:                                             ; preds = %2418
  %2423 = load i32, ptr %9, align 4, !tbaa !9
  %2424 = add i32 %2423, -1
  store i32 %2424, ptr %9, align 4, !tbaa !9
  %2425 = load ptr, ptr %7, align 8, !tbaa !5
  %2426 = getelementptr inbounds i8, ptr %2425, i32 1
  store ptr %2426, ptr %7, align 8, !tbaa !5
  %2427 = load i8, ptr %2425, align 1, !tbaa !24
  %2428 = zext i8 %2427 to i64
  %2429 = load i32, ptr %12, align 4, !tbaa !9
  %2430 = zext i32 %2429 to i64
  %2431 = shl i64 %2428, %2430
  %2432 = load i64, ptr %11, align 8, !tbaa !21
  %2433 = add i64 %2432, %2431
  store i64 %2433, ptr %11, align 8, !tbaa !21
  %2434 = load i32, ptr %12, align 4, !tbaa !9
  %2435 = add i32 %2434, 8
  store i32 %2435, ptr %12, align 4, !tbaa !9
  br label %2436

2436:                                             ; preds = %2422
  br label %2437

2437:                                             ; preds = %2436
  br label %2381

2438:                                             ; preds = %2416
  br label %2439

2439:                                             ; preds = %2438
  %2440 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2441 = load i8, ptr %2440, align 1, !tbaa !75
  %2442 = zext i8 %2441 to i32
  %2443 = load i64, ptr %11, align 8, !tbaa !21
  %2444 = zext i32 %2442 to i64
  %2445 = lshr i64 %2443, %2444
  store i64 %2445, ptr %11, align 8, !tbaa !21
  %2446 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2447 = load i8, ptr %2446, align 1, !tbaa !75
  %2448 = zext i8 %2447 to i32
  %2449 = load i32, ptr %12, align 4, !tbaa !9
  %2450 = sub i32 %2449, %2448
  store i32 %2450, ptr %12, align 4, !tbaa !9
  br label %2451

2451:                                             ; preds = %2439
  br label %2452

2452:                                             ; preds = %2451
  %2453 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2454 = load i8, ptr %2453, align 1, !tbaa !75
  %2455 = zext i8 %2454 to i32
  %2456 = load ptr, ptr %6, align 8, !tbaa !5
  %2457 = getelementptr inbounds %struct.inflate_state, ptr %2456, i32 0, i32 33
  %2458 = load i32, ptr %2457, align 4, !tbaa !85
  %2459 = add nsw i32 %2458, %2455
  store i32 %2459, ptr %2457, align 4, !tbaa !85
  br label %2460

2460:                                             ; preds = %2452, %2374
  br label %2461

2461:                                             ; preds = %2460
  %2462 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2463 = load i8, ptr %2462, align 1, !tbaa !75
  %2464 = zext i8 %2463 to i32
  %2465 = load i64, ptr %11, align 8, !tbaa !21
  %2466 = zext i32 %2464 to i64
  %2467 = lshr i64 %2465, %2466
  store i64 %2467, ptr %11, align 8, !tbaa !21
  %2468 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2469 = load i8, ptr %2468, align 1, !tbaa !75
  %2470 = zext i8 %2469 to i32
  %2471 = load i32, ptr %12, align 4, !tbaa !9
  %2472 = sub i32 %2471, %2470
  store i32 %2472, ptr %12, align 4, !tbaa !9
  br label %2473

2473:                                             ; preds = %2461
  br label %2474

2474:                                             ; preds = %2473
  %2475 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2476 = load i8, ptr %2475, align 1, !tbaa !75
  %2477 = zext i8 %2476 to i32
  %2478 = load ptr, ptr %6, align 8, !tbaa !5
  %2479 = getelementptr inbounds %struct.inflate_state, ptr %2478, i32 0, i32 33
  %2480 = load i32, ptr %2479, align 4, !tbaa !85
  %2481 = add nsw i32 %2480, %2477
  store i32 %2481, ptr %2479, align 4, !tbaa !85
  %2482 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2483 = load i8, ptr %2482, align 2, !tbaa !86
  %2484 = zext i8 %2483 to i32
  %2485 = and i32 %2484, 64
  %2486 = icmp ne i32 %2485, 0
  br i1 %2486, label %2487, label %2492

2487:                                             ; preds = %2474
  %2488 = load ptr, ptr %4, align 8, !tbaa !5
  %2489 = getelementptr inbounds %struct.z_stream_s, ptr %2488, i32 0, i32 6
  store ptr @.str.15, ptr %2489, align 8, !tbaa !32
  %2490 = load ptr, ptr %6, align 8, !tbaa !5
  %2491 = getelementptr inbounds %struct.inflate_state, ptr %2490, i32 0, i32 1
  store i32 16209, ptr %2491, align 8, !tbaa !17
  br label %2924

2492:                                             ; preds = %2474
  %2493 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 2
  %2494 = load i16, ptr %2493, align 2, !tbaa !77
  %2495 = zext i16 %2494 to i32
  %2496 = load ptr, ptr %6, align 8, !tbaa !5
  %2497 = getelementptr inbounds %struct.inflate_state, ptr %2496, i32 0, i32 18
  store i32 %2495, ptr %2497, align 8, !tbaa !90
  %2498 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2499 = load i8, ptr %2498, align 2, !tbaa !86
  %2500 = zext i8 %2499 to i32
  %2501 = and i32 %2500, 15
  %2502 = load ptr, ptr %6, align 8, !tbaa !5
  %2503 = getelementptr inbounds %struct.inflate_state, ptr %2502, i32 0, i32 19
  store i32 %2501, ptr %2503, align 4, !tbaa !87
  %2504 = load ptr, ptr %6, align 8, !tbaa !5
  %2505 = getelementptr inbounds %struct.inflate_state, ptr %2504, i32 0, i32 1
  store i32 16203, ptr %2505, align 8, !tbaa !17
  br label %2506

2506:                                             ; preds = %2492, %77
  %2507 = load ptr, ptr %6, align 8, !tbaa !5
  %2508 = getelementptr inbounds %struct.inflate_state, ptr %2507, i32 0, i32 19
  %2509 = load i32, ptr %2508, align 4, !tbaa !87
  %2510 = icmp ne i32 %2509, 0
  br i1 %2510, label %2511, label %2576

2511:                                             ; preds = %2506
  br label %2512

2512:                                             ; preds = %2511
  br label %2513

2513:                                             ; preds = %2539, %2512
  %2514 = load i32, ptr %12, align 4, !tbaa !9
  %2515 = load ptr, ptr %6, align 8, !tbaa !5
  %2516 = getelementptr inbounds %struct.inflate_state, ptr %2515, i32 0, i32 19
  %2517 = load i32, ptr %2516, align 4, !tbaa !87
  %2518 = icmp ult i32 %2514, %2517
  br i1 %2518, label %2519, label %2540

2519:                                             ; preds = %2513
  br label %2520

2520:                                             ; preds = %2519
  %2521 = load i32, ptr %9, align 4, !tbaa !9
  %2522 = icmp eq i32 %2521, 0
  br i1 %2522, label %2523, label %2524

2523:                                             ; preds = %2520
  br label %2925

2524:                                             ; preds = %2520
  %2525 = load i32, ptr %9, align 4, !tbaa !9
  %2526 = add i32 %2525, -1
  store i32 %2526, ptr %9, align 4, !tbaa !9
  %2527 = load ptr, ptr %7, align 8, !tbaa !5
  %2528 = getelementptr inbounds i8, ptr %2527, i32 1
  store ptr %2528, ptr %7, align 8, !tbaa !5
  %2529 = load i8, ptr %2527, align 1, !tbaa !24
  %2530 = zext i8 %2529 to i64
  %2531 = load i32, ptr %12, align 4, !tbaa !9
  %2532 = zext i32 %2531 to i64
  %2533 = shl i64 %2530, %2532
  %2534 = load i64, ptr %11, align 8, !tbaa !21
  %2535 = add i64 %2534, %2533
  store i64 %2535, ptr %11, align 8, !tbaa !21
  %2536 = load i32, ptr %12, align 4, !tbaa !9
  %2537 = add i32 %2536, 8
  store i32 %2537, ptr %12, align 4, !tbaa !9
  br label %2538

2538:                                             ; preds = %2524
  br label %2539

2539:                                             ; preds = %2538
  br label %2513, !llvm.loop !91

2540:                                             ; preds = %2513
  br label %2541

2541:                                             ; preds = %2540
  br label %2542

2542:                                             ; preds = %2541
  %2543 = load i64, ptr %11, align 8, !tbaa !21
  %2544 = trunc i64 %2543 to i32
  %2545 = load ptr, ptr %6, align 8, !tbaa !5
  %2546 = getelementptr inbounds %struct.inflate_state, ptr %2545, i32 0, i32 19
  %2547 = load i32, ptr %2546, align 4, !tbaa !87
  %2548 = shl i32 1, %2547
  %2549 = sub i32 %2548, 1
  %2550 = and i32 %2544, %2549
  %2551 = load ptr, ptr %6, align 8, !tbaa !5
  %2552 = getelementptr inbounds %struct.inflate_state, ptr %2551, i32 0, i32 18
  %2553 = load i32, ptr %2552, align 8, !tbaa !90
  %2554 = add i32 %2553, %2550
  store i32 %2554, ptr %2552, align 8, !tbaa !90
  br label %2555

2555:                                             ; preds = %2542
  %2556 = load ptr, ptr %6, align 8, !tbaa !5
  %2557 = getelementptr inbounds %struct.inflate_state, ptr %2556, i32 0, i32 19
  %2558 = load i32, ptr %2557, align 4, !tbaa !87
  %2559 = load i64, ptr %11, align 8, !tbaa !21
  %2560 = zext i32 %2558 to i64
  %2561 = lshr i64 %2559, %2560
  store i64 %2561, ptr %11, align 8, !tbaa !21
  %2562 = load ptr, ptr %6, align 8, !tbaa !5
  %2563 = getelementptr inbounds %struct.inflate_state, ptr %2562, i32 0, i32 19
  %2564 = load i32, ptr %2563, align 4, !tbaa !87
  %2565 = load i32, ptr %12, align 4, !tbaa !9
  %2566 = sub i32 %2565, %2564
  store i32 %2566, ptr %12, align 4, !tbaa !9
  br label %2567

2567:                                             ; preds = %2555
  br label %2568

2568:                                             ; preds = %2567
  %2569 = load ptr, ptr %6, align 8, !tbaa !5
  %2570 = getelementptr inbounds %struct.inflate_state, ptr %2569, i32 0, i32 19
  %2571 = load i32, ptr %2570, align 4, !tbaa !87
  %2572 = load ptr, ptr %6, align 8, !tbaa !5
  %2573 = getelementptr inbounds %struct.inflate_state, ptr %2572, i32 0, i32 33
  %2574 = load i32, ptr %2573, align 4, !tbaa !85
  %2575 = add i32 %2574, %2571
  store i32 %2575, ptr %2573, align 4, !tbaa !85
  br label %2576

2576:                                             ; preds = %2568, %2506
  %2577 = load ptr, ptr %6, align 8, !tbaa !5
  %2578 = getelementptr inbounds %struct.inflate_state, ptr %2577, i32 0, i32 1
  store i32 16204, ptr %2578, align 8, !tbaa !17
  br label %2579

2579:                                             ; preds = %2576, %77
  %2580 = load i32, ptr %10, align 4, !tbaa !9
  %2581 = icmp eq i32 %2580, 0
  br i1 %2581, label %2582, label %2583

2582:                                             ; preds = %2579
  br label %2925

2583:                                             ; preds = %2579
  %2584 = load i32, ptr %14, align 4, !tbaa !9
  %2585 = load i32, ptr %10, align 4, !tbaa !9
  %2586 = sub i32 %2584, %2585
  store i32 %2586, ptr %15, align 4, !tbaa !9
  %2587 = load ptr, ptr %6, align 8, !tbaa !5
  %2588 = getelementptr inbounds %struct.inflate_state, ptr %2587, i32 0, i32 18
  %2589 = load i32, ptr %2588, align 8, !tbaa !90
  %2590 = load i32, ptr %15, align 4, !tbaa !9
  %2591 = icmp ugt i32 %2589, %2590
  br i1 %2591, label %2592, label %2658

2592:                                             ; preds = %2583
  %2593 = load ptr, ptr %6, align 8, !tbaa !5
  %2594 = getelementptr inbounds %struct.inflate_state, ptr %2593, i32 0, i32 18
  %2595 = load i32, ptr %2594, align 8, !tbaa !90
  %2596 = load i32, ptr %15, align 4, !tbaa !9
  %2597 = sub i32 %2595, %2596
  store i32 %2597, ptr %15, align 4, !tbaa !9
  %2598 = load i32, ptr %15, align 4, !tbaa !9
  %2599 = load ptr, ptr %6, align 8, !tbaa !5
  %2600 = getelementptr inbounds %struct.inflate_state, ptr %2599, i32 0, i32 12
  %2601 = load i32, ptr %2600, align 8, !tbaa !92
  %2602 = icmp ugt i32 %2598, %2601
  br i1 %2602, label %2603, label %2614

2603:                                             ; preds = %2592
  %2604 = load ptr, ptr %6, align 8, !tbaa !5
  %2605 = getelementptr inbounds %struct.inflate_state, ptr %2604, i32 0, i32 32
  %2606 = load i32, ptr %2605, align 8, !tbaa !93
  %2607 = icmp ne i32 %2606, 0
  br i1 %2607, label %2608, label %2613

2608:                                             ; preds = %2603
  %2609 = load ptr, ptr %4, align 8, !tbaa !5
  %2610 = getelementptr inbounds %struct.z_stream_s, ptr %2609, i32 0, i32 6
  store ptr @.str.16, ptr %2610, align 8, !tbaa !32
  %2611 = load ptr, ptr %6, align 8, !tbaa !5
  %2612 = getelementptr inbounds %struct.inflate_state, ptr %2611, i32 0, i32 1
  store i32 16209, ptr %2612, align 8, !tbaa !17
  br label %2924

2613:                                             ; preds = %2603
  br label %2614

2614:                                             ; preds = %2613, %2592
  %2615 = load i32, ptr %15, align 4, !tbaa !9
  %2616 = load ptr, ptr %6, align 8, !tbaa !5
  %2617 = getelementptr inbounds %struct.inflate_state, ptr %2616, i32 0, i32 13
  %2618 = load i32, ptr %2617, align 4, !tbaa !94
  %2619 = icmp ugt i32 %2615, %2618
  br i1 %2619, label %2620, label %2636

2620:                                             ; preds = %2614
  %2621 = load ptr, ptr %6, align 8, !tbaa !5
  %2622 = getelementptr inbounds %struct.inflate_state, ptr %2621, i32 0, i32 13
  %2623 = load i32, ptr %2622, align 4, !tbaa !94
  %2624 = load i32, ptr %15, align 4, !tbaa !9
  %2625 = sub i32 %2624, %2623
  store i32 %2625, ptr %15, align 4, !tbaa !9
  %2626 = load ptr, ptr %6, align 8, !tbaa !5
  %2627 = getelementptr inbounds %struct.inflate_state, ptr %2626, i32 0, i32 14
  %2628 = load ptr, ptr %2627, align 8, !tbaa !95
  %2629 = load ptr, ptr %6, align 8, !tbaa !5
  %2630 = getelementptr inbounds %struct.inflate_state, ptr %2629, i32 0, i32 11
  %2631 = load i32, ptr %2630, align 4, !tbaa !96
  %2632 = load i32, ptr %15, align 4, !tbaa !9
  %2633 = sub i32 %2631, %2632
  %2634 = zext i32 %2633 to i64
  %2635 = getelementptr inbounds i8, ptr %2628, i64 %2634
  store ptr %2635, ptr %16, align 8, !tbaa !5
  br label %2647

2636:                                             ; preds = %2614
  %2637 = load ptr, ptr %6, align 8, !tbaa !5
  %2638 = getelementptr inbounds %struct.inflate_state, ptr %2637, i32 0, i32 14
  %2639 = load ptr, ptr %2638, align 8, !tbaa !95
  %2640 = load ptr, ptr %6, align 8, !tbaa !5
  %2641 = getelementptr inbounds %struct.inflate_state, ptr %2640, i32 0, i32 13
  %2642 = load i32, ptr %2641, align 4, !tbaa !94
  %2643 = load i32, ptr %15, align 4, !tbaa !9
  %2644 = sub i32 %2642, %2643
  %2645 = zext i32 %2644 to i64
  %2646 = getelementptr inbounds i8, ptr %2639, i64 %2645
  store ptr %2646, ptr %16, align 8, !tbaa !5
  br label %2647

2647:                                             ; preds = %2636, %2620
  %2648 = load i32, ptr %15, align 4, !tbaa !9
  %2649 = load ptr, ptr %6, align 8, !tbaa !5
  %2650 = getelementptr inbounds %struct.inflate_state, ptr %2649, i32 0, i32 17
  %2651 = load i32, ptr %2650, align 4, !tbaa !44
  %2652 = icmp ugt i32 %2648, %2651
  br i1 %2652, label %2653, label %2657

2653:                                             ; preds = %2647
  %2654 = load ptr, ptr %6, align 8, !tbaa !5
  %2655 = getelementptr inbounds %struct.inflate_state, ptr %2654, i32 0, i32 17
  %2656 = load i32, ptr %2655, align 4, !tbaa !44
  store i32 %2656, ptr %15, align 4, !tbaa !9
  br label %2657

2657:                                             ; preds = %2653, %2647
  br label %2669

2658:                                             ; preds = %2583
  %2659 = load ptr, ptr %8, align 8, !tbaa !5
  %2660 = load ptr, ptr %6, align 8, !tbaa !5
  %2661 = getelementptr inbounds %struct.inflate_state, ptr %2660, i32 0, i32 18
  %2662 = load i32, ptr %2661, align 8, !tbaa !90
  %2663 = zext i32 %2662 to i64
  %2664 = sub i64 0, %2663
  %2665 = getelementptr inbounds i8, ptr %2659, i64 %2664
  store ptr %2665, ptr %16, align 8, !tbaa !5
  %2666 = load ptr, ptr %6, align 8, !tbaa !5
  %2667 = getelementptr inbounds %struct.inflate_state, ptr %2666, i32 0, i32 17
  %2668 = load i32, ptr %2667, align 4, !tbaa !44
  store i32 %2668, ptr %15, align 4, !tbaa !9
  br label %2669

2669:                                             ; preds = %2658, %2657
  %2670 = load i32, ptr %15, align 4, !tbaa !9
  %2671 = load i32, ptr %10, align 4, !tbaa !9
  %2672 = icmp ugt i32 %2670, %2671
  br i1 %2672, label %2673, label %2675

2673:                                             ; preds = %2669
  %2674 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %2674, ptr %15, align 4, !tbaa !9
  br label %2675

2675:                                             ; preds = %2673, %2669
  %2676 = load i32, ptr %15, align 4, !tbaa !9
  %2677 = load i32, ptr %10, align 4, !tbaa !9
  %2678 = sub i32 %2677, %2676
  store i32 %2678, ptr %10, align 4, !tbaa !9
  %2679 = load i32, ptr %15, align 4, !tbaa !9
  %2680 = load ptr, ptr %6, align 8, !tbaa !5
  %2681 = getelementptr inbounds %struct.inflate_state, ptr %2680, i32 0, i32 17
  %2682 = load i32, ptr %2681, align 4, !tbaa !44
  %2683 = sub i32 %2682, %2679
  store i32 %2683, ptr %2681, align 4, !tbaa !44
  br label %2684

2684:                                             ; preds = %2690, %2675
  %2685 = load ptr, ptr %16, align 8, !tbaa !5
  %2686 = getelementptr inbounds i8, ptr %2685, i32 1
  store ptr %2686, ptr %16, align 8, !tbaa !5
  %2687 = load i8, ptr %2685, align 1, !tbaa !24
  %2688 = load ptr, ptr %8, align 8, !tbaa !5
  %2689 = getelementptr inbounds i8, ptr %2688, i32 1
  store ptr %2689, ptr %8, align 8, !tbaa !5
  store i8 %2687, ptr %2688, align 1, !tbaa !24
  br label %2690

2690:                                             ; preds = %2684
  %2691 = load i32, ptr %15, align 4, !tbaa !9
  %2692 = add i32 %2691, -1
  store i32 %2692, ptr %15, align 4, !tbaa !9
  %2693 = icmp ne i32 %2692, 0
  br i1 %2693, label %2684, label %2694, !llvm.loop !97

2694:                                             ; preds = %2690
  %2695 = load ptr, ptr %6, align 8, !tbaa !5
  %2696 = getelementptr inbounds %struct.inflate_state, ptr %2695, i32 0, i32 17
  %2697 = load i32, ptr %2696, align 4, !tbaa !44
  %2698 = icmp eq i32 %2697, 0
  br i1 %2698, label %2699, label %2702

2699:                                             ; preds = %2694
  %2700 = load ptr, ptr %6, align 8, !tbaa !5
  %2701 = getelementptr inbounds %struct.inflate_state, ptr %2700, i32 0, i32 1
  store i32 16200, ptr %2701, align 8, !tbaa !17
  br label %2702

2702:                                             ; preds = %2699, %2694
  br label %2924

2703:                                             ; preds = %77
  %2704 = load i32, ptr %10, align 4, !tbaa !9
  %2705 = icmp eq i32 %2704, 0
  br i1 %2705, label %2706, label %2707

2706:                                             ; preds = %2703
  br label %2925

2707:                                             ; preds = %2703
  %2708 = load ptr, ptr %6, align 8, !tbaa !5
  %2709 = getelementptr inbounds %struct.inflate_state, ptr %2708, i32 0, i32 17
  %2710 = load i32, ptr %2709, align 4, !tbaa !44
  %2711 = trunc i32 %2710 to i8
  %2712 = load ptr, ptr %8, align 8, !tbaa !5
  %2713 = getelementptr inbounds i8, ptr %2712, i32 1
  store ptr %2713, ptr %8, align 8, !tbaa !5
  store i8 %2711, ptr %2712, align 1, !tbaa !24
  %2714 = load i32, ptr %10, align 4, !tbaa !9
  %2715 = add i32 %2714, -1
  store i32 %2715, ptr %10, align 4, !tbaa !9
  %2716 = load ptr, ptr %6, align 8, !tbaa !5
  %2717 = getelementptr inbounds %struct.inflate_state, ptr %2716, i32 0, i32 1
  store i32 16200, ptr %2717, align 8, !tbaa !17
  br label %2924

2718:                                             ; preds = %77
  %2719 = load ptr, ptr %6, align 8, !tbaa !5
  %2720 = getelementptr inbounds %struct.inflate_state, ptr %2719, i32 0, i32 3
  %2721 = load i32, ptr %2720, align 8, !tbaa !23
  %2722 = icmp ne i32 %2721, 0
  br i1 %2722, label %2723, label %2853

2723:                                             ; preds = %2718
  br label %2724

2724:                                             ; preds = %2723
  br label %2725

2725:                                             ; preds = %2748, %2724
  %2726 = load i32, ptr %12, align 4, !tbaa !9
  %2727 = icmp ult i32 %2726, 32
  br i1 %2727, label %2728, label %2749

2728:                                             ; preds = %2725
  br label %2729

2729:                                             ; preds = %2728
  %2730 = load i32, ptr %9, align 4, !tbaa !9
  %2731 = icmp eq i32 %2730, 0
  br i1 %2731, label %2732, label %2733

2732:                                             ; preds = %2729
  br label %2925

2733:                                             ; preds = %2729
  %2734 = load i32, ptr %9, align 4, !tbaa !9
  %2735 = add i32 %2734, -1
  store i32 %2735, ptr %9, align 4, !tbaa !9
  %2736 = load ptr, ptr %7, align 8, !tbaa !5
  %2737 = getelementptr inbounds i8, ptr %2736, i32 1
  store ptr %2737, ptr %7, align 8, !tbaa !5
  %2738 = load i8, ptr %2736, align 1, !tbaa !24
  %2739 = zext i8 %2738 to i64
  %2740 = load i32, ptr %12, align 4, !tbaa !9
  %2741 = zext i32 %2740 to i64
  %2742 = shl i64 %2739, %2741
  %2743 = load i64, ptr %11, align 8, !tbaa !21
  %2744 = add i64 %2743, %2742
  store i64 %2744, ptr %11, align 8, !tbaa !21
  %2745 = load i32, ptr %12, align 4, !tbaa !9
  %2746 = add i32 %2745, 8
  store i32 %2746, ptr %12, align 4, !tbaa !9
  br label %2747

2747:                                             ; preds = %2733
  br label %2748

2748:                                             ; preds = %2747
  br label %2725, !llvm.loop !98

2749:                                             ; preds = %2725
  br label %2750

2750:                                             ; preds = %2749
  br label %2751

2751:                                             ; preds = %2750
  %2752 = load i32, ptr %10, align 4, !tbaa !9
  %2753 = load i32, ptr %14, align 4, !tbaa !9
  %2754 = sub i32 %2753, %2752
  store i32 %2754, ptr %14, align 4, !tbaa !9
  %2755 = load i32, ptr %14, align 4, !tbaa !9
  %2756 = zext i32 %2755 to i64
  %2757 = load ptr, ptr %4, align 8, !tbaa !5
  %2758 = getelementptr inbounds %struct.z_stream_s, ptr %2757, i32 0, i32 5
  %2759 = load i64, ptr %2758, align 8, !tbaa !99
  %2760 = add i64 %2759, %2756
  store i64 %2760, ptr %2758, align 8, !tbaa !99
  %2761 = load i32, ptr %14, align 4, !tbaa !9
  %2762 = zext i32 %2761 to i64
  %2763 = load ptr, ptr %6, align 8, !tbaa !5
  %2764 = getelementptr inbounds %struct.inflate_state, ptr %2763, i32 0, i32 8
  %2765 = load i64, ptr %2764, align 8, !tbaa !100
  %2766 = add i64 %2765, %2762
  store i64 %2766, ptr %2764, align 8, !tbaa !100
  %2767 = load ptr, ptr %6, align 8, !tbaa !5
  %2768 = getelementptr inbounds %struct.inflate_state, ptr %2767, i32 0, i32 3
  %2769 = load i32, ptr %2768, align 8, !tbaa !23
  %2770 = and i32 %2769, 4
  %2771 = icmp ne i32 %2770, 0
  br i1 %2771, label %2772, label %2808

2772:                                             ; preds = %2751
  %2773 = load i32, ptr %14, align 4, !tbaa !9
  %2774 = icmp ne i32 %2773, 0
  br i1 %2774, label %2775, label %2808

2775:                                             ; preds = %2772
  %2776 = load ptr, ptr %6, align 8, !tbaa !5
  %2777 = getelementptr inbounds %struct.inflate_state, ptr %2776, i32 0, i32 5
  %2778 = load i32, ptr %2777, align 8, !tbaa !34
  %2779 = icmp ne i32 %2778, 0
  br i1 %2779, label %2780, label %2791

2780:                                             ; preds = %2775
  %2781 = load ptr, ptr %6, align 8, !tbaa !5
  %2782 = getelementptr inbounds %struct.inflate_state, ptr %2781, i32 0, i32 7
  %2783 = load i64, ptr %2782, align 8, !tbaa !28
  %2784 = load ptr, ptr %8, align 8, !tbaa !5
  %2785 = load i32, ptr %14, align 4, !tbaa !9
  %2786 = zext i32 %2785 to i64
  %2787 = sub i64 0, %2786
  %2788 = getelementptr inbounds i8, ptr %2784, i64 %2787
  %2789 = load i32, ptr %14, align 4, !tbaa !9
  %2790 = call i64 @crc32(i64 noundef %2783, ptr noundef %2788, i32 noundef %2789)
  br label %2802

2791:                                             ; preds = %2775
  %2792 = load ptr, ptr %6, align 8, !tbaa !5
  %2793 = getelementptr inbounds %struct.inflate_state, ptr %2792, i32 0, i32 7
  %2794 = load i64, ptr %2793, align 8, !tbaa !28
  %2795 = load ptr, ptr %8, align 8, !tbaa !5
  %2796 = load i32, ptr %14, align 4, !tbaa !9
  %2797 = zext i32 %2796 to i64
  %2798 = sub i64 0, %2797
  %2799 = getelementptr inbounds i8, ptr %2795, i64 %2798
  %2800 = load i32, ptr %14, align 4, !tbaa !9
  %2801 = call i64 @adler32(i64 noundef %2794, ptr noundef %2799, i32 noundef %2800)
  br label %2802

2802:                                             ; preds = %2791, %2780
  %2803 = phi i64 [ %2790, %2780 ], [ %2801, %2791 ]
  %2804 = load ptr, ptr %6, align 8, !tbaa !5
  %2805 = getelementptr inbounds %struct.inflate_state, ptr %2804, i32 0, i32 7
  store i64 %2803, ptr %2805, align 8, !tbaa !28
  %2806 = load ptr, ptr %4, align 8, !tbaa !5
  %2807 = getelementptr inbounds %struct.z_stream_s, ptr %2806, i32 0, i32 12
  store i64 %2803, ptr %2807, align 8, !tbaa !35
  br label %2808

2808:                                             ; preds = %2802, %2772, %2751
  %2809 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %2809, ptr %14, align 4, !tbaa !9
  %2810 = load ptr, ptr %6, align 8, !tbaa !5
  %2811 = getelementptr inbounds %struct.inflate_state, ptr %2810, i32 0, i32 3
  %2812 = load i32, ptr %2811, align 8, !tbaa !23
  %2813 = and i32 %2812, 4
  %2814 = icmp ne i32 %2813, 0
  br i1 %2814, label %2815, label %2849

2815:                                             ; preds = %2808
  %2816 = load ptr, ptr %6, align 8, !tbaa !5
  %2817 = getelementptr inbounds %struct.inflate_state, ptr %2816, i32 0, i32 5
  %2818 = load i32, ptr %2817, align 8, !tbaa !34
  %2819 = icmp ne i32 %2818, 0
  br i1 %2819, label %2820, label %2822

2820:                                             ; preds = %2815
  %2821 = load i64, ptr %11, align 8, !tbaa !21
  br label %2838

2822:                                             ; preds = %2815
  %2823 = load i64, ptr %11, align 8, !tbaa !21
  %2824 = lshr i64 %2823, 24
  %2825 = and i64 %2824, 255
  %2826 = load i64, ptr %11, align 8, !tbaa !21
  %2827 = lshr i64 %2826, 8
  %2828 = and i64 %2827, 65280
  %2829 = add i64 %2825, %2828
  %2830 = load i64, ptr %11, align 8, !tbaa !21
  %2831 = and i64 %2830, 65280
  %2832 = shl i64 %2831, 8
  %2833 = add i64 %2829, %2832
  %2834 = load i64, ptr %11, align 8, !tbaa !21
  %2835 = and i64 %2834, 255
  %2836 = shl i64 %2835, 24
  %2837 = add i64 %2833, %2836
  br label %2838

2838:                                             ; preds = %2822, %2820
  %2839 = phi i64 [ %2821, %2820 ], [ %2837, %2822 ]
  %2840 = load ptr, ptr %6, align 8, !tbaa !5
  %2841 = getelementptr inbounds %struct.inflate_state, ptr %2840, i32 0, i32 7
  %2842 = load i64, ptr %2841, align 8, !tbaa !28
  %2843 = icmp ne i64 %2839, %2842
  br i1 %2843, label %2844, label %2849

2844:                                             ; preds = %2838
  %2845 = load ptr, ptr %4, align 8, !tbaa !5
  %2846 = getelementptr inbounds %struct.z_stream_s, ptr %2845, i32 0, i32 6
  store ptr @.str.17, ptr %2846, align 8, !tbaa !32
  %2847 = load ptr, ptr %6, align 8, !tbaa !5
  %2848 = getelementptr inbounds %struct.inflate_state, ptr %2847, i32 0, i32 1
  store i32 16209, ptr %2848, align 8, !tbaa !17
  br label %2924

2849:                                             ; preds = %2838, %2808
  br label %2850

2850:                                             ; preds = %2849
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %2851

2851:                                             ; preds = %2850
  br label %2852

2852:                                             ; preds = %2851
  br label %2853

2853:                                             ; preds = %2852, %2718
  %2854 = load ptr, ptr %6, align 8, !tbaa !5
  %2855 = getelementptr inbounds %struct.inflate_state, ptr %2854, i32 0, i32 1
  store i32 16207, ptr %2855, align 8, !tbaa !17
  br label %2856

2856:                                             ; preds = %2853, %77
  %2857 = load ptr, ptr %6, align 8, !tbaa !5
  %2858 = getelementptr inbounds %struct.inflate_state, ptr %2857, i32 0, i32 3
  %2859 = load i32, ptr %2858, align 8, !tbaa !23
  %2860 = icmp ne i32 %2859, 0
  br i1 %2860, label %2861, label %2916

2861:                                             ; preds = %2856
  %2862 = load ptr, ptr %6, align 8, !tbaa !5
  %2863 = getelementptr inbounds %struct.inflate_state, ptr %2862, i32 0, i32 5
  %2864 = load i32, ptr %2863, align 8, !tbaa !34
  %2865 = icmp ne i32 %2864, 0
  br i1 %2865, label %2866, label %2916

2866:                                             ; preds = %2861
  br label %2867

2867:                                             ; preds = %2866
  br label %2868

2868:                                             ; preds = %2891, %2867
  %2869 = load i32, ptr %12, align 4, !tbaa !9
  %2870 = icmp ult i32 %2869, 32
  br i1 %2870, label %2871, label %2892

2871:                                             ; preds = %2868
  br label %2872

2872:                                             ; preds = %2871
  %2873 = load i32, ptr %9, align 4, !tbaa !9
  %2874 = icmp eq i32 %2873, 0
  br i1 %2874, label %2875, label %2876

2875:                                             ; preds = %2872
  br label %2925

2876:                                             ; preds = %2872
  %2877 = load i32, ptr %9, align 4, !tbaa !9
  %2878 = add i32 %2877, -1
  store i32 %2878, ptr %9, align 4, !tbaa !9
  %2879 = load ptr, ptr %7, align 8, !tbaa !5
  %2880 = getelementptr inbounds i8, ptr %2879, i32 1
  store ptr %2880, ptr %7, align 8, !tbaa !5
  %2881 = load i8, ptr %2879, align 1, !tbaa !24
  %2882 = zext i8 %2881 to i64
  %2883 = load i32, ptr %12, align 4, !tbaa !9
  %2884 = zext i32 %2883 to i64
  %2885 = shl i64 %2882, %2884
  %2886 = load i64, ptr %11, align 8, !tbaa !21
  %2887 = add i64 %2886, %2885
  store i64 %2887, ptr %11, align 8, !tbaa !21
  %2888 = load i32, ptr %12, align 4, !tbaa !9
  %2889 = add i32 %2888, 8
  store i32 %2889, ptr %12, align 4, !tbaa !9
  br label %2890

2890:                                             ; preds = %2876
  br label %2891

2891:                                             ; preds = %2890
  br label %2868, !llvm.loop !101

2892:                                             ; preds = %2868
  br label %2893

2893:                                             ; preds = %2892
  br label %2894

2894:                                             ; preds = %2893
  %2895 = load ptr, ptr %6, align 8, !tbaa !5
  %2896 = getelementptr inbounds %struct.inflate_state, ptr %2895, i32 0, i32 3
  %2897 = load i32, ptr %2896, align 8, !tbaa !23
  %2898 = and i32 %2897, 4
  %2899 = icmp ne i32 %2898, 0
  br i1 %2899, label %2900, label %2912

2900:                                             ; preds = %2894
  %2901 = load i64, ptr %11, align 8, !tbaa !21
  %2902 = load ptr, ptr %6, align 8, !tbaa !5
  %2903 = getelementptr inbounds %struct.inflate_state, ptr %2902, i32 0, i32 8
  %2904 = load i64, ptr %2903, align 8, !tbaa !100
  %2905 = and i64 %2904, 4294967295
  %2906 = icmp ne i64 %2901, %2905
  br i1 %2906, label %2907, label %2912

2907:                                             ; preds = %2900
  %2908 = load ptr, ptr %4, align 8, !tbaa !5
  %2909 = getelementptr inbounds %struct.z_stream_s, ptr %2908, i32 0, i32 6
  store ptr @.str.18, ptr %2909, align 8, !tbaa !32
  %2910 = load ptr, ptr %6, align 8, !tbaa !5
  %2911 = getelementptr inbounds %struct.inflate_state, ptr %2910, i32 0, i32 1
  store i32 16209, ptr %2911, align 8, !tbaa !17
  br label %2924

2912:                                             ; preds = %2900, %2894
  br label %2913

2913:                                             ; preds = %2912
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %2914

2914:                                             ; preds = %2913
  br label %2915

2915:                                             ; preds = %2914
  br label %2916

2916:                                             ; preds = %2915, %2861, %2856
  %2917 = load ptr, ptr %6, align 8, !tbaa !5
  %2918 = getelementptr inbounds %struct.inflate_state, ptr %2917, i32 0, i32 1
  store i32 16208, ptr %2918, align 8, !tbaa !17
  br label %2919

2919:                                             ; preds = %2916, %77
  store i32 1, ptr %20, align 4, !tbaa !9
  br label %2925

2920:                                             ; preds = %77
  store i32 -3, ptr %20, align 4, !tbaa !9
  br label %2925

2921:                                             ; preds = %77
  store i32 -4, ptr %3, align 4
  store i32 1, ptr %22, align 4
  br label %3108

2922:                                             ; preds = %77
  br label %2923

2923:                                             ; preds = %2922, %77
  store i32 -2, ptr %3, align 4
  store i32 1, ptr %22, align 4
  br label %3108

2924:                                             ; preds = %2907, %2844, %2707, %2702, %2608, %2487, %2240, %2229, %2220, %2053, %1980, %1946, %1912, %1904, %1562, %1448, %1368, %1344, %1299, %1251, %1171, %1050, %1022, %307, %296, %257, %231, %197, %187, %157, %86
  br label %77

2925:                                             ; preds = %2920, %2919, %2875, %2732, %2706, %2582, %2523, %2421, %2357, %2271, %2150, %2081, %1990, %1816, %1758, %1675, %1610, %1476, %1380, %1343, %1317, %1273, %1234, %1183, %1152, %1067, %990, %959, %873, %846, %760, %744, %544, %454, %371, %267, %98
  br label %2926

2926:                                             ; preds = %2925
  %2927 = load ptr, ptr %8, align 8, !tbaa !5
  %2928 = load ptr, ptr %4, align 8, !tbaa !5
  %2929 = getelementptr inbounds %struct.z_stream_s, ptr %2928, i32 0, i32 3
  store ptr %2927, ptr %2929, align 8, !tbaa !11
  %2930 = load i32, ptr %10, align 4, !tbaa !9
  %2931 = load ptr, ptr %4, align 8, !tbaa !5
  %2932 = getelementptr inbounds %struct.z_stream_s, ptr %2931, i32 0, i32 4
  store i32 %2930, ptr %2932, align 8, !tbaa !19
  %2933 = load ptr, ptr %7, align 8, !tbaa !5
  %2934 = load ptr, ptr %4, align 8, !tbaa !5
  %2935 = getelementptr inbounds %struct.z_stream_s, ptr %2934, i32 0, i32 0
  store ptr %2933, ptr %2935, align 8, !tbaa !14
  %2936 = load i32, ptr %9, align 4, !tbaa !9
  %2937 = load ptr, ptr %4, align 8, !tbaa !5
  %2938 = getelementptr inbounds %struct.z_stream_s, ptr %2937, i32 0, i32 1
  store i32 %2936, ptr %2938, align 8, !tbaa !15
  %2939 = load i64, ptr %11, align 8, !tbaa !21
  %2940 = load ptr, ptr %6, align 8, !tbaa !5
  %2941 = getelementptr inbounds %struct.inflate_state, ptr %2940, i32 0, i32 15
  store i64 %2939, ptr %2941, align 8, !tbaa !20
  %2942 = load i32, ptr %12, align 4, !tbaa !9
  %2943 = load ptr, ptr %6, align 8, !tbaa !5
  %2944 = getelementptr inbounds %struct.inflate_state, ptr %2943, i32 0, i32 16
  store i32 %2942, ptr %2944, align 8, !tbaa !22
  br label %2945

2945:                                             ; preds = %2926
  br label %2946

2946:                                             ; preds = %2945
  %2947 = load ptr, ptr %6, align 8, !tbaa !5
  %2948 = getelementptr inbounds %struct.inflate_state, ptr %2947, i32 0, i32 11
  %2949 = load i32, ptr %2948, align 4, !tbaa !96
  %2950 = icmp ne i32 %2949, 0
  br i1 %2950, label %2970, label %2951

2951:                                             ; preds = %2946
  %2952 = load i32, ptr %14, align 4, !tbaa !9
  %2953 = load ptr, ptr %4, align 8, !tbaa !5
  %2954 = getelementptr inbounds %struct.z_stream_s, ptr %2953, i32 0, i32 4
  %2955 = load i32, ptr %2954, align 8, !tbaa !19
  %2956 = icmp ne i32 %2952, %2955
  br i1 %2956, label %2957, label %2986

2957:                                             ; preds = %2951
  %2958 = load ptr, ptr %6, align 8, !tbaa !5
  %2959 = getelementptr inbounds %struct.inflate_state, ptr %2958, i32 0, i32 1
  %2960 = load i32, ptr %2959, align 8, !tbaa !17
  %2961 = icmp ult i32 %2960, 16209
  br i1 %2961, label %2962, label %2986

2962:                                             ; preds = %2957
  %2963 = load ptr, ptr %6, align 8, !tbaa !5
  %2964 = getelementptr inbounds %struct.inflate_state, ptr %2963, i32 0, i32 1
  %2965 = load i32, ptr %2964, align 8, !tbaa !17
  %2966 = icmp ult i32 %2965, 16206
  br i1 %2966, label %2970, label %2967

2967:                                             ; preds = %2962
  %2968 = load i32, ptr %5, align 4, !tbaa !9
  %2969 = icmp ne i32 %2968, 4
  br i1 %2969, label %2970, label %2986

2970:                                             ; preds = %2967, %2962, %2946
  %2971 = load ptr, ptr %4, align 8, !tbaa !5
  %2972 = load ptr, ptr %4, align 8, !tbaa !5
  %2973 = getelementptr inbounds %struct.z_stream_s, ptr %2972, i32 0, i32 3
  %2974 = load ptr, ptr %2973, align 8, !tbaa !11
  %2975 = load i32, ptr %14, align 4, !tbaa !9
  %2976 = load ptr, ptr %4, align 8, !tbaa !5
  %2977 = getelementptr inbounds %struct.z_stream_s, ptr %2976, i32 0, i32 4
  %2978 = load i32, ptr %2977, align 8, !tbaa !19
  %2979 = sub i32 %2975, %2978
  %2980 = call i32 @updatewindow(ptr noundef %2971, ptr noundef %2974, i32 noundef %2979)
  %2981 = icmp ne i32 %2980, 0
  br i1 %2981, label %2982, label %2985

2982:                                             ; preds = %2970
  %2983 = load ptr, ptr %6, align 8, !tbaa !5
  %2984 = getelementptr inbounds %struct.inflate_state, ptr %2983, i32 0, i32 1
  store i32 16210, ptr %2984, align 8, !tbaa !17
  store i32 -4, ptr %3, align 4
  store i32 1, ptr %22, align 4
  br label %3108

2985:                                             ; preds = %2970
  br label %2986

2986:                                             ; preds = %2985, %2967, %2957, %2951
  %2987 = load ptr, ptr %4, align 8, !tbaa !5
  %2988 = getelementptr inbounds %struct.z_stream_s, ptr %2987, i32 0, i32 1
  %2989 = load i32, ptr %2988, align 8, !tbaa !15
  %2990 = load i32, ptr %13, align 4, !tbaa !9
  %2991 = sub i32 %2990, %2989
  store i32 %2991, ptr %13, align 4, !tbaa !9
  %2992 = load ptr, ptr %4, align 8, !tbaa !5
  %2993 = getelementptr inbounds %struct.z_stream_s, ptr %2992, i32 0, i32 4
  %2994 = load i32, ptr %2993, align 8, !tbaa !19
  %2995 = load i32, ptr %14, align 4, !tbaa !9
  %2996 = sub i32 %2995, %2994
  store i32 %2996, ptr %14, align 4, !tbaa !9
  %2997 = load i32, ptr %13, align 4, !tbaa !9
  %2998 = zext i32 %2997 to i64
  %2999 = load ptr, ptr %4, align 8, !tbaa !5
  %3000 = getelementptr inbounds %struct.z_stream_s, ptr %2999, i32 0, i32 2
  %3001 = load i64, ptr %3000, align 8, !tbaa !102
  %3002 = add i64 %3001, %2998
  store i64 %3002, ptr %3000, align 8, !tbaa !102
  %3003 = load i32, ptr %14, align 4, !tbaa !9
  %3004 = zext i32 %3003 to i64
  %3005 = load ptr, ptr %4, align 8, !tbaa !5
  %3006 = getelementptr inbounds %struct.z_stream_s, ptr %3005, i32 0, i32 5
  %3007 = load i64, ptr %3006, align 8, !tbaa !99
  %3008 = add i64 %3007, %3004
  store i64 %3008, ptr %3006, align 8, !tbaa !99
  %3009 = load i32, ptr %14, align 4, !tbaa !9
  %3010 = zext i32 %3009 to i64
  %3011 = load ptr, ptr %6, align 8, !tbaa !5
  %3012 = getelementptr inbounds %struct.inflate_state, ptr %3011, i32 0, i32 8
  %3013 = load i64, ptr %3012, align 8, !tbaa !100
  %3014 = add i64 %3013, %3010
  store i64 %3014, ptr %3012, align 8, !tbaa !100
  %3015 = load ptr, ptr %6, align 8, !tbaa !5
  %3016 = getelementptr inbounds %struct.inflate_state, ptr %3015, i32 0, i32 3
  %3017 = load i32, ptr %3016, align 8, !tbaa !23
  %3018 = and i32 %3017, 4
  %3019 = icmp ne i32 %3018, 0
  br i1 %3019, label %3020, label %3060

3020:                                             ; preds = %2986
  %3021 = load i32, ptr %14, align 4, !tbaa !9
  %3022 = icmp ne i32 %3021, 0
  br i1 %3022, label %3023, label %3060

3023:                                             ; preds = %3020
  %3024 = load ptr, ptr %6, align 8, !tbaa !5
  %3025 = getelementptr inbounds %struct.inflate_state, ptr %3024, i32 0, i32 5
  %3026 = load i32, ptr %3025, align 8, !tbaa !34
  %3027 = icmp ne i32 %3026, 0
  br i1 %3027, label %3028, label %3041

3028:                                             ; preds = %3023
  %3029 = load ptr, ptr %6, align 8, !tbaa !5
  %3030 = getelementptr inbounds %struct.inflate_state, ptr %3029, i32 0, i32 7
  %3031 = load i64, ptr %3030, align 8, !tbaa !28
  %3032 = load ptr, ptr %4, align 8, !tbaa !5
  %3033 = getelementptr inbounds %struct.z_stream_s, ptr %3032, i32 0, i32 3
  %3034 = load ptr, ptr %3033, align 8, !tbaa !11
  %3035 = load i32, ptr %14, align 4, !tbaa !9
  %3036 = zext i32 %3035 to i64
  %3037 = sub i64 0, %3036
  %3038 = getelementptr inbounds i8, ptr %3034, i64 %3037
  %3039 = load i32, ptr %14, align 4, !tbaa !9
  %3040 = call i64 @crc32(i64 noundef %3031, ptr noundef %3038, i32 noundef %3039)
  br label %3054

3041:                                             ; preds = %3023
  %3042 = load ptr, ptr %6, align 8, !tbaa !5
  %3043 = getelementptr inbounds %struct.inflate_state, ptr %3042, i32 0, i32 7
  %3044 = load i64, ptr %3043, align 8, !tbaa !28
  %3045 = load ptr, ptr %4, align 8, !tbaa !5
  %3046 = getelementptr inbounds %struct.z_stream_s, ptr %3045, i32 0, i32 3
  %3047 = load ptr, ptr %3046, align 8, !tbaa !11
  %3048 = load i32, ptr %14, align 4, !tbaa !9
  %3049 = zext i32 %3048 to i64
  %3050 = sub i64 0, %3049
  %3051 = getelementptr inbounds i8, ptr %3047, i64 %3050
  %3052 = load i32, ptr %14, align 4, !tbaa !9
  %3053 = call i64 @adler32(i64 noundef %3044, ptr noundef %3051, i32 noundef %3052)
  br label %3054

3054:                                             ; preds = %3041, %3028
  %3055 = phi i64 [ %3040, %3028 ], [ %3053, %3041 ]
  %3056 = load ptr, ptr %6, align 8, !tbaa !5
  %3057 = getelementptr inbounds %struct.inflate_state, ptr %3056, i32 0, i32 7
  store i64 %3055, ptr %3057, align 8, !tbaa !28
  %3058 = load ptr, ptr %4, align 8, !tbaa !5
  %3059 = getelementptr inbounds %struct.z_stream_s, ptr %3058, i32 0, i32 12
  store i64 %3055, ptr %3059, align 8, !tbaa !35
  br label %3060

3060:                                             ; preds = %3054, %3020, %2986
  %3061 = load ptr, ptr %6, align 8, !tbaa !5
  %3062 = getelementptr inbounds %struct.inflate_state, ptr %3061, i32 0, i32 16
  %3063 = load i32, ptr %3062, align 8, !tbaa !22
  %3064 = load ptr, ptr %6, align 8, !tbaa !5
  %3065 = getelementptr inbounds %struct.inflate_state, ptr %3064, i32 0, i32 2
  %3066 = load i32, ptr %3065, align 4, !tbaa !58
  %3067 = icmp ne i32 %3066, 0
  %3068 = zext i1 %3067 to i64
  %3069 = select i1 %3067, i32 64, i32 0
  %3070 = add nsw i32 %3063, %3069
  %3071 = load ptr, ptr %6, align 8, !tbaa !5
  %3072 = getelementptr inbounds %struct.inflate_state, ptr %3071, i32 0, i32 1
  %3073 = load i32, ptr %3072, align 8, !tbaa !17
  %3074 = icmp eq i32 %3073, 16191
  %3075 = zext i1 %3074 to i64
  %3076 = select i1 %3074, i32 128, i32 0
  %3077 = add nsw i32 %3070, %3076
  %3078 = load ptr, ptr %6, align 8, !tbaa !5
  %3079 = getelementptr inbounds %struct.inflate_state, ptr %3078, i32 0, i32 1
  %3080 = load i32, ptr %3079, align 8, !tbaa !17
  %3081 = icmp eq i32 %3080, 16199
  br i1 %3081, label %3087, label %3082

3082:                                             ; preds = %3060
  %3083 = load ptr, ptr %6, align 8, !tbaa !5
  %3084 = getelementptr inbounds %struct.inflate_state, ptr %3083, i32 0, i32 1
  %3085 = load i32, ptr %3084, align 8, !tbaa !17
  %3086 = icmp eq i32 %3085, 16194
  br label %3087

3087:                                             ; preds = %3082, %3060
  %3088 = phi i1 [ true, %3060 ], [ %3086, %3082 ]
  %3089 = zext i1 %3088 to i64
  %3090 = select i1 %3088, i32 256, i32 0
  %3091 = add nsw i32 %3077, %3090
  %3092 = load ptr, ptr %4, align 8, !tbaa !5
  %3093 = getelementptr inbounds %struct.z_stream_s, ptr %3092, i32 0, i32 11
  store i32 %3091, ptr %3093, align 8, !tbaa !103
  %3094 = load i32, ptr %13, align 4, !tbaa !9
  %3095 = icmp eq i32 %3094, 0
  br i1 %3095, label %3096, label %3099

3096:                                             ; preds = %3087
  %3097 = load i32, ptr %14, align 4, !tbaa !9
  %3098 = icmp eq i32 %3097, 0
  br i1 %3098, label %3102, label %3099

3099:                                             ; preds = %3096, %3087
  %3100 = load i32, ptr %5, align 4, !tbaa !9
  %3101 = icmp eq i32 %3100, 4
  br i1 %3101, label %3102, label %3106

3102:                                             ; preds = %3099, %3096
  %3103 = load i32, ptr %20, align 4, !tbaa !9
  %3104 = icmp eq i32 %3103, 0
  br i1 %3104, label %3105, label %3106

3105:                                             ; preds = %3102
  store i32 -5, ptr %20, align 4, !tbaa !9
  br label %3106

3106:                                             ; preds = %3105, %3102, %3099
  %3107 = load i32, ptr %20, align 4, !tbaa !9
  store i32 %3107, ptr %3, align 4
  store i32 1, ptr %22, align 4
  br label %3108

3108:                                             ; preds = %3106, %2982, %2923, %2921, %1137, %41
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #4
  %3109 = load i32, ptr %3, align 4
  ret i32 %3109
}

declare i64 @crc32(i64 noundef, ptr noundef, i32 noundef) #2

declare i64 @adler32(i64 noundef, ptr noundef, i32 noundef) #2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

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

declare i32 @inflate_table(i32 noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @inflate_fast(ptr noundef, i32 noundef) #2

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { "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: readwrite) }
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 24}
!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 = !{!12, !10, i64 8}
!16 = !{!12, !6, i64 56}
!17 = !{!18, !10, i64 8}
!18 = !{!"inflate_state", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !13, i64 32, !13, i64 40, !6, i64 48, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !6, i64 72, !13, i64 80, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !6, i64 104, !6, i64 112, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !6, i64 144, !7, i64 152, !7, i64 792, !7, i64 1368, !10, i64 9064, !10, i64 9068, !10, i64 9072}
!19 = !{!12, !10, i64 32}
!20 = !{!18, !13, i64 80}
!21 = !{!13, !13, i64 0}
!22 = !{!18, !10, i64 88}
!23 = !{!18, !10, i64 16}
!24 = !{!7, !7, i64 0}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = !{!18, !10, i64 56}
!28 = !{!18, !13, i64 32}
!29 = !{!18, !6, i64 48}
!30 = !{!31, !10, i64 72}
!31 = !{!"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}
!32 = !{!12, !6, i64 48}
!33 = !{!18, !10, i64 28}
!34 = !{!18, !10, i64 24}
!35 = !{!12, !13, i64 96}
!36 = distinct !{!36, !26}
!37 = !{!31, !10, i64 0}
!38 = distinct !{!38, !26}
!39 = !{!31, !13, i64 8}
!40 = distinct !{!40, !26}
!41 = !{!31, !10, i64 16}
!42 = !{!31, !10, i64 20}
!43 = distinct !{!43, !26}
!44 = !{!18, !10, i64 92}
!45 = !{!31, !10, i64 32}
!46 = !{!31, !6, i64 24}
!47 = !{!31, !10, i64 36}
!48 = !{!31, !6, i64 40}
!49 = !{!31, !10, i64 48}
!50 = distinct !{!50, !26}
!51 = !{!31, !6, i64 56}
!52 = !{!31, !10, i64 64}
!53 = distinct !{!53, !26}
!54 = distinct !{!54, !26}
!55 = !{!31, !10, i64 68}
!56 = distinct !{!56, !26}
!57 = !{!18, !10, i64 20}
!58 = !{!18, !10, i64 12}
!59 = distinct !{!59, !26}
!60 = distinct !{!60, !26}
!61 = distinct !{!61, !26}
!62 = !{!18, !10, i64 132}
!63 = !{!18, !10, i64 136}
!64 = !{!18, !10, i64 128}
!65 = !{!18, !10, i64 140}
!66 = distinct !{!66, !26}
!67 = !{!68, !68, i64 0}
!68 = !{!"short", !7, i64 0}
!69 = distinct !{!69, !26}
!70 = distinct !{!70, !26}
!71 = !{!18, !6, i64 144}
!72 = !{!18, !6, i64 104}
!73 = !{!18, !10, i64 120}
!74 = !{i64 0, i64 1, !24, i64 1, i64 1, !24, i64 2, i64 2, !67}
!75 = !{!76, !7, i64 1}
!76 = !{!"", !7, i64 0, !7, i64 1, !68, i64 2}
!77 = !{!76, !68, i64 2}
!78 = distinct !{!78, !26}
!79 = distinct !{!79, !26}
!80 = distinct !{!80, !26}
!81 = distinct !{!81, !26}
!82 = distinct !{!82, !26}
!83 = !{!18, !6, i64 112}
!84 = !{!18, !10, i64 124}
!85 = !{!18, !10, i64 9068}
!86 = !{!76, !7, i64 0}
!87 = !{!18, !10, i64 100}
!88 = distinct !{!88, !26}
!89 = !{!18, !10, i64 9072}
!90 = !{!18, !10, i64 96}
!91 = distinct !{!91, !26}
!92 = !{!18, !10, i64 64}
!93 = !{!18, !10, i64 9064}
!94 = !{!18, !10, i64 68}
!95 = !{!18, !6, i64 72}
!96 = !{!18, !10, i64 60}
!97 = distinct !{!97, !26}
!98 = distinct !{!98, !26}
!99 = !{!12, !13, i64 40}
!100 = !{!18, !13, i64 40}
!101 = distinct !{!101, !26}
!102 = !{!12, !13, i64 16}
!103 = !{!12, !10, i64 88}


; 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.code = type { i8, i8, i16 }

@inflate.order = external hidden local_unnamed_addr constant [19 x i16], align 16
@.str.1 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [23 x i8], align 1

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

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @inflate(ptr noundef %0, i32 noundef %1) local_unnamed_addr #1 {
  %3 = alloca [4 x i8], align 1
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #5
  %4 = tail call i32 @inflateStateCheck(ptr noundef %0)
  %.not = icmp eq i32 %4, 0
  br i1 %.not, label %5, label %.loopexit1314

5:                                                ; preds = %2
  %6 = getelementptr inbounds i8, ptr %0, i64 24
  %7 = load ptr, ptr %6, align 8, !tbaa !5
  %8 = icmp eq ptr %7, null
  br i1 %8, label %.loopexit1314, label %9

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

12:                                               ; preds = %9
  %13 = getelementptr inbounds i8, ptr %0, i64 8
  %14 = load i32, ptr %13, align 8, !tbaa !13
  %.not1172 = icmp eq i32 %14, 0
  br i1 %.not1172, label %15, label %.loopexit1314

15:                                               ; preds = %12, %9
  %16 = getelementptr inbounds i8, ptr %0, i64 56
  %17 = load ptr, ptr %16, align 8, !tbaa !14
  %18 = getelementptr inbounds i8, ptr %17, i64 8
  %19 = load i32, ptr %18, align 8, !tbaa !15
  %20 = icmp eq i32 %19, 16191
  br i1 %20, label %21, label %.split2333

21:                                               ; preds = %15
  store i32 16192, ptr %18, align 8, !tbaa !15
  br label %.split2333

.split2333:                                       ; preds = %15, %21
  %22 = phi i32 [ %19, %15 ], [ 16192, %21 ]
  %23 = getelementptr inbounds i8, ptr %0, i64 32
  %24 = load i32, ptr %23, align 8, !tbaa !17
  %25 = getelementptr inbounds i8, ptr %0, i64 8
  %26 = load i32, ptr %25, align 8, !tbaa !13
  %27 = getelementptr inbounds i8, ptr %17, i64 80
  %28 = load i64, ptr %27, align 8, !tbaa !18
  %29 = getelementptr inbounds i8, ptr %17, i64 88
  %30 = load i32, ptr %29, align 8, !tbaa !19
  %31 = getelementptr inbounds i8, ptr %17, i64 16
  %32 = getelementptr inbounds i8, ptr %0, i64 40
  %33 = getelementptr inbounds i8, ptr %17, i64 40
  %34 = getelementptr inbounds i8, ptr %17, i64 24
  %35 = getelementptr inbounds i8, ptr %17, i64 32
  %36 = getelementptr inbounds i8, ptr %0, i64 96
  %37 = getelementptr inbounds i8, ptr %0, i64 48
  %38 = getelementptr inbounds i8, ptr %17, i64 92
  %39 = getelementptr inbounds i8, ptr %17, i64 132
  %40 = getelementptr inbounds i8, ptr %17, i64 136
  %41 = getelementptr inbounds i8, ptr %17, i64 128
  %42 = getelementptr inbounds i8, ptr %17, i64 140
  %43 = getelementptr inbounds i8, ptr %17, i64 152
  %44 = getelementptr inbounds i8, ptr %17, i64 1368
  %45 = getelementptr inbounds i8, ptr %17, i64 144
  %46 = getelementptr inbounds i8, ptr %17, i64 104
  %47 = getelementptr inbounds i8, ptr %17, i64 120
  %48 = getelementptr inbounds i8, ptr %17, i64 792
  %49 = getelementptr inbounds i8, ptr %17, i64 664
  %50 = getelementptr inbounds i8, ptr %17, i64 112
  %51 = getelementptr inbounds i8, ptr %17, i64 124
  %52 = icmp eq i32 %1, 6
  %53 = getelementptr inbounds i8, ptr %17, i64 9068
  %54 = getelementptr inbounds i8, ptr %17, i64 100
  %55 = getelementptr inbounds i8, ptr %17, i64 9072
  %56 = getelementptr inbounds i8, ptr %17, i64 96
  %57 = getelementptr inbounds i8, ptr %17, i64 64
  %58 = getelementptr inbounds i8, ptr %17, i64 9064
  %59 = getelementptr inbounds i8, ptr %17, i64 68
  %60 = getelementptr inbounds i8, ptr %17, i64 72
  %61 = getelementptr inbounds i8, ptr %17, i64 60
  %62 = getelementptr inbounds i8, ptr %17, i64 20
  %63 = add i32 %1, -5
  %or.cond3 = icmp ult i32 %63, 2
  %64 = getelementptr inbounds i8, ptr %17, i64 12
  %65 = getelementptr inbounds i8, ptr %17, i64 48
  %66 = getelementptr inbounds i8, ptr %3, i64 1
  %67 = getelementptr inbounds i8, ptr %3, i64 2
  %68 = getelementptr inbounds i8, ptr %3, i64 3
  %69 = getelementptr inbounds i8, ptr %17, i64 56
  %70 = getelementptr inbounds i8, ptr %17, i64 28
  br label %71

71:                                               ; preds = %.thread, %.split2333
  %72 = phi i32 [ %22, %.split2333 ], [ %.pre, %.thread ]
  %.01055 = phi ptr [ %10, %.split2333 ], [ %.631118, %.thread ]
  %.01052 = phi ptr [ %7, %.split2333 ], [ %.21054, %.thread ]
  %.0991 = phi i32 [ %26, %.split2333 ], [ %.63, %.thread ]
  %.0989 = phi i32 [ %24, %.split2333 ], [ %.1990, %.thread ]
  %.0928 = phi i64 [ %28, %.split2333 ], [ %.59987, %.thread ]
  %.0917 = phi i32 [ %30, %.split2333 ], [ %.59, %.thread ]
  %.0911 = phi i32 [ %24, %.split2333 ], [ %.4915, %.thread ]
  %.0 = phi i32 [ 0, %.split2333 ], [ %.8, %.thread ]
  %.010523741 = ptrtoint ptr %.01052 to i64
  switch i32 %72, label %.loopexit1314 [
    i32 16180, label %82
    i32 16181, label %.preheader1289
    i32 16182, label %190
    i32 16183, label %247
    i32 16184, label %287
    i32 16185, label %333
    i32 16186, label %376
    i32 16187, label %420
    i32 16188, label %464
    i32 16189, label %.preheader1293
    i32 16190, label %537
    i32 16191, label %543
    i32 16192, label %544
    i32 16193, label %575
    i32 16194, label %625
    i32 16195, label %626
    i32 16196, label %.preheader1307
    i32 16197, label %.split
    i32 16198, label %._crit_edge2851
    i32 16199, label %887
    i32 16200, label %888
    i32 16201, label %._crit_edge2854
    i32 16202, label %1006
    i32 16203, label %._crit_edge2859
    i32 16204, label %1106
    i32 16205, label %1182
    i32 16206, label %1189
    i32 16207, label %._crit_edge2847
    i32 16208, label %.loopexit1270.loopexit3771
    i32 16209, label %.loopexit1270
    i32 16210, label %.loopexit1314.loopexit
  ]

._crit_edge2859:                                  ; preds = %71
  %.pre2860 = load i32, ptr %54, align 4, !tbaa !20
  br label %1081

._crit_edge2854:                                  ; preds = %71
  %.pre2855 = load i32, ptr %54, align 4, !tbaa !20
  br label %980

._crit_edge2851:                                  ; preds = %71
  %.promoted1991.pre = load i32, ptr %42, align 4, !tbaa !21
  br label %704

._crit_edge2847:                                  ; preds = %71
  %.pre2848 = load i32, ptr %31, align 8, !tbaa !22
  br label %1259

.preheader1307:                                   ; preds = %71
  %73 = icmp ult i32 %.0917, 14
  br i1 %73, label %.lr.ph1766.preheader, label %._crit_edge1767

.lr.ph1766.preheader:                             ; preds = %.preheader1307
  %74 = zext nneg i32 %.0917 to i64
  %75 = icmp eq i32 %.0991, 0
  br i1 %75, label %.loopexit1270.loopexit2353, label %639

.preheader1293:                                   ; preds = %71
  %76 = icmp ult i32 %.0917, 32
  br i1 %76, label %.lr.ph2110.preheader, label %._crit_edge2111

.lr.ph2110.preheader:                             ; preds = %.preheader1293
  %77 = zext nneg i32 %.0917 to i64
  %78 = icmp eq i32 %.0991, 0
  br i1 %78, label %.loopexit1270.loopexit2344, label %502

.preheader1289:                                   ; preds = %71
  %79 = icmp ult i32 %.0917, 16
  br i1 %79, label %.lr.ph2278.preheader, label %._crit_edge2279

.lr.ph2278.preheader:                             ; preds = %.preheader1289
  %80 = zext nneg i32 %.0917 to i64
  %81 = icmp eq i32 %.0991, 0
  br i1 %81, label %.loopexit1270.loopexit2343, label %151

82:                                               ; preds = %71
  %83 = load i32, ptr %31, align 8, !tbaa !22
  %84 = icmp eq i32 %83, 0
  br i1 %84, label %88, label %.preheader1279

.preheader1279:                                   ; preds = %82
  %85 = icmp ult i32 %.0917, 16
  br i1 %85, label %.lr.ph2327.preheader, label %._crit_edge2328

.lr.ph2327.preheader:                             ; preds = %.preheader1279
  %86 = zext nneg i32 %.0917 to i64
  %87 = icmp eq i32 %.0991, 0
  br i1 %87, label %.loopexit1270.loopexit2338, label %89

88:                                               ; preds = %82
  store i32 16192, ptr %18, align 8, !tbaa !15
  br label %.thread

89:                                               ; preds = %.lr.ph2327.preheader
  %90 = add i32 %.0991, -1
  %91 = getelementptr inbounds i8, ptr %.01055, i64 1
  %92 = load i8, ptr %.01055, align 1, !tbaa !23
  %93 = zext i8 %92 to i64
  %94 = shl nuw nsw i64 %93, %86
  %95 = add i64 %94, %.0928
  %indvars.iv.next2844 = add nuw nsw i64 %86, 8
  %96 = icmp ult i32 %.0917, 8
  br i1 %96, label %.lr.ph2327.1, label %._crit_edge2328.loopexit, !llvm.loop !24

.lr.ph2327.1:                                     ; preds = %89
  %97 = icmp eq i32 %90, 0
  br i1 %97, label %.loopexit1270.loopexit2338, label %98

98:                                               ; preds = %.lr.ph2327.1
  %99 = add i32 %.0991, -2
  %100 = getelementptr inbounds i8, ptr %.01055, i64 2
  %101 = load i8, ptr %91, align 1, !tbaa !23
  %102 = zext i8 %101 to i64
  %103 = shl nuw nsw i64 %102, %indvars.iv.next2844
  %104 = add i64 %103, %95
  %indvars.iv.next2844.1 = or disjoint i64 %86, 16
  br label %._crit_edge2328.loopexit

._crit_edge2328.loopexit:                         ; preds = %98, %89
  %.lcssa3924 = phi i32 [ %90, %89 ], [ %99, %98 ]
  %.lcssa3923 = phi ptr [ %91, %89 ], [ %100, %98 ]
  %.lcssa3922 = phi i64 [ %95, %89 ], [ %104, %98 ]
  %indvars.iv.next2844.lcssa = phi i64 [ %indvars.iv.next2844, %89 ], [ %indvars.iv.next2844.1, %98 ]
  %105 = trunc nuw nsw i64 %indvars.iv.next2844.lcssa to i32
  br label %._crit_edge2328

._crit_edge2328:                                  ; preds = %._crit_edge2328.loopexit, %.preheader1279
  %.11056.lcssa = phi ptr [ %.01055, %.preheader1279 ], [ %.lcssa3923, %._crit_edge2328.loopexit ]
  %.1992.lcssa = phi i32 [ %.0991, %.preheader1279 ], [ %.lcssa3924, %._crit_edge2328.loopexit ]
  %.1929.lcssa = phi i64 [ %.0928, %.preheader1279 ], [ %.lcssa3922, %._crit_edge2328.loopexit ]
  %.1918.lcssa = phi i32 [ %.0917, %.preheader1279 ], [ %105, %._crit_edge2328.loopexit ]
  %106 = and i32 %83, 2
  %107 = icmp ne i32 %106, 0
  %108 = icmp eq i64 %.1929.lcssa, 35615
  %or.cond = select i1 %107, i1 %108, i1 false
  br i1 %or.cond, label %109, label %116

109:                                              ; preds = %._crit_edge2328
  %110 = load i32, ptr %69, align 8, !tbaa !26
  %111 = icmp eq i32 %110, 0
  br i1 %111, label %112, label %113

112:                                              ; preds = %109
  store i32 15, ptr %69, align 8, !tbaa !26
  br label %113

113:                                              ; preds = %112, %109
  %114 = call i64 @crc32(i64 noundef 0, ptr noundef null, i32 noundef 0) #5
  store i64 %114, ptr %35, align 8, !tbaa !27
  store i8 31, ptr %3, align 1, !tbaa !23
  store i8 -117, ptr %66, align 1, !tbaa !23
  %115 = call i64 @crc32(i64 noundef %114, ptr noundef nonnull %3, i32 noundef 2) #5
  store i64 %115, ptr %35, align 8, !tbaa !27
  store i32 16181, ptr %18, align 8, !tbaa !15
  br label %.thread

116:                                              ; preds = %._crit_edge2328
  %117 = load ptr, ptr %65, align 8, !tbaa !28
  %.not1249 = icmp eq ptr %117, null
  br i1 %.not1249, label %120, label %118

118:                                              ; preds = %116
  %119 = getelementptr inbounds i8, ptr %117, i64 72
  store i32 -1, ptr %119, align 8, !tbaa !29
  br label %120

120:                                              ; preds = %118, %116
  %121 = and i32 %83, 1
  %.not1250 = icmp eq i32 %121, 0
  br i1 %.not1250, label %128, label %122

122:                                              ; preds = %120
  %123 = shl i64 %.1929.lcssa, 8
  %124 = and i64 %123, 65280
  %125 = lshr i64 %.1929.lcssa, 8
  %126 = add nuw nsw i64 %124, %125
  %127 = urem i64 %126, 31
  %.not1251 = icmp eq i64 %127, 0
  br i1 %.not1251, label %129, label %128

128:                                              ; preds = %122, %120
  store ptr @.str.1, ptr %37, align 8, !tbaa !31
  store i32 16209, ptr %18, align 8, !tbaa !15
  br label %.thread

129:                                              ; preds = %122
  %130 = and i64 %.1929.lcssa, 15
  %.not1252 = icmp eq i64 %130, 8
  br i1 %.not1252, label %132, label %131

131:                                              ; preds = %129
  store ptr @.str.2, ptr %37, align 8, !tbaa !31
  store i32 16209, ptr %18, align 8, !tbaa !15
  br label %.thread

132:                                              ; preds = %129
  %133 = lshr i64 %.1929.lcssa, 4
  %134 = add i32 %.1918.lcssa, -4
  %135 = trunc i64 %133 to i32
  %136 = and i32 %135, 15
  %137 = add nuw nsw i32 %136, 8
  %138 = load i32, ptr %69, align 8, !tbaa !26
  %139 = icmp eq i32 %138, 0
  br i1 %139, label %140, label %141

140:                                              ; preds = %132
  store i32 %137, ptr %69, align 8, !tbaa !26
  br label %141

141:                                              ; preds = %140, %132
  %142 = phi i32 [ %137, %140 ], [ %138, %132 ]
  %143 = icmp ugt i32 %136, 7
  %144 = icmp ugt i32 %137, %142
  %or.cond3332 = select i1 %143, i1 true, i1 %144
  br i1 %or.cond3332, label %145, label %146

145:                                              ; preds = %141
  store ptr @.str.3, ptr %37, align 8, !tbaa !31
  store i32 16209, ptr %18, align 8, !tbaa !15
  br label %.thread

146:                                              ; preds = %141
  %147 = shl nuw nsw i32 256, %136
  store i32 %147, ptr %70, align 4, !tbaa !32
  store i32 0, ptr %34, align 8, !tbaa !33
  %148 = call i64 @adler32(i64 noundef 0, ptr noundef null, i32 noundef 0) #5
  store i64 %148, ptr %35, align 8, !tbaa !27
  store i64 %148, ptr %36, align 8, !tbaa !34
  %149 = and i64 %.1929.lcssa, 8192
  %.not1253 = icmp eq i64 %149, 0
  %150 = select i1 %.not1253, i32 16191, i32 16189
  store i32 %150, ptr %18, align 8, !tbaa !15
  br label %.thread

151:                                              ; preds = %.lr.ph2278.preheader
  %152 = add i32 %.0991, -1
  %153 = getelementptr inbounds i8, ptr %.01055, i64 1
  %154 = load i8, ptr %.01055, align 1, !tbaa !23
  %155 = zext i8 %154 to i64
  %156 = shl nuw nsw i64 %155, %80
  %157 = add i64 %156, %.0928
  %indvars.iv.next2823 = add nuw nsw i64 %80, 8
  %158 = icmp ult i32 %.0917, 8
  br i1 %158, label %.lr.ph2278.1, label %._crit_edge2279.loopexit, !llvm.loop !35

.lr.ph2278.1:                                     ; preds = %151
  %159 = icmp eq i32 %152, 0
  br i1 %159, label %.loopexit1270.loopexit2343, label %160

160:                                              ; preds = %.lr.ph2278.1
  %161 = add i32 %.0991, -2
  %162 = getelementptr inbounds i8, ptr %.01055, i64 2
  %163 = load i8, ptr %153, align 1, !tbaa !23
  %164 = zext i8 %163 to i64
  %165 = shl nuw nsw i64 %164, %indvars.iv.next2823
  %166 = add i64 %165, %157
  %indvars.iv.next2823.1 = or disjoint i64 %80, 16
  br label %._crit_edge2279.loopexit

._crit_edge2279.loopexit:                         ; preds = %160, %151
  %.lcssa3892 = phi i32 [ %152, %151 ], [ %161, %160 ]
  %.lcssa3891 = phi ptr [ %153, %151 ], [ %162, %160 ]
  %.lcssa3890 = phi i64 [ %157, %151 ], [ %166, %160 ]
  %indvars.iv.next2823.lcssa = phi i64 [ %indvars.iv.next2823, %151 ], [ %indvars.iv.next2823.1, %160 ]
  %167 = trunc nuw nsw i64 %indvars.iv.next2823.lcssa to i32
  br label %._crit_edge2279

._crit_edge2279:                                  ; preds = %._crit_edge2279.loopexit, %.preheader1289
  %.21057.lcssa = phi ptr [ %.01055, %.preheader1289 ], [ %.lcssa3891, %._crit_edge2279.loopexit ]
  %.2993.lcssa = phi i32 [ %.0991, %.preheader1289 ], [ %.lcssa3892, %._crit_edge2279.loopexit ]
  %.2930.lcssa = phi i64 [ %.0928, %.preheader1289 ], [ %.lcssa3890, %._crit_edge2279.loopexit ]
  %.2919.lcssa = phi i32 [ %.0917, %.preheader1289 ], [ %167, %._crit_edge2279.loopexit ]
  %168 = trunc i64 %.2930.lcssa to i32
  store i32 %168, ptr %34, align 8, !tbaa !33
  %169 = and i32 %168, 255
  %.not1210 = icmp eq i32 %169, 8
  br i1 %.not1210, label %171, label %170

170:                                              ; preds = %._crit_edge2279
  store ptr @.str.2, ptr %37, align 8, !tbaa !31
  store i32 16209, ptr %18, align 8, !tbaa !15
  br label %.thread

171:                                              ; preds = %._crit_edge2279
  %172 = and i32 %168, 57344
  %.not1211 = icmp eq i32 %172, 0
  br i1 %.not1211, label %174, label %173

173:                                              ; preds = %171
  store ptr @.str.4, ptr %37, align 8, !tbaa !31
  store i32 16209, ptr %18, align 8, !tbaa !15
  br label %.thread

174:                                              ; preds = %171
  %175 = load ptr, ptr %65, align 8, !tbaa !28
  %.not1212 = icmp eq ptr %175, null
  br i1 %.not1212, label %179, label %176

176:                                              ; preds = %174
  %177 = lshr i32 %168, 8
  %178 = and i32 %177, 1
  store i32 %178, ptr %175, align 8, !tbaa !36
  br label %179

179:                                              ; preds = %176, %174
  %180 = and i32 %168, 512
  %.not1213 = icmp eq i32 %180, 0
  br i1 %.not1213, label %.thread2867, label %181

181:                                              ; preds = %179
  %182 = load i32, ptr %31, align 8, !tbaa !22
  %183 = and i32 %182, 4
  %.not1214 = icmp eq i32 %183, 0
  br i1 %.not1214, label %.thread2867, label %184

184:                                              ; preds = %181
  %185 = trunc i64 %.2930.lcssa to i8
  store i8 %185, ptr %3, align 1, !tbaa !23
  %186 = lshr i64 %.2930.lcssa, 8
  %187 = trunc i64 %186 to i8
  store i8 %187, ptr %66, align 1, !tbaa !23
  %188 = load i64, ptr %35, align 8, !tbaa !27
  %189 = call i64 @crc32(i64 noundef %188, ptr noundef nonnull %3, i32 noundef 2) #5
  store i64 %189, ptr %35, align 8, !tbaa !27
  br label %.thread2867

.thread2867:                                      ; preds = %184, %181, %179
  store i32 16182, ptr %18, align 8, !tbaa !15
  br label %.lr.ph2289.preheader

190:                                              ; preds = %71
  %191 = icmp ult i32 %.0917, 32
  br i1 %191, label %.lr.ph2289.preheader, label %._crit_edge2290

.lr.ph2289.preheader:                             ; preds = %.thread2867, %190
  %.39202875 = phi i32 [ 0, %.thread2867 ], [ %.0917, %190 ]
  %.39312874 = phi i64 [ 0, %.thread2867 ], [ %.0928, %190 ]
  %.39942873 = phi i32 [ %.2993.lcssa, %.thread2867 ], [ %.0991, %190 ]
  %.310582872 = phi ptr [ %.21057.lcssa, %.thread2867 ], [ %.01055, %190 ]
  %192 = zext nneg i32 %.39202875 to i64
  %193 = icmp eq i32 %.39942873, 0
  br i1 %193, label %.loopexit1270.loopexit2342, label %194

194:                                              ; preds = %.lr.ph2289.preheader
  %195 = add i32 %.39942873, -1
  %196 = getelementptr inbounds i8, ptr %.310582872, i64 1
  %197 = load i8, ptr %.310582872, align 1, !tbaa !23
  %198 = zext i8 %197 to i64
  %199 = shl nuw nsw i64 %198, %192
  %200 = add i64 %199, %.39312874
  %indvars.iv.next2826 = add nuw nsw i64 %192, 8
  %201 = icmp ult i32 %.39202875, 24
  br i1 %201, label %.lr.ph2289.1, label %._crit_edge2290, !llvm.loop !37

.lr.ph2289.1:                                     ; preds = %194
  %202 = icmp eq i32 %195, 0
  br i1 %202, label %.loopexit1270.loopexit2342, label %203

203:                                              ; preds = %.lr.ph2289.1
  %204 = add i32 %.39942873, -2
  %205 = getelementptr inbounds i8, ptr %.310582872, i64 2
  %206 = load i8, ptr %196, align 1, !tbaa !23
  %207 = zext i8 %206 to i64
  %208 = shl nuw nsw i64 %207, %indvars.iv.next2826
  %209 = add i64 %208, %200
  %indvars.iv.next2826.1 = add nuw nsw i64 %192, 16
  %210 = icmp ult i32 %.39202875, 16
  br i1 %210, label %.lr.ph2289.2, label %._crit_edge2290, !llvm.loop !37

.lr.ph2289.2:                                     ; preds = %203
  %211 = icmp eq i32 %204, 0
  br i1 %211, label %.loopexit1270.loopexit2342, label %212

212:                                              ; preds = %.lr.ph2289.2
  %213 = add i32 %.39942873, -3
  %214 = getelementptr inbounds i8, ptr %.310582872, i64 3
  %215 = load i8, ptr %205, align 1, !tbaa !23
  %216 = zext i8 %215 to i64
  %217 = shl nuw nsw i64 %216, %indvars.iv.next2826.1
  %218 = add i64 %217, %209
  %indvars.iv.next2826.2 = add nuw nsw i64 %192, 24
  %219 = icmp ult i32 %.39202875, 8
  br i1 %219, label %.lr.ph2289.3, label %._crit_edge2290, !llvm.loop !37

.lr.ph2289.3:                                     ; preds = %212
  %220 = icmp eq i32 %213, 0
  br i1 %220, label %.loopexit1270.loopexit2342, label %221

221:                                              ; preds = %.lr.ph2289.3
  %222 = add i32 %.39942873, -4
  %223 = getelementptr inbounds i8, ptr %.310582872, i64 4
  %224 = load i8, ptr %214, align 1, !tbaa !23
  %225 = zext i8 %224 to i64
  %226 = shl nuw nsw i64 %225, %indvars.iv.next2826.2
  %227 = add i64 %226, %218
  br label %._crit_edge2290

._crit_edge2290:                                  ; preds = %194, %203, %212, %221, %190
  %.41059.lcssa = phi ptr [ %.01055, %190 ], [ %196, %194 ], [ %205, %203 ], [ %214, %212 ], [ %223, %221 ]
  %.4995.lcssa = phi i32 [ %.0991, %190 ], [ %195, %194 ], [ %204, %203 ], [ %213, %212 ], [ %222, %221 ]
  %.4932.lcssa = phi i64 [ %.0928, %190 ], [ %200, %194 ], [ %209, %203 ], [ %218, %212 ], [ %227, %221 ]
  %228 = load ptr, ptr %65, align 8, !tbaa !28
  %.not1215 = icmp eq ptr %228, null
  br i1 %.not1215, label %231, label %229

229:                                              ; preds = %._crit_edge2290
  %230 = getelementptr inbounds i8, ptr %228, i64 8
  store i64 %.4932.lcssa, ptr %230, align 8, !tbaa !38
  br label %231

231:                                              ; preds = %229, %._crit_edge2290
  %232 = load i32, ptr %34, align 8, !tbaa !33
  %233 = and i32 %232, 512
  %.not1216 = icmp eq i32 %233, 0
  br i1 %.not1216, label %.thread2876, label %234

234:                                              ; preds = %231
  %235 = load i32, ptr %31, align 8, !tbaa !22
  %236 = and i32 %235, 4
  %.not1217 = icmp eq i32 %236, 0
  br i1 %.not1217, label %.thread2876, label %237

237:                                              ; preds = %234
  %238 = trunc i64 %.4932.lcssa to i8
  store i8 %238, ptr %3, align 1, !tbaa !23
  %239 = lshr i64 %.4932.lcssa, 8
  %240 = trunc i64 %239 to i8
  store i8 %240, ptr %66, align 1, !tbaa !23
  %241 = lshr i64 %.4932.lcssa, 16
  %242 = trunc i64 %241 to i8
  store i8 %242, ptr %67, align 1, !tbaa !23
  %243 = lshr i64 %.4932.lcssa, 24
  %244 = trunc i64 %243 to i8
  store i8 %244, ptr %68, align 1, !tbaa !23
  %245 = load i64, ptr %35, align 8, !tbaa !27
  %246 = call i64 @crc32(i64 noundef %245, ptr noundef nonnull %3, i32 noundef 4) #5
  store i64 %246, ptr %35, align 8, !tbaa !27
  br label %.thread2876

.thread2876:                                      ; preds = %237, %234, %231
  store i32 16183, ptr %18, align 8, !tbaa !15
  br label %.lr.ph2299.preheader

247:                                              ; preds = %71
  %248 = icmp ult i32 %.0917, 16
  br i1 %248, label %.lr.ph2299.preheader, label %._crit_edge2300

.lr.ph2299.preheader:                             ; preds = %.thread2876, %247
  %.59222884 = phi i32 [ 0, %.thread2876 ], [ %.0917, %247 ]
  %.59332883 = phi i64 [ 0, %.thread2876 ], [ %.0928, %247 ]
  %.59962882 = phi i32 [ %.4995.lcssa, %.thread2876 ], [ %.0991, %247 ]
  %.510602881 = phi ptr [ %.41059.lcssa, %.thread2876 ], [ %.01055, %247 ]
  %249 = zext nneg i32 %.59222884 to i64
  %250 = icmp eq i32 %.59962882, 0
  br i1 %250, label %.loopexit1270.loopexit2341, label %251

251:                                              ; preds = %.lr.ph2299.preheader
  %252 = add i32 %.59962882, -1
  %253 = getelementptr inbounds i8, ptr %.510602881, i64 1
  %254 = load i8, ptr %.510602881, align 1, !tbaa !23
  %255 = zext i8 %254 to i64
  %256 = shl nuw nsw i64 %255, %249
  %257 = add i64 %256, %.59332883
  %indvars.iv.next2829 = add nuw nsw i64 %249, 8
  %258 = icmp ult i32 %.59222884, 8
  br i1 %258, label %.lr.ph2299.1, label %._crit_edge2300, !llvm.loop !39

.lr.ph2299.1:                                     ; preds = %251
  %259 = icmp eq i32 %252, 0
  br i1 %259, label %.loopexit1270.loopexit2341, label %260

260:                                              ; preds = %.lr.ph2299.1
  %261 = add i32 %.59962882, -2
  %262 = getelementptr inbounds i8, ptr %.510602881, i64 2
  %263 = load i8, ptr %253, align 1, !tbaa !23
  %264 = zext i8 %263 to i64
  %265 = shl nuw nsw i64 %264, %indvars.iv.next2829
  %266 = add i64 %265, %257
  br label %._crit_edge2300

._crit_edge2300:                                  ; preds = %251, %260, %247
  %.61061.lcssa = phi ptr [ %.01055, %247 ], [ %253, %251 ], [ %262, %260 ]
  %.6997.lcssa = phi i32 [ %.0991, %247 ], [ %252, %251 ], [ %261, %260 ]
  %.6934.lcssa = phi i64 [ %.0928, %247 ], [ %257, %251 ], [ %266, %260 ]
  %267 = load ptr, ptr %65, align 8, !tbaa !28
  %.not1218 = icmp eq ptr %267, null
  br i1 %.not1218, label %275, label %268

268:                                              ; preds = %._crit_edge2300
  %269 = trunc i64 %.6934.lcssa to i32
  %270 = and i32 %269, 255
  %271 = getelementptr inbounds i8, ptr %267, i64 16
  store i32 %270, ptr %271, align 8, !tbaa !40
  %272 = lshr i64 %.6934.lcssa, 8
  %273 = trunc i64 %272 to i32
  %274 = getelementptr inbounds i8, ptr %267, i64 20
  store i32 %273, ptr %274, align 4, !tbaa !41
  br label %275

275:                                              ; preds = %268, %._crit_edge2300
  %276 = load i32, ptr %34, align 8, !tbaa !33
  %277 = and i32 %276, 512
  %.not1219 = icmp eq i32 %277, 0
  br i1 %.not1219, label %.thread2885, label %278

278:                                              ; preds = %275
  %279 = load i32, ptr %31, align 8, !tbaa !22
  %280 = and i32 %279, 4
  %.not1220 = icmp eq i32 %280, 0
  br i1 %.not1220, label %.thread2885, label %281

281:                                              ; preds = %278
  %282 = trunc i64 %.6934.lcssa to i8
  store i8 %282, ptr %3, align 1, !tbaa !23
  %283 = lshr i64 %.6934.lcssa, 8
  %284 = trunc i64 %283 to i8
  store i8 %284, ptr %66, align 1, !tbaa !23
  %285 = load i64, ptr %35, align 8, !tbaa !27
  %286 = call i64 @crc32(i64 noundef %285, ptr noundef nonnull %3, i32 noundef 2) #5
  store i64 %286, ptr %35, align 8, !tbaa !27
  br label %.thread2885

287:                                              ; preds = %71
  %288 = load i32, ptr %34, align 8, !tbaa !33
  %289 = and i32 %288, 1024
  %.not1221 = icmp eq i32 %289, 0
  br i1 %.not1221, label %328, label %.preheader1285

.thread2885:                                      ; preds = %281, %278, %275
  store i32 16184, ptr %18, align 8, !tbaa !15
  %290 = load i32, ptr %34, align 8, !tbaa !33
  %291 = and i32 %290, 1024
  %.not12212890 = icmp eq i32 %291, 0
  br i1 %.not12212890, label %328, label %.lr.ph2308.preheader

.preheader1285:                                   ; preds = %287
  %292 = icmp ult i32 %.0917, 16
  br i1 %292, label %.lr.ph2308.preheader, label %._crit_edge2309

.lr.ph2308.preheader:                             ; preds = %.thread2885, %.preheader1285
  %.7106228922906 = phi ptr [ %.01055, %.preheader1285 ], [ %.61061.lcssa, %.thread2885 ]
  %.799828942905 = phi i32 [ %.0991, %.preheader1285 ], [ %.6997.lcssa, %.thread2885 ]
  %.793528962904 = phi i64 [ %.0928, %.preheader1285 ], [ 0, %.thread2885 ]
  %.792428982903 = phi i32 [ %.0917, %.preheader1285 ], [ 0, %.thread2885 ]
  %293 = phi i32 [ %288, %.preheader1285 ], [ %290, %.thread2885 ]
  %294 = zext nneg i32 %.792428982903 to i64
  %295 = icmp eq i32 %.799828942905, 0
  br i1 %295, label %.loopexit1270.loopexit2340, label %296

296:                                              ; preds = %.lr.ph2308.preheader
  %297 = add i32 %.799828942905, -1
  %298 = getelementptr inbounds i8, ptr %.7106228922906, i64 1
  %299 = load i8, ptr %.7106228922906, align 1, !tbaa !23
  %300 = zext i8 %299 to i64
  %301 = shl nuw nsw i64 %300, %294
  %302 = add i64 %301, %.793528962904
  %indvars.iv.next2832 = add nuw nsw i64 %294, 8
  %303 = icmp ult i32 %.792428982903, 8
  br i1 %303, label %.lr.ph2308.1, label %._crit_edge2309, !llvm.loop !42

.lr.ph2308.1:                                     ; preds = %296
  %304 = icmp eq i32 %297, 0
  br i1 %304, label %.loopexit1270.loopexit2340, label %305

305:                                              ; preds = %.lr.ph2308.1
  %306 = add i32 %.799828942905, -2
  %307 = getelementptr inbounds i8, ptr %.7106228922906, i64 2
  %308 = load i8, ptr %298, align 1, !tbaa !23
  %309 = zext i8 %308 to i64
  %310 = shl nuw nsw i64 %309, %indvars.iv.next2832
  %311 = add i64 %310, %302
  br label %._crit_edge2309

._crit_edge2309:                                  ; preds = %296, %305, %.preheader1285
  %312 = phi i32 [ %288, %.preheader1285 ], [ %293, %305 ], [ %293, %296 ]
  %.81063.lcssa = phi ptr [ %.01055, %.preheader1285 ], [ %298, %296 ], [ %307, %305 ]
  %.8999.lcssa = phi i32 [ %.0991, %.preheader1285 ], [ %297, %296 ], [ %306, %305 ]
  %.8936.lcssa = phi i64 [ %.0928, %.preheader1285 ], [ %302, %296 ], [ %311, %305 ]
  %313 = trunc i64 %.8936.lcssa to i32
  store i32 %313, ptr %38, align 4, !tbaa !43
  %314 = load ptr, ptr %65, align 8, !tbaa !28
  %.not1223 = icmp eq ptr %314, null
  br i1 %.not1223, label %317, label %315

315:                                              ; preds = %._crit_edge2309
  %316 = getelementptr inbounds i8, ptr %314, i64 32
  store i32 %313, ptr %316, align 8, !tbaa !44
  br label %317

317:                                              ; preds = %315, %._crit_edge2309
  %318 = and i32 %312, 512
  %.not1224 = icmp eq i32 %318, 0
  br i1 %.not1224, label %332, label %319

319:                                              ; preds = %317
  %320 = load i32, ptr %31, align 8, !tbaa !22
  %321 = and i32 %320, 4
  %.not1225 = icmp eq i32 %321, 0
  br i1 %.not1225, label %332, label %322

322:                                              ; preds = %319
  %323 = trunc i64 %.8936.lcssa to i8
  store i8 %323, ptr %3, align 1, !tbaa !23
  %324 = lshr i64 %.8936.lcssa, 8
  %325 = trunc i64 %324 to i8
  store i8 %325, ptr %66, align 1, !tbaa !23
  %326 = load i64, ptr %35, align 8, !tbaa !27
  %327 = call i64 @crc32(i64 noundef %326, ptr noundef nonnull %3, i32 noundef 2) #5
  store i64 %327, ptr %35, align 8, !tbaa !27
  br label %332

328:                                              ; preds = %.thread2885, %287
  %.79242897 = phi i32 [ 0, %.thread2885 ], [ %.0917, %287 ]
  %.79352895 = phi i64 [ 0, %.thread2885 ], [ %.0928, %287 ]
  %.79982893 = phi i32 [ %.6997.lcssa, %.thread2885 ], [ %.0991, %287 ]
  %.710622891 = phi ptr [ %.61061.lcssa, %.thread2885 ], [ %.01055, %287 ]
  %329 = load ptr, ptr %65, align 8, !tbaa !28
  %.not1222 = icmp eq ptr %329, null
  br i1 %.not1222, label %332, label %330

330:                                              ; preds = %328
  %331 = getelementptr inbounds i8, ptr %329, i64 24
  store ptr null, ptr %331, align 8, !tbaa !45
  br label %332

332:                                              ; preds = %322, %319, %317, %328, %330
  %.91064 = phi ptr [ %.710622891, %330 ], [ %.710622891, %328 ], [ %.81063.lcssa, %317 ], [ %.81063.lcssa, %319 ], [ %.81063.lcssa, %322 ]
  %.91000 = phi i32 [ %.79982893, %330 ], [ %.79982893, %328 ], [ %.8999.lcssa, %317 ], [ %.8999.lcssa, %319 ], [ %.8999.lcssa, %322 ]
  %.9937 = phi i64 [ %.79352895, %330 ], [ %.79352895, %328 ], [ 0, %317 ], [ 0, %319 ], [ 0, %322 ]
  %.9926 = phi i32 [ %.79242897, %330 ], [ %.79242897, %328 ], [ 0, %317 ], [ 0, %319 ], [ 0, %322 ]
  store i32 16185, ptr %18, align 8, !tbaa !15
  br label %333

333:                                              ; preds = %332, %71
  %.101065 = phi ptr [ %.01055, %71 ], [ %.91064, %332 ]
  %.101001 = phi i32 [ %.0991, %71 ], [ %.91000, %332 ]
  %.10938 = phi i64 [ %.0928, %71 ], [ %.9937, %332 ]
  %.10927 = phi i32 [ %.0917, %71 ], [ %.9926, %332 ]
  %334 = load i32, ptr %34, align 8, !tbaa !33
  %335 = and i32 %334, 1024
  %.not1226 = icmp eq i32 %335, 0
  br i1 %.not1226, label %375, label %336

336:                                              ; preds = %333
  %337 = load i32, ptr %38, align 4, !tbaa !43
  %spec.select = call i32 @llvm.umin.i32(i32 %337, i32 %.101001)
  %.not1227 = icmp eq i32 %spec.select, 0
  br i1 %.not1227, label %373, label %338

338:                                              ; preds = %336
  %339 = load ptr, ptr %65, align 8, !tbaa !28
  %.not1228 = icmp eq ptr %339, null
  br i1 %.not1228, label %358, label %340

340:                                              ; preds = %338
  %341 = getelementptr inbounds i8, ptr %339, i64 24
  %342 = load ptr, ptr %341, align 8, !tbaa !45
  %.not1229 = icmp eq ptr %342, null
  br i1 %.not1229, label %358, label %343

343:                                              ; preds = %340
  %344 = getelementptr inbounds i8, ptr %339, i64 32
  %345 = load i32, ptr %344, align 8, !tbaa !44
  %346 = sub i32 %345, %337
  %347 = getelementptr inbounds i8, ptr %339, i64 36
  %348 = load i32, ptr %347, align 4, !tbaa !46
  %349 = icmp ult i32 %346, %348
  br i1 %349, label %350, label %358

350:                                              ; preds = %343
  %351 = zext i32 %346 to i64
  %352 = getelementptr inbounds i8, ptr %342, i64 %351
  %353 = add i32 %346, %spec.select
  %354 = icmp ugt i32 %353, %348
  %355 = sub i32 %348, %346
  %356 = select i1 %354, i32 %355, i32 %spec.select
  %357 = zext i32 %356 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %352, ptr align 1 %.101065, i64 %357, i1 false)
  %.pre2861 = load i32, ptr %34, align 8, !tbaa !33
  br label %358

358:                                              ; preds = %350, %343, %340, %338
  %359 = phi i32 [ %.pre2861, %350 ], [ %334, %343 ], [ %334, %340 ], [ %334, %338 ]
  %360 = and i32 %359, 512
  %.not1230 = icmp eq i32 %360, 0
  br i1 %.not1230, label %367, label %361

361:                                              ; preds = %358
  %362 = load i32, ptr %31, align 8, !tbaa !22
  %363 = and i32 %362, 4
  %.not1231 = icmp eq i32 %363, 0
  br i1 %.not1231, label %367, label %364

364:                                              ; preds = %361
  %365 = load i64, ptr %35, align 8, !tbaa !27
  %366 = call i64 @crc32(i64 noundef %365, ptr noundef %.101065, i32 noundef %spec.select) #5
  store i64 %366, ptr %35, align 8, !tbaa !27
  br label %367

367:                                              ; preds = %364, %361, %358
  %368 = sub i32 %.101001, %spec.select
  %369 = zext i32 %spec.select to i64
  %370 = getelementptr inbounds i8, ptr %.101065, i64 %369
  %371 = load i32, ptr %38, align 4, !tbaa !43
  %372 = sub i32 %371, %spec.select
  store i32 %372, ptr %38, align 4, !tbaa !43
  br label %373

373:                                              ; preds = %367, %336
  %374 = phi i32 [ %372, %367 ], [ %337, %336 ]
  %.111066 = phi ptr [ %370, %367 ], [ %.101065, %336 ]
  %.111002 = phi i32 [ %368, %367 ], [ %.101001, %336 ]
  %.not1232 = icmp eq i32 %374, 0
  br i1 %.not1232, label %375, label %.loopexit1270

375:                                              ; preds = %373, %333
  %.121067 = phi ptr [ %.111066, %373 ], [ %.101065, %333 ]
  %.121003 = phi i32 [ %.111002, %373 ], [ %.101001, %333 ]
  store i32 0, ptr %38, align 4, !tbaa !43
  store i32 16186, ptr %18, align 8, !tbaa !15
  br label %376

376:                                              ; preds = %375, %71
  %.131068 = phi ptr [ %.01055, %71 ], [ %.121067, %375 ]
  %.131004 = phi i32 [ %.0991, %71 ], [ %.121003, %375 ]
  %.11939 = phi i64 [ %.0928, %71 ], [ %.10938, %375 ]
  %.11 = phi i32 [ %.0917, %71 ], [ %.10927, %375 ]
  %377 = load i32, ptr %34, align 8, !tbaa !33
  %378 = and i32 %377, 2048
  %.not1233 = icmp eq i32 %378, 0
  br i1 %.not1233, label %415, label %379

379:                                              ; preds = %376
  %380 = icmp eq i32 %.131004, 0
  br i1 %380, label %.loopexit1270, label %.preheader1284.preheader

.preheader1284.preheader:                         ; preds = %379
  %381 = zext i32 %.131004 to i64
  br label %.preheader1284

.preheader1284:                                   ; preds = %.preheader1284.preheader, %397
  %indvars.iv2834 = phi i64 [ 0, %.preheader1284.preheader ], [ %indvars.iv.next2835, %397 ]
  %indvars.iv.next2835 = add nuw nsw i64 %indvars.iv2834, 1
  %382 = getelementptr inbounds i8, ptr %.131068, i64 %indvars.iv2834
  %383 = load i8, ptr %382, align 1, !tbaa !23
  %384 = load ptr, ptr %65, align 8, !tbaa !28
  %.not1235 = icmp eq ptr %384, null
  br i1 %.not1235, label %397, label %385

385:                                              ; preds = %.preheader1284
  %386 = getelementptr inbounds i8, ptr %384, i64 40
  %387 = load ptr, ptr %386, align 8, !tbaa !47
  %.not1236 = icmp eq ptr %387, null
  br i1 %.not1236, label %397, label %388

388:                                              ; preds = %385
  %389 = load i32, ptr %38, align 4, !tbaa !43
  %390 = getelementptr inbounds i8, ptr %384, i64 48
  %391 = load i32, ptr %390, align 8, !tbaa !48
  %392 = icmp ult i32 %389, %391
  br i1 %392, label %393, label %397

393:                                              ; preds = %388
  %394 = add nuw i32 %389, 1
  store i32 %394, ptr %38, align 4, !tbaa !43
  %395 = zext i32 %389 to i64
  %396 = getelementptr inbounds i8, ptr %387, i64 %395
  store i8 %383, ptr %396, align 1, !tbaa !23
  br label %397

397:                                              ; preds = %.preheader1284, %385, %388, %393
  %398 = icmp ne i8 %383, 0
  %399 = icmp ult i64 %indvars.iv.next2835, %381
  %400 = select i1 %398, i1 %399, i1 false
  br i1 %400, label %.preheader1284, label %401, !llvm.loop !49

401:                                              ; preds = %397
  %402 = trunc nuw i64 %indvars.iv.next2835 to i32
  %403 = load i32, ptr %34, align 8, !tbaa !33
  %404 = and i32 %403, 512
  %.not1237 = icmp eq i32 %404, 0
  br i1 %.not1237, label %411, label %405

405:                                              ; preds = %401
  %406 = load i32, ptr %31, align 8, !tbaa !22
  %407 = and i32 %406, 4
  %.not1238 = icmp eq i32 %407, 0
  br i1 %.not1238, label %411, label %408

408:                                              ; preds = %405
  %409 = load i64, ptr %35, align 8, !tbaa !27
  %410 = call i64 @crc32(i64 noundef %409, ptr noundef nonnull %.131068, i32 noundef %402) #5
  store i64 %410, ptr %35, align 8, !tbaa !27
  br label %411

411:                                              ; preds = %408, %405, %401
  %412 = sub i32 %.131004, %402
  %413 = and i64 %indvars.iv.next2835, 4294967295
  %414 = getelementptr inbounds i8, ptr %.131068, i64 %413
  br i1 %398, label %.loopexit1270, label %419

415:                                              ; preds = %376
  %416 = load ptr, ptr %65, align 8, !tbaa !28
  %.not1234 = icmp eq ptr %416, null
  br i1 %.not1234, label %419, label %417

417:                                              ; preds = %415
  %418 = getelementptr inbounds i8, ptr %416, i64 40
  store ptr null, ptr %418, align 8, !tbaa !47
  br label %419

419:                                              ; preds = %415, %417, %411
  %.141069 = phi ptr [ %414, %411 ], [ %.131068, %417 ], [ %.131068, %415 ]
  %.141005 = phi i32 [ %412, %411 ], [ %.131004, %417 ], [ %.131004, %415 ]
  store i32 0, ptr %38, align 4, !tbaa !43
  store i32 16187, ptr %18, align 8, !tbaa !15
  br label %420

420:                                              ; preds = %419, %71
  %.151070 = phi ptr [ %.01055, %71 ], [ %.141069, %419 ]
  %.151006 = phi i32 [ %.0991, %71 ], [ %.141005, %419 ]
  %.12940 = phi i64 [ %.0928, %71 ], [ %.11939, %419 ]
  %.12 = phi i32 [ %.0917, %71 ], [ %.11, %419 ]
  %421 = load i32, ptr %34, align 8, !tbaa !33
  %422 = and i32 %421, 4096
  %.not1239 = icmp eq i32 %422, 0
  br i1 %.not1239, label %459, label %423

423:                                              ; preds = %420
  %424 = icmp eq i32 %.151006, 0
  br i1 %424, label %.loopexit1270, label %.preheader1283.preheader

.preheader1283.preheader:                         ; preds = %423
  %425 = zext i32 %.151006 to i64
  br label %.preheader1283

.preheader1283:                                   ; preds = %.preheader1283.preheader, %441
  %indvars.iv2837 = phi i64 [ 0, %.preheader1283.preheader ], [ %indvars.iv.next2838, %441 ]
  %indvars.iv.next2838 = add nuw nsw i64 %indvars.iv2837, 1
  %426 = getelementptr inbounds i8, ptr %.151070, i64 %indvars.iv2837
  %427 = load i8, ptr %426, align 1, !tbaa !23
  %428 = load ptr, ptr %65, align 8, !tbaa !28
  %.not1241 = icmp eq ptr %428, null
  br i1 %.not1241, label %441, label %429

429:                                              ; preds = %.preheader1283
  %430 = getelementptr inbounds i8, ptr %428, i64 56
  %431 = load ptr, ptr %430, align 8, !tbaa !50
  %.not1242 = icmp eq ptr %431, null
  br i1 %.not1242, label %441, label %432

432:                                              ; preds = %429
  %433 = load i32, ptr %38, align 4, !tbaa !43
  %434 = getelementptr inbounds i8, ptr %428, i64 64
  %435 = load i32, ptr %434, align 8, !tbaa !51
  %436 = icmp ult i32 %433, %435
  br i1 %436, label %437, label %441

437:                                              ; preds = %432
  %438 = add nuw i32 %433, 1
  store i32 %438, ptr %38, align 4, !tbaa !43
  %439 = zext i32 %433 to i64
  %440 = getelementptr inbounds i8, ptr %431, i64 %439
  store i8 %427, ptr %440, align 1, !tbaa !23
  br label %441

441:                                              ; preds = %.preheader1283, %429, %432, %437
  %442 = icmp ne i8 %427, 0
  %443 = icmp ult i64 %indvars.iv.next2838, %425
  %444 = select i1 %442, i1 %443, i1 false
  br i1 %444, label %.preheader1283, label %445, !llvm.loop !52

445:                                              ; preds = %441
  %446 = trunc nuw i64 %indvars.iv.next2838 to i32
  %447 = load i32, ptr %34, align 8, !tbaa !33
  %448 = and i32 %447, 512
  %.not1243 = icmp eq i32 %448, 0
  br i1 %.not1243, label %455, label %449

449:                                              ; preds = %445
  %450 = load i32, ptr %31, align 8, !tbaa !22
  %451 = and i32 %450, 4
  %.not1244 = icmp eq i32 %451, 0
  br i1 %.not1244, label %455, label %452

452:                                              ; preds = %449
  %453 = load i64, ptr %35, align 8, !tbaa !27
  %454 = call i64 @crc32(i64 noundef %453, ptr noundef nonnull %.151070, i32 noundef %446) #5
  store i64 %454, ptr %35, align 8, !tbaa !27
  br label %455

455:                                              ; preds = %452, %449, %445
  %456 = sub i32 %.151006, %446
  %457 = and i64 %indvars.iv.next2838, 4294967295
  %458 = getelementptr inbounds i8, ptr %.151070, i64 %457
  br i1 %442, label %.loopexit1270, label %463

459:                                              ; preds = %420
  %460 = load ptr, ptr %65, align 8, !tbaa !28
  %.not1240 = icmp eq ptr %460, null
  br i1 %.not1240, label %463, label %461

461:                                              ; preds = %459
  %462 = getelementptr inbounds i8, ptr %460, i64 56
  store ptr null, ptr %462, align 8, !tbaa !50
  br label %463

463:                                              ; preds = %459, %461, %455
  %.161071 = phi ptr [ %458, %455 ], [ %.151070, %461 ], [ %.151070, %459 ]
  %.161007 = phi i32 [ %456, %455 ], [ %.151006, %461 ], [ %.151006, %459 ]
  store i32 16188, ptr %18, align 8, !tbaa !15
  br label %464

464:                                              ; preds = %463, %71
  %.171072 = phi ptr [ %.01055, %71 ], [ %.161071, %463 ]
  %.171008 = phi i32 [ %.0991, %71 ], [ %.161007, %463 ]
  %.13941 = phi i64 [ %.0928, %71 ], [ %.12940, %463 ]
  %.13 = phi i32 [ %.0917, %71 ], [ %.12, %463 ]
  %465 = load i32, ptr %34, align 8, !tbaa !33
  %466 = and i32 %465, 512
  %.not1245 = icmp eq i32 %466, 0
  br i1 %.not1245, label %493, label %.preheader1281

.preheader1281:                                   ; preds = %464
  %467 = icmp ult i32 %.13, 16
  br i1 %467, label %.lr.ph2317.preheader, label %._crit_edge2318

.lr.ph2317.preheader:                             ; preds = %.preheader1281
  %468 = zext nneg i32 %.13 to i64
  %469 = icmp eq i32 %.171008, 0
  br i1 %469, label %.loopexit1270.loopexit2339, label %470

470:                                              ; preds = %.lr.ph2317.preheader
  %471 = add i32 %.171008, -1
  %472 = getelementptr inbounds i8, ptr %.171072, i64 1
  %473 = load i8, ptr %.171072, align 1, !tbaa !23
  %474 = zext i8 %473 to i64
  %475 = shl nuw nsw i64 %474, %468
  %476 = add i64 %475, %.13941
  %indvars.iv.next2841 = add nuw nsw i64 %468, 8
  %477 = icmp ult i32 %.13, 8
  br i1 %477, label %.lr.ph2317.1, label %._crit_edge2318.loopexit, !llvm.loop !53

.lr.ph2317.1:                                     ; preds = %470
  %478 = icmp eq i32 %471, 0
  br i1 %478, label %.loopexit1270.loopexit2339, label %479

479:                                              ; preds = %.lr.ph2317.1
  %480 = add i32 %.171008, -2
  %481 = getelementptr inbounds i8, ptr %.171072, i64 2
  %482 = load i8, ptr %472, align 1, !tbaa !23
  %483 = zext i8 %482 to i64
  %484 = shl nuw nsw i64 %483, %indvars.iv.next2841
  %485 = add i64 %484, %476
  %indvars.iv.next2841.1 = or disjoint i64 %468, 16
  br label %._crit_edge2318.loopexit

._crit_edge2318.loopexit:                         ; preds = %479, %470
  %.lcssa3918 = phi i32 [ %471, %470 ], [ %480, %479 ]
  %.lcssa3917 = phi ptr [ %472, %470 ], [ %481, %479 ]
  %.lcssa3916 = phi i64 [ %476, %470 ], [ %485, %479 ]
  %indvars.iv.next2841.lcssa = phi i64 [ %indvars.iv.next2841, %470 ], [ %indvars.iv.next2841.1, %479 ]
  %486 = trunc nuw nsw i64 %indvars.iv.next2841.lcssa to i32
  br label %._crit_edge2318

._crit_edge2318:                                  ; preds = %._crit_edge2318.loopexit, %.preheader1281
  %.181073.lcssa = phi ptr [ %.171072, %.preheader1281 ], [ %.lcssa3917, %._crit_edge2318.loopexit ]
  %.181009.lcssa = phi i32 [ %.171008, %.preheader1281 ], [ %.lcssa3918, %._crit_edge2318.loopexit ]
  %.14942.lcssa = phi i64 [ %.13941, %.preheader1281 ], [ %.lcssa3916, %._crit_edge2318.loopexit ]
  %.14.lcssa = phi i32 [ %.13, %.preheader1281 ], [ %486, %._crit_edge2318.loopexit ]
  %487 = load i32, ptr %31, align 8, !tbaa !22
  %488 = and i32 %487, 4
  %.not1246 = icmp eq i32 %488, 0
  br i1 %.not1246, label %493, label %489

489:                                              ; preds = %._crit_edge2318
  %490 = load i64, ptr %35, align 8, !tbaa !27
  %491 = and i64 %490, 65535
  %.not1247 = icmp eq i64 %.14942.lcssa, %491
  br i1 %.not1247, label %493, label %492

492:                                              ; preds = %489
  store ptr @.str.5, ptr %37, align 8, !tbaa !31
  store i32 16209, ptr %18, align 8, !tbaa !15
  br label %.thread

493:                                              ; preds = %489, %._crit_edge2318, %464
  %.191074 = phi ptr [ %.171072, %464 ], [ %.181073.lcssa, %._crit_edge2318 ], [ %.181073.lcssa, %489 ]
  %.191010 = phi i32 [ %.171008, %464 ], [ %.181009.lcssa, %._crit_edge2318 ], [ %.181009.lcssa, %489 ]
  %.15943 = phi i64 [ %.13941, %464 ], [ 0, %._crit_edge2318 ], [ 0, %489 ]
  %.15 = phi i32 [ %.13, %464 ], [ 0, %._crit_edge2318 ], [ 0, %489 ]
  %494 = load ptr, ptr %65, align 8, !tbaa !28
  %.not1248 = icmp eq ptr %494, null
  br i1 %.not1248, label %500, label %495

495:                                              ; preds = %493
  %496 = lshr i32 %465, 9
  %497 = and i32 %496, 1
  %498 = getelementptr inbounds i8, ptr %494, i64 68
  store i32 %497, ptr %498, align 4, !tbaa !54
  %499 = getelementptr inbounds i8, ptr %494, i64 72
  store i32 1, ptr %499, align 8, !tbaa !29
  br label %500

500:                                              ; preds = %495, %493
  %501 = call i64 @crc32(i64 noundef 0, ptr noundef null, i32 noundef 0) #5
  store i64 %501, ptr %35, align 8, !tbaa !27
  store i64 %501, ptr %36, align 8, !tbaa !34
  store i32 16191, ptr %18, align 8, !tbaa !15
  br label %.thread

502:                                              ; preds = %.lr.ph2110.preheader
  %503 = add i32 %.0991, -1
  %504 = getelementptr inbounds i8, ptr %.01055, i64 1
  %505 = load i8, ptr %.01055, align 1, !tbaa !23
  %506 = zext i8 %505 to i64
  %507 = shl nuw nsw i64 %506, %77
  %508 = add i64 %507, %.0928
  %indvars.iv.next2820 = add nuw nsw i64 %77, 8
  %509 = icmp ult i32 %.0917, 24
  br i1 %509, label %.lr.ph2110.1, label %._crit_edge2111, !llvm.loop !55

.lr.ph2110.1:                                     ; preds = %502
  %510 = icmp eq i32 %503, 0
  br i1 %510, label %.loopexit1270.loopexit2344, label %511

511:                                              ; preds = %.lr.ph2110.1
  %512 = add i32 %.0991, -2
  %513 = getelementptr inbounds i8, ptr %.01055, i64 2
  %514 = load i8, ptr %504, align 1, !tbaa !23
  %515 = zext i8 %514 to i64
  %516 = shl nuw nsw i64 %515, %indvars.iv.next2820
  %517 = add i64 %516, %508
  %indvars.iv.next2820.1 = add nuw nsw i64 %77, 16
  %518 = icmp ult i32 %.0917, 16
  br i1 %518, label %.lr.ph2110.2, label %._crit_edge2111, !llvm.loop !55

.lr.ph2110.2:                                     ; preds = %511
  %519 = icmp eq i32 %512, 0
  br i1 %519, label %.loopexit1270.loopexit2344, label %520

520:                                              ; preds = %.lr.ph2110.2
  %521 = add i32 %.0991, -3
  %522 = getelementptr inbounds i8, ptr %.01055, i64 3
  %523 = load i8, ptr %513, align 1, !tbaa !23
  %524 = zext i8 %523 to i64
  %525 = shl nuw nsw i64 %524, %indvars.iv.next2820.1
  %526 = add i64 %525, %517
  %indvars.iv.next2820.2 = add nuw nsw i64 %77, 24
  %527 = icmp ult i32 %.0917, 8
  br i1 %527, label %.lr.ph2110.3, label %._crit_edge2111, !llvm.loop !55

.lr.ph2110.3:                                     ; preds = %520
  %528 = icmp eq i32 %521, 0
  br i1 %528, label %.loopexit1270.loopexit2344, label %529

529:                                              ; preds = %.lr.ph2110.3
  %530 = add i32 %.0991, -4
  %531 = getelementptr inbounds i8, ptr %.01055, i64 4
  %532 = load i8, ptr %522, align 1, !tbaa !23
  %533 = zext i8 %532 to i64
  %534 = shl nuw nsw i64 %533, %indvars.iv.next2820.2
  %535 = add i64 %534, %526
  br label %._crit_edge2111

._crit_edge2111:                                  ; preds = %502, %511, %520, %529, %.preheader1293
  %.201075.lcssa = phi ptr [ %.01055, %.preheader1293 ], [ %504, %502 ], [ %513, %511 ], [ %522, %520 ], [ %531, %529 ]
  %.201011.lcssa = phi i32 [ %.0991, %.preheader1293 ], [ %503, %502 ], [ %512, %511 ], [ %521, %520 ], [ %530, %529 ]
  %.16944.lcssa = phi i64 [ %.0928, %.preheader1293 ], [ %508, %502 ], [ %517, %511 ], [ %526, %520 ], [ %535, %529 ]
  %trunc1207 = trunc i64 %.16944.lcssa to i32
  %rev1208 = call i32 @llvm.bswap.i32(i32 %trunc1207)
  %536 = zext i32 %rev1208 to i64
  store i64 %536, ptr %35, align 8, !tbaa !27
  store i64 %536, ptr %36, align 8, !tbaa !34
  store i32 16190, ptr %18, align 8, !tbaa !15
  br label %537

537:                                              ; preds = %._crit_edge2111, %71
  %.211076 = phi ptr [ %.01055, %71 ], [ %.201075.lcssa, %._crit_edge2111 ]
  %.211012 = phi i32 [ %.0991, %71 ], [ %.201011.lcssa, %._crit_edge2111 ]
  %.17945 = phi i64 [ %.0928, %71 ], [ 0, %._crit_edge2111 ]
  %.17 = phi i32 [ %.0917, %71 ], [ 0, %._crit_edge2111 ]
  %538 = load i32, ptr %62, align 4, !tbaa !56
  %539 = icmp eq i32 %538, 0
  br i1 %539, label %540, label %541

540:                                              ; preds = %537
  store ptr %.01052, ptr %6, align 8, !tbaa !5
  store i32 %.0989, ptr %23, align 8, !tbaa !17
  store ptr %.211076, ptr %0, align 8, !tbaa !12
  store i32 %.211012, ptr %25, align 8, !tbaa !13
  store i64 %.17945, ptr %27, align 8, !tbaa !18
  store i32 %.17, ptr %29, align 8, !tbaa !19
  br label %.loopexit1314

541:                                              ; preds = %537
  %542 = call i64 @adler32(i64 noundef 0, ptr noundef null, i32 noundef 0) #5
  store i64 %542, ptr %35, align 8, !tbaa !27
  store i64 %542, ptr %36, align 8, !tbaa !34
  store i32 16191, ptr %18, align 8, !tbaa !15
  br label %543

543:                                              ; preds = %541, %71
  %.221077 = phi ptr [ %.01055, %71 ], [ %.211076, %541 ]
  %.221013 = phi i32 [ %.0991, %71 ], [ %.211012, %541 ]
  %.18946 = phi i64 [ %.0928, %71 ], [ %.17945, %541 ]
  %.18 = phi i32 [ %.0917, %71 ], [ %.17, %541 ]
  br i1 %or.cond3, label %.loopexit1270, label %544

544:                                              ; preds = %543, %71
  %.231078 = phi ptr [ %.01055, %71 ], [ %.221077, %543 ]
  %.231014 = phi i32 [ %.0991, %71 ], [ %.221013, %543 ]
  %.19947 = phi i64 [ %.0928, %71 ], [ %.18946, %543 ]
  %.19 = phi i32 [ %.0917, %71 ], [ %.18, %543 ]
  %545 = load i32, ptr %64, align 4, !tbaa !57
  %.not1209 = icmp eq i32 %545, 0
  br i1 %.not1209, label %.preheader1291, label %548

.preheader1291:                                   ; preds = %544
  %546 = icmp ult i32 %.19, 3
  br i1 %546, label %.lr.ph2119, label %561

.lr.ph2119:                                       ; preds = %.preheader1291
  %547 = icmp eq i32 %.231014, 0
  br i1 %547, label %.loopexit1270, label %._crit_edge2120

548:                                              ; preds = %544
  %549 = and i32 %.19, 7
  %550 = zext nneg i32 %549 to i64
  %551 = lshr i64 %.19947, %550
  %552 = and i32 %.19, -8
  store i32 16206, ptr %18, align 8, !tbaa !15
  br label %.thread

._crit_edge2120:                                  ; preds = %.lr.ph2119
  %553 = or disjoint i32 %.19, 8
  %554 = add i32 %.231014, -1
  %555 = getelementptr inbounds i8, ptr %.231078, i64 1
  %556 = load i8, ptr %.231078, align 1, !tbaa !23
  %557 = zext i8 %556 to i64
  %558 = zext nneg i32 %.19 to i64
  %559 = shl nuw nsw i64 %557, %558
  %560 = add i64 %559, %.19947
  br label %561

561:                                              ; preds = %._crit_edge2120, %.preheader1291
  %.241079.lcssa = phi ptr [ %555, %._crit_edge2120 ], [ %.231078, %.preheader1291 ]
  %.241015.lcssa = phi i32 [ %554, %._crit_edge2120 ], [ %.231014, %.preheader1291 ]
  %.20948.lcssa = phi i64 [ %560, %._crit_edge2120 ], [ %.19947, %.preheader1291 ]
  %.20.lcssa = phi i32 [ %553, %._crit_edge2120 ], [ %.19, %.preheader1291 ]
  %562 = trunc i64 %.20948.lcssa to i32
  %563 = and i32 %562, 1
  store i32 %563, ptr %64, align 4, !tbaa !57
  %564 = lshr i32 %562, 1
  %565 = and i32 %564, 3
  switch i32 %565, label %default.unreachable2866 [
    i32 0, label %.sink.split
    i32 1, label %566
    i32 2, label %570
    i32 3, label %571
  ]

566:                                              ; preds = %561
  call void @fixedtables(ptr noundef nonnull %17)
  store i32 16199, ptr %18, align 8, !tbaa !15
  br i1 %52, label %567, label %572

567:                                              ; preds = %566
  %568 = lshr i64 %.20948.lcssa, 3
  %569 = add i32 %.20.lcssa, -3
  br label %.loopexit1270

570:                                              ; preds = %561
  br label %.sink.split

571:                                              ; preds = %561
  store ptr @.str.6, ptr %37, align 8, !tbaa !31
  br label %.sink.split

default.unreachable2866:                          ; preds = %561
  unreachable

.sink.split:                                      ; preds = %561, %571, %570
  %.sink = phi i32 [ 16196, %570 ], [ 16209, %571 ], [ 16193, %561 ]
  store i32 %.sink, ptr %18, align 8, !tbaa !15
  br label %572

572:                                              ; preds = %.sink.split, %566
  %573 = lshr i64 %.20948.lcssa, 3
  %574 = add i32 %.20.lcssa, -3
  br label %.thread

575:                                              ; preds = %71
  %576 = and i32 %.0917, 7
  %577 = zext nneg i32 %576 to i64
  %578 = lshr i64 %.0928, %577
  %579 = and i32 %.0917, -8
  %580 = icmp ult i32 %.0917, 32
  br i1 %580, label %.lr.ph2100.preheader, label %._crit_edge2101

.lr.ph2100.preheader:                             ; preds = %575
  %581 = and i32 %.0917, 24
  %582 = zext nneg i32 %581 to i64
  %583 = icmp eq i32 %.0991, 0
  br i1 %583, label %.loopexit1270.loopexit2345, label %584

584:                                              ; preds = %.lr.ph2100.preheader
  %585 = add i32 %.0991, -1
  %586 = getelementptr inbounds i8, ptr %.01055, i64 1
  %587 = load i8, ptr %.01055, align 1, !tbaa !23
  %588 = zext i8 %587 to i64
  %589 = shl nuw nsw i64 %588, %582
  %590 = add i64 %589, %578
  %indvars.iv.next2818 = add nuw nsw i64 %582, 8
  %.not4177 = icmp eq i32 %581, 24
  br i1 %.not4177, label %._crit_edge2101.loopexit, label %.lr.ph2100.1, !llvm.loop !58

.lr.ph2100.1:                                     ; preds = %584
  %591 = icmp eq i32 %585, 0
  br i1 %591, label %.loopexit1270.loopexit2345, label %592

592:                                              ; preds = %.lr.ph2100.1
  %593 = add i32 %.0991, -2
  %594 = getelementptr inbounds i8, ptr %.01055, i64 2
  %595 = load i8, ptr %586, align 1, !tbaa !23
  %596 = zext i8 %595 to i64
  %597 = shl nuw nsw i64 %596, %indvars.iv.next2818
  %598 = add i64 %597, %590
  %indvars.iv.next2818.1 = add nuw nsw i64 %582, 16
  %599 = icmp ult i32 %581, 16
  br i1 %599, label %.lr.ph2100.2, label %._crit_edge2101.loopexit, !llvm.loop !58

.lr.ph2100.2:                                     ; preds = %592
  %600 = icmp eq i32 %593, 0
  br i1 %600, label %.loopexit1270.loopexit2345, label %601

601:                                              ; preds = %.lr.ph2100.2
  %602 = add i32 %.0991, -3
  %603 = getelementptr inbounds i8, ptr %.01055, i64 3
  %604 = load i8, ptr %594, align 1, !tbaa !23
  %605 = zext i8 %604 to i64
  %606 = shl nuw nsw i64 %605, %indvars.iv.next2818.1
  %607 = add i64 %606, %598
  %indvars.iv.next2818.2 = add nuw nsw i64 %582, 24
  %608 = icmp eq i32 %581, 0
  br i1 %608, label %.lr.ph2100.3, label %._crit_edge2101.loopexit, !llvm.loop !58

.lr.ph2100.3:                                     ; preds = %601
  %609 = icmp eq i32 %602, 0
  br i1 %609, label %.loopexit1270.loopexit2345, label %610

610:                                              ; preds = %.lr.ph2100.3
  %611 = add i32 %.0991, -4
  %612 = getelementptr inbounds i8, ptr %.01055, i64 4
  %613 = load i8, ptr %603, align 1, !tbaa !23
  %614 = zext i8 %613 to i64
  %615 = shl nuw nsw i64 %614, %indvars.iv.next2818.2
  %616 = add i64 %615, %607
  br label %._crit_edge2101.loopexit

._crit_edge2101.loopexit:                         ; preds = %610, %601, %592, %584
  %.lcssa3880 = phi i32 [ %585, %584 ], [ %593, %592 ], [ %602, %601 ], [ %611, %610 ]
  %.lcssa3879 = phi ptr [ %586, %584 ], [ %594, %592 ], [ %603, %601 ], [ %612, %610 ]
  %.lcssa3878 = phi i64 [ %590, %584 ], [ %598, %592 ], [ %607, %601 ], [ %616, %610 ]
  %indvars.iv.next2818.lcssa = phi i64 [ %indvars.iv.next2818, %584 ], [ %indvars.iv.next2818.1, %592 ], [ %indvars.iv.next2818.2, %601 ], [ 32, %610 ]
  %617 = trunc nuw nsw i64 %indvars.iv.next2818.lcssa to i32
  br label %._crit_edge2101

._crit_edge2101:                                  ; preds = %._crit_edge2101.loopexit, %575
  %.251080.lcssa = phi ptr [ %.01055, %575 ], [ %.lcssa3879, %._crit_edge2101.loopexit ]
  %.251016.lcssa = phi i32 [ %.0991, %575 ], [ %.lcssa3880, %._crit_edge2101.loopexit ]
  %.21949.lcssa = phi i64 [ %578, %575 ], [ %.lcssa3878, %._crit_edge2101.loopexit ]
  %.21.lcssa = phi i32 [ %579, %575 ], [ %617, %._crit_edge2101.loopexit ]
  %618 = and i64 %.21949.lcssa, 65535
  %619 = lshr i64 %.21949.lcssa, 16
  %620 = xor i64 %619, %618
  %.not1205 = icmp eq i64 %620, 65535
  br i1 %.not1205, label %622, label %621

621:                                              ; preds = %._crit_edge2101
  store ptr @.str.7, ptr %37, align 8, !tbaa !31
  store i32 16209, ptr %18, align 8, !tbaa !15
  br label %.thread

622:                                              ; preds = %._crit_edge2101
  %623 = trunc i64 %.21949.lcssa to i32
  %624 = and i32 %623, 65535
  store i32 %624, ptr %38, align 4, !tbaa !43
  store i32 16194, ptr %18, align 8, !tbaa !15
  br i1 %52, label %.loopexit1270, label %625

625:                                              ; preds = %622, %71
  %.261081 = phi ptr [ %.01055, %71 ], [ %.251080.lcssa, %622 ]
  %.261017 = phi i32 [ %.0991, %71 ], [ %.251016.lcssa, %622 ]
  %.22950 = phi i64 [ %.0928, %71 ], [ 0, %622 ]
  %.22 = phi i32 [ %.0917, %71 ], [ 0, %622 ]
  store i32 16195, ptr %18, align 8, !tbaa !15
  br label %626

626:                                              ; preds = %625, %71
  %.271082 = phi ptr [ %.01055, %71 ], [ %.261081, %625 ]
  %.271018 = phi i32 [ %.0991, %71 ], [ %.261017, %625 ]
  %.23951 = phi i64 [ %.0928, %71 ], [ %.22950, %625 ]
  %.23 = phi i32 [ %.0917, %71 ], [ %.22, %625 ]
  %627 = load i32, ptr %38, align 4, !tbaa !43
  %.not1206 = icmp eq i32 %627, 0
  br i1 %.not1206, label %638, label %628

628:                                              ; preds = %626
  %spec.select1259 = call i32 @llvm.umin.i32(i32 %627, i32 %.271018)
  %.4905 = call i32 @llvm.umin.i32(i32 %spec.select1259, i32 %.0989)
  %629 = icmp eq i32 %.4905, 0
  br i1 %629, label %.loopexit1270, label %630

630:                                              ; preds = %628
  %631 = zext i32 %.4905 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.01052, ptr align 1 %.271082, i64 %631, i1 false)
  %632 = sub i32 %.271018, %.4905
  %633 = getelementptr inbounds i8, ptr %.271082, i64 %631
  %634 = sub i32 %.0989, %.4905
  %635 = getelementptr inbounds i8, ptr %.01052, i64 %631
  %636 = load i32, ptr %38, align 4, !tbaa !43
  %637 = sub i32 %636, %.4905
  store i32 %637, ptr %38, align 4, !tbaa !43
  br label %.thread

638:                                              ; preds = %626
  store i32 16191, ptr %18, align 8, !tbaa !15
  br label %.thread

639:                                              ; preds = %.lr.ph1766.preheader
  %640 = add i32 %.0991, -1
  %641 = getelementptr inbounds i8, ptr %.01055, i64 1
  %642 = load i8, ptr %.01055, align 1, !tbaa !23
  %643 = zext i8 %642 to i64
  %644 = shl nuw nsw i64 %643, %74
  %645 = add i64 %644, %.0928
  %indvars.iv.next2778 = add nuw nsw i64 %74, 8
  %646 = icmp ult i32 %.0917, 6
  br i1 %646, label %.lr.ph1766.1, label %._crit_edge1767.loopexit, !llvm.loop !59

.lr.ph1766.1:                                     ; preds = %639
  %647 = icmp eq i32 %640, 0
  br i1 %647, label %.loopexit1270.loopexit2353, label %648

648:                                              ; preds = %.lr.ph1766.1
  %649 = add i32 %.0991, -2
  %650 = getelementptr inbounds i8, ptr %.01055, i64 2
  %651 = load i8, ptr %641, align 1, !tbaa !23
  %652 = zext i8 %651 to i64
  %653 = shl nuw nsw i64 %652, %indvars.iv.next2778
  %654 = add i64 %653, %645
  %indvars.iv.next2778.1 = or disjoint i64 %74, 16
  br label %._crit_edge1767.loopexit

._crit_edge1767.loopexit:                         ; preds = %648, %639
  %.lcssa3789 = phi i32 [ %640, %639 ], [ %649, %648 ]
  %.lcssa3788 = phi ptr [ %641, %639 ], [ %650, %648 ]
  %.lcssa3787 = phi i64 [ %645, %639 ], [ %654, %648 ]
  %indvars.iv.next2778.lcssa = phi i64 [ %indvars.iv.next2778, %639 ], [ %indvars.iv.next2778.1, %648 ]
  %655 = trunc nuw nsw i64 %indvars.iv.next2778.lcssa to i32
  br label %._crit_edge1767

._crit_edge1767:                                  ; preds = %._crit_edge1767.loopexit, %.preheader1307
  %.281083.lcssa = phi ptr [ %.01055, %.preheader1307 ], [ %.lcssa3788, %._crit_edge1767.loopexit ]
  %.281019.lcssa = phi i32 [ %.0991, %.preheader1307 ], [ %.lcssa3789, %._crit_edge1767.loopexit ]
  %.24952.lcssa = phi i64 [ %.0928, %.preheader1307 ], [ %.lcssa3787, %._crit_edge1767.loopexit ]
  %.24.lcssa = phi i32 [ %.0917, %.preheader1307 ], [ %655, %._crit_edge1767.loopexit ]
  %656 = trunc i64 %.24952.lcssa to i32
  %657 = and i32 %656, 31
  %658 = add nuw nsw i32 %657, 257
  store i32 %658, ptr %39, align 4, !tbaa !60
  %659 = lshr i32 %656, 5
  %660 = and i32 %659, 31
  %661 = add nuw nsw i32 %660, 1
  store i32 %661, ptr %40, align 8, !tbaa !61
  %662 = lshr i32 %656, 10
  %663 = and i32 %662, 15
  %664 = add nuw nsw i32 %663, 4
  store i32 %664, ptr %41, align 8, !tbaa !62
  %665 = lshr i64 %.24952.lcssa, 14
  %666 = add i32 %.24.lcssa, -14
  %667 = icmp ugt i32 %657, 29
  %668 = icmp ugt i32 %660, 29
  %or.cond1268 = or i1 %667, %668
  br i1 %or.cond1268, label %669, label %.split.thread

669:                                              ; preds = %._crit_edge1767
  store ptr @.str.8, ptr %37, align 8, !tbaa !31
  store i32 16209, ptr %18, align 8, !tbaa !15
  br label %.thread

.split.thread:                                    ; preds = %._crit_edge1767
  store i32 0, ptr %42, align 4, !tbaa !21
  store i32 16197, ptr %18, align 8, !tbaa !15
  br label %.preheader1277.preheader

.split:                                           ; preds = %71
  %.pre2849 = load i32, ptr %41, align 8, !tbaa !62
  %.promoted.pre = load i32, ptr %42, align 4, !tbaa !21
  %670 = icmp ult i32 %.promoted.pre, %.pre2849
  br i1 %670, label %.preheader1277.preheader, label %.preheader1306

.preheader1277.preheader:                         ; preds = %.split.thread, %.split
  %.252916 = phi i32 [ %666, %.split.thread ], [ %.0917, %.split ]
  %.259532915 = phi i64 [ %665, %.split.thread ], [ %.0928, %.split ]
  %.2910202914 = phi i32 [ %.281019.lcssa, %.split.thread ], [ %.0991, %.split ]
  %.2910842913 = phi ptr [ %.281083.lcssa, %.split.thread ], [ %.01055, %.split ]
  %671 = phi i32 [ %664, %.split.thread ], [ %.pre2849, %.split ]
  %.promoted2912 = phi i32 [ 0, %.split.thread ], [ %.promoted.pre, %.split ]
  %672 = zext i32 %.promoted2912 to i64
  %wide.trip.count = zext i32 %671 to i64
  br label %.preheader1277

.preheader1306:                                   ; preds = %685, %.split
  %.301085.lcssa = phi ptr [ %.01055, %.split ], [ %.311086.lcssa, %685 ]
  %.301021.lcssa = phi i32 [ %.0991, %.split ], [ %.311022.lcssa, %685 ]
  %.26954.lcssa = phi i64 [ %.0928, %.split ], [ %693, %685 ]
  %.26.lcssa = phi i32 [ %.0917, %.split ], [ %694, %685 ]
  %.lcssa = phi i32 [ %.promoted.pre, %.split ], [ %671, %685 ]
  %673 = icmp ult i32 %.lcssa, 19
  br i1 %673, label %.lr.ph1936.preheader, label %700

.lr.ph1936.preheader:                             ; preds = %.preheader1306
  %674 = zext nneg i32 %.lcssa to i64
  br label %.lr.ph1936

.preheader1277:                                   ; preds = %.preheader1277.preheader, %685
  %indvars.iv2780 = phi i64 [ %672, %.preheader1277.preheader ], [ %indvars.iv.next2781, %685 ]
  %.261929 = phi i32 [ %.252916, %.preheader1277.preheader ], [ %694, %685 ]
  %.269541928 = phi i64 [ %.259532915, %.preheader1277.preheader ], [ %693, %685 ]
  %.3010211927 = phi i32 [ %.2910202914, %.preheader1277.preheader ], [ %.311022.lcssa, %685 ]
  %.3010851926 = phi ptr [ %.2910842913, %.preheader1277.preheader ], [ %.311086.lcssa, %685 ]
  %675 = icmp ult i32 %.261929, 3
  br i1 %675, label %.lr.ph1776, label %685

.lr.ph1776:                                       ; preds = %.preheader1277
  %676 = icmp eq i32 %.3010211927, 0
  br i1 %676, label %.loopexit1270, label %._crit_edge1777

._crit_edge1777:                                  ; preds = %.lr.ph1776
  %677 = or disjoint i32 %.261929, 8
  %678 = add i32 %.3010211927, -1
  %679 = getelementptr inbounds i8, ptr %.3010851926, i64 1
  %680 = load i8, ptr %.3010851926, align 1, !tbaa !23
  %681 = zext i8 %680 to i64
  %682 = zext nneg i32 %.261929 to i64
  %683 = shl nuw nsw i64 %681, %682
  %684 = add i64 %683, %.269541928
  br label %685

685:                                              ; preds = %._crit_edge1777, %.preheader1277
  %.311086.lcssa = phi ptr [ %679, %._crit_edge1777 ], [ %.3010851926, %.preheader1277 ]
  %.311022.lcssa = phi i32 [ %678, %._crit_edge1777 ], [ %.3010211927, %.preheader1277 ]
  %.27955.lcssa = phi i64 [ %684, %._crit_edge1777 ], [ %.269541928, %.preheader1277 ]
  %.27.lcssa = phi i32 [ %677, %._crit_edge1777 ], [ %.261929, %.preheader1277 ]
  %686 = trunc i64 %.27955.lcssa to i16
  %687 = and i16 %686, 7
  %indvars.iv.next2781 = add nuw nsw i64 %indvars.iv2780, 1
  %688 = trunc nuw i64 %indvars.iv.next2781 to i32
  store i32 %688, ptr %42, align 4, !tbaa !21
  %689 = getelementptr inbounds [19 x i16], ptr @inflate.order, i64 0, i64 %indvars.iv2780
  %690 = load i16, ptr %689, align 2, !tbaa !63
  %691 = zext i16 %690 to i64
  %692 = getelementptr inbounds [320 x i16], ptr %43, i64 0, i64 %691
  store i16 %687, ptr %692, align 2, !tbaa !63
  %693 = lshr i64 %.27955.lcssa, 3
  %694 = add i32 %.27.lcssa, -3
  %exitcond.not = icmp eq i64 %indvars.iv.next2781, %wide.trip.count
  br i1 %exitcond.not, label %.preheader1306, label %.preheader1277, !llvm.loop !65

.lr.ph1936:                                       ; preds = %.lr.ph1936.preheader, %.lr.ph1936
  %indvars.iv2783 = phi i64 [ %674, %.lr.ph1936.preheader ], [ %indvars.iv.next2784, %.lr.ph1936 ]
  %indvars.iv.next2784 = add nuw nsw i64 %indvars.iv2783, 1
  %695 = getelementptr inbounds [19 x i16], ptr @inflate.order, i64 0, i64 %indvars.iv2783
  %696 = load i16, ptr %695, align 2, !tbaa !63
  %697 = zext i16 %696 to i64
  %698 = getelementptr inbounds [320 x i16], ptr %43, i64 0, i64 %697
  store i16 0, ptr %698, align 2, !tbaa !63
  %699 = and i64 %indvars.iv.next2784, 4294967295
  %exitcond2786.not = icmp eq i64 %699, 19
  br i1 %exitcond2786.not, label %._crit_edge1937, label %.lr.ph1936, !llvm.loop !66

._crit_edge1937:                                  ; preds = %.lr.ph1936
  store i32 19, ptr %42, align 4, !tbaa !21
  br label %700

700:                                              ; preds = %._crit_edge1937, %.preheader1306
  store ptr %44, ptr %45, align 8, !tbaa !67
  store ptr %44, ptr %46, align 8, !tbaa !68
  store i32 7, ptr %47, align 8, !tbaa !69
  %701 = call i32 @inflate_table(i32 noundef 0, ptr noundef nonnull %43, i32 noundef 19, ptr noundef nonnull %45, ptr noundef nonnull %47, ptr noundef nonnull %48) #5
  %.not1182 = icmp eq i32 %701, 0
  br i1 %.not1182, label %703, label %702

702:                                              ; preds = %700
  store ptr @.str.9, ptr %37, align 8, !tbaa !31
  store i32 16209, ptr %18, align 8, !tbaa !15
  br label %.thread

703:                                              ; preds = %700
  store i32 0, ptr %42, align 4, !tbaa !21
  store i32 16198, ptr %18, align 8, !tbaa !15
  br label %704

704:                                              ; preds = %._crit_edge2851, %703
  %.promoted1991 = phi i32 [ %.promoted1991.pre, %._crit_edge2851 ], [ 0, %703 ]
  %.321087 = phi ptr [ %.01055, %._crit_edge2851 ], [ %.301085.lcssa, %703 ]
  %.321023 = phi i32 [ %.0991, %._crit_edge2851 ], [ %.301021.lcssa, %703 ]
  %.28956 = phi i64 [ %.0928, %._crit_edge2851 ], [ %.26954.lcssa, %703 ]
  %.28 = phi i32 [ %.0917, %._crit_edge2851 ], [ %.26.lcssa, %703 ]
  %.1 = phi i32 [ %.0, %._crit_edge2851 ], [ 0, %703 ]
  %705 = load i32, ptr %39, align 4, !tbaa !60
  %706 = load i32, ptr %40, align 8, !tbaa !61
  %707 = add i32 %706, %705
  %708 = icmp ult i32 %.promoted1991, %707
  br i1 %708, label %.preheader1275.lr.ph, label %._crit_edge1999

.preheader1275.lr.ph:                             ; preds = %704
  %709 = load ptr, ptr %46, align 8, !tbaa !68
  %710 = load i32, ptr %47, align 8, !tbaa !69
  %notmask = shl nsw i32 -1, %710
  %711 = xor i32 %notmask, -1
  br label %.preheader1275

.preheader1275:                                   ; preds = %.preheader1275.lr.ph, %870
  %.291998 = phi i32 [ %.28, %.preheader1275.lr.ph ], [ %.35, %870 ]
  %.299571997 = phi i64 [ %.28956, %.preheader1275.lr.ph ], [ %.35963, %870 ]
  %.3310241996 = phi i32 [ %.321023, %.preheader1275.lr.ph ], [ %.391030, %870 ]
  %.3310881995 = phi ptr [ %.321087, %.preheader1275.lr.ph ], [ %.391094, %870 ]
  %.lcssa198919921994 = phi i32 [ %.promoted1991, %.preheader1275.lr.ph ], [ %.lcssa19891993, %870 ]
  %712 = trunc i64 %.299571997 to i32
  %713 = and i32 %711, %712
  %714 = zext nneg i32 %713 to i64
  %.sroa.1867.0..sroa_idx1941 = getelementptr inbounds %struct.code, ptr %709, i64 %714, i32 1
  %.sroa.1867.0.copyload1942 = load i8, ptr %.sroa.1867.0..sroa_idx1941, align 1, !tbaa !23
  %715 = zext i8 %.sroa.1867.0.copyload1942 to i32
  %.not11831943 = icmp ult i32 %.291998, %715
  br i1 %.not11831943, label %.lr.ph1948.preheader, label %._crit_edge1949

.lr.ph1948.preheader:                             ; preds = %.preheader1275
  %716 = zext nneg i32 %.291998 to i64
  br label %.lr.ph1948

.lr.ph1948:                                       ; preds = %.lr.ph1948.preheader, %718
  %indvars.iv2787 = phi i64 [ %716, %.lr.ph1948.preheader ], [ %indvars.iv.next2788, %718 ]
  %.309581946 = phi i64 [ %.299571997, %.lr.ph1948.preheader ], [ %724, %718 ]
  %.3410251945 = phi i32 [ %.3310241996, %.lr.ph1948.preheader ], [ %719, %718 ]
  %.3410891944 = phi ptr [ %.3310881995, %.lr.ph1948.preheader ], [ %720, %718 ]
  %717 = icmp eq i32 %.3410251945, 0
  br i1 %717, label %.loopexit1270.loopexit2917, label %718

718:                                              ; preds = %.lr.ph1948
  %719 = add i32 %.3410251945, -1
  %720 = getelementptr inbounds i8, ptr %.3410891944, i64 1
  %721 = load i8, ptr %.3410891944, align 1, !tbaa !23
  %722 = zext i8 %721 to i64
  %723 = shl i64 %722, %indvars.iv2787
  %724 = add i64 %723, %.309581946
  %indvars.iv.next2788 = add nuw nsw i64 %indvars.iv2787, 8
  %725 = trunc i64 %724 to i32
  %726 = and i32 %711, %725
  %727 = zext nneg i32 %726 to i64
  %.sroa.1867.0..sroa_idx = getelementptr inbounds %struct.code, ptr %709, i64 %727, i32 1
  %.sroa.1867.0.copyload = load i8, ptr %.sroa.1867.0..sroa_idx, align 1, !tbaa !23
  %728 = zext i8 %.sroa.1867.0.copyload to i64
  %.not1183 = icmp ult i64 %indvars.iv.next2788, %728
  br i1 %.not1183, label %.lr.ph1948, label %._crit_edge1949.loopexit

._crit_edge1949.loopexit:                         ; preds = %718
  %729 = zext i8 %.sroa.1867.0.copyload to i32
  %730 = trunc nuw i64 %indvars.iv.next2788 to i32
  br label %._crit_edge1949

._crit_edge1949:                                  ; preds = %._crit_edge1949.loopexit, %.preheader1275
  %731 = phi i64 [ %714, %.preheader1275 ], [ %727, %._crit_edge1949.loopexit ]
  %.lcssa1939 = phi i32 [ %715, %.preheader1275 ], [ %729, %._crit_edge1949.loopexit ]
  %.341089.lcssa = phi ptr [ %.3310881995, %.preheader1275 ], [ %720, %._crit_edge1949.loopexit ]
  %.341025.lcssa = phi i32 [ %.3310241996, %.preheader1275 ], [ %719, %._crit_edge1949.loopexit ]
  %.30958.lcssa = phi i64 [ %.299571997, %.preheader1275 ], [ %724, %._crit_edge1949.loopexit ]
  %.30.lcssa = phi i32 [ %.291998, %.preheader1275 ], [ %730, %._crit_edge1949.loopexit ]
  %.sroa.1867.0.copyload.lcssa = phi i8 [ %.sroa.1867.0.copyload1942, %.preheader1275 ], [ %.sroa.1867.0.copyload, %._crit_edge1949.loopexit ]
  %.sroa.42.0..sroa_idx.le = getelementptr inbounds %struct.code, ptr %709, i64 %731, i32 2
  %.sroa.42.0.copyload.le = load i16, ptr %.sroa.42.0..sroa_idx.le, align 2, !tbaa !63
  %732 = icmp ult i16 %.sroa.42.0.copyload.le, 16
  br i1 %732, label %733, label %740

733:                                              ; preds = %._crit_edge1949
  %734 = zext nneg i8 %.sroa.1867.0.copyload.lcssa to i64
  %735 = lshr i64 %.30958.lcssa, %734
  %736 = sub i32 %.30.lcssa, %.lcssa1939
  %737 = add i32 %.lcssa198919921994, 1
  store i32 %737, ptr %42, align 4, !tbaa !21
  %738 = zext i32 %.lcssa198919921994 to i64
  %739 = getelementptr inbounds [320 x i16], ptr %43, i64 0, i64 %738
  store i16 %.sroa.42.0.copyload.le, ptr %739, align 2, !tbaa !63
  br label %870

740:                                              ; preds = %._crit_edge1949
  switch i16 %.sroa.42.0.copyload.le, label %.preheader1269 [
    i16 16, label %.preheader1271
    i16 17, label %.preheader1273
  ]

.preheader1273:                                   ; preds = %740
  %741 = add nuw nsw i32 %.lcssa1939, 3
  %742 = icmp ult i32 %.30.lcssa, %741
  br i1 %742, label %.lr.ph1962.preheader, label %._crit_edge1963

.lr.ph1962.preheader:                             ; preds = %.preheader1273
  %743 = zext nneg i32 %.30.lcssa to i64
  %744 = zext nneg i32 %741 to i64
  br label %.lr.ph1962

.preheader1271:                                   ; preds = %740
  %745 = add nuw nsw i32 %.lcssa1939, 2
  %746 = icmp ult i32 %.30.lcssa, %745
  br i1 %746, label %.lr.ph1972.preheader, label %._crit_edge1973

.lr.ph1972.preheader:                             ; preds = %.preheader1271
  %747 = zext nneg i32 %.30.lcssa to i64
  %748 = zext nneg i32 %745 to i64
  br label %.lr.ph1972

.preheader1269:                                   ; preds = %740
  %749 = add nuw nsw i32 %.lcssa1939, 7
  %750 = icmp ult i32 %.30.lcssa, %749
  br i1 %750, label %.lr.ph1982.preheader, label %._crit_edge1983

.lr.ph1982.preheader:                             ; preds = %.preheader1269
  %751 = zext nneg i32 %.30.lcssa to i64
  %752 = zext nneg i32 %749 to i64
  br label %.lr.ph1982

.lr.ph1972:                                       ; preds = %.lr.ph1972.preheader, %754
  %indvars.iv2793 = phi i64 [ %747, %.lr.ph1972.preheader ], [ %indvars.iv.next2794, %754 ]
  %.319591970 = phi i64 [ %.30958.lcssa, %.lr.ph1972.preheader ], [ %760, %754 ]
  %.3510261969 = phi i32 [ %.341025.lcssa, %.lr.ph1972.preheader ], [ %755, %754 ]
  %.3510901968 = phi ptr [ %.341089.lcssa, %.lr.ph1972.preheader ], [ %756, %754 ]
  %753 = icmp eq i32 %.3510261969, 0
  br i1 %753, label %.loopexit1270.loopexit2335, label %754

754:                                              ; preds = %.lr.ph1972
  %755 = add i32 %.3510261969, -1
  %756 = getelementptr inbounds i8, ptr %.3510901968, i64 1
  %757 = load i8, ptr %.3510901968, align 1, !tbaa !23
  %758 = zext i8 %757 to i64
  %759 = shl i64 %758, %indvars.iv2793
  %760 = add i64 %759, %.319591970
  %indvars.iv.next2794 = add nuw nsw i64 %indvars.iv2793, 8
  %761 = icmp ult i64 %indvars.iv.next2794, %748
  br i1 %761, label %.lr.ph1972, label %._crit_edge1973.loopexit, !llvm.loop !70

._crit_edge1973.loopexit:                         ; preds = %754
  %762 = trunc nuw i64 %indvars.iv.next2794 to i32
  br label %._crit_edge1973

._crit_edge1973:                                  ; preds = %._crit_edge1973.loopexit, %.preheader1271
  %.351090.lcssa = phi ptr [ %.341089.lcssa, %.preheader1271 ], [ %756, %._crit_edge1973.loopexit ]
  %.351026.lcssa = phi i32 [ %.341025.lcssa, %.preheader1271 ], [ %755, %._crit_edge1973.loopexit ]
  %.31959.lcssa = phi i64 [ %.30958.lcssa, %.preheader1271 ], [ %760, %._crit_edge1973.loopexit ]
  %.31.lcssa = phi i32 [ %.30.lcssa, %.preheader1271 ], [ %762, %._crit_edge1973.loopexit ]
  %763 = zext nneg i8 %.sroa.1867.0.copyload.lcssa to i64
  %764 = lshr i64 %.31959.lcssa, %763
  %765 = sub i32 %.31.lcssa, %.lcssa1939
  %766 = icmp eq i32 %.lcssa198919921994, 0
  br i1 %766, label %767, label %768

767:                                              ; preds = %._crit_edge1973
  store ptr @.str.10, ptr %37, align 8, !tbaa !31
  store i32 16209, ptr %18, align 8, !tbaa !15
  br label %.thread

768:                                              ; preds = %._crit_edge1973
  %769 = add i32 %.lcssa198919921994, -1
  %770 = zext i32 %769 to i64
  %771 = getelementptr inbounds [320 x i16], ptr %43, i64 0, i64 %770
  %772 = load i16, ptr %771, align 2, !tbaa !63
  %773 = trunc i64 %764 to i32
  %774 = and i32 %773, 3
  %775 = add nuw nsw i32 %774, 3
  %776 = lshr i64 %764, 2
  %777 = add i32 %765, -2
  br label %812

.lr.ph1962:                                       ; preds = %.lr.ph1962.preheader, %779
  %indvars.iv2790 = phi i64 [ %743, %.lr.ph1962.preheader ], [ %indvars.iv.next2791, %779 ]
  %.329601960 = phi i64 [ %.30958.lcssa, %.lr.ph1962.preheader ], [ %785, %779 ]
  %.3610271959 = phi i32 [ %.341025.lcssa, %.lr.ph1962.preheader ], [ %780, %779 ]
  %.3610911958 = phi ptr [ %.341089.lcssa, %.lr.ph1962.preheader ], [ %781, %779 ]
  %778 = icmp eq i32 %.3610271959, 0
  br i1 %778, label %.loopexit1270.loopexit2336, label %779

779:                                              ; preds = %.lr.ph1962
  %780 = add i32 %.3610271959, -1
  %781 = getelementptr inbounds i8, ptr %.3610911958, i64 1
  %782 = load i8, ptr %.3610911958, align 1, !tbaa !23
  %783 = zext i8 %782 to i64
  %784 = shl i64 %783, %indvars.iv2790
  %785 = add i64 %784, %.329601960
  %indvars.iv.next2791 = add nuw nsw i64 %indvars.iv2790, 8
  %786 = icmp ult i64 %indvars.iv.next2791, %744
  br i1 %786, label %.lr.ph1962, label %._crit_edge1963.loopexit, !llvm.loop !71

._crit_edge1963.loopexit:                         ; preds = %779
  %787 = trunc nuw i64 %indvars.iv.next2791 to i32
  br label %._crit_edge1963

._crit_edge1963:                                  ; preds = %._crit_edge1963.loopexit, %.preheader1273
  %.361091.lcssa = phi ptr [ %.341089.lcssa, %.preheader1273 ], [ %781, %._crit_edge1963.loopexit ]
  %.361027.lcssa = phi i32 [ %.341025.lcssa, %.preheader1273 ], [ %780, %._crit_edge1963.loopexit ]
  %.32960.lcssa = phi i64 [ %.30958.lcssa, %.preheader1273 ], [ %785, %._crit_edge1963.loopexit ]
  %.32.lcssa = phi i32 [ %.30.lcssa, %.preheader1273 ], [ %787, %._crit_edge1963.loopexit ]
  %788 = zext nneg i8 %.sroa.1867.0.copyload.lcssa to i64
  %789 = lshr i64 %.32960.lcssa, %788
  %790 = trunc i64 %789 to i32
  %791 = and i32 %790, 7
  %792 = add nuw nsw i32 %791, 3
  %793 = lshr i64 %789, 3
  %reass.sub = sub i32 %.32.lcssa, %.lcssa1939
  %794 = add i32 %reass.sub, -3
  br label %812

.lr.ph1982:                                       ; preds = %.lr.ph1982.preheader, %796
  %indvars.iv2796 = phi i64 [ %751, %.lr.ph1982.preheader ], [ %indvars.iv.next2797, %796 ]
  %.339611980 = phi i64 [ %.30958.lcssa, %.lr.ph1982.preheader ], [ %802, %796 ]
  %.3710281979 = phi i32 [ %.341025.lcssa, %.lr.ph1982.preheader ], [ %797, %796 ]
  %.3710921978 = phi ptr [ %.341089.lcssa, %.lr.ph1982.preheader ], [ %798, %796 ]
  %795 = icmp eq i32 %.3710281979, 0
  br i1 %795, label %.loopexit1270.loopexit, label %796

796:                                              ; preds = %.lr.ph1982
  %797 = add i32 %.3710281979, -1
  %798 = getelementptr inbounds i8, ptr %.3710921978, i64 1
  %799 = load i8, ptr %.3710921978, align 1, !tbaa !23
  %800 = zext i8 %799 to i64
  %801 = shl i64 %800, %indvars.iv2796
  %802 = add i64 %801, %.339611980
  %indvars.iv.next2797 = add nuw nsw i64 %indvars.iv2796, 8
  %803 = icmp ult i64 %indvars.iv.next2797, %752
  br i1 %803, label %.lr.ph1982, label %._crit_edge1983.loopexit, !llvm.loop !72

._crit_edge1983.loopexit:                         ; preds = %796
  %804 = trunc nuw i64 %indvars.iv.next2797 to i32
  br label %._crit_edge1983

._crit_edge1983:                                  ; preds = %._crit_edge1983.loopexit, %.preheader1269
  %.371092.lcssa = phi ptr [ %.341089.lcssa, %.preheader1269 ], [ %798, %._crit_edge1983.loopexit ]
  %.371028.lcssa = phi i32 [ %.341025.lcssa, %.preheader1269 ], [ %797, %._crit_edge1983.loopexit ]
  %.33961.lcssa = phi i64 [ %.30958.lcssa, %.preheader1269 ], [ %802, %._crit_edge1983.loopexit ]
  %.33.lcssa = phi i32 [ %.30.lcssa, %.preheader1269 ], [ %804, %._crit_edge1983.loopexit ]
  %805 = zext nneg i8 %.sroa.1867.0.copyload.lcssa to i64
  %806 = lshr i64 %.33961.lcssa, %805
  %807 = trunc i64 %806 to i32
  %808 = and i32 %807, 127
  %809 = add nuw nsw i32 %808, 11
  %810 = lshr i64 %806, 7
  %reass.sub2334 = sub i32 %.33.lcssa, %.lcssa1939
  %811 = add i32 %reass.sub2334, -7
  br label %812

812:                                              ; preds = %._crit_edge1963, %._crit_edge1983, %768
  %.381093 = phi ptr [ %.351090.lcssa, %768 ], [ %.361091.lcssa, %._crit_edge1963 ], [ %.371092.lcssa, %._crit_edge1983 ]
  %.381029 = phi i32 [ %.351026.lcssa, %768 ], [ %.361027.lcssa, %._crit_edge1963 ], [ %.371028.lcssa, %._crit_edge1983 ]
  %.34962 = phi i64 [ %776, %768 ], [ %793, %._crit_edge1963 ], [ %810, %._crit_edge1983 ]
  %.34 = phi i32 [ %777, %768 ], [ %794, %._crit_edge1963 ], [ %811, %._crit_edge1983 ]
  %.5906 = phi i32 [ %775, %768 ], [ %792, %._crit_edge1963 ], [ %809, %._crit_edge1983 ]
  %.0897 = phi i16 [ %772, %768 ], [ 0, %._crit_edge1963 ], [ 0, %._crit_edge1983 ]
  %813 = add i32 %.5906, %.lcssa198919921994
  %814 = icmp ugt i32 %813, %707
  br i1 %814, label %855, label %.preheader.preheader

.preheader.preheader:                             ; preds = %812
  %min.iters.check3753 = icmp ult i32 %.5906, 16
  %815 = sub nsw i32 0, %.5906
  %816 = icmp ugt i32 %.lcssa198919921994, %815
  %or.cond3767 = select i1 %min.iters.check3753, i1 true, i1 %816
  br i1 %or.cond3767, label %.preheader.preheader3769, label %vector.ph3754

.preheader.preheader3769:                         ; preds = %middle.block3751, %.preheader.preheader
  %.69071990.ph = phi i32 [ %.5906, %.preheader.preheader ], [ %ind.end3757, %middle.block3751 ]
  %.ph = phi i32 [ %.lcssa198919921994, %.preheader.preheader ], [ %ind.end3759, %middle.block3751 ]
  %817 = add nsw i32 %.69071990.ph, -1
  %xtraiter = and i32 %.69071990.ph, 3
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader.prol.loopexit, label %.preheader.prol

.preheader.prol:                                  ; preds = %.preheader.preheader3769, %.preheader.prol
  %.69071990.prol = phi i32 [ %819, %.preheader.prol ], [ %.69071990.ph, %.preheader.preheader3769 ]
  %818 = phi i32 [ %820, %.preheader.prol ], [ %.ph, %.preheader.preheader3769 ]
  %prol.iter = phi i32 [ %prol.iter.next, %.preheader.prol ], [ 0, %.preheader.preheader3769 ]
  %819 = add nsw i32 %.69071990.prol, -1
  %820 = add i32 %818, 1
  %821 = zext i32 %818 to i64
  %822 = getelementptr inbounds [320 x i16], ptr %43, i64 0, i64 %821
  store i16 %.0897, ptr %822, align 2, !tbaa !63
  %prol.iter.next = add i32 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i32 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.preheader.prol.loopexit, label %.preheader.prol, !llvm.loop !73

.preheader.prol.loopexit:                         ; preds = %.preheader.prol, %.preheader.preheader3769
  %.lcssa3819.unr = phi i32 [ poison, %.preheader.preheader3769 ], [ %820, %.preheader.prol ]
  %.69071990.unr = phi i32 [ %.69071990.ph, %.preheader.preheader3769 ], [ %819, %.preheader.prol ]
  %.unr = phi i32 [ %.ph, %.preheader.preheader3769 ], [ %820, %.preheader.prol ]
  %823 = icmp ult i32 %817, 3
  br i1 %823, label %.loopexit, label %.preheader

vector.ph3754:                                    ; preds = %.preheader.preheader
  %n.vec3756 = and i32 %.5906, -16
  %ind.end3757 = and i32 %.5906, 15
  %ind.end3759 = add i32 %.lcssa198919921994, %n.vec3756
  %broadcast.splatinsert = insertelement <8 x i16> poison, i16 %.0897, i64 0
  %broadcast.splat = shufflevector <8 x i16> %broadcast.splatinsert, <8 x i16> poison, <8 x i32> zeroinitializer
  %824 = zext i32 %.lcssa198919921994 to i64
  %825 = getelementptr inbounds [320 x i16], ptr %43, i64 0, i64 %824
  %826 = getelementptr inbounds i8, ptr %825, i64 16
  store <8 x i16> %broadcast.splat, ptr %825, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat, ptr %826, align 2, !tbaa !63
  %827 = icmp eq i32 %n.vec3756, 16
  br i1 %827, label %middle.block3751, label %vector.body3761.1, !llvm.loop !75

vector.body3761.1:                                ; preds = %vector.ph3754
  %offset.idx.1 = add i32 %.lcssa198919921994, 16
  %828 = zext i32 %offset.idx.1 to i64
  %829 = getelementptr inbounds [320 x i16], ptr %43, i64 0, i64 %828
  %830 = getelementptr inbounds i8, ptr %829, i64 16
  store <8 x i16> %broadcast.splat, ptr %829, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat, ptr %830, align 2, !tbaa !63
  %831 = icmp eq i32 %n.vec3756, 32
  br i1 %831, label %middle.block3751, label %vector.body3761.2, !llvm.loop !75

vector.body3761.2:                                ; preds = %vector.body3761.1
  %offset.idx.2 = add i32 %.lcssa198919921994, 32
  %832 = zext i32 %offset.idx.2 to i64
  %833 = getelementptr inbounds [320 x i16], ptr %43, i64 0, i64 %832
  %834 = getelementptr inbounds i8, ptr %833, i64 16
  store <8 x i16> %broadcast.splat, ptr %833, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat, ptr %834, align 2, !tbaa !63
  %835 = icmp eq i32 %n.vec3756, 48
  br i1 %835, label %middle.block3751, label %vector.body3761.3, !llvm.loop !75

vector.body3761.3:                                ; preds = %vector.body3761.2
  %offset.idx.3 = add i32 %.lcssa198919921994, 48
  %836 = zext i32 %offset.idx.3 to i64
  %837 = getelementptr inbounds [320 x i16], ptr %43, i64 0, i64 %836
  %838 = getelementptr inbounds i8, ptr %837, i64 16
  store <8 x i16> %broadcast.splat, ptr %837, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat, ptr %838, align 2, !tbaa !63
  %839 = icmp eq i32 %n.vec3756, 64
  br i1 %839, label %middle.block3751, label %vector.body3761.4, !llvm.loop !75

vector.body3761.4:                                ; preds = %vector.body3761.3
  %offset.idx.4 = add i32 %.lcssa198919921994, 64
  %840 = zext i32 %offset.idx.4 to i64
  %841 = getelementptr inbounds [320 x i16], ptr %43, i64 0, i64 %840
  %842 = getelementptr inbounds i8, ptr %841, i64 16
  store <8 x i16> %broadcast.splat, ptr %841, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat, ptr %842, align 2, !tbaa !63
  %843 = icmp eq i32 %n.vec3756, 80
  br i1 %843, label %middle.block3751, label %vector.body3761.5, !llvm.loop !75

vector.body3761.5:                                ; preds = %vector.body3761.4
  %offset.idx.5 = add i32 %.lcssa198919921994, 80
  %844 = zext i32 %offset.idx.5 to i64
  %845 = getelementptr inbounds [320 x i16], ptr %43, i64 0, i64 %844
  %846 = getelementptr inbounds i8, ptr %845, i64 16
  store <8 x i16> %broadcast.splat, ptr %845, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat, ptr %846, align 2, !tbaa !63
  %847 = icmp eq i32 %n.vec3756, 96
  br i1 %847, label %middle.block3751, label %vector.body3761.6, !llvm.loop !75

vector.body3761.6:                                ; preds = %vector.body3761.5
  %offset.idx.6 = add i32 %.lcssa198919921994, 96
  %848 = zext i32 %offset.idx.6 to i64
  %849 = getelementptr inbounds [320 x i16], ptr %43, i64 0, i64 %848
  %850 = getelementptr inbounds i8, ptr %849, i64 16
  store <8 x i16> %broadcast.splat, ptr %849, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat, ptr %850, align 2, !tbaa !63
  %851 = icmp eq i32 %n.vec3756, 112
  br i1 %851, label %middle.block3751, label %vector.body3761.7, !llvm.loop !75

vector.body3761.7:                                ; preds = %vector.body3761.6
  %offset.idx.7 = add i32 %.lcssa198919921994, 112
  %852 = zext i32 %offset.idx.7 to i64
  %853 = getelementptr inbounds [320 x i16], ptr %43, i64 0, i64 %852
  %854 = getelementptr inbounds i8, ptr %853, i64 16
  store <8 x i16> %broadcast.splat, ptr %853, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat, ptr %854, align 2, !tbaa !63
  br label %middle.block3751

middle.block3751:                                 ; preds = %vector.body3761.7, %vector.body3761.6, %vector.body3761.5, %vector.body3761.4, %vector.body3761.3, %vector.body3761.2, %vector.body3761.1, %vector.ph3754
  %cmp.n3764 = icmp eq i32 %.5906, %n.vec3756
  br i1 %cmp.n3764, label %.loopexit, label %.preheader.preheader3769

855:                                              ; preds = %812
  store ptr @.str.10, ptr %37, align 8, !tbaa !31
  store i32 16209, ptr %18, align 8, !tbaa !15
  br label %.thread

.preheader:                                       ; preds = %.preheader.prol.loopexit, %.preheader
  %.69071990 = phi i32 [ %866, %.preheader ], [ %.69071990.unr, %.preheader.prol.loopexit ]
  %856 = phi i32 [ %867, %.preheader ], [ %.unr, %.preheader.prol.loopexit ]
  %857 = add i32 %856, 1
  %858 = zext i32 %856 to i64
  %859 = getelementptr inbounds [320 x i16], ptr %43, i64 0, i64 %858
  store i16 %.0897, ptr %859, align 2, !tbaa !63
  %860 = add i32 %856, 2
  %861 = zext i32 %857 to i64
  %862 = getelementptr inbounds [320 x i16], ptr %43, i64 0, i64 %861
  store i16 %.0897, ptr %862, align 2, !tbaa !63
  %863 = add i32 %856, 3
  %864 = zext i32 %860 to i64
  %865 = getelementptr inbounds [320 x i16], ptr %43, i64 0, i64 %864
  store i16 %.0897, ptr %865, align 2, !tbaa !63
  %866 = add nsw i32 %.69071990, -4
  %867 = add i32 %856, 4
  %868 = zext i32 %863 to i64
  %869 = getelementptr inbounds [320 x i16], ptr %43, i64 0, i64 %868
  store i16 %.0897, ptr %869, align 2, !tbaa !63
  %.not1184.3 = icmp eq i32 %866, 0
  br i1 %.not1184.3, label %.loopexit, label %.preheader, !llvm.loop !78

.loopexit:                                        ; preds = %.preheader.prol.loopexit, %.preheader, %middle.block3751
  %.lcssa3386 = phi i32 [ %ind.end3759, %middle.block3751 ], [ %.lcssa3819.unr, %.preheader.prol.loopexit ], [ %867, %.preheader ]
  store i32 %.lcssa3386, ptr %42, align 4, !tbaa !21
  br label %870

870:                                              ; preds = %.loopexit, %733
  %.lcssa19891993 = phi i32 [ %737, %733 ], [ %.lcssa3386, %.loopexit ]
  %.391094 = phi ptr [ %.341089.lcssa, %733 ], [ %.381093, %.loopexit ]
  %.391030 = phi i32 [ %.341025.lcssa, %733 ], [ %.381029, %.loopexit ]
  %.35963 = phi i64 [ %735, %733 ], [ %.34962, %.loopexit ]
  %.35 = phi i32 [ %736, %733 ], [ %.34, %.loopexit ]
  %871 = icmp ult i32 %.lcssa19891993, %707
  br i1 %871, label %.preheader1275, label %._crit_edge1999, !llvm.loop !79

._crit_edge1999:                                  ; preds = %870, %704
  %.331088.lcssa = phi ptr [ %.321087, %704 ], [ %.391094, %870 ]
  %.331024.lcssa = phi i32 [ %.321023, %704 ], [ %.391030, %870 ]
  %.29957.lcssa = phi i64 [ %.28956, %704 ], [ %.35963, %870 ]
  %.29.lcssa = phi i32 [ %.28, %704 ], [ %.35, %870 ]
  %872 = load i16, ptr %49, align 8, !tbaa !63
  %873 = icmp eq i16 %872, 0
  br i1 %873, label %874, label %875

874:                                              ; preds = %._crit_edge1999
  store ptr @.str.11, ptr %37, align 8, !tbaa !31
  store i32 16209, ptr %18, align 8, !tbaa !15
  br label %.thread

875:                                              ; preds = %._crit_edge1999
  store ptr %44, ptr %45, align 8, !tbaa !67
  store ptr %44, ptr %46, align 8, !tbaa !68
  store i32 10, ptr %47, align 8, !tbaa !69
  %876 = call i32 @inflate_table(i32 noundef 1, ptr noundef nonnull %43, i32 noundef %705, ptr noundef nonnull %45, ptr noundef nonnull %47, ptr noundef nonnull %48) #5
  %.not1185 = icmp eq i32 %876, 0
  br i1 %.not1185, label %878, label %877

877:                                              ; preds = %875
  store ptr @.str.12, ptr %37, align 8, !tbaa !31
  store i32 16209, ptr %18, align 8, !tbaa !15
  br label %.thread

878:                                              ; preds = %875
  %879 = load ptr, ptr %45, align 8, !tbaa !67
  store ptr %879, ptr %50, align 8, !tbaa !80
  store i32 9, ptr %51, align 4, !tbaa !81
  %880 = load i32, ptr %39, align 4, !tbaa !60
  %881 = zext i32 %880 to i64
  %882 = getelementptr inbounds i16, ptr %43, i64 %881
  %883 = load i32, ptr %40, align 8, !tbaa !61
  %884 = call i32 @inflate_table(i32 noundef 2, ptr noundef nonnull %882, i32 noundef %883, ptr noundef nonnull %45, ptr noundef nonnull %51, ptr noundef nonnull %48) #5
  %.not1186 = icmp eq i32 %884, 0
  br i1 %.not1186, label %886, label %885

885:                                              ; preds = %878
  store ptr @.str.13, ptr %37, align 8, !tbaa !31
  store i32 16209, ptr %18, align 8, !tbaa !15
  br label %.thread

886:                                              ; preds = %878
  store i32 16199, ptr %18, align 8, !tbaa !15
  br i1 %52, label %.loopexit1270, label %887

887:                                              ; preds = %886, %71
  %.411096 = phi ptr [ %.01055, %71 ], [ %.331088.lcssa, %886 ]
  %.411032 = phi i32 [ %.0991, %71 ], [ %.331024.lcssa, %886 ]
  %.37965 = phi i64 [ %.0928, %71 ], [ %.29957.lcssa, %886 ]
  %.37 = phi i32 [ %.0917, %71 ], [ %.29.lcssa, %886 ]
  %.2 = phi i32 [ %.0, %71 ], [ 0, %886 ]
  store i32 16200, ptr %18, align 8, !tbaa !15
  br label %888

888:                                              ; preds = %887, %71
  %.421097 = phi ptr [ %.01055, %71 ], [ %.411096, %887 ]
  %.421033 = phi i32 [ %.0991, %71 ], [ %.411032, %887 ]
  %.38966 = phi i64 [ %.0928, %71 ], [ %.37965, %887 ]
  %.38 = phi i32 [ %.0917, %71 ], [ %.37, %887 ]
  %.3 = phi i32 [ %.0, %71 ], [ %.2, %887 ]
  %889 = icmp ugt i32 %.421033, 5
  %890 = icmp ugt i32 %.0989, 257
  %or.cond5 = select i1 %889, i1 %890, i1 false
  br i1 %or.cond5, label %891, label %901

891:                                              ; preds = %888
  store ptr %.01052, ptr %6, align 8, !tbaa !5
  store i32 %.0989, ptr %23, align 8, !tbaa !17
  store ptr %.421097, ptr %0, align 8, !tbaa !12
  store i32 %.421033, ptr %25, align 8, !tbaa !13
  store i64 %.38966, ptr %27, align 8, !tbaa !18
  store i32 %.38, ptr %29, align 8, !tbaa !19
  call void @inflate_fast(ptr noundef nonnull %0, i32 noundef %.0911) #5
  %892 = load ptr, ptr %6, align 8, !tbaa !5
  %893 = load i32, ptr %23, align 8, !tbaa !17
  %894 = load ptr, ptr %0, align 8, !tbaa !12
  %895 = load i32, ptr %25, align 8, !tbaa !13
  %896 = load i64, ptr %27, align 8, !tbaa !18
  %897 = load i32, ptr %29, align 8, !tbaa !19
  %898 = load i32, ptr %18, align 8, !tbaa !15
  %899 = icmp eq i32 %898, 16191
  br i1 %899, label %900, label %.thread

900:                                              ; preds = %891
  store i32 -1, ptr %53, align 4, !tbaa !82
  br label %.thread

901:                                              ; preds = %888
  store i32 0, ptr %53, align 4, !tbaa !82
  %902 = load ptr, ptr %46, align 8, !tbaa !68
  %903 = load i32, ptr %47, align 8, !tbaa !69
  %notmask1187 = shl nsw i32 -1, %903
  %904 = xor i32 %notmask1187, -1
  %905 = trunc i64 %.38966 to i32
  %906 = and i32 %904, %905
  %907 = zext nneg i32 %906 to i64
  %908 = getelementptr inbounds %struct.code, ptr %902, i64 %907
  %.sroa.1867.0..sroa_idx682006 = getelementptr inbounds i8, ptr %908, i64 1
  %.sroa.1867.0.copyload692007 = load i8, ptr %.sroa.1867.0..sroa_idx682006, align 1, !tbaa !23
  %909 = zext i8 %.sroa.1867.0.copyload692007 to i32
  %.not11882008 = icmp ult i32 %.38, %909
  br i1 %.not11882008, label %.lr.ph2014.preheader, label %._crit_edge2015

.lr.ph2014.preheader:                             ; preds = %901
  %910 = zext nneg i32 %.38 to i64
  br label %.lr.ph2014

.lr.ph2014:                                       ; preds = %.lr.ph2014.preheader, %912
  %indvars.iv2799 = phi i64 [ %910, %.lr.ph2014.preheader ], [ %indvars.iv.next2800, %912 ]
  %.399672011 = phi i64 [ %.38966, %.lr.ph2014.preheader ], [ %918, %912 ]
  %.4310342010 = phi i32 [ %.421033, %.lr.ph2014.preheader ], [ %913, %912 ]
  %.4310982009 = phi ptr [ %.421097, %.lr.ph2014.preheader ], [ %914, %912 ]
  %911 = icmp eq i32 %.4310342010, 0
  br i1 %911, label %.loopexit1270.loopexit2923, label %912

912:                                              ; preds = %.lr.ph2014
  %913 = add i32 %.4310342010, -1
  %914 = getelementptr inbounds i8, ptr %.4310982009, i64 1
  %915 = load i8, ptr %.4310982009, align 1, !tbaa !23
  %916 = zext i8 %915 to i64
  %917 = shl i64 %916, %indvars.iv2799
  %918 = add i64 %917, %.399672011
  %indvars.iv.next2800 = add nuw nsw i64 %indvars.iv2799, 8
  %919 = trunc i64 %918 to i32
  %920 = and i32 %904, %919
  %921 = zext nneg i32 %920 to i64
  %922 = getelementptr inbounds %struct.code, ptr %902, i64 %921
  %.sroa.1867.0..sroa_idx68 = getelementptr inbounds i8, ptr %922, i64 1
  %.sroa.1867.0.copyload69 = load i8, ptr %.sroa.1867.0..sroa_idx68, align 1, !tbaa !23
  %923 = zext i8 %.sroa.1867.0.copyload69 to i64
  %.not1188 = icmp ult i64 %indvars.iv.next2800, %923
  br i1 %.not1188, label %.lr.ph2014, label %._crit_edge2015.loopexit

._crit_edge2015.loopexit:                         ; preds = %912
  %924 = zext i8 %.sroa.1867.0.copyload69 to i32
  %925 = trunc nuw i64 %indvars.iv.next2800 to i32
  br label %._crit_edge2015

._crit_edge2015:                                  ; preds = %._crit_edge2015.loopexit, %901
  %.lcssa2005 = phi ptr [ %908, %901 ], [ %922, %._crit_edge2015.loopexit ]
  %.431098.lcssa = phi ptr [ %.421097, %901 ], [ %914, %._crit_edge2015.loopexit ]
  %.431034.lcssa = phi i32 [ %.421033, %901 ], [ %913, %._crit_edge2015.loopexit ]
  %.39967.lcssa = phi i64 [ %.38966, %901 ], [ %918, %._crit_edge2015.loopexit ]
  %.39.lcssa = phi i32 [ %.38, %901 ], [ %925, %._crit_edge2015.loopexit ]
  %.sroa.1867.0.copyload69.lcssa = phi i8 [ %.sroa.1867.0.copyload692007, %901 ], [ %.sroa.1867.0.copyload69, %._crit_edge2015.loopexit ]
  %.lcssa1406 = phi i32 [ %909, %901 ], [ %924, %._crit_edge2015.loopexit ]
  %.sroa.42.0..sroa_idx97.le = getelementptr inbounds i8, ptr %.lcssa2005, i64 2
  %.sroa.42.0.copyload98.le = load i16, ptr %.sroa.42.0..sroa_idx97.le, align 2, !tbaa !63
  %.sroa.054.0.copyload63 = load i8, ptr %.lcssa2005, align 2, !tbaa !23
  %926 = add i8 %.sroa.054.0.copyload63, -1
  %or.cond1260 = icmp ult i8 %926, 15
  br i1 %or.cond1260, label %.preheader1303, label %961

.preheader1303:                                   ; preds = %._crit_edge2015
  %927 = zext nneg i8 %.sroa.054.0.copyload63 to i32
  %928 = zext i16 %.sroa.42.0.copyload98.le to i32
  %929 = add nuw nsw i32 %.lcssa1406, %927
  %notmask1190 = shl nsw i32 -1, %929
  %930 = xor i32 %notmask1190, -1
  %931 = trunc i64 %.39967.lcssa to i32
  %932 = and i32 %931, %930
  %933 = lshr i32 %932, %.lcssa1406
  %934 = add nuw i32 %933, %928
  %935 = zext i32 %934 to i64
  %936 = getelementptr inbounds %struct.code, ptr %902, i64 %935
  %.sroa.1867.0..sroa_idx702025 = getelementptr inbounds i8, ptr %936, i64 1
  %.sroa.1867.0.copyload712026 = load i8, ptr %.sroa.1867.0..sroa_idx702025, align 1, !tbaa !23
  %937 = zext i8 %.sroa.1867.0.copyload712026 to i32
  %938 = add nuw nsw i32 %.lcssa1406, %937
  %.not11912027 = icmp ugt i32 %938, %.39.lcssa
  br i1 %.not11912027, label %.lr.ph2032.preheader, label %._crit_edge2033

.lr.ph2032.preheader:                             ; preds = %.preheader1303
  %939 = zext nneg i32 %.39.lcssa to i64
  br label %.lr.ph2032

.lr.ph2032:                                       ; preds = %.lr.ph2032.preheader, %941
  %indvars.iv2803 = phi i64 [ %939, %.lr.ph2032.preheader ], [ %indvars.iv.next2804, %941 ]
  %.409682030 = phi i64 [ %.39967.lcssa, %.lr.ph2032.preheader ], [ %947, %941 ]
  %.4410352029 = phi i32 [ %.431034.lcssa, %.lr.ph2032.preheader ], [ %942, %941 ]
  %.4410992028 = phi ptr [ %.431098.lcssa, %.lr.ph2032.preheader ], [ %943, %941 ]
  %940 = icmp eq i32 %.4410352029, 0
  br i1 %940, label %.loopexit1270.loopexit2922, label %941

941:                                              ; preds = %.lr.ph2032
  %942 = add i32 %.4410352029, -1
  %943 = getelementptr inbounds i8, ptr %.4410992028, i64 1
  %944 = load i8, ptr %.4410992028, align 1, !tbaa !23
  %945 = zext i8 %944 to i64
  %946 = shl i64 %945, %indvars.iv2803
  %947 = add i64 %946, %.409682030
  %indvars.iv.next2804 = add nuw nsw i64 %indvars.iv2803, 8
  %948 = trunc i64 %947 to i32
  %949 = and i32 %948, %930
  %950 = lshr i32 %949, %.lcssa1406
  %951 = add nuw i32 %950, %928
  %952 = zext i32 %951 to i64
  %953 = getelementptr inbounds %struct.code, ptr %902, i64 %952
  %.sroa.1867.0..sroa_idx70 = getelementptr inbounds i8, ptr %953, i64 1
  %.sroa.1867.0.copyload71 = load i8, ptr %.sroa.1867.0..sroa_idx70, align 1, !tbaa !23
  %954 = zext i8 %.sroa.1867.0.copyload71 to i32
  %955 = add nuw nsw i32 %.lcssa1406, %954
  %956 = zext nneg i32 %955 to i64
  %.not1191 = icmp ult i64 %indvars.iv.next2804, %956
  br i1 %.not1191, label %.lr.ph2032, label %._crit_edge2033.loopexit

._crit_edge2033.loopexit:                         ; preds = %941
  %957 = trunc nuw i64 %indvars.iv.next2804 to i32
  br label %._crit_edge2033

._crit_edge2033:                                  ; preds = %._crit_edge2033.loopexit, %.preheader1303
  %.441099.lcssa = phi ptr [ %.431098.lcssa, %.preheader1303 ], [ %943, %._crit_edge2033.loopexit ]
  %.441035.lcssa = phi i32 [ %.431034.lcssa, %.preheader1303 ], [ %942, %._crit_edge2033.loopexit ]
  %.40968.lcssa = phi i64 [ %.39967.lcssa, %.preheader1303 ], [ %947, %._crit_edge2033.loopexit ]
  %.40.lcssa = phi i32 [ %.39.lcssa, %.preheader1303 ], [ %957, %._crit_edge2033.loopexit ]
  %.lcssa1419 = phi ptr [ %936, %.preheader1303 ], [ %953, %._crit_edge2033.loopexit ]
  %.sroa.1867.0.copyload71.lcssa = phi i8 [ %.sroa.1867.0.copyload712026, %.preheader1303 ], [ %.sroa.1867.0.copyload71, %._crit_edge2033.loopexit ]
  %.sroa.42.0..sroa_idx99 = getelementptr inbounds i8, ptr %.lcssa1419, i64 2
  %.sroa.42.0.copyload100 = load i16, ptr %.sroa.42.0..sroa_idx99, align 2, !tbaa !63
  %.sroa.054.0.copyload64 = load i8, ptr %.lcssa1419, align 2, !tbaa !23
  %958 = zext nneg i8 %.sroa.1867.0.copyload69.lcssa to i64
  %959 = lshr i64 %.40968.lcssa, %958
  %960 = sub i32 %.40.lcssa, %.lcssa1406
  br label %961

961:                                              ; preds = %._crit_edge2015, %._crit_edge2033
  %962 = phi i32 [ %.lcssa1406, %._crit_edge2033 ], [ 0, %._crit_edge2015 ]
  %.451100 = phi ptr [ %.441099.lcssa, %._crit_edge2033 ], [ %.431098.lcssa, %._crit_edge2015 ]
  %.451036 = phi i32 [ %.441035.lcssa, %._crit_edge2033 ], [ %.431034.lcssa, %._crit_edge2015 ]
  %.41969 = phi i64 [ %959, %._crit_edge2033 ], [ %.39967.lcssa, %._crit_edge2015 ]
  %.41 = phi i32 [ %960, %._crit_edge2033 ], [ %.39.lcssa, %._crit_edge2015 ]
  %.sroa.42.0 = phi i16 [ %.sroa.42.0.copyload100, %._crit_edge2033 ], [ %.sroa.42.0.copyload98.le, %._crit_edge2015 ]
  %.sroa.1867.0 = phi i8 [ %.sroa.1867.0.copyload71.lcssa, %._crit_edge2033 ], [ %.sroa.1867.0.copyload69.lcssa, %._crit_edge2015 ]
  %.sroa.054.0 = phi i8 [ %.sroa.054.0.copyload64, %._crit_edge2033 ], [ %.sroa.054.0.copyload63, %._crit_edge2015 ]
  %963 = zext i8 %.sroa.1867.0 to i32
  %964 = zext nneg i8 %.sroa.1867.0 to i64
  %965 = lshr i64 %.41969, %964
  %966 = sub i32 %.41, %963
  %967 = add nuw nsw i32 %962, %963
  store i32 %967, ptr %53, align 4, !tbaa !82
  %968 = zext i16 %.sroa.42.0 to i32
  store i32 %968, ptr %38, align 4, !tbaa !43
  %969 = zext i8 %.sroa.054.0 to i32
  %970 = icmp eq i8 %.sroa.054.0, 0
  br i1 %970, label %971, label %972

971:                                              ; preds = %961
  store i32 16205, ptr %18, align 8, !tbaa !15
  br label %.thread

972:                                              ; preds = %961
  %973 = and i32 %969, 32
  %.not1192 = icmp eq i32 %973, 0
  br i1 %.not1192, label %975, label %974

974:                                              ; preds = %972
  store i32 -1, ptr %53, align 4, !tbaa !82
  store i32 16191, ptr %18, align 8, !tbaa !15
  br label %.thread

975:                                              ; preds = %972
  %976 = and i32 %969, 64
  %.not1193 = icmp eq i32 %976, 0
  br i1 %.not1193, label %978, label %977

977:                                              ; preds = %975
  store ptr @.str.14, ptr %37, align 8, !tbaa !31
  store i32 16209, ptr %18, align 8, !tbaa !15
  br label %.thread

978:                                              ; preds = %975
  %979 = and i32 %969, 15
  store i32 %979, ptr %54, align 4, !tbaa !20
  store i32 16201, ptr %18, align 8, !tbaa !15
  br label %980

980:                                              ; preds = %._crit_edge2854, %978
  %981 = phi i32 [ %.pre2855, %._crit_edge2854 ], [ %979, %978 ]
  %.461101 = phi ptr [ %.01055, %._crit_edge2854 ], [ %.451100, %978 ]
  %.461037 = phi i32 [ %.0991, %._crit_edge2854 ], [ %.451036, %978 ]
  %.42970 = phi i64 [ %.0928, %._crit_edge2854 ], [ %965, %978 ]
  %.42 = phi i32 [ %.0917, %._crit_edge2854 ], [ %966, %978 ]
  %.4 = phi i32 [ %.0, %._crit_edge2854 ], [ %.3, %978 ]
  %.not1194 = icmp eq i32 %981, 0
  br i1 %.not1194, label %._crit_edge2856, label %.preheader1301

._crit_edge2856:                                  ; preds = %980
  %.pre2857 = load i32, ptr %38, align 4, !tbaa !43
  br label %1004

.preheader1301:                                   ; preds = %980
  %982 = icmp ult i32 %.42, %981
  br i1 %982, label %.lr.ph2044, label %._crit_edge2045

.lr.ph2044:                                       ; preds = %.preheader1301, %984
  %.432043 = phi i32 [ %992, %984 ], [ %.42, %.preheader1301 ]
  %.439712042 = phi i64 [ %991, %984 ], [ %.42970, %.preheader1301 ]
  %.4710382041 = phi i32 [ %985, %984 ], [ %.461037, %.preheader1301 ]
  %.4711022040 = phi ptr [ %986, %984 ], [ %.461101, %.preheader1301 ]
  %983 = icmp eq i32 %.4710382041, 0
  br i1 %983, label %.loopexit1270.loopexit2921, label %984

984:                                              ; preds = %.lr.ph2044
  %985 = add i32 %.4710382041, -1
  %986 = getelementptr inbounds i8, ptr %.4711022040, i64 1
  %987 = load i8, ptr %.4711022040, align 1, !tbaa !23
  %988 = zext i8 %987 to i64
  %989 = zext nneg i32 %.432043 to i64
  %990 = shl i64 %988, %989
  %991 = add i64 %990, %.439712042
  %992 = add i32 %.432043, 8
  %993 = icmp ult i32 %992, %981
  br i1 %993, label %.lr.ph2044, label %._crit_edge2045, !llvm.loop !83

._crit_edge2045:                                  ; preds = %984, %.preheader1301
  %.471102.lcssa = phi ptr [ %.461101, %.preheader1301 ], [ %986, %984 ]
  %.471038.lcssa = phi i32 [ %.461037, %.preheader1301 ], [ %985, %984 ]
  %.43971.lcssa = phi i64 [ %.42970, %.preheader1301 ], [ %991, %984 ]
  %.43.lcssa = phi i32 [ %.42, %.preheader1301 ], [ %992, %984 ]
  %994 = trunc i64 %.43971.lcssa to i32
  %notmask1195 = shl nsw i32 -1, %981
  %995 = xor i32 %notmask1195, -1
  %996 = and i32 %994, %995
  %997 = load i32, ptr %38, align 4, !tbaa !43
  %998 = add i32 %997, %996
  store i32 %998, ptr %38, align 4, !tbaa !43
  %999 = zext nneg i32 %981 to i64
  %1000 = lshr i64 %.43971.lcssa, %999
  %1001 = sub i32 %.43.lcssa, %981
  %1002 = load i32, ptr %53, align 4, !tbaa !82
  %1003 = add i32 %1002, %981
  store i32 %1003, ptr %53, align 4, !tbaa !82
  br label %1004

1004:                                             ; preds = %._crit_edge2856, %._crit_edge2045
  %1005 = phi i32 [ %998, %._crit_edge2045 ], [ %.pre2857, %._crit_edge2856 ]
  %.481103 = phi ptr [ %.471102.lcssa, %._crit_edge2045 ], [ %.461101, %._crit_edge2856 ]
  %.481039 = phi i32 [ %.471038.lcssa, %._crit_edge2045 ], [ %.461037, %._crit_edge2856 ]
  %.44972 = phi i64 [ %1000, %._crit_edge2045 ], [ %.42970, %._crit_edge2856 ]
  %.44 = phi i32 [ %1001, %._crit_edge2045 ], [ %.42, %._crit_edge2856 ]
  store i32 %1005, ptr %55, align 8, !tbaa !84
  store i32 16202, ptr %18, align 8, !tbaa !15
  br label %1006

1006:                                             ; preds = %1004, %71
  %.491104 = phi ptr [ %.01055, %71 ], [ %.481103, %1004 ]
  %.491040 = phi i32 [ %.0991, %71 ], [ %.481039, %1004 ]
  %.45973 = phi i64 [ %.0928, %71 ], [ %.44972, %1004 ]
  %.45 = phi i32 [ %.0917, %71 ], [ %.44, %1004 ]
  %.5 = phi i32 [ %.0, %71 ], [ %.4, %1004 ]
  %1007 = load ptr, ptr %50, align 8, !tbaa !80
  %1008 = load i32, ptr %51, align 4, !tbaa !81
  %notmask1196 = shl nsw i32 -1, %1008
  %1009 = xor i32 %notmask1196, -1
  %1010 = trunc i64 %.45973 to i32
  %1011 = and i32 %1009, %1010
  %1012 = zext nneg i32 %1011 to i64
  %1013 = getelementptr inbounds %struct.code, ptr %1007, i64 %1012
  %.sroa.1867.0..sroa_idx722051 = getelementptr inbounds i8, ptr %1013, i64 1
  %.sroa.1867.0.copyload732052 = load i8, ptr %.sroa.1867.0..sroa_idx722051, align 1, !tbaa !23
  %1014 = zext i8 %.sroa.1867.0.copyload732052 to i32
  %.not11972053 = icmp ult i32 %.45, %1014
  br i1 %.not11972053, label %.lr.ph2059.preheader, label %._crit_edge2060

.lr.ph2059.preheader:                             ; preds = %1006
  %1015 = zext nneg i32 %.45 to i64
  br label %.lr.ph2059

.lr.ph2059:                                       ; preds = %.lr.ph2059.preheader, %1017
  %indvars.iv2808 = phi i64 [ %1015, %.lr.ph2059.preheader ], [ %indvars.iv.next2809, %1017 ]
  %.469742056 = phi i64 [ %.45973, %.lr.ph2059.preheader ], [ %1023, %1017 ]
  %.5010412055 = phi i32 [ %.491040, %.lr.ph2059.preheader ], [ %1018, %1017 ]
  %.5011052054 = phi ptr [ %.491104, %.lr.ph2059.preheader ], [ %1019, %1017 ]
  %1016 = icmp eq i32 %.5010412055, 0
  br i1 %1016, label %.loopexit1270.loopexit2920, label %1017

1017:                                             ; preds = %.lr.ph2059
  %1018 = add i32 %.5010412055, -1
  %1019 = getelementptr inbounds i8, ptr %.5011052054, i64 1
  %1020 = load i8, ptr %.5011052054, align 1, !tbaa !23
  %1021 = zext i8 %1020 to i64
  %1022 = shl i64 %1021, %indvars.iv2808
  %1023 = add i64 %1022, %.469742056
  %indvars.iv.next2809 = add nuw nsw i64 %indvars.iv2808, 8
  %1024 = trunc i64 %1023 to i32
  %1025 = and i32 %1009, %1024
  %1026 = zext nneg i32 %1025 to i64
  %1027 = getelementptr inbounds %struct.code, ptr %1007, i64 %1026
  %.sroa.1867.0..sroa_idx72 = getelementptr inbounds i8, ptr %1027, i64 1
  %.sroa.1867.0.copyload73 = load i8, ptr %.sroa.1867.0..sroa_idx72, align 1, !tbaa !23
  %1028 = zext i8 %.sroa.1867.0.copyload73 to i64
  %.not1197 = icmp ult i64 %indvars.iv.next2809, %1028
  br i1 %.not1197, label %.lr.ph2059, label %._crit_edge2060.loopexit

._crit_edge2060.loopexit:                         ; preds = %1017
  %1029 = zext i8 %.sroa.1867.0.copyload73 to i32
  %1030 = trunc nuw i64 %indvars.iv.next2809 to i32
  br label %._crit_edge2060

._crit_edge2060:                                  ; preds = %._crit_edge2060.loopexit, %1006
  %.lcssa2050 = phi ptr [ %1013, %1006 ], [ %1027, %._crit_edge2060.loopexit ]
  %.501105.lcssa = phi ptr [ %.491104, %1006 ], [ %1019, %._crit_edge2060.loopexit ]
  %.501041.lcssa = phi i32 [ %.491040, %1006 ], [ %1018, %._crit_edge2060.loopexit ]
  %.46974.lcssa = phi i64 [ %.45973, %1006 ], [ %1023, %._crit_edge2060.loopexit ]
  %.46.lcssa = phi i32 [ %.45, %1006 ], [ %1030, %._crit_edge2060.loopexit ]
  %.sroa.1867.0.copyload73.lcssa = phi i8 [ %.sroa.1867.0.copyload732052, %1006 ], [ %.sroa.1867.0.copyload73, %._crit_edge2060.loopexit ]
  %.lcssa1429 = phi i32 [ %1014, %1006 ], [ %1029, %._crit_edge2060.loopexit ]
  %.sroa.42.0..sroa_idx101.le = getelementptr inbounds i8, ptr %.lcssa2050, i64 2
  %.sroa.42.0.copyload102.le = load i16, ptr %.sroa.42.0..sroa_idx101.le, align 2, !tbaa !63
  %.sroa.054.0.copyload65 = load i8, ptr %.lcssa2050, align 2, !tbaa !23
  %1031 = icmp ult i8 %.sroa.054.0.copyload65, 16
  br i1 %1031, label %.preheader1298, label %._crit_edge2060._crit_edge

._crit_edge2060._crit_edge:                       ; preds = %._crit_edge2060
  %.pre2858 = load i32, ptr %53, align 4, !tbaa !82
  br label %1068

.preheader1298:                                   ; preds = %._crit_edge2060
  %1032 = zext nneg i8 %.sroa.054.0.copyload65 to i32
  %1033 = zext i16 %.sroa.42.0.copyload102.le to i32
  %1034 = add nuw nsw i32 %.lcssa1429, %1032
  %notmask1198 = shl nsw i32 -1, %1034
  %1035 = xor i32 %notmask1198, -1
  %1036 = trunc i64 %.46974.lcssa to i32
  %1037 = and i32 %1036, %1035
  %1038 = lshr i32 %1037, %.lcssa1429
  %1039 = add nuw i32 %1038, %1033
  %1040 = zext i32 %1039 to i64
  %1041 = getelementptr inbounds %struct.code, ptr %1007, i64 %1040
  %.sroa.1867.0..sroa_idx742070 = getelementptr inbounds i8, ptr %1041, i64 1
  %.sroa.1867.0.copyload752071 = load i8, ptr %.sroa.1867.0..sroa_idx742070, align 1, !tbaa !23
  %1042 = zext i8 %.sroa.1867.0.copyload752071 to i32
  %1043 = add nuw nsw i32 %.lcssa1429, %1042
  %.not11992072 = icmp ugt i32 %1043, %.46.lcssa
  br i1 %.not11992072, label %.lr.ph2077.preheader, label %._crit_edge2078

.lr.ph2077.preheader:                             ; preds = %.preheader1298
  %1044 = zext nneg i32 %.46.lcssa to i64
  br label %.lr.ph2077

.lr.ph2077:                                       ; preds = %.lr.ph2077.preheader, %1046
  %indvars.iv2812 = phi i64 [ %1044, %.lr.ph2077.preheader ], [ %indvars.iv.next2813, %1046 ]
  %.479752075 = phi i64 [ %.46974.lcssa, %.lr.ph2077.preheader ], [ %1052, %1046 ]
  %.5110422074 = phi i32 [ %.501041.lcssa, %.lr.ph2077.preheader ], [ %1047, %1046 ]
  %.5111062073 = phi ptr [ %.501105.lcssa, %.lr.ph2077.preheader ], [ %1048, %1046 ]
  %1045 = icmp eq i32 %.5110422074, 0
  br i1 %1045, label %.loopexit1270.loopexit2919, label %1046

1046:                                             ; preds = %.lr.ph2077
  %1047 = add i32 %.5110422074, -1
  %1048 = getelementptr inbounds i8, ptr %.5111062073, i64 1
  %1049 = load i8, ptr %.5111062073, align 1, !tbaa !23
  %1050 = zext i8 %1049 to i64
  %1051 = shl i64 %1050, %indvars.iv2812
  %1052 = add i64 %1051, %.479752075
  %indvars.iv.next2813 = add nuw nsw i64 %indvars.iv2812, 8
  %1053 = trunc i64 %1052 to i32
  %1054 = and i32 %1053, %1035
  %1055 = lshr i32 %1054, %.lcssa1429
  %1056 = add nuw i32 %1055, %1033
  %1057 = zext i32 %1056 to i64
  %1058 = getelementptr inbounds %struct.code, ptr %1007, i64 %1057
  %.sroa.1867.0..sroa_idx74 = getelementptr inbounds i8, ptr %1058, i64 1
  %.sroa.1867.0.copyload75 = load i8, ptr %.sroa.1867.0..sroa_idx74, align 1, !tbaa !23
  %1059 = zext i8 %.sroa.1867.0.copyload75 to i32
  %1060 = add nuw nsw i32 %.lcssa1429, %1059
  %1061 = zext nneg i32 %1060 to i64
  %.not1199 = icmp ult i64 %indvars.iv.next2813, %1061
  br i1 %.not1199, label %.lr.ph2077, label %._crit_edge2078.loopexit

._crit_edge2078.loopexit:                         ; preds = %1046
  %1062 = trunc nuw i64 %indvars.iv.next2813 to i32
  br label %._crit_edge2078

._crit_edge2078:                                  ; preds = %._crit_edge2078.loopexit, %.preheader1298
  %.511106.lcssa = phi ptr [ %.501105.lcssa, %.preheader1298 ], [ %1048, %._crit_edge2078.loopexit ]
  %.511042.lcssa = phi i32 [ %.501041.lcssa, %.preheader1298 ], [ %1047, %._crit_edge2078.loopexit ]
  %.47975.lcssa = phi i64 [ %.46974.lcssa, %.preheader1298 ], [ %1052, %._crit_edge2078.loopexit ]
  %.47.lcssa = phi i32 [ %.46.lcssa, %.preheader1298 ], [ %1062, %._crit_edge2078.loopexit ]
  %.lcssa1442 = phi ptr [ %1041, %.preheader1298 ], [ %1058, %._crit_edge2078.loopexit ]
  %.sroa.1867.0.copyload75.lcssa = phi i8 [ %.sroa.1867.0.copyload752071, %.preheader1298 ], [ %.sroa.1867.0.copyload75, %._crit_edge2078.loopexit ]
  %.sroa.42.0..sroa_idx103 = getelementptr inbounds i8, ptr %.lcssa1442, i64 2
  %.sroa.42.0.copyload104 = load i16, ptr %.sroa.42.0..sroa_idx103, align 2, !tbaa !63
  %.sroa.054.0.copyload66 = load i8, ptr %.lcssa1442, align 2, !tbaa !23
  %1063 = zext nneg i8 %.sroa.1867.0.copyload73.lcssa to i64
  %1064 = lshr i64 %.47975.lcssa, %1063
  %1065 = sub i32 %.47.lcssa, %.lcssa1429
  %1066 = load i32, ptr %53, align 4, !tbaa !82
  %1067 = add nsw i32 %1066, %.lcssa1429
  br label %1068

1068:                                             ; preds = %._crit_edge2060._crit_edge, %._crit_edge2078
  %1069 = phi i32 [ %1067, %._crit_edge2078 ], [ %.pre2858, %._crit_edge2060._crit_edge ]
  %.521107 = phi ptr [ %.511106.lcssa, %._crit_edge2078 ], [ %.501105.lcssa, %._crit_edge2060._crit_edge ]
  %.521043 = phi i32 [ %.511042.lcssa, %._crit_edge2078 ], [ %.501041.lcssa, %._crit_edge2060._crit_edge ]
  %.48976 = phi i64 [ %1064, %._crit_edge2078 ], [ %.46974.lcssa, %._crit_edge2060._crit_edge ]
  %.48 = phi i32 [ %1065, %._crit_edge2078 ], [ %.46.lcssa, %._crit_edge2060._crit_edge ]
  %.sroa.42.1 = phi i16 [ %.sroa.42.0.copyload104, %._crit_edge2078 ], [ %.sroa.42.0.copyload102.le, %._crit_edge2060._crit_edge ]
  %.sroa.1867.1 = phi i8 [ %.sroa.1867.0.copyload75.lcssa, %._crit_edge2078 ], [ %.sroa.1867.0.copyload73.lcssa, %._crit_edge2060._crit_edge ]
  %.sroa.054.1 = phi i8 [ %.sroa.054.0.copyload66, %._crit_edge2078 ], [ %.sroa.054.0.copyload65, %._crit_edge2060._crit_edge ]
  %1070 = zext i8 %.sroa.1867.1 to i32
  %1071 = zext nneg i8 %.sroa.1867.1 to i64
  %1072 = lshr i64 %.48976, %1071
  %1073 = sub i32 %.48, %1070
  %1074 = add nsw i32 %1069, %1070
  store i32 %1074, ptr %53, align 4, !tbaa !82
  %1075 = zext i8 %.sroa.054.1 to i32
  %1076 = and i32 %1075, 64
  %.not1200 = icmp eq i32 %1076, 0
  br i1 %.not1200, label %1078, label %1077

1077:                                             ; preds = %1068
  store ptr @.str.15, ptr %37, align 8, !tbaa !31
  store i32 16209, ptr %18, align 8, !tbaa !15
  br label %.thread

1078:                                             ; preds = %1068
  %1079 = zext i16 %.sroa.42.1 to i32
  store i32 %1079, ptr %56, align 8, !tbaa !85
  %1080 = and i32 %1075, 15
  store i32 %1080, ptr %54, align 4, !tbaa !20
  store i32 16203, ptr %18, align 8, !tbaa !15
  br label %1081

1081:                                             ; preds = %._crit_edge2859, %1078
  %1082 = phi i32 [ %.pre2860, %._crit_edge2859 ], [ %1080, %1078 ]
  %.531108 = phi ptr [ %.01055, %._crit_edge2859 ], [ %.521107, %1078 ]
  %.531044 = phi i32 [ %.0991, %._crit_edge2859 ], [ %.521043, %1078 ]
  %.49977 = phi i64 [ %.0928, %._crit_edge2859 ], [ %1072, %1078 ]
  %.49 = phi i32 [ %.0917, %._crit_edge2859 ], [ %1073, %1078 ]
  %.6 = phi i32 [ %.0, %._crit_edge2859 ], [ %.5, %1078 ]
  %.not1201 = icmp eq i32 %1082, 0
  br i1 %.not1201, label %1105, label %.preheader1296

.preheader1296:                                   ; preds = %1081
  %1083 = icmp ult i32 %.49, %1082
  br i1 %1083, label %.lr.ph2089, label %._crit_edge2090

.lr.ph2089:                                       ; preds = %.preheader1296, %1085
  %.502088 = phi i32 [ %1093, %1085 ], [ %.49, %.preheader1296 ]
  %.509782087 = phi i64 [ %1092, %1085 ], [ %.49977, %.preheader1296 ]
  %.5410452086 = phi i32 [ %1086, %1085 ], [ %.531044, %.preheader1296 ]
  %.5411092085 = phi ptr [ %1087, %1085 ], [ %.531108, %.preheader1296 ]
  %1084 = icmp eq i32 %.5410452086, 0
  br i1 %1084, label %.loopexit1270.loopexit2918, label %1085

1085:                                             ; preds = %.lr.ph2089
  %1086 = add i32 %.5410452086, -1
  %1087 = getelementptr inbounds i8, ptr %.5411092085, i64 1
  %1088 = load i8, ptr %.5411092085, align 1, !tbaa !23
  %1089 = zext i8 %1088 to i64
  %1090 = zext nneg i32 %.502088 to i64
  %1091 = shl i64 %1089, %1090
  %1092 = add i64 %1091, %.509782087
  %1093 = add i32 %.502088, 8
  %1094 = icmp ult i32 %1093, %1082
  br i1 %1094, label %.lr.ph2089, label %._crit_edge2090, !llvm.loop !86

._crit_edge2090:                                  ; preds = %1085, %.preheader1296
  %.541109.lcssa = phi ptr [ %.531108, %.preheader1296 ], [ %1087, %1085 ]
  %.541045.lcssa = phi i32 [ %.531044, %.preheader1296 ], [ %1086, %1085 ]
  %.50978.lcssa = phi i64 [ %.49977, %.preheader1296 ], [ %1092, %1085 ]
  %.50.lcssa = phi i32 [ %.49, %.preheader1296 ], [ %1093, %1085 ]
  %1095 = trunc i64 %.50978.lcssa to i32
  %notmask1202 = shl nsw i32 -1, %1082
  %1096 = xor i32 %notmask1202, -1
  %1097 = and i32 %1095, %1096
  %1098 = load i32, ptr %56, align 8, !tbaa !85
  %1099 = add i32 %1098, %1097
  store i32 %1099, ptr %56, align 8, !tbaa !85
  %1100 = zext nneg i32 %1082 to i64
  %1101 = lshr i64 %.50978.lcssa, %1100
  %1102 = sub i32 %.50.lcssa, %1082
  %1103 = load i32, ptr %53, align 4, !tbaa !82
  %1104 = add i32 %1103, %1082
  store i32 %1104, ptr %53, align 4, !tbaa !82
  br label %1105

1105:                                             ; preds = %._crit_edge2090, %1081
  %.551110 = phi ptr [ %.541109.lcssa, %._crit_edge2090 ], [ %.531108, %1081 ]
  %.551046 = phi i32 [ %.541045.lcssa, %._crit_edge2090 ], [ %.531044, %1081 ]
  %.51979 = phi i64 [ %1101, %._crit_edge2090 ], [ %.49977, %1081 ]
  %.51 = phi i32 [ %1102, %._crit_edge2090 ], [ %.49, %1081 ]
  store i32 16204, ptr %18, align 8, !tbaa !15
  br label %1106

1106:                                             ; preds = %1105, %71
  %.561111 = phi ptr [ %.01055, %71 ], [ %.551110, %1105 ]
  %.561047 = phi i32 [ %.0991, %71 ], [ %.551046, %1105 ]
  %.52980 = phi i64 [ %.0928, %71 ], [ %.51979, %1105 ]
  %.52 = phi i32 [ %.0917, %71 ], [ %.51, %1105 ]
  %.7 = phi i32 [ %.0, %71 ], [ %.6, %1105 ]
  %1107 = icmp eq i32 %.0989, 0
  br i1 %1107, label %.loopexit1270, label %1108

1108:                                             ; preds = %1106
  %1109 = sub i32 %.0911, %.0989
  %1110 = load i32, ptr %56, align 8, !tbaa !85
  %1111 = icmp ugt i32 %1110, %1109
  br i1 %1111, label %1112, label %1132

1112:                                             ; preds = %1108
  %1113 = sub i32 %1110, %1109
  %1114 = load i32, ptr %57, align 8, !tbaa !87
  %1115 = icmp ugt i32 %1113, %1114
  br i1 %1115, label %1116, label %1119

1116:                                             ; preds = %1112
  %1117 = load i32, ptr %58, align 8, !tbaa !88
  %.not1203 = icmp eq i32 %1117, 0
  br i1 %.not1203, label %1119, label %1118

1118:                                             ; preds = %1116
  store ptr @.str.16, ptr %37, align 8, !tbaa !31
  store i32 16209, ptr %18, align 8, !tbaa !15
  br label %.thread

1119:                                             ; preds = %1116, %1112
  %1120 = load i32, ptr %59, align 4, !tbaa !89
  %1121 = icmp ugt i32 %1113, %1120
  br i1 %1121, label %1122, label %1126

1122:                                             ; preds = %1119
  %1123 = sub i32 %1113, %1120
  %1124 = load i32, ptr %61, align 4, !tbaa !90
  %1125 = sub i32 %1124, %1123
  br label %1128

1126:                                             ; preds = %1119
  %1127 = sub i32 %1120, %1113
  br label %1128

1128:                                             ; preds = %1126, %1122
  %.sink3335 = phi i32 [ %1127, %1126 ], [ %1125, %1122 ]
  %.7908 = phi i32 [ %1113, %1126 ], [ %1123, %1122 ]
  %.sink3333 = load ptr, ptr %60, align 8, !tbaa !91
  %1129 = zext i32 %.sink3335 to i64
  %1130 = getelementptr inbounds i8, ptr %.sink3333, i64 %1129
  %1131 = load i32, ptr %38, align 4, !tbaa !43
  %spec.select1261 = call i32 @llvm.umin.i32(i32 %.7908, i32 %1131)
  br label %1137

1132:                                             ; preds = %1108
  %1133 = zext i32 %1110 to i64
  %1134 = sub nsw i64 0, %1133
  %1135 = getelementptr inbounds i8, ptr %.01052, i64 %1134
  %1136 = load i32, ptr %38, align 4, !tbaa !43
  br label %1137

1137:                                             ; preds = %1128, %1132
  %1138 = phi i32 [ %1136, %1132 ], [ %1131, %1128 ]
  %.8909 = phi i32 [ %1136, %1132 ], [ %spec.select1261, %1128 ]
  %.1899 = phi ptr [ %1135, %1132 ], [ %1130, %1128 ]
  %spec.select1262 = call i32 @llvm.umin.i32(i32 %.8909, i32 %.0989)
  %1139 = sub i32 %1138, %spec.select1262
  store i32 %1139, ptr %38, align 4, !tbaa !43
  %1140 = add i32 %spec.select1262, -1
  %1141 = zext i32 %1140 to i64
  %1142 = add nuw nsw i64 %1141, 1
  %min.iters.check = icmp ult i32 %1140, 31
  %.18993742 = ptrtoint ptr %.1899 to i64
  %1143 = sub i64 %.010523741, %.18993742
  %diff.check = icmp ult i64 %1143, 32
  %or.cond3768 = select i1 %min.iters.check, i1 true, i1 %diff.check
  br i1 %or.cond3768, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %1137
  %n.vec = and i64 %1142, 8589934560
  %ind.end = getelementptr i8, ptr %.01052, i64 %n.vec
  %.cast = trunc i64 %n.vec to i32
  %ind.end3743 = sub i32 %spec.select1262, %.cast
  %ind.end3745 = getelementptr i8, ptr %.1899, i64 %n.vec
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %next.gep = getelementptr i8, ptr %.01052, i64 %index
  %next.gep3748 = getelementptr i8, ptr %.1899, i64 %index
  %1144 = getelementptr i8, ptr %next.gep3748, i64 16
  %wide.load = load <16 x i8>, ptr %next.gep3748, align 1, !tbaa !23
  %wide.load3750 = load <16 x i8>, ptr %1144, align 1, !tbaa !23
  %1145 = getelementptr i8, ptr %next.gep, i64 16
  store <16 x i8> %wide.load, ptr %next.gep, align 1, !tbaa !23
  store <16 x i8> %wide.load3750, ptr %1145, align 1, !tbaa !23
  %index.next = add nuw i64 %index, 32
  %1146 = icmp eq i64 %index.next, %n.vec
  br i1 %1146, label %middle.block, label %vector.body, !llvm.loop !92

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %1142, %n.vec
  br i1 %cmp.n, label %.loopexit3765, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %1137
  %.11053.ph = phi ptr [ %.01052, %1137 ], [ %ind.end, %middle.block ]
  %.10.ph = phi i32 [ %spec.select1262, %1137 ], [ %ind.end3743, %middle.block ]
  %.2900.ph = phi ptr [ %.1899, %1137 ], [ %ind.end3745, %middle.block ]
  %1147 = add i32 %.10.ph, -1
  %xtraiter4174 = and i32 %.10.ph, 7
  %lcmp.mod4175.not = icmp eq i32 %xtraiter4174, 0
  br i1 %lcmp.mod4175.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %.11053.prol = phi ptr [ %1150, %scalar.ph.prol ], [ %.11053.ph, %scalar.ph.preheader ]
  %.10.prol = phi i32 [ %1151, %scalar.ph.prol ], [ %.10.ph, %scalar.ph.preheader ]
  %.2900.prol = phi ptr [ %1148, %scalar.ph.prol ], [ %.2900.ph, %scalar.ph.preheader ]
  %prol.iter4176 = phi i32 [ %prol.iter4176.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %1148 = getelementptr inbounds i8, ptr %.2900.prol, i64 1
  %1149 = load i8, ptr %.2900.prol, align 1, !tbaa !23
  %1150 = getelementptr inbounds i8, ptr %.11053.prol, i64 1
  store i8 %1149, ptr %.11053.prol, align 1, !tbaa !23
  %1151 = add i32 %.10.prol, -1
  %prol.iter4176.next = add i32 %prol.iter4176, 1
  %prol.iter4176.cmp.not = icmp eq i32 %prol.iter4176.next, %xtraiter4174
  br i1 %prol.iter4176.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !93

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.lcssa3874.unr = phi ptr [ poison, %scalar.ph.preheader ], [ %1150, %scalar.ph.prol ]
  %.11053.unr = phi ptr [ %.11053.ph, %scalar.ph.preheader ], [ %1150, %scalar.ph.prol ]
  %.10.unr = phi i32 [ %.10.ph, %scalar.ph.preheader ], [ %1151, %scalar.ph.prol ]
  %.2900.unr = phi ptr [ %.2900.ph, %scalar.ph.preheader ], [ %1148, %scalar.ph.prol ]
  %1152 = icmp ult i32 %1147, 7
  br i1 %1152, label %.loopexit3765, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %.11053 = phi ptr [ %1176, %scalar.ph ], [ %.11053.unr, %scalar.ph.prol.loopexit ]
  %.10 = phi i32 [ %1177, %scalar.ph ], [ %.10.unr, %scalar.ph.prol.loopexit ]
  %.2900 = phi ptr [ %1174, %scalar.ph ], [ %.2900.unr, %scalar.ph.prol.loopexit ]
  %1153 = getelementptr inbounds i8, ptr %.2900, i64 1
  %1154 = load i8, ptr %.2900, align 1, !tbaa !23
  %1155 = getelementptr inbounds i8, ptr %.11053, i64 1
  store i8 %1154, ptr %.11053, align 1, !tbaa !23
  %1156 = getelementptr inbounds i8, ptr %.2900, i64 2
  %1157 = load i8, ptr %1153, align 1, !tbaa !23
  %1158 = getelementptr inbounds i8, ptr %.11053, i64 2
  store i8 %1157, ptr %1155, align 1, !tbaa !23
  %1159 = getelementptr inbounds i8, ptr %.2900, i64 3
  %1160 = load i8, ptr %1156, align 1, !tbaa !23
  %1161 = getelementptr inbounds i8, ptr %.11053, i64 3
  store i8 %1160, ptr %1158, align 1, !tbaa !23
  %1162 = getelementptr inbounds i8, ptr %.2900, i64 4
  %1163 = load i8, ptr %1159, align 1, !tbaa !23
  %1164 = getelementptr inbounds i8, ptr %.11053, i64 4
  store i8 %1163, ptr %1161, align 1, !tbaa !23
  %1165 = getelementptr inbounds i8, ptr %.2900, i64 5
  %1166 = load i8, ptr %1162, align 1, !tbaa !23
  %1167 = getelementptr inbounds i8, ptr %.11053, i64 5
  store i8 %1166, ptr %1164, align 1, !tbaa !23
  %1168 = getelementptr inbounds i8, ptr %.2900, i64 6
  %1169 = load i8, ptr %1165, align 1, !tbaa !23
  %1170 = getelementptr inbounds i8, ptr %.11053, i64 6
  store i8 %1169, ptr %1167, align 1, !tbaa !23
  %1171 = getelementptr inbounds i8, ptr %.2900, i64 7
  %1172 = load i8, ptr %1168, align 1, !tbaa !23
  %1173 = getelementptr inbounds i8, ptr %.11053, i64 7
  store i8 %1172, ptr %1170, align 1, !tbaa !23
  %1174 = getelementptr inbounds i8, ptr %.2900, i64 8
  %1175 = load i8, ptr %1171, align 1, !tbaa !23
  %1176 = getelementptr inbounds i8, ptr %.11053, i64 8
  store i8 %1175, ptr %1173, align 1, !tbaa !23
  %1177 = add i32 %.10, -8
  %.not1204.7 = icmp eq i32 %1177, 0
  br i1 %.not1204.7, label %.loopexit3765, label %scalar.ph, !llvm.loop !94

.loopexit3765:                                    ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %.lcssa3441 = phi ptr [ %ind.end, %middle.block ], [ %.lcssa3874.unr, %scalar.ph.prol.loopexit ], [ %1176, %scalar.ph ]
  %1178 = sub i32 %.0989, %spec.select1262
  %1179 = load i32, ptr %38, align 4, !tbaa !43
  %1180 = icmp eq i32 %1179, 0
  br i1 %1180, label %1181, label %.thread

1181:                                             ; preds = %.loopexit3765
  store i32 16200, ptr %18, align 8, !tbaa !15
  br label %.thread

1182:                                             ; preds = %71
  %1183 = icmp eq i32 %.0989, 0
  br i1 %1183, label %.loopexit1270, label %1184

1184:                                             ; preds = %1182
  %1185 = load i32, ptr %38, align 4, !tbaa !43
  %1186 = trunc i32 %1185 to i8
  %1187 = getelementptr inbounds i8, ptr %.01052, i64 1
  store i8 %1186, ptr %.01052, align 1, !tbaa !23
  %1188 = add i32 %.0989, -1
  store i32 16200, ptr %18, align 8, !tbaa !15
  br label %.thread

1189:                                             ; preds = %71
  %1190 = load i32, ptr %31, align 8, !tbaa !22
  %.not1173 = icmp eq i32 %1190, 0
  br i1 %.not1173, label %1257, label %.preheader1311

.preheader1311:                                   ; preds = %1189
  %1191 = icmp ult i32 %.0917, 32
  br i1 %1191, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.preheader1311
  %1192 = zext nneg i32 %.0917 to i64
  %1193 = icmp eq i32 %.0991, 0
  br i1 %1193, label %.loopexit1270.loopexit2355, label %1194

1194:                                             ; preds = %.lr.ph.preheader
  %1195 = add i32 %.0991, -1
  %1196 = getelementptr inbounds i8, ptr %.01055, i64 1
  %1197 = load i8, ptr %.01055, align 1, !tbaa !23
  %1198 = zext i8 %1197 to i64
  %1199 = shl nuw nsw i64 %1198, %1192
  %1200 = add i64 %1199, %.0928
  %indvars.iv.next = add nuw nsw i64 %1192, 8
  %1201 = icmp ult i32 %.0917, 24
  br i1 %1201, label %.lr.ph.1, label %._crit_edge.loopexit, !llvm.loop !95

.lr.ph.1:                                         ; preds = %1194
  %1202 = icmp eq i32 %1195, 0
  br i1 %1202, label %.loopexit1270.loopexit2355, label %1203

1203:                                             ; preds = %.lr.ph.1
  %1204 = add i32 %.0991, -2
  %1205 = getelementptr inbounds i8, ptr %.01055, i64 2
  %1206 = load i8, ptr %1196, align 1, !tbaa !23
  %1207 = zext i8 %1206 to i64
  %1208 = shl nuw nsw i64 %1207, %indvars.iv.next
  %1209 = add i64 %1208, %1200
  %indvars.iv.next.1 = add nuw nsw i64 %1192, 16
  %1210 = icmp ult i32 %.0917, 16
  br i1 %1210, label %.lr.ph.2, label %._crit_edge.loopexit, !llvm.loop !95

.lr.ph.2:                                         ; preds = %1203
  %1211 = icmp eq i32 %1204, 0
  br i1 %1211, label %.loopexit1270.loopexit2355, label %1212

1212:                                             ; preds = %.lr.ph.2
  %1213 = add i32 %.0991, -3
  %1214 = getelementptr inbounds i8, ptr %.01055, i64 3
  %1215 = load i8, ptr %1205, align 1, !tbaa !23
  %1216 = zext i8 %1215 to i64
  %1217 = shl nuw nsw i64 %1216, %indvars.iv.next.1
  %1218 = add i64 %1217, %1209
  %indvars.iv.next.2 = add nuw nsw i64 %1192, 24
  %1219 = icmp ult i32 %.0917, 8
  br i1 %1219, label %.lr.ph.3, label %._crit_edge.loopexit, !llvm.loop !95

.lr.ph.3:                                         ; preds = %1212
  %1220 = icmp eq i32 %1213, 0
  br i1 %1220, label %.loopexit1270.loopexit2355, label %1221

1221:                                             ; preds = %.lr.ph.3
  %1222 = add i32 %.0991, -4
  %1223 = getelementptr inbounds i8, ptr %.01055, i64 4
  %1224 = load i8, ptr %1214, align 1, !tbaa !23
  %1225 = zext i8 %1224 to i64
  %1226 = shl nuw nsw i64 %1225, %indvars.iv.next.2
  %1227 = add i64 %1226, %1218
  %indvars.iv.next.3 = or disjoint i64 %1192, 32
  br label %._crit_edge.loopexit

._crit_edge.loopexit:                             ; preds = %1221, %1212, %1203, %1194
  %.lcssa3777 = phi i32 [ %1195, %1194 ], [ %1204, %1203 ], [ %1213, %1212 ], [ %1222, %1221 ]
  %.lcssa3776 = phi ptr [ %1196, %1194 ], [ %1205, %1203 ], [ %1214, %1212 ], [ %1223, %1221 ]
  %.lcssa3775 = phi i64 [ %1200, %1194 ], [ %1209, %1203 ], [ %1218, %1212 ], [ %1227, %1221 ]
  %indvars.iv.next.lcssa = phi i64 [ %indvars.iv.next, %1194 ], [ %indvars.iv.next.1, %1203 ], [ %indvars.iv.next.2, %1212 ], [ %indvars.iv.next.3, %1221 ]
  %1228 = trunc nuw nsw i64 %indvars.iv.next.lcssa to i32
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.preheader1311
  %.571112.lcssa = phi ptr [ %.01055, %.preheader1311 ], [ %.lcssa3776, %._crit_edge.loopexit ]
  %.571048.lcssa = phi i32 [ %.0991, %.preheader1311 ], [ %.lcssa3777, %._crit_edge.loopexit ]
  %.53981.lcssa = phi i64 [ %.0928, %.preheader1311 ], [ %.lcssa3775, %._crit_edge.loopexit ]
  %.53.lcssa = phi i32 [ %.0917, %.preheader1311 ], [ %1228, %._crit_edge.loopexit ]
  %1229 = sub i32 %.0911, %.0989
  %1230 = zext i32 %1229 to i64
  %1231 = load i64, ptr %32, align 8, !tbaa !96
  %1232 = add i64 %1231, %1230
  store i64 %1232, ptr %32, align 8, !tbaa !96
  %1233 = load i64, ptr %33, align 8, !tbaa !97
  %1234 = add i64 %1233, %1230
  store i64 %1234, ptr %33, align 8, !tbaa !97
  %1235 = and i32 %1190, 4
  %1236 = icmp ne i32 %1235, 0
  %1237 = icmp ne i32 %.0911, %.0989
  %or.cond7 = select i1 %1236, i1 %1237, i1 false
  br i1 %or.cond7, label %1238, label %1249

1238:                                             ; preds = %._crit_edge
  %1239 = load i32, ptr %34, align 8, !tbaa !33
  %.not1174 = icmp eq i32 %1239, 0
  %1240 = load i64, ptr %35, align 8, !tbaa !27
  %1241 = sub nsw i64 0, %1230
  %1242 = getelementptr inbounds i8, ptr %.01052, i64 %1241
  br i1 %.not1174, label %1245, label %1243

1243:                                             ; preds = %1238
  %1244 = call i64 @crc32(i64 noundef %1240, ptr noundef %1242, i32 noundef %1229) #5
  br label %1247

1245:                                             ; preds = %1238
  %1246 = call i64 @adler32(i64 noundef %1240, ptr noundef %1242, i32 noundef %1229) #5
  br label %1247

1247:                                             ; preds = %1245, %1243
  %1248 = phi i64 [ %1244, %1243 ], [ %1246, %1245 ]
  store i64 %1248, ptr %35, align 8, !tbaa !27
  store i64 %1248, ptr %36, align 8, !tbaa !34
  %.pre2846 = load i32, ptr %31, align 8, !tbaa !22
  %.pre2865 = and i32 %.pre2846, 4
  br label %1249

1249:                                             ; preds = %1247, %._crit_edge
  %.pre-phi = phi i32 [ %.pre2865, %1247 ], [ %1235, %._crit_edge ]
  %1250 = phi i32 [ %.pre2846, %1247 ], [ %1190, %._crit_edge ]
  %.not1175 = icmp eq i32 %.pre-phi, 0
  br i1 %.not1175, label %1257, label %1251

1251:                                             ; preds = %1249
  %1252 = load i32, ptr %34, align 8, !tbaa !33
  %.not1176 = icmp eq i32 %1252, 0
  %trunc = trunc i64 %.53981.lcssa to i32
  %rev = call i32 @llvm.bswap.i32(i32 %trunc)
  %1253 = zext i32 %rev to i64
  %1254 = select i1 %.not1176, i64 %1253, i64 %.53981.lcssa
  %1255 = load i64, ptr %35, align 8, !tbaa !27
  %.not1177 = icmp eq i64 %1254, %1255
  br i1 %.not1177, label %1257, label %1256

1256:                                             ; preds = %1251
  store ptr @.str.17, ptr %37, align 8, !tbaa !31
  store i32 16209, ptr %18, align 8, !tbaa !15
  br label %.thread

1257:                                             ; preds = %1251, %1249, %1189
  %1258 = phi i32 [ 0, %1189 ], [ %1250, %1249 ], [ %1250, %1251 ]
  %.581113 = phi ptr [ %.01055, %1189 ], [ %.571112.lcssa, %1249 ], [ %.571112.lcssa, %1251 ]
  %.581049 = phi i32 [ %.0991, %1189 ], [ %.571048.lcssa, %1249 ], [ %.571048.lcssa, %1251 ]
  %.54982 = phi i64 [ %.0928, %1189 ], [ 0, %1249 ], [ 0, %1251 ]
  %.54 = phi i32 [ %.0917, %1189 ], [ 0, %1249 ], [ 0, %1251 ]
  %.1912 = phi i32 [ %.0911, %1189 ], [ %.0989, %1249 ], [ %.0989, %1251 ]
  store i32 16207, ptr %18, align 8, !tbaa !15
  br label %1259

1259:                                             ; preds = %._crit_edge2847, %1257
  %1260 = phi i32 [ %.pre2848, %._crit_edge2847 ], [ %1258, %1257 ]
  %.591114 = phi ptr [ %.01055, %._crit_edge2847 ], [ %.581113, %1257 ]
  %.591050 = phi i32 [ %.0991, %._crit_edge2847 ], [ %.581049, %1257 ]
  %.55983 = phi i64 [ %.0928, %._crit_edge2847 ], [ %.54982, %1257 ]
  %.55 = phi i32 [ %.0917, %._crit_edge2847 ], [ %.54, %1257 ]
  %.2913 = phi i32 [ %.0911, %._crit_edge2847 ], [ %.1912, %1257 ]
  %.not1178 = icmp eq i32 %1260, 0
  br i1 %.not1178, label %1306, label %1261

1261:                                             ; preds = %1259
  %1262 = load i32, ptr %34, align 8, !tbaa !33
  %.not1179 = icmp eq i32 %1262, 0
  br i1 %.not1179, label %1306, label %.preheader1309

.preheader1309:                                   ; preds = %1261
  %1263 = icmp ult i32 %.55, 32
  br i1 %1263, label %.lr.ph1756.preheader, label %._crit_edge1757

.lr.ph1756.preheader:                             ; preds = %.preheader1309
  %1264 = zext nneg i32 %.55 to i64
  %1265 = icmp eq i32 %.591050, 0
  br i1 %1265, label %.loopexit1270.loopexit2354, label %1266

1266:                                             ; preds = %.lr.ph1756.preheader
  %1267 = add i32 %.591050, -1
  %1268 = getelementptr inbounds i8, ptr %.591114, i64 1
  %1269 = load i8, ptr %.591114, align 1, !tbaa !23
  %1270 = zext i8 %1269 to i64
  %1271 = shl nuw nsw i64 %1270, %1264
  %1272 = add i64 %1271, %.55983
  %indvars.iv.next2775 = add nuw nsw i64 %1264, 8
  %1273 = icmp ult i32 %.55, 24
  br i1 %1273, label %.lr.ph1756.1, label %._crit_edge1757.loopexit, !llvm.loop !98

.lr.ph1756.1:                                     ; preds = %1266
  %1274 = icmp eq i32 %1267, 0
  br i1 %1274, label %.loopexit1270.loopexit2354, label %1275

1275:                                             ; preds = %.lr.ph1756.1
  %1276 = add i32 %.591050, -2
  %1277 = getelementptr inbounds i8, ptr %.591114, i64 2
  %1278 = load i8, ptr %1268, align 1, !tbaa !23
  %1279 = zext i8 %1278 to i64
  %1280 = shl nuw nsw i64 %1279, %indvars.iv.next2775
  %1281 = add i64 %1280, %1272
  %indvars.iv.next2775.1 = add nuw nsw i64 %1264, 16
  %1282 = icmp ult i32 %.55, 16
  br i1 %1282, label %.lr.ph1756.2, label %._crit_edge1757.loopexit, !llvm.loop !98

.lr.ph1756.2:                                     ; preds = %1275
  %1283 = icmp eq i32 %1276, 0
  br i1 %1283, label %.loopexit1270.loopexit2354, label %1284

1284:                                             ; preds = %.lr.ph1756.2
  %1285 = add i32 %.591050, -3
  %1286 = getelementptr inbounds i8, ptr %.591114, i64 3
  %1287 = load i8, ptr %1277, align 1, !tbaa !23
  %1288 = zext i8 %1287 to i64
  %1289 = shl nuw nsw i64 %1288, %indvars.iv.next2775.1
  %1290 = add i64 %1289, %1281
  %indvars.iv.next2775.2 = add nuw nsw i64 %1264, 24
  %1291 = icmp ult i32 %.55, 8
  br i1 %1291, label %.lr.ph1756.3, label %._crit_edge1757.loopexit, !llvm.loop !98

.lr.ph1756.3:                                     ; preds = %1284
  %1292 = icmp eq i32 %1285, 0
  br i1 %1292, label %.loopexit1270.loopexit2354, label %1293

1293:                                             ; preds = %.lr.ph1756.3
  %1294 = add i32 %.591050, -4
  %1295 = getelementptr inbounds i8, ptr %.591114, i64 4
  %1296 = load i8, ptr %1286, align 1, !tbaa !23
  %1297 = zext i8 %1296 to i64
  %1298 = shl nuw nsw i64 %1297, %indvars.iv.next2775.2
  %1299 = add i64 %1298, %1290
  %indvars.iv.next2775.3 = or disjoint i64 %1264, 32
  br label %._crit_edge1757.loopexit

._crit_edge1757.loopexit:                         ; preds = %1293, %1284, %1275, %1266
  %.lcssa3783 = phi i32 [ %1267, %1266 ], [ %1276, %1275 ], [ %1285, %1284 ], [ %1294, %1293 ]
  %.lcssa3782 = phi ptr [ %1268, %1266 ], [ %1277, %1275 ], [ %1286, %1284 ], [ %1295, %1293 ]
  %.lcssa3781 = phi i64 [ %1272, %1266 ], [ %1281, %1275 ], [ %1290, %1284 ], [ %1299, %1293 ]
  %indvars.iv.next2775.lcssa = phi i64 [ %indvars.iv.next2775, %1266 ], [ %indvars.iv.next2775.1, %1275 ], [ %indvars.iv.next2775.2, %1284 ], [ %indvars.iv.next2775.3, %1293 ]
  %1300 = trunc nuw nsw i64 %indvars.iv.next2775.lcssa to i32
  br label %._crit_edge1757

._crit_edge1757:                                  ; preds = %._crit_edge1757.loopexit, %.preheader1309
  %.601115.lcssa = phi ptr [ %.591114, %.preheader1309 ], [ %.lcssa3782, %._crit_edge1757.loopexit ]
  %.601051.lcssa = phi i32 [ %.591050, %.preheader1309 ], [ %.lcssa3783, %._crit_edge1757.loopexit ]
  %.56984.lcssa = phi i64 [ %.55983, %.preheader1309 ], [ %.lcssa3781, %._crit_edge1757.loopexit ]
  %.56.lcssa = phi i32 [ %.55, %.preheader1309 ], [ %1300, %._crit_edge1757.loopexit ]
  %1301 = and i32 %1260, 4
  %.not1180 = icmp eq i32 %1301, 0
  br i1 %.not1180, label %1306, label %1302

1302:                                             ; preds = %._crit_edge1757
  %1303 = load i64, ptr %33, align 8, !tbaa !97
  %1304 = and i64 %1303, 4294967295
  %.not1181 = icmp eq i64 %.56984.lcssa, %1304
  br i1 %.not1181, label %1306, label %1305

1305:                                             ; preds = %1302
  store ptr @.str.18, ptr %37, align 8, !tbaa !31
  store i32 16209, ptr %18, align 8, !tbaa !15
  br label %.thread

1306:                                             ; preds = %1302, %._crit_edge1757, %1261, %1259
  %.611116 = phi ptr [ %.591114, %1261 ], [ %.591114, %1259 ], [ %.601115.lcssa, %._crit_edge1757 ], [ %.601115.lcssa, %1302 ]
  %.61 = phi i32 [ %.591050, %1261 ], [ %.591050, %1259 ], [ %.601051.lcssa, %._crit_edge1757 ], [ %.601051.lcssa, %1302 ]
  %.57985 = phi i64 [ %.55983, %1261 ], [ %.55983, %1259 ], [ 0, %._crit_edge1757 ], [ 0, %1302 ]
  %.57 = phi i32 [ %.55, %1261 ], [ %.55, %1259 ], [ 0, %._crit_edge1757 ], [ 0, %1302 ]
  store i32 16208, ptr %18, align 8, !tbaa !15
  br label %.loopexit1270

.thread:                                          ; preds = %767, %855, %.loopexit3765, %1181, %891, %900, %1305, %1256, %1184, %1118, %1077, %977, %974, %971, %885, %877, %874, %702, %669, %638, %630, %621, %572, %548, %500, %492, %173, %170, %146, %145, %131, %128, %113, %88
  %.631118 = phi ptr [ %.601115.lcssa, %1305 ], [ %.571112.lcssa, %1256 ], [ %.01055, %1184 ], [ %.561111, %1118 ], [ %.561111, %1181 ], [ %.561111, %.loopexit3765 ], [ %.521107, %1077 ], [ %894, %900 ], [ %894, %891 ], [ %.451100, %971 ], [ %.451100, %974 ], [ %.451100, %977 ], [ %.331088.lcssa, %874 ], [ %.331088.lcssa, %877 ], [ %.331088.lcssa, %885 ], [ %.301085.lcssa, %702 ], [ %.281083.lcssa, %669 ], [ %633, %630 ], [ %.271082, %638 ], [ %.251080.lcssa, %621 ], [ %.231078, %548 ], [ %.241079.lcssa, %572 ], [ %.181073.lcssa, %492 ], [ %.191074, %500 ], [ %.21057.lcssa, %170 ], [ %.21057.lcssa, %173 ], [ %.01055, %88 ], [ %.11056.lcssa, %113 ], [ %.11056.lcssa, %128 ], [ %.11056.lcssa, %131 ], [ %.11056.lcssa, %145 ], [ %.11056.lcssa, %146 ], [ %.381093, %855 ], [ %.351090.lcssa, %767 ]
  %.21054 = phi ptr [ %.01052, %1305 ], [ %.01052, %1256 ], [ %1187, %1184 ], [ %.01052, %1118 ], [ %.lcssa3441, %1181 ], [ %.lcssa3441, %.loopexit3765 ], [ %.01052, %1077 ], [ %892, %900 ], [ %892, %891 ], [ %.01052, %971 ], [ %.01052, %974 ], [ %.01052, %977 ], [ %.01052, %874 ], [ %.01052, %877 ], [ %.01052, %885 ], [ %.01052, %702 ], [ %.01052, %669 ], [ %635, %630 ], [ %.01052, %638 ], [ %.01052, %621 ], [ %.01052, %548 ], [ %.01052, %572 ], [ %.01052, %492 ], [ %.01052, %500 ], [ %.01052, %170 ], [ %.01052, %173 ], [ %.01052, %88 ], [ %.01052, %113 ], [ %.01052, %128 ], [ %.01052, %131 ], [ %.01052, %145 ], [ %.01052, %146 ], [ %.01052, %855 ], [ %.01052, %767 ]
  %.63 = phi i32 [ %.601051.lcssa, %1305 ], [ %.571048.lcssa, %1256 ], [ %.0991, %1184 ], [ %.561047, %1118 ], [ %.561047, %1181 ], [ %.561047, %.loopexit3765 ], [ %.521043, %1077 ], [ %895, %900 ], [ %895, %891 ], [ %.451036, %971 ], [ %.451036, %974 ], [ %.451036, %977 ], [ %.331024.lcssa, %874 ], [ %.331024.lcssa, %877 ], [ %.331024.lcssa, %885 ], [ %.301021.lcssa, %702 ], [ %.281019.lcssa, %669 ], [ %632, %630 ], [ %.271018, %638 ], [ %.251016.lcssa, %621 ], [ %.231014, %548 ], [ %.241015.lcssa, %572 ], [ %.181009.lcssa, %492 ], [ %.191010, %500 ], [ %.2993.lcssa, %170 ], [ %.2993.lcssa, %173 ], [ %.0991, %88 ], [ %.1992.lcssa, %113 ], [ %.1992.lcssa, %128 ], [ %.1992.lcssa, %131 ], [ %.1992.lcssa, %145 ], [ %.1992.lcssa, %146 ], [ %.381029, %855 ], [ %.351026.lcssa, %767 ]
  %.1990 = phi i32 [ %.0989, %1305 ], [ %.0989, %1256 ], [ %1188, %1184 ], [ %.0989, %1118 ], [ %1178, %1181 ], [ %1178, %.loopexit3765 ], [ %.0989, %1077 ], [ %893, %900 ], [ %893, %891 ], [ %.0989, %971 ], [ %.0989, %974 ], [ %.0989, %977 ], [ %.0989, %874 ], [ %.0989, %877 ], [ %.0989, %885 ], [ %.0989, %702 ], [ %.0989, %669 ], [ %634, %630 ], [ %.0989, %638 ], [ %.0989, %621 ], [ %.0989, %548 ], [ %.0989, %572 ], [ %.0989, %492 ], [ %.0989, %500 ], [ %.0989, %170 ], [ %.0989, %173 ], [ %.0989, %88 ], [ %.0989, %113 ], [ %.0989, %128 ], [ %.0989, %131 ], [ %.0989, %145 ], [ %.0989, %146 ], [ %.0989, %855 ], [ %.0989, %767 ]
  %.59987 = phi i64 [ %.56984.lcssa, %1305 ], [ %.53981.lcssa, %1256 ], [ %.0928, %1184 ], [ %.52980, %1118 ], [ %.52980, %1181 ], [ %.52980, %.loopexit3765 ], [ %1072, %1077 ], [ %896, %900 ], [ %896, %891 ], [ %965, %971 ], [ %965, %974 ], [ %965, %977 ], [ %.29957.lcssa, %874 ], [ %.29957.lcssa, %877 ], [ %.29957.lcssa, %885 ], [ %.26954.lcssa, %702 ], [ %665, %669 ], [ %.23951, %630 ], [ %.23951, %638 ], [ %.21949.lcssa, %621 ], [ %551, %548 ], [ %573, %572 ], [ %.14942.lcssa, %492 ], [ %.15943, %500 ], [ %.2930.lcssa, %170 ], [ %.2930.lcssa, %173 ], [ %.0928, %88 ], [ 0, %113 ], [ %.1929.lcssa, %128 ], [ %.1929.lcssa, %131 ], [ %133, %145 ], [ 0, %146 ], [ %.34962, %855 ], [ %764, %767 ]
  %.59 = phi i32 [ %.56.lcssa, %1305 ], [ %.53.lcssa, %1256 ], [ %.0917, %1184 ], [ %.52, %1118 ], [ %.52, %1181 ], [ %.52, %.loopexit3765 ], [ %1073, %1077 ], [ %897, %900 ], [ %897, %891 ], [ %966, %971 ], [ %966, %974 ], [ %966, %977 ], [ %.29.lcssa, %874 ], [ %.29.lcssa, %877 ], [ %.29.lcssa, %885 ], [ %.26.lcssa, %702 ], [ %666, %669 ], [ %.23, %630 ], [ %.23, %638 ], [ %.21.lcssa, %621 ], [ %552, %548 ], [ %574, %572 ], [ %.14.lcssa, %492 ], [ %.15, %500 ], [ %.2919.lcssa, %170 ], [ %.2919.lcssa, %173 ], [ %.0917, %88 ], [ 0, %113 ], [ %.1918.lcssa, %128 ], [ %.1918.lcssa, %131 ], [ %134, %145 ], [ 0, %146 ], [ %.34, %855 ], [ %765, %767 ]
  %.4915 = phi i32 [ %.2913, %1305 ], [ %.0989, %1256 ], [ %.0911, %1184 ], [ %.0911, %1118 ], [ %.0911, %1181 ], [ %.0911, %.loopexit3765 ], [ %.0911, %1077 ], [ %.0911, %900 ], [ %.0911, %891 ], [ %.0911, %971 ], [ %.0911, %974 ], [ %.0911, %977 ], [ %.0911, %874 ], [ %.0911, %877 ], [ %.0911, %885 ], [ %.0911, %702 ], [ %.0911, %669 ], [ %.0911, %630 ], [ %.0911, %638 ], [ %.0911, %621 ], [ %.0911, %548 ], [ %.0911, %572 ], [ %.0911, %492 ], [ %.0911, %500 ], [ %.0911, %170 ], [ %.0911, %173 ], [ %.0911, %88 ], [ %.0911, %113 ], [ %.0911, %128 ], [ %.0911, %131 ], [ %.0911, %145 ], [ %.0911, %146 ], [ %.0911, %855 ], [ %.0911, %767 ]
  %.8 = phi i32 [ %.0, %1305 ], [ %.0, %1256 ], [ %.0, %1184 ], [ %.7, %1118 ], [ %.7, %1181 ], [ %.7, %.loopexit3765 ], [ %.5, %1077 ], [ %.3, %900 ], [ %.3, %891 ], [ %.3, %971 ], [ %.3, %974 ], [ %.3, %977 ], [ %.1, %874 ], [ %876, %877 ], [ %884, %885 ], [ %701, %702 ], [ %.0, %669 ], [ %.0, %630 ], [ %.0, %638 ], [ %.0, %621 ], [ %.0, %548 ], [ %.0, %572 ], [ %.0, %492 ], [ %.0, %500 ], [ %.0, %170 ], [ %.0, %173 ], [ %.0, %88 ], [ %.0, %113 ], [ %.0, %128 ], [ %.0, %131 ], [ %.0, %145 ], [ %.0, %146 ], [ %.1, %855 ], [ %.1, %767 ]
  %.pre = load i32, ptr %18, align 8, !tbaa !15
  br label %71

.loopexit1270.loopexit:                           ; preds = %.lr.ph1982
  %1307 = trunc nuw i64 %indvars.iv2796 to i32
  br label %.loopexit1270

.loopexit1270.loopexit2335:                       ; preds = %.lr.ph1972
  %1308 = trunc nuw i64 %indvars.iv2793 to i32
  br label %.loopexit1270

.loopexit1270.loopexit2336:                       ; preds = %.lr.ph1962
  %1309 = trunc nuw i64 %indvars.iv2790 to i32
  br label %.loopexit1270

.loopexit1270.loopexit2338:                       ; preds = %.lr.ph2327.1, %.lr.ph2327.preheader
  %indvars.iv2843.lcssa = phi i64 [ %86, %.lr.ph2327.preheader ], [ %indvars.iv.next2844, %.lr.ph2327.1 ]
  %.19292325.lcssa = phi i64 [ %.0928, %.lr.ph2327.preheader ], [ %95, %.lr.ph2327.1 ]
  %.110562323.lcssa = phi ptr [ %.01055, %.lr.ph2327.preheader ], [ %91, %.lr.ph2327.1 ]
  %1310 = trunc nuw nsw i64 %indvars.iv2843.lcssa to i32
  br label %.loopexit1270

.loopexit1270.loopexit2339:                       ; preds = %.lr.ph2317.1, %.lr.ph2317.preheader
  %indvars.iv2840.lcssa = phi i64 [ %468, %.lr.ph2317.preheader ], [ %indvars.iv.next2841, %.lr.ph2317.1 ]
  %.149422315.lcssa = phi i64 [ %.13941, %.lr.ph2317.preheader ], [ %476, %.lr.ph2317.1 ]
  %.1810732313.lcssa = phi ptr [ %.171072, %.lr.ph2317.preheader ], [ %472, %.lr.ph2317.1 ]
  %1311 = trunc nuw nsw i64 %indvars.iv2840.lcssa to i32
  br label %.loopexit1270

.loopexit1270.loopexit2340:                       ; preds = %.lr.ph2308.1, %.lr.ph2308.preheader
  %indvars.iv2831.lcssa = phi i64 [ %294, %.lr.ph2308.preheader ], [ %indvars.iv.next2832, %.lr.ph2308.1 ]
  %.89362306.lcssa = phi i64 [ %.793528962904, %.lr.ph2308.preheader ], [ %302, %.lr.ph2308.1 ]
  %.810632304.lcssa = phi ptr [ %.7106228922906, %.lr.ph2308.preheader ], [ %298, %.lr.ph2308.1 ]
  %1312 = trunc nuw nsw i64 %indvars.iv2831.lcssa to i32
  br label %.loopexit1270

.loopexit1270.loopexit2341:                       ; preds = %.lr.ph2299.1, %.lr.ph2299.preheader
  %indvars.iv2828.lcssa = phi i64 [ %249, %.lr.ph2299.preheader ], [ %indvars.iv.next2829, %.lr.ph2299.1 ]
  %.69342296.lcssa = phi i64 [ %.59332883, %.lr.ph2299.preheader ], [ %257, %.lr.ph2299.1 ]
  %.610612294.lcssa = phi ptr [ %.510602881, %.lr.ph2299.preheader ], [ %253, %.lr.ph2299.1 ]
  %1313 = trunc nuw nsw i64 %indvars.iv2828.lcssa to i32
  br label %.loopexit1270

.loopexit1270.loopexit2342:                       ; preds = %.lr.ph2289.3, %.lr.ph2289.2, %.lr.ph2289.1, %.lr.ph2289.preheader
  %indvars.iv2825.lcssa = phi i64 [ %192, %.lr.ph2289.preheader ], [ %indvars.iv.next2826, %.lr.ph2289.1 ], [ %indvars.iv.next2826.1, %.lr.ph2289.2 ], [ %indvars.iv.next2826.2, %.lr.ph2289.3 ]
  %.49322286.lcssa = phi i64 [ %.39312874, %.lr.ph2289.preheader ], [ %200, %.lr.ph2289.1 ], [ %209, %.lr.ph2289.2 ], [ %218, %.lr.ph2289.3 ]
  %.410592284.lcssa = phi ptr [ %.310582872, %.lr.ph2289.preheader ], [ %196, %.lr.ph2289.1 ], [ %205, %.lr.ph2289.2 ], [ %214, %.lr.ph2289.3 ]
  %1314 = trunc nuw nsw i64 %indvars.iv2825.lcssa to i32
  br label %.loopexit1270

.loopexit1270.loopexit2343:                       ; preds = %.lr.ph2278.1, %.lr.ph2278.preheader
  %indvars.iv2822.lcssa = phi i64 [ %80, %.lr.ph2278.preheader ], [ %indvars.iv.next2823, %.lr.ph2278.1 ]
  %.29302276.lcssa = phi i64 [ %.0928, %.lr.ph2278.preheader ], [ %157, %.lr.ph2278.1 ]
  %.210572274.lcssa = phi ptr [ %.01055, %.lr.ph2278.preheader ], [ %153, %.lr.ph2278.1 ]
  %1315 = trunc nuw nsw i64 %indvars.iv2822.lcssa to i32
  br label %.loopexit1270

.loopexit1270.loopexit2344:                       ; preds = %.lr.ph2110.3, %.lr.ph2110.2, %.lr.ph2110.1, %.lr.ph2110.preheader
  %indvars.iv2819.lcssa = phi i64 [ %77, %.lr.ph2110.preheader ], [ %indvars.iv.next2820, %.lr.ph2110.1 ], [ %indvars.iv.next2820.1, %.lr.ph2110.2 ], [ %indvars.iv.next2820.2, %.lr.ph2110.3 ]
  %.169442108.lcssa = phi i64 [ %.0928, %.lr.ph2110.preheader ], [ %508, %.lr.ph2110.1 ], [ %517, %.lr.ph2110.2 ], [ %526, %.lr.ph2110.3 ]
  %.2010752106.lcssa = phi ptr [ %.01055, %.lr.ph2110.preheader ], [ %504, %.lr.ph2110.1 ], [ %513, %.lr.ph2110.2 ], [ %522, %.lr.ph2110.3 ]
  %1316 = trunc nuw nsw i64 %indvars.iv2819.lcssa to i32
  br label %.loopexit1270

.loopexit1270.loopexit2345:                       ; preds = %.lr.ph2100.3, %.lr.ph2100.2, %.lr.ph2100.1, %.lr.ph2100.preheader
  %indvars.iv2817.lcssa = phi i64 [ %582, %.lr.ph2100.preheader ], [ %indvars.iv.next2818, %.lr.ph2100.1 ], [ %indvars.iv.next2818.1, %.lr.ph2100.2 ], [ %indvars.iv.next2818.2, %.lr.ph2100.3 ]
  %.219492097.lcssa = phi i64 [ %578, %.lr.ph2100.preheader ], [ %590, %.lr.ph2100.1 ], [ %598, %.lr.ph2100.2 ], [ %607, %.lr.ph2100.3 ]
  %.2510802095.lcssa = phi ptr [ %.01055, %.lr.ph2100.preheader ], [ %586, %.lr.ph2100.1 ], [ %594, %.lr.ph2100.2 ], [ %603, %.lr.ph2100.3 ]
  %1317 = trunc nuw nsw i64 %indvars.iv2817.lcssa to i32
  br label %.loopexit1270

.loopexit1270.loopexit2353:                       ; preds = %.lr.ph1766.1, %.lr.ph1766.preheader
  %indvars.iv2777.lcssa = phi i64 [ %74, %.lr.ph1766.preheader ], [ %indvars.iv.next2778, %.lr.ph1766.1 ]
  %.249521764.lcssa = phi i64 [ %.0928, %.lr.ph1766.preheader ], [ %645, %.lr.ph1766.1 ]
  %.2810831762.lcssa = phi ptr [ %.01055, %.lr.ph1766.preheader ], [ %641, %.lr.ph1766.1 ]
  %1318 = trunc nuw nsw i64 %indvars.iv2777.lcssa to i32
  br label %.loopexit1270

.loopexit1270.loopexit2354:                       ; preds = %.lr.ph1756.3, %.lr.ph1756.2, %.lr.ph1756.1, %.lr.ph1756.preheader
  %indvars.iv2774.lcssa = phi i64 [ %1264, %.lr.ph1756.preheader ], [ %indvars.iv.next2775, %.lr.ph1756.1 ], [ %indvars.iv.next2775.1, %.lr.ph1756.2 ], [ %indvars.iv.next2775.2, %.lr.ph1756.3 ]
  %.569841754.lcssa = phi i64 [ %.55983, %.lr.ph1756.preheader ], [ %1272, %.lr.ph1756.1 ], [ %1281, %.lr.ph1756.2 ], [ %1290, %.lr.ph1756.3 ]
  %.6011151752.lcssa = phi ptr [ %.591114, %.lr.ph1756.preheader ], [ %1268, %.lr.ph1756.1 ], [ %1277, %.lr.ph1756.2 ], [ %1286, %.lr.ph1756.3 ]
  %1319 = trunc nuw nsw i64 %indvars.iv2774.lcssa to i32
  br label %.loopexit1270

.loopexit1270.loopexit2355:                       ; preds = %.lr.ph.3, %.lr.ph.2, %.lr.ph.1, %.lr.ph.preheader
  %indvars.iv.lcssa = phi i64 [ %1192, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph.1 ], [ %indvars.iv.next.1, %.lr.ph.2 ], [ %indvars.iv.next.2, %.lr.ph.3 ]
  %.539811747.lcssa = phi i64 [ %.0928, %.lr.ph.preheader ], [ %1200, %.lr.ph.1 ], [ %1209, %.lr.ph.2 ], [ %1218, %.lr.ph.3 ]
  %.5711121745.lcssa = phi ptr [ %.01055, %.lr.ph.preheader ], [ %1196, %.lr.ph.1 ], [ %1205, %.lr.ph.2 ], [ %1214, %.lr.ph.3 ]
  %1320 = trunc nuw nsw i64 %indvars.iv.lcssa to i32
  br label %.loopexit1270

.loopexit1270.loopexit2917:                       ; preds = %.lr.ph1948
  %1321 = zext i32 %.3310241996 to i64
  %1322 = shl i32 %.3310241996, 3
  %1323 = add i32 %1322, %.291998
  %scevgep.le = getelementptr i8, ptr %.3310881995, i64 %1321
  br label %.loopexit1270

.loopexit1270.loopexit2918:                       ; preds = %.lr.ph2089
  %1324 = shl i32 %.531044, 3
  %1325 = add i32 %.49, %1324
  %1326 = zext i32 %.531044 to i64
  %scevgep2816.le = getelementptr i8, ptr %.531108, i64 %1326
  br label %.loopexit1270

.loopexit1270.loopexit2919:                       ; preds = %.lr.ph2077
  %1327 = zext i32 %.501041.lcssa to i64
  %1328 = shl i32 %.501041.lcssa, 3
  %1329 = add i32 %1328, %.46.lcssa
  %scevgep2814.le = getelementptr i8, ptr %.501105.lcssa, i64 %1327
  br label %.loopexit1270

.loopexit1270.loopexit2920:                       ; preds = %.lr.ph2059
  %1330 = zext i32 %.491040 to i64
  %1331 = shl i32 %.491040, 3
  %1332 = add i32 %1331, %.45
  %scevgep2810.le = getelementptr i8, ptr %.491104, i64 %1330
  br label %.loopexit1270

.loopexit1270.loopexit2921:                       ; preds = %.lr.ph2044
  %1333 = shl i32 %.461037, 3
  %1334 = add i32 %.42, %1333
  %1335 = zext i32 %.461037 to i64
  %scevgep2807.le = getelementptr i8, ptr %.461101, i64 %1335
  br label %.loopexit1270

.loopexit1270.loopexit2922:                       ; preds = %.lr.ph2032
  %1336 = zext i32 %.431034.lcssa to i64
  %1337 = shl i32 %.431034.lcssa, 3
  %1338 = add i32 %1337, %.39.lcssa
  %scevgep2805.le = getelementptr i8, ptr %.431098.lcssa, i64 %1336
  br label %.loopexit1270

.loopexit1270.loopexit2923:                       ; preds = %.lr.ph2014
  %1339 = zext i32 %.421033 to i64
  %1340 = shl i32 %.421033, 3
  %1341 = add i32 %1340, %.38
  %scevgep2801.le = getelementptr i8, ptr %.421097, i64 %1339
  br label %.loopexit1270

.loopexit1270.loopexit3771:                       ; preds = %71
  br label %.loopexit1270

.loopexit1270:                                    ; preds = %373, %379, %411, %423, %455, %543, %622, %628, %886, %1106, %1182, %.lr.ph2119, %.lr.ph1776, %71, %.loopexit1270.loopexit3771, %.loopexit1270.loopexit2923, %.loopexit1270.loopexit2922, %.loopexit1270.loopexit2921, %.loopexit1270.loopexit2920, %.loopexit1270.loopexit2919, %.loopexit1270.loopexit2918, %.loopexit1270.loopexit2917, %.loopexit1270.loopexit2355, %.loopexit1270.loopexit2354, %.loopexit1270.loopexit2353, %.loopexit1270.loopexit2345, %.loopexit1270.loopexit2344, %.loopexit1270.loopexit2343, %.loopexit1270.loopexit2342, %.loopexit1270.loopexit2341, %.loopexit1270.loopexit2340, %.loopexit1270.loopexit2339, %.loopexit1270.loopexit2338, %.loopexit1270.loopexit2336, %.loopexit1270.loopexit2335, %.loopexit1270.loopexit, %1306, %567
  %.09892684 = phi i32 [ %.0989, %567 ], [ %.0989, %1306 ], [ %.0989, %.loopexit1270.loopexit ], [ %.0989, %.loopexit1270.loopexit2335 ], [ %.0989, %.loopexit1270.loopexit2336 ], [ %.0989, %.loopexit1270.loopexit2338 ], [ %.0989, %.loopexit1270.loopexit2339 ], [ %.0989, %.loopexit1270.loopexit2340 ], [ %.0989, %.loopexit1270.loopexit2341 ], [ %.0989, %.loopexit1270.loopexit2342 ], [ %.0989, %.loopexit1270.loopexit2343 ], [ %.0989, %.loopexit1270.loopexit2344 ], [ %.0989, %.loopexit1270.loopexit2345 ], [ %.0989, %.loopexit1270.loopexit2353 ], [ %.0989, %.loopexit1270.loopexit2354 ], [ %.0989, %.loopexit1270.loopexit2355 ], [ %.0989, %.loopexit1270.loopexit2917 ], [ %.0989, %.loopexit1270.loopexit2918 ], [ %.0989, %.loopexit1270.loopexit2919 ], [ %.0989, %.loopexit1270.loopexit2920 ], [ %.0989, %.loopexit1270.loopexit2921 ], [ %.0989, %.loopexit1270.loopexit2922 ], [ %.0989, %.loopexit1270.loopexit2923 ], [ %.0989, %71 ], [ %.0989, %.lr.ph1776 ], [ %.0989, %373 ], [ %.0989, %379 ], [ %.0989, %411 ], [ %.0989, %423 ], [ %.0989, %455 ], [ %.0989, %543 ], [ %.0989, %622 ], [ %.0989, %628 ], [ %.0989, %886 ], [ 0, %1106 ], [ 0, %1182 ], [ %.0989, %.lr.ph2119 ], [ %.0989, %.loopexit1270.loopexit3771 ]
  %.641119 = phi ptr [ %.241079.lcssa, %567 ], [ %.611116, %1306 ], [ %.3710921978, %.loopexit1270.loopexit ], [ %.3510901968, %.loopexit1270.loopexit2335 ], [ %.3610911958, %.loopexit1270.loopexit2336 ], [ %.110562323.lcssa, %.loopexit1270.loopexit2338 ], [ %.1810732313.lcssa, %.loopexit1270.loopexit2339 ], [ %.810632304.lcssa, %.loopexit1270.loopexit2340 ], [ %.610612294.lcssa, %.loopexit1270.loopexit2341 ], [ %.410592284.lcssa, %.loopexit1270.loopexit2342 ], [ %.210572274.lcssa, %.loopexit1270.loopexit2343 ], [ %.2010752106.lcssa, %.loopexit1270.loopexit2344 ], [ %.2510802095.lcssa, %.loopexit1270.loopexit2345 ], [ %.2810831762.lcssa, %.loopexit1270.loopexit2353 ], [ %.6011151752.lcssa, %.loopexit1270.loopexit2354 ], [ %.5711121745.lcssa, %.loopexit1270.loopexit2355 ], [ %scevgep.le, %.loopexit1270.loopexit2917 ], [ %scevgep2816.le, %.loopexit1270.loopexit2918 ], [ %scevgep2814.le, %.loopexit1270.loopexit2919 ], [ %scevgep2810.le, %.loopexit1270.loopexit2920 ], [ %scevgep2807.le, %.loopexit1270.loopexit2921 ], [ %scevgep2805.le, %.loopexit1270.loopexit2922 ], [ %scevgep2801.le, %.loopexit1270.loopexit2923 ], [ %.01055, %71 ], [ %.3010851926, %.lr.ph1776 ], [ %.111066, %373 ], [ %.131068, %379 ], [ %414, %411 ], [ %.151070, %423 ], [ %458, %455 ], [ %.221077, %543 ], [ %.251080.lcssa, %622 ], [ %.271082, %628 ], [ %.331088.lcssa, %886 ], [ %.561111, %1106 ], [ %.01055, %1182 ], [ %.231078, %.lr.ph2119 ], [ %.01055, %.loopexit1270.loopexit3771 ]
  %.64 = phi i32 [ %.241015.lcssa, %567 ], [ %.61, %1306 ], [ 0, %.loopexit1270.loopexit ], [ 0, %.loopexit1270.loopexit2335 ], [ 0, %.loopexit1270.loopexit2336 ], [ 0, %.loopexit1270.loopexit2338 ], [ 0, %.loopexit1270.loopexit2339 ], [ 0, %.loopexit1270.loopexit2340 ], [ 0, %.loopexit1270.loopexit2341 ], [ 0, %.loopexit1270.loopexit2342 ], [ 0, %.loopexit1270.loopexit2343 ], [ 0, %.loopexit1270.loopexit2344 ], [ 0, %.loopexit1270.loopexit2345 ], [ 0, %.loopexit1270.loopexit2353 ], [ 0, %.loopexit1270.loopexit2354 ], [ 0, %.loopexit1270.loopexit2355 ], [ 0, %.loopexit1270.loopexit2917 ], [ 0, %.loopexit1270.loopexit2918 ], [ 0, %.loopexit1270.loopexit2919 ], [ 0, %.loopexit1270.loopexit2920 ], [ 0, %.loopexit1270.loopexit2921 ], [ 0, %.loopexit1270.loopexit2922 ], [ 0, %.loopexit1270.loopexit2923 ], [ %.0991, %71 ], [ 0, %.lr.ph1776 ], [ %.111002, %373 ], [ 0, %379 ], [ %412, %411 ], [ 0, %423 ], [ %456, %455 ], [ %.221013, %543 ], [ %.251016.lcssa, %622 ], [ %.271018, %628 ], [ %.331024.lcssa, %886 ], [ %.561047, %1106 ], [ %.0991, %1182 ], [ 0, %.lr.ph2119 ], [ %.0991, %.loopexit1270.loopexit3771 ]
  %.60988 = phi i64 [ %568, %567 ], [ %.57985, %1306 ], [ %.339611980, %.loopexit1270.loopexit ], [ %.319591970, %.loopexit1270.loopexit2335 ], [ %.329601960, %.loopexit1270.loopexit2336 ], [ %.19292325.lcssa, %.loopexit1270.loopexit2338 ], [ %.149422315.lcssa, %.loopexit1270.loopexit2339 ], [ %.89362306.lcssa, %.loopexit1270.loopexit2340 ], [ %.69342296.lcssa, %.loopexit1270.loopexit2341 ], [ %.49322286.lcssa, %.loopexit1270.loopexit2342 ], [ %.29302276.lcssa, %.loopexit1270.loopexit2343 ], [ %.169442108.lcssa, %.loopexit1270.loopexit2344 ], [ %.219492097.lcssa, %.loopexit1270.loopexit2345 ], [ %.249521764.lcssa, %.loopexit1270.loopexit2353 ], [ %.569841754.lcssa, %.loopexit1270.loopexit2354 ], [ %.539811747.lcssa, %.loopexit1270.loopexit2355 ], [ %.309581946, %.loopexit1270.loopexit2917 ], [ %.509782087, %.loopexit1270.loopexit2918 ], [ %.479752075, %.loopexit1270.loopexit2919 ], [ %.469742056, %.loopexit1270.loopexit2920 ], [ %.439712042, %.loopexit1270.loopexit2921 ], [ %.409682030, %.loopexit1270.loopexit2922 ], [ %.399672011, %.loopexit1270.loopexit2923 ], [ %.0928, %71 ], [ %.269541928, %.lr.ph1776 ], [ %.10938, %373 ], [ %.11939, %379 ], [ %.11939, %411 ], [ %.12940, %423 ], [ %.12940, %455 ], [ %.18946, %543 ], [ 0, %622 ], [ %.23951, %628 ], [ %.29957.lcssa, %886 ], [ %.52980, %1106 ], [ %.0928, %1182 ], [ %.19947, %.lr.ph2119 ], [ %.0928, %.loopexit1270.loopexit3771 ]
  %.60 = phi i32 [ %569, %567 ], [ %.57, %1306 ], [ %1307, %.loopexit1270.loopexit ], [ %1308, %.loopexit1270.loopexit2335 ], [ %1309, %.loopexit1270.loopexit2336 ], [ %1310, %.loopexit1270.loopexit2338 ], [ %1311, %.loopexit1270.loopexit2339 ], [ %1312, %.loopexit1270.loopexit2340 ], [ %1313, %.loopexit1270.loopexit2341 ], [ %1314, %.loopexit1270.loopexit2342 ], [ %1315, %.loopexit1270.loopexit2343 ], [ %1316, %.loopexit1270.loopexit2344 ], [ %1317, %.loopexit1270.loopexit2345 ], [ %1318, %.loopexit1270.loopexit2353 ], [ %1319, %.loopexit1270.loopexit2354 ], [ %1320, %.loopexit1270.loopexit2355 ], [ %1323, %.loopexit1270.loopexit2917 ], [ %1325, %.loopexit1270.loopexit2918 ], [ %1329, %.loopexit1270.loopexit2919 ], [ %1332, %.loopexit1270.loopexit2920 ], [ %1334, %.loopexit1270.loopexit2921 ], [ %1338, %.loopexit1270.loopexit2922 ], [ %1341, %.loopexit1270.loopexit2923 ], [ %.0917, %71 ], [ %.261929, %.lr.ph1776 ], [ %.10927, %373 ], [ %.11, %379 ], [ %.11, %411 ], [ %.12, %423 ], [ %.12, %455 ], [ %.18, %543 ], [ 0, %622 ], [ %.23, %628 ], [ %.29.lcssa, %886 ], [ %.52, %1106 ], [ %.0917, %1182 ], [ %.19, %.lr.ph2119 ], [ %.0917, %.loopexit1270.loopexit3771 ]
  %.5916 = phi i32 [ %.0911, %567 ], [ %.2913, %1306 ], [ %.0911, %.loopexit1270.loopexit ], [ %.0911, %.loopexit1270.loopexit2335 ], [ %.0911, %.loopexit1270.loopexit2336 ], [ %.0911, %.loopexit1270.loopexit2338 ], [ %.0911, %.loopexit1270.loopexit2339 ], [ %.0911, %.loopexit1270.loopexit2340 ], [ %.0911, %.loopexit1270.loopexit2341 ], [ %.0911, %.loopexit1270.loopexit2342 ], [ %.0911, %.loopexit1270.loopexit2343 ], [ %.0911, %.loopexit1270.loopexit2344 ], [ %.0911, %.loopexit1270.loopexit2345 ], [ %.0911, %.loopexit1270.loopexit2353 ], [ %.2913, %.loopexit1270.loopexit2354 ], [ %.0911, %.loopexit1270.loopexit2355 ], [ %.0911, %.loopexit1270.loopexit2917 ], [ %.0911, %.loopexit1270.loopexit2918 ], [ %.0911, %.loopexit1270.loopexit2919 ], [ %.0911, %.loopexit1270.loopexit2920 ], [ %.0911, %.loopexit1270.loopexit2921 ], [ %.0911, %.loopexit1270.loopexit2922 ], [ %.0911, %.loopexit1270.loopexit2923 ], [ %.0911, %71 ], [ %.0911, %.lr.ph1776 ], [ %.0911, %.lr.ph2119 ], [ %.0911, %1182 ], [ %.0911, %1106 ], [ %.0911, %886 ], [ %.0911, %628 ], [ %.0911, %622 ], [ %.0911, %543 ], [ %.0911, %455 ], [ %.0911, %423 ], [ %.0911, %411 ], [ %.0911, %379 ], [ %.0911, %373 ], [ %.0911, %.loopexit1270.loopexit3771 ]
  %.9 = phi i32 [ %.0, %567 ], [ 1, %1306 ], [ %.1, %.loopexit1270.loopexit ], [ %.1, %.loopexit1270.loopexit2335 ], [ %.1, %.loopexit1270.loopexit2336 ], [ %.0, %.loopexit1270.loopexit2338 ], [ %.0, %.loopexit1270.loopexit2339 ], [ %.0, %.loopexit1270.loopexit2340 ], [ %.0, %.loopexit1270.loopexit2341 ], [ %.0, %.loopexit1270.loopexit2342 ], [ %.0, %.loopexit1270.loopexit2343 ], [ %.0, %.loopexit1270.loopexit2344 ], [ %.0, %.loopexit1270.loopexit2345 ], [ %.0, %.loopexit1270.loopexit2353 ], [ %.0, %.loopexit1270.loopexit2354 ], [ %.0, %.loopexit1270.loopexit2355 ], [ %.1, %.loopexit1270.loopexit2917 ], [ %.6, %.loopexit1270.loopexit2918 ], [ %.5, %.loopexit1270.loopexit2919 ], [ %.5, %.loopexit1270.loopexit2920 ], [ %.4, %.loopexit1270.loopexit2921 ], [ %.3, %.loopexit1270.loopexit2922 ], [ %.3, %.loopexit1270.loopexit2923 ], [ -3, %71 ], [ %.0, %.lr.ph1776 ], [ %.0, %373 ], [ %.0, %379 ], [ %.0, %411 ], [ %.0, %423 ], [ %.0, %455 ], [ %.0, %543 ], [ %.0, %622 ], [ %.0, %628 ], [ 0, %886 ], [ %.7, %1106 ], [ %.0, %1182 ], [ %.0, %.lr.ph2119 ], [ 1, %.loopexit1270.loopexit3771 ]
  store ptr %.01052, ptr %6, align 8, !tbaa !5
  store i32 %.09892684, ptr %23, align 8, !tbaa !17
  store ptr %.641119, ptr %0, align 8, !tbaa !12
  store i32 %.64, ptr %25, align 8, !tbaa !13
  store i64 %.60988, ptr %27, align 8, !tbaa !18
  store i32 %.60, ptr %29, align 8, !tbaa !19
  %1342 = load i32, ptr %61, align 4, !tbaa !90
  %.not1254 = icmp eq i32 %1342, 0
  br i1 %.not1254, label %1343, label %1350

1343:                                             ; preds = %.loopexit1270
  %.not1255 = icmp eq i32 %.5916, %.09892684
  br i1 %.not1255, label %1354, label %1344

1344:                                             ; preds = %1343
  %1345 = load i32, ptr %18, align 8, !tbaa !15
  %1346 = icmp ult i32 %1345, 16209
  br i1 %1346, label %1347, label %1354

1347:                                             ; preds = %1344
  %1348 = icmp ult i32 %1345, 16206
  %1349 = icmp ne i32 %1, 4
  %or.cond9 = or i1 %1349, %1348
  br i1 %or.cond9, label %1350, label %1354

1350:                                             ; preds = %1347, %.loopexit1270
  %1351 = sub i32 %.5916, %.09892684
  %1352 = call i32 @updatewindow(ptr noundef nonnull %0, ptr noundef %.01052, i32 noundef %1351)
  %.not1256 = icmp eq i32 %1352, 0
  br i1 %.not1256, label %._crit_edge2862, label %1353

._crit_edge2862:                                  ; preds = %1350
  %.pre2863 = load i32, ptr %25, align 8, !tbaa !13
  %.pre2864 = load i32, ptr %23, align 8, !tbaa !17
  br label %1354

1353:                                             ; preds = %1350
  store i32 16210, ptr %18, align 8, !tbaa !15
  br label %.loopexit1314

1354:                                             ; preds = %._crit_edge2862, %1347, %1344, %1343
  %1355 = phi i32 [ %.pre2864, %._crit_edge2862 ], [ %.09892684, %1347 ], [ %.09892684, %1344 ], [ %.09892684, %1343 ]
  %1356 = phi i32 [ %.pre2863, %._crit_edge2862 ], [ %.64, %1347 ], [ %.64, %1344 ], [ %.64, %1343 ]
  %1357 = sub i32 %26, %1356
  %1358 = sub i32 %.5916, %1355
  %1359 = zext i32 %1357 to i64
  %1360 = getelementptr inbounds i8, ptr %0, i64 16
  %1361 = load i64, ptr %1360, align 8, !tbaa !99
  %1362 = add i64 %1361, %1359
  store i64 %1362, ptr %1360, align 8, !tbaa !99
  %1363 = zext i32 %1358 to i64
  %1364 = load i64, ptr %32, align 8, !tbaa !96
  %1365 = add i64 %1364, %1363
  store i64 %1365, ptr %32, align 8, !tbaa !96
  %1366 = load i64, ptr %33, align 8, !tbaa !97
  %1367 = add i64 %1366, %1363
  store i64 %1367, ptr %33, align 8, !tbaa !97
  %1368 = load i32, ptr %31, align 8, !tbaa !22
  %1369 = and i32 %1368, 4
  %1370 = icmp ne i32 %1369, 0
  %1371 = icmp ne i32 %.5916, %1355
  %or.cond11 = select i1 %1370, i1 %1371, i1 false
  br i1 %or.cond11, label %1372, label %1384

1372:                                             ; preds = %1354
  %1373 = load i32, ptr %34, align 8, !tbaa !33
  %.not1257 = icmp eq i32 %1373, 0
  %1374 = load i64, ptr %35, align 8, !tbaa !27
  %1375 = load ptr, ptr %6, align 8, !tbaa !5
  %1376 = sub nsw i64 0, %1363
  %1377 = getelementptr inbounds i8, ptr %1375, i64 %1376
  br i1 %.not1257, label %1380, label %1378

1378:                                             ; preds = %1372
  %1379 = call i64 @crc32(i64 noundef %1374, ptr noundef %1377, i32 noundef %1358) #5
  br label %1382

1380:                                             ; preds = %1372
  %1381 = call i64 @adler32(i64 noundef %1374, ptr noundef %1377, i32 noundef %1358) #5
  br label %1382

1382:                                             ; preds = %1380, %1378
  %1383 = phi i64 [ %1379, %1378 ], [ %1381, %1380 ]
  store i64 %1383, ptr %35, align 8, !tbaa !27
  store i64 %1383, ptr %36, align 8, !tbaa !34
  br label %1384

1384:                                             ; preds = %1382, %1354
  %1385 = load i32, ptr %29, align 8, !tbaa !19
  %1386 = load i32, ptr %64, align 4, !tbaa !57
  %.not1258 = icmp eq i32 %1386, 0
  %1387 = select i1 %.not1258, i32 0, i32 64
  %1388 = add nsw i32 %1387, %1385
  %1389 = load i32, ptr %18, align 8, !tbaa !15
  %1390 = icmp eq i32 %1389, 16191
  %1391 = select i1 %1390, i32 128, i32 0
  %1392 = add nsw i32 %1388, %1391
  %1393 = icmp eq i32 %1389, 16199
  %1394 = icmp eq i32 %1389, 16194
  %1395 = or i1 %1393, %1394
  %1396 = select i1 %1395, i32 256, i32 0
  %1397 = add nsw i32 %1392, %1396
  %1398 = getelementptr inbounds i8, ptr %0, i64 88
  store i32 %1397, ptr %1398, align 8, !tbaa !100
  %1399 = icmp eq i32 %26, %1356
  %1400 = icmp eq i32 %.5916, %1355
  %or.cond13 = select i1 %1399, i1 %1400, i1 false
  %1401 = icmp eq i32 %1, 4
  %or.cond15 = or i1 %1401, %or.cond13
  %1402 = icmp eq i32 %.9, 0
  %or.cond17 = select i1 %or.cond15, i1 %1402, i1 false
  %spec.store.select = select i1 %or.cond17, i32 -5, i32 %.9
  br label %.loopexit1314

.loopexit1314.loopexit:                           ; preds = %71
  br label %.loopexit1314

.loopexit1314:                                    ; preds = %71, %.loopexit1314.loopexit, %2, %5, %12, %1384, %1353, %540
  %.01120 = phi i32 [ -4, %1353 ], [ %spec.store.select, %1384 ], [ 2, %540 ], [ -2, %12 ], [ -2, %5 ], [ -2, %2 ], [ -4, %.loopexit1314.loopexit ], [ -2, %71 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #5
  ret i32 %.01120
}

declare i64 @crc32(i64 noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

declare i64 @adler32(i64 noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

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

declare i32 @inflate_table(i32 noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @inflate_fast(ptr noundef, i32 noundef) local_unnamed_addr #2

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { 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 24}
!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 = !{!6, !10, i64 8}
!14 = !{!6, !7, i64 56}
!15 = !{!16, !10, i64 8}
!16 = !{!"inflate_state", !7, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !11, i64 32, !11, i64 40, !7, i64 48, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !7, i64 72, !11, i64 80, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !7, i64 104, !7, i64 112, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !7, i64 144, !8, i64 152, !8, i64 792, !8, i64 1368, !10, i64 9064, !10, i64 9068, !10, i64 9072}
!17 = !{!6, !10, i64 32}
!18 = !{!16, !11, i64 80}
!19 = !{!16, !10, i64 88}
!20 = !{!16, !10, i64 100}
!21 = !{!16, !10, i64 140}
!22 = !{!16, !10, i64 16}
!23 = !{!8, !8, i64 0}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = !{!16, !10, i64 56}
!27 = !{!16, !11, i64 32}
!28 = !{!16, !7, i64 48}
!29 = !{!30, !10, i64 72}
!30 = !{!"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}
!31 = !{!6, !7, i64 48}
!32 = !{!16, !10, i64 28}
!33 = !{!16, !10, i64 24}
!34 = !{!6, !11, i64 96}
!35 = distinct !{!35, !25}
!36 = !{!30, !10, i64 0}
!37 = distinct !{!37, !25}
!38 = !{!30, !11, i64 8}
!39 = distinct !{!39, !25}
!40 = !{!30, !10, i64 16}
!41 = !{!30, !10, i64 20}
!42 = distinct !{!42, !25}
!43 = !{!16, !10, i64 92}
!44 = !{!30, !10, i64 32}
!45 = !{!30, !7, i64 24}
!46 = !{!30, !10, i64 36}
!47 = !{!30, !7, i64 40}
!48 = !{!30, !10, i64 48}
!49 = distinct !{!49, !25}
!50 = !{!30, !7, i64 56}
!51 = !{!30, !10, i64 64}
!52 = distinct !{!52, !25}
!53 = distinct !{!53, !25}
!54 = !{!30, !10, i64 68}
!55 = distinct !{!55, !25}
!56 = !{!16, !10, i64 20}
!57 = !{!16, !10, i64 12}
!58 = distinct !{!58, !25}
!59 = distinct !{!59, !25}
!60 = !{!16, !10, i64 132}
!61 = !{!16, !10, i64 136}
!62 = !{!16, !10, i64 128}
!63 = !{!64, !64, i64 0}
!64 = !{!"short", !8, i64 0}
!65 = distinct !{!65, !25}
!66 = distinct !{!66, !25}
!67 = !{!16, !7, i64 144}
!68 = !{!16, !7, i64 104}
!69 = !{!16, !10, i64 120}
!70 = distinct !{!70, !25}
!71 = distinct !{!71, !25}
!72 = distinct !{!72, !25}
!73 = distinct !{!73, !74}
!74 = !{!"llvm.loop.unroll.disable"}
!75 = distinct !{!75, !25, !76, !77}
!76 = !{!"llvm.loop.isvectorized", i32 1}
!77 = !{!"llvm.loop.unroll.runtime.disable"}
!78 = distinct !{!78, !25, !76}
!79 = distinct !{!79, !25}
!80 = !{!16, !7, i64 112}
!81 = !{!16, !10, i64 124}
!82 = !{!16, !10, i64 9068}
!83 = distinct !{!83, !25}
!84 = !{!16, !10, i64 9072}
!85 = !{!16, !10, i64 96}
!86 = distinct !{!86, !25}
!87 = !{!16, !10, i64 64}
!88 = !{!16, !10, i64 9064}
!89 = !{!16, !10, i64 68}
!90 = !{!16, !10, i64 60}
!91 = !{!16, !7, i64 72}
!92 = distinct !{!92, !25, !76, !77}
!93 = distinct !{!93, !74}
!94 = distinct !{!94, !25, !76}
!95 = distinct !{!95, !25}
!96 = !{!6, !11, i64 40}
!97 = !{!16, !11, i64 40}
!98 = distinct !{!98, !25}
!99 = !{!6, !11, i64 16}
!100 = !{!6, !10, i64 88}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass