; LLVM IR from niessner/Matterport :: code/gaps/pkgs/png (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 { 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], [1444 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: 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 = icmp eq ptr %23, null
  br i1 %24, label %45, label %25

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

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

35:                                               ; preds = %30
  %36 = load ptr, ptr %4, align 8, !tbaa !5
  %37 = getelementptr inbounds %struct.z_stream_s, ptr %36, i32 0, i32 0
  %38 = load ptr, ptr %37, align 8, !tbaa !15
  %39 = icmp eq ptr %38, null
  br i1 %39, label %40, label %46

40:                                               ; preds = %35
  %41 = load ptr, ptr %4, align 8, !tbaa !5
  %42 = getelementptr inbounds %struct.z_stream_s, ptr %41, i32 0, i32 1
  %43 = load i32, ptr %42, align 8, !tbaa !16
  %44 = icmp ne i32 %43, 0
  br i1 %44, label %45, label %46

45:                                               ; preds = %40, %30, %25, %2
  store i32 -2, ptr %3, align 4
  store i32 1, ptr %22, align 4
  br label %3044

46:                                               ; preds = %40, %35
  %47 = load ptr, ptr %4, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.z_stream_s, ptr %47, i32 0, i32 7
  %49 = load ptr, ptr %48, align 8, !tbaa !11
  store ptr %49, ptr %6, align 8, !tbaa !5
  %50 = load ptr, ptr %6, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.inflate_state, ptr %50, i32 0, i32 0
  %52 = load i32, ptr %51, align 8, !tbaa !17
  %53 = icmp eq i32 %52, 11
  br i1 %53, label %54, label %57

54:                                               ; preds = %46
  %55 = load ptr, ptr %6, align 8, !tbaa !5
  %56 = getelementptr inbounds %struct.inflate_state, ptr %55, i32 0, i32 0
  store i32 12, ptr %56, align 8, !tbaa !17
  br label %57

57:                                               ; preds = %54, %46
  br label %58

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

77:                                               ; preds = %58
  br label %78

78:                                               ; preds = %77
  %79 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %79, ptr %13, align 4, !tbaa !9
  %80 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %80, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %81

81:                                               ; preds = %2876, %78
  %82 = load ptr, ptr %6, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.inflate_state, ptr %82, i32 0, i32 0
  %84 = load i32, ptr %83, align 8, !tbaa !17
  switch i32 %84, label %2875 [
    i32 0, label %85
    i32 1, label %252
    i32 2, label %350
    i32 3, label %427
    i32 4, label %505
    i32 5, label %597
    i32 6, label %708
    i32 7, label %815
    i32 8, label %920
    i32 9, label %997
    i32 10, label %1050
    i32 11, label %1085
    i32 12, label %1093
    i32 13, label %1191
    i32 14, label %1258
    i32 15, label %1261
    i32 16, label %1310
    i32 17, label %1397
    i32 18, label %1511
    i32 19, label %1962
    i32 20, label %1965
    i32 21, label %2224
    i32 22, label %2302
    i32 23, label %2476
    i32 24, label %2549
    i32 25, label %2673
    i32 26, label %2688
    i32 27, label %2814
    i32 28, label %2871
    i32 29, label %2872
    i32 30, label %2873
    i32 31, label %2874
  ]

85:                                               ; preds = %81
  %86 = load ptr, ptr %6, align 8, !tbaa !5
  %87 = getelementptr inbounds %struct.inflate_state, ptr %86, i32 0, i32 2
  %88 = load i32, ptr %87, align 8, !tbaa !23
  %89 = icmp eq i32 %88, 0
  br i1 %89, label %90, label %93

90:                                               ; preds = %85
  %91 = load ptr, ptr %6, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct.inflate_state, ptr %91, i32 0, i32 0
  store i32 12, ptr %92, align 8, !tbaa !17
  br label %2876

93:                                               ; preds = %85
  br label %94

94:                                               ; preds = %93
  br label %95

95:                                               ; preds = %118, %94
  %96 = load i32, ptr %12, align 4, !tbaa !9
  %97 = icmp ult i32 %96, 16
  br i1 %97, label %98, label %119

98:                                               ; preds = %95
  br label %99

99:                                               ; preds = %98
  %100 = load i32, ptr %9, align 4, !tbaa !9
  %101 = icmp eq i32 %100, 0
  br i1 %101, label %102, label %103

102:                                              ; preds = %99
  br label %2877

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

117:                                              ; preds = %103
  br label %118

118:                                              ; preds = %117
  br label %95, !llvm.loop !25

119:                                              ; preds = %95
  br label %120

120:                                              ; preds = %119
  br label %121

121:                                              ; preds = %120
  %122 = load ptr, ptr %6, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.inflate_state, ptr %122, i32 0, i32 2
  %124 = load i32, ptr %123, align 8, !tbaa !23
  %125 = and i32 %124, 2
  %126 = icmp ne i32 %125, 0
  br i1 %126, label %127, label %156

127:                                              ; preds = %121
  %128 = load i64, ptr %11, align 8, !tbaa !21
  %129 = icmp eq i64 %128, 35615
  br i1 %129, label %130, label %156

130:                                              ; preds = %127
  %131 = call i64 @crc32(i64 noundef 0, ptr noundef null, i32 noundef 0)
  %132 = load ptr, ptr %6, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.inflate_state, ptr %132, i32 0, i32 6
  store i64 %131, ptr %133, align 8, !tbaa !27
  br label %134

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

149:                                              ; preds = %134
  br label %150

150:                                              ; preds = %149
  br label %151

151:                                              ; preds = %150
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %152

152:                                              ; preds = %151
  br label %153

153:                                              ; preds = %152
  %154 = load ptr, ptr %6, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.inflate_state, ptr %154, i32 0, i32 0
  store i32 1, ptr %155, align 8, !tbaa !17
  br label %2876

156:                                              ; preds = %127, %121
  %157 = load ptr, ptr %6, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.inflate_state, ptr %157, i32 0, i32 4
  store i32 0, ptr %158, align 8, !tbaa !28
  %159 = load ptr, ptr %6, align 8, !tbaa !5
  %160 = getelementptr inbounds %struct.inflate_state, ptr %159, i32 0, i32 8
  %161 = load ptr, ptr %160, align 8, !tbaa !29
  %162 = icmp ne ptr %161, null
  br i1 %162, label %163, label %168

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

168:                                              ; preds = %163, %156
  %169 = load ptr, ptr %6, align 8, !tbaa !5
  %170 = getelementptr inbounds %struct.inflate_state, ptr %169, i32 0, i32 2
  %171 = load i32, ptr %170, align 8, !tbaa !23
  %172 = and i32 %171, 1
  %173 = icmp ne i32 %172, 0
  br i1 %173, label %174, label %185

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

185:                                              ; preds = %174, %168
  %186 = load ptr, ptr %4, align 8, !tbaa !5
  %187 = getelementptr inbounds %struct.z_stream_s, ptr %186, i32 0, i32 6
  store ptr @.str.1, ptr %187, align 8, !tbaa !32
  %188 = load ptr, ptr %6, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.inflate_state, ptr %188, i32 0, i32 0
  store i32 29, ptr %189, align 8, !tbaa !17
  br label %2876

190:                                              ; preds = %174
  %191 = load i64, ptr %11, align 8, !tbaa !21
  %192 = trunc i64 %191 to i32
  %193 = and i32 %192, 15
  %194 = icmp ne i32 %193, 8
  br i1 %194, label %195, label %200

195:                                              ; preds = %190
  %196 = load ptr, ptr %4, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.z_stream_s, ptr %196, i32 0, i32 6
  store ptr @.str.2, ptr %197, align 8, !tbaa !32
  %198 = load ptr, ptr %6, align 8, !tbaa !5
  %199 = getelementptr inbounds %struct.inflate_state, ptr %198, i32 0, i32 0
  store i32 29, ptr %199, align 8, !tbaa !17
  br label %2876

200:                                              ; preds = %190
  br label %201

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

206:                                              ; preds = %201
  br label %207

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

216:                                              ; preds = %207
  %217 = load i32, ptr %19, align 4, !tbaa !9
  %218 = load ptr, ptr %6, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.inflate_state, ptr %218, i32 0, i32 9
  store i32 %217, ptr %219, align 8, !tbaa !33
  br label %232

220:                                              ; preds = %207
  %221 = load i32, ptr %19, align 4, !tbaa !9
  %222 = load ptr, ptr %6, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.inflate_state, ptr %222, i32 0, i32 9
  %224 = load i32, ptr %223, align 8, !tbaa !33
  %225 = icmp ugt i32 %221, %224
  br i1 %225, label %226, label %231

226:                                              ; preds = %220
  %227 = load ptr, ptr %4, align 8, !tbaa !5
  %228 = getelementptr inbounds %struct.z_stream_s, ptr %227, i32 0, i32 6
  store ptr @.str.3, ptr %228, align 8, !tbaa !32
  %229 = load ptr, ptr %6, align 8, !tbaa !5
  %230 = getelementptr inbounds %struct.inflate_state, ptr %229, i32 0, i32 0
  store i32 29, ptr %230, align 8, !tbaa !17
  br label %2876

231:                                              ; preds = %220
  br label %232

232:                                              ; preds = %231, %216
  %233 = load i32, ptr %19, align 4, !tbaa !9
  %234 = shl i32 1, %233
  %235 = load ptr, ptr %6, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.inflate_state, ptr %235, i32 0, i32 5
  store i32 %234, ptr %236, align 4, !tbaa !34
  %237 = call i64 @adler32(i64 noundef 0, ptr noundef null, i32 noundef 0)
  %238 = load ptr, ptr %6, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.inflate_state, ptr %238, i32 0, i32 6
  store i64 %237, ptr %239, align 8, !tbaa !27
  %240 = load ptr, ptr %4, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.z_stream_s, ptr %240, i32 0, i32 12
  store i64 %237, ptr %241, align 8, !tbaa !35
  %242 = load i64, ptr %11, align 8, !tbaa !21
  %243 = and i64 %242, 512
  %244 = icmp ne i64 %243, 0
  %245 = zext i1 %244 to i64
  %246 = select i1 %244, i32 9, i32 11
  %247 = load ptr, ptr %6, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.inflate_state, ptr %247, i32 0, i32 0
  store i32 %246, ptr %248, align 8, !tbaa !17
  br label %249

249:                                              ; preds = %232
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %250

250:                                              ; preds = %249
  br label %251

251:                                              ; preds = %250
  br label %2876

252:                                              ; preds = %81
  br label %253

253:                                              ; preds = %252
  br label %254

254:                                              ; preds = %277, %253
  %255 = load i32, ptr %12, align 4, !tbaa !9
  %256 = icmp ult i32 %255, 16
  br i1 %256, label %257, label %278

257:                                              ; preds = %254
  br label %258

258:                                              ; preds = %257
  %259 = load i32, ptr %9, align 4, !tbaa !9
  %260 = icmp eq i32 %259, 0
  br i1 %260, label %261, label %262

261:                                              ; preds = %258
  br label %2877

262:                                              ; preds = %258
  %263 = load i32, ptr %9, align 4, !tbaa !9
  %264 = add i32 %263, -1
  store i32 %264, ptr %9, align 4, !tbaa !9
  %265 = load ptr, ptr %7, align 8, !tbaa !5
  %266 = getelementptr inbounds i8, ptr %265, i32 1
  store ptr %266, ptr %7, align 8, !tbaa !5
  %267 = load i8, ptr %265, align 1, !tbaa !24
  %268 = zext i8 %267 to i64
  %269 = load i32, ptr %12, align 4, !tbaa !9
  %270 = zext i32 %269 to i64
  %271 = shl i64 %268, %270
  %272 = load i64, ptr %11, align 8, !tbaa !21
  %273 = add i64 %272, %271
  store i64 %273, ptr %11, align 8, !tbaa !21
  %274 = load i32, ptr %12, align 4, !tbaa !9
  %275 = add i32 %274, 8
  store i32 %275, ptr %12, align 4, !tbaa !9
  br label %276

276:                                              ; preds = %262
  br label %277

277:                                              ; preds = %276
  br label %254, !llvm.loop !36

278:                                              ; preds = %254
  br label %279

279:                                              ; preds = %278
  br label %280

280:                                              ; preds = %279
  %281 = load i64, ptr %11, align 8, !tbaa !21
  %282 = trunc i64 %281 to i32
  %283 = load ptr, ptr %6, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.inflate_state, ptr %283, i32 0, i32 4
  store i32 %282, ptr %284, align 8, !tbaa !28
  %285 = load ptr, ptr %6, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.inflate_state, ptr %285, i32 0, i32 4
  %287 = load i32, ptr %286, align 8, !tbaa !28
  %288 = and i32 %287, 255
  %289 = icmp ne i32 %288, 8
  br i1 %289, label %290, label %295

290:                                              ; preds = %280
  %291 = load ptr, ptr %4, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.z_stream_s, ptr %291, i32 0, i32 6
  store ptr @.str.2, ptr %292, align 8, !tbaa !32
  %293 = load ptr, ptr %6, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.inflate_state, ptr %293, i32 0, i32 0
  store i32 29, ptr %294, align 8, !tbaa !17
  br label %2876

295:                                              ; preds = %280
  %296 = load ptr, ptr %6, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.inflate_state, ptr %296, i32 0, i32 4
  %298 = load i32, ptr %297, align 8, !tbaa !28
  %299 = and i32 %298, 57344
  %300 = icmp ne i32 %299, 0
  br i1 %300, label %301, label %306

301:                                              ; preds = %295
  %302 = load ptr, ptr %4, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.z_stream_s, ptr %302, i32 0, i32 6
  store ptr @.str.4, ptr %303, align 8, !tbaa !32
  %304 = load ptr, ptr %6, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.inflate_state, ptr %304, i32 0, i32 0
  store i32 29, ptr %305, align 8, !tbaa !17
  br label %2876

306:                                              ; preds = %295
  %307 = load ptr, ptr %6, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.inflate_state, ptr %307, i32 0, i32 8
  %309 = load ptr, ptr %308, align 8, !tbaa !29
  %310 = icmp ne ptr %309, null
  br i1 %310, label %311, label %320

311:                                              ; preds = %306
  %312 = load i64, ptr %11, align 8, !tbaa !21
  %313 = lshr i64 %312, 8
  %314 = and i64 %313, 1
  %315 = trunc i64 %314 to i32
  %316 = load ptr, ptr %6, align 8, !tbaa !5
  %317 = getelementptr inbounds %struct.inflate_state, ptr %316, i32 0, i32 8
  %318 = load ptr, ptr %317, align 8, !tbaa !29
  %319 = getelementptr inbounds %struct.gz_header_s, ptr %318, i32 0, i32 0
  store i32 %315, ptr %319, align 8, !tbaa !37
  br label %320

320:                                              ; preds = %311, %306
  %321 = load ptr, ptr %6, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct.inflate_state, ptr %321, i32 0, i32 4
  %323 = load i32, ptr %322, align 8, !tbaa !28
  %324 = and i32 %323, 512
  %325 = icmp ne i32 %324, 0
  br i1 %325, label %326, label %344

326:                                              ; preds = %320
  br label %327

327:                                              ; preds = %326
  %328 = load i64, ptr %11, align 8, !tbaa !21
  %329 = trunc i64 %328 to i8
  %330 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 0
  store i8 %329, ptr %330, align 1, !tbaa !24
  %331 = load i64, ptr %11, align 8, !tbaa !21
  %332 = lshr i64 %331, 8
  %333 = trunc i64 %332 to i8
  %334 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 1
  store i8 %333, ptr %334, align 1, !tbaa !24
  %335 = load ptr, ptr %6, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.inflate_state, ptr %335, i32 0, i32 6
  %337 = load i64, ptr %336, align 8, !tbaa !27
  %338 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 0
  %339 = call i64 @crc32(i64 noundef %337, ptr noundef %338, i32 noundef 2)
  %340 = load ptr, ptr %6, align 8, !tbaa !5
  %341 = getelementptr inbounds %struct.inflate_state, ptr %340, i32 0, i32 6
  store i64 %339, ptr %341, align 8, !tbaa !27
  br label %342

342:                                              ; preds = %327
  br label %343

343:                                              ; preds = %342
  br label %344

344:                                              ; preds = %343, %320
  br label %345

345:                                              ; preds = %344
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %346

346:                                              ; preds = %345
  br label %347

347:                                              ; preds = %346
  %348 = load ptr, ptr %6, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.inflate_state, ptr %348, i32 0, i32 0
  store i32 2, ptr %349, align 8, !tbaa !17
  br label %350

350:                                              ; preds = %347, %81
  br label %351

351:                                              ; preds = %350
  br label %352

352:                                              ; preds = %375, %351
  %353 = load i32, ptr %12, align 4, !tbaa !9
  %354 = icmp ult i32 %353, 32
  br i1 %354, label %355, label %376

355:                                              ; preds = %352
  br label %356

356:                                              ; preds = %355
  %357 = load i32, ptr %9, align 4, !tbaa !9
  %358 = icmp eq i32 %357, 0
  br i1 %358, label %359, label %360

359:                                              ; preds = %356
  br label %2877

360:                                              ; preds = %356
  %361 = load i32, ptr %9, align 4, !tbaa !9
  %362 = add i32 %361, -1
  store i32 %362, ptr %9, align 4, !tbaa !9
  %363 = load ptr, ptr %7, align 8, !tbaa !5
  %364 = getelementptr inbounds i8, ptr %363, i32 1
  store ptr %364, ptr %7, align 8, !tbaa !5
  %365 = load i8, ptr %363, align 1, !tbaa !24
  %366 = zext i8 %365 to i64
  %367 = load i32, ptr %12, align 4, !tbaa !9
  %368 = zext i32 %367 to i64
  %369 = shl i64 %366, %368
  %370 = load i64, ptr %11, align 8, !tbaa !21
  %371 = add i64 %370, %369
  store i64 %371, ptr %11, align 8, !tbaa !21
  %372 = load i32, ptr %12, align 4, !tbaa !9
  %373 = add i32 %372, 8
  store i32 %373, ptr %12, align 4, !tbaa !9
  br label %374

374:                                              ; preds = %360
  br label %375

375:                                              ; preds = %374
  br label %352, !llvm.loop !38

376:                                              ; preds = %352
  br label %377

377:                                              ; preds = %376
  br label %378

378:                                              ; preds = %377
  %379 = load ptr, ptr %6, align 8, !tbaa !5
  %380 = getelementptr inbounds %struct.inflate_state, ptr %379, i32 0, i32 8
  %381 = load ptr, ptr %380, align 8, !tbaa !29
  %382 = icmp ne ptr %381, null
  br i1 %382, label %383, label %389

383:                                              ; preds = %378
  %384 = load i64, ptr %11, align 8, !tbaa !21
  %385 = load ptr, ptr %6, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.inflate_state, ptr %385, i32 0, i32 8
  %387 = load ptr, ptr %386, align 8, !tbaa !29
  %388 = getelementptr inbounds %struct.gz_header_s, ptr %387, i32 0, i32 1
  store i64 %384, ptr %388, align 8, !tbaa !39
  br label %389

389:                                              ; preds = %383, %378
  %390 = load ptr, ptr %6, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.inflate_state, ptr %390, i32 0, i32 4
  %392 = load i32, ptr %391, align 8, !tbaa !28
  %393 = and i32 %392, 512
  %394 = icmp ne i32 %393, 0
  br i1 %394, label %395, label %421

395:                                              ; preds = %389
  br label %396

396:                                              ; preds = %395
  %397 = load i64, ptr %11, align 8, !tbaa !21
  %398 = trunc i64 %397 to i8
  %399 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 0
  store i8 %398, ptr %399, align 1, !tbaa !24
  %400 = load i64, ptr %11, align 8, !tbaa !21
  %401 = lshr i64 %400, 8
  %402 = trunc i64 %401 to i8
  %403 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 1
  store i8 %402, ptr %403, align 1, !tbaa !24
  %404 = load i64, ptr %11, align 8, !tbaa !21
  %405 = lshr i64 %404, 16
  %406 = trunc i64 %405 to i8
  %407 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 2
  store i8 %406, ptr %407, align 1, !tbaa !24
  %408 = load i64, ptr %11, align 8, !tbaa !21
  %409 = lshr i64 %408, 24
  %410 = trunc i64 %409 to i8
  %411 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 3
  store i8 %410, ptr %411, align 1, !tbaa !24
  %412 = load ptr, ptr %6, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.inflate_state, ptr %412, i32 0, i32 6
  %414 = load i64, ptr %413, align 8, !tbaa !27
  %415 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 0
  %416 = call i64 @crc32(i64 noundef %414, ptr noundef %415, i32 noundef 4)
  %417 = load ptr, ptr %6, align 8, !tbaa !5
  %418 = getelementptr inbounds %struct.inflate_state, ptr %417, i32 0, i32 6
  store i64 %416, ptr %418, align 8, !tbaa !27
  br label %419

419:                                              ; preds = %396
  br label %420

420:                                              ; preds = %419
  br label %421

421:                                              ; preds = %420, %389
  br label %422

422:                                              ; preds = %421
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %423

423:                                              ; preds = %422
  br label %424

424:                                              ; preds = %423
  %425 = load ptr, ptr %6, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.inflate_state, ptr %425, i32 0, i32 0
  store i32 3, ptr %426, align 8, !tbaa !17
  br label %427

427:                                              ; preds = %424, %81
  br label %428

428:                                              ; preds = %427
  br label %429

429:                                              ; preds = %452, %428
  %430 = load i32, ptr %12, align 4, !tbaa !9
  %431 = icmp ult i32 %430, 16
  br i1 %431, label %432, label %453

432:                                              ; preds = %429
  br label %433

433:                                              ; preds = %432
  %434 = load i32, ptr %9, align 4, !tbaa !9
  %435 = icmp eq i32 %434, 0
  br i1 %435, label %436, label %437

436:                                              ; preds = %433
  br label %2877

437:                                              ; preds = %433
  %438 = load i32, ptr %9, align 4, !tbaa !9
  %439 = add i32 %438, -1
  store i32 %439, ptr %9, align 4, !tbaa !9
  %440 = load ptr, ptr %7, align 8, !tbaa !5
  %441 = getelementptr inbounds i8, ptr %440, i32 1
  store ptr %441, ptr %7, align 8, !tbaa !5
  %442 = load i8, ptr %440, align 1, !tbaa !24
  %443 = zext i8 %442 to i64
  %444 = load i32, ptr %12, align 4, !tbaa !9
  %445 = zext i32 %444 to i64
  %446 = shl i64 %443, %445
  %447 = load i64, ptr %11, align 8, !tbaa !21
  %448 = add i64 %447, %446
  store i64 %448, ptr %11, align 8, !tbaa !21
  %449 = load i32, ptr %12, align 4, !tbaa !9
  %450 = add i32 %449, 8
  store i32 %450, ptr %12, align 4, !tbaa !9
  br label %451

451:                                              ; preds = %437
  br label %452

452:                                              ; preds = %451
  br label %429, !llvm.loop !40

453:                                              ; preds = %429
  br label %454

454:                                              ; preds = %453
  br label %455

455:                                              ; preds = %454
  %456 = load ptr, ptr %6, align 8, !tbaa !5
  %457 = getelementptr inbounds %struct.inflate_state, ptr %456, i32 0, i32 8
  %458 = load ptr, ptr %457, align 8, !tbaa !29
  %459 = icmp ne ptr %458, null
  br i1 %459, label %460, label %475

460:                                              ; preds = %455
  %461 = load i64, ptr %11, align 8, !tbaa !21
  %462 = and i64 %461, 255
  %463 = trunc i64 %462 to i32
  %464 = load ptr, ptr %6, align 8, !tbaa !5
  %465 = getelementptr inbounds %struct.inflate_state, ptr %464, i32 0, i32 8
  %466 = load ptr, ptr %465, align 8, !tbaa !29
  %467 = getelementptr inbounds %struct.gz_header_s, ptr %466, i32 0, i32 2
  store i32 %463, ptr %467, align 8, !tbaa !41
  %468 = load i64, ptr %11, align 8, !tbaa !21
  %469 = lshr i64 %468, 8
  %470 = trunc i64 %469 to i32
  %471 = load ptr, ptr %6, align 8, !tbaa !5
  %472 = getelementptr inbounds %struct.inflate_state, ptr %471, i32 0, i32 8
  %473 = load ptr, ptr %472, align 8, !tbaa !29
  %474 = getelementptr inbounds %struct.gz_header_s, ptr %473, i32 0, i32 3
  store i32 %470, ptr %474, align 4, !tbaa !42
  br label %475

475:                                              ; preds = %460, %455
  %476 = load ptr, ptr %6, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.inflate_state, ptr %476, i32 0, i32 4
  %478 = load i32, ptr %477, align 8, !tbaa !28
  %479 = and i32 %478, 512
  %480 = icmp ne i32 %479, 0
  br i1 %480, label %481, label %499

481:                                              ; preds = %475
  br label %482

482:                                              ; preds = %481
  %483 = load i64, ptr %11, align 8, !tbaa !21
  %484 = trunc i64 %483 to i8
  %485 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 0
  store i8 %484, ptr %485, align 1, !tbaa !24
  %486 = load i64, ptr %11, align 8, !tbaa !21
  %487 = lshr i64 %486, 8
  %488 = trunc i64 %487 to i8
  %489 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 1
  store i8 %488, ptr %489, align 1, !tbaa !24
  %490 = load ptr, ptr %6, align 8, !tbaa !5
  %491 = getelementptr inbounds %struct.inflate_state, ptr %490, i32 0, i32 6
  %492 = load i64, ptr %491, align 8, !tbaa !27
  %493 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 0
  %494 = call i64 @crc32(i64 noundef %492, ptr noundef %493, i32 noundef 2)
  %495 = load ptr, ptr %6, align 8, !tbaa !5
  %496 = getelementptr inbounds %struct.inflate_state, ptr %495, i32 0, i32 6
  store i64 %494, ptr %496, align 8, !tbaa !27
  br label %497

497:                                              ; preds = %482
  br label %498

498:                                              ; preds = %497
  br label %499

499:                                              ; preds = %498, %475
  br label %500

500:                                              ; preds = %499
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %501

501:                                              ; preds = %500
  br label %502

502:                                              ; preds = %501
  %503 = load ptr, ptr %6, align 8, !tbaa !5
  %504 = getelementptr inbounds %struct.inflate_state, ptr %503, i32 0, i32 0
  store i32 4, ptr %504, align 8, !tbaa !17
  br label %505

505:                                              ; preds = %502, %81
  %506 = load ptr, ptr %6, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct.inflate_state, ptr %506, i32 0, i32 4
  %508 = load i32, ptr %507, align 8, !tbaa !28
  %509 = and i32 %508, 1024
  %510 = icmp ne i32 %509, 0
  br i1 %510, label %511, label %583

511:                                              ; preds = %505
  br label %512

512:                                              ; preds = %511
  br label %513

513:                                              ; preds = %536, %512
  %514 = load i32, ptr %12, align 4, !tbaa !9
  %515 = icmp ult i32 %514, 16
  br i1 %515, label %516, label %537

516:                                              ; preds = %513
  br label %517

517:                                              ; preds = %516
  %518 = load i32, ptr %9, align 4, !tbaa !9
  %519 = icmp eq i32 %518, 0
  br i1 %519, label %520, label %521

520:                                              ; preds = %517
  br label %2877

521:                                              ; preds = %517
  %522 = load i32, ptr %9, align 4, !tbaa !9
  %523 = add i32 %522, -1
  store i32 %523, ptr %9, align 4, !tbaa !9
  %524 = load ptr, ptr %7, align 8, !tbaa !5
  %525 = getelementptr inbounds i8, ptr %524, i32 1
  store ptr %525, ptr %7, align 8, !tbaa !5
  %526 = load i8, ptr %524, align 1, !tbaa !24
  %527 = zext i8 %526 to i64
  %528 = load i32, ptr %12, align 4, !tbaa !9
  %529 = zext i32 %528 to i64
  %530 = shl i64 %527, %529
  %531 = load i64, ptr %11, align 8, !tbaa !21
  %532 = add i64 %531, %530
  store i64 %532, ptr %11, align 8, !tbaa !21
  %533 = load i32, ptr %12, align 4, !tbaa !9
  %534 = add i32 %533, 8
  store i32 %534, ptr %12, align 4, !tbaa !9
  br label %535

535:                                              ; preds = %521
  br label %536

536:                                              ; preds = %535
  br label %513, !llvm.loop !43

537:                                              ; preds = %513
  br label %538

538:                                              ; preds = %537
  br label %539

539:                                              ; preds = %538
  %540 = load i64, ptr %11, align 8, !tbaa !21
  %541 = trunc i64 %540 to i32
  %542 = load ptr, ptr %6, align 8, !tbaa !5
  %543 = getelementptr inbounds %struct.inflate_state, ptr %542, i32 0, i32 16
  store i32 %541, ptr %543, align 4, !tbaa !44
  %544 = load ptr, ptr %6, align 8, !tbaa !5
  %545 = getelementptr inbounds %struct.inflate_state, ptr %544, i32 0, i32 8
  %546 = load ptr, ptr %545, align 8, !tbaa !29
  %547 = icmp ne ptr %546, null
  br i1 %547, label %548, label %555

548:                                              ; preds = %539
  %549 = load i64, ptr %11, align 8, !tbaa !21
  %550 = trunc i64 %549 to i32
  %551 = load ptr, ptr %6, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.inflate_state, ptr %551, i32 0, i32 8
  %553 = load ptr, ptr %552, align 8, !tbaa !29
  %554 = getelementptr inbounds %struct.gz_header_s, ptr %553, i32 0, i32 5
  store i32 %550, ptr %554, align 8, !tbaa !45
  br label %555

555:                                              ; preds = %548, %539
  %556 = load ptr, ptr %6, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.inflate_state, ptr %556, i32 0, i32 4
  %558 = load i32, ptr %557, align 8, !tbaa !28
  %559 = and i32 %558, 512
  %560 = icmp ne i32 %559, 0
  br i1 %560, label %561, label %579

561:                                              ; preds = %555
  br label %562

562:                                              ; preds = %561
  %563 = load i64, ptr %11, align 8, !tbaa !21
  %564 = trunc i64 %563 to i8
  %565 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 0
  store i8 %564, ptr %565, align 1, !tbaa !24
  %566 = load i64, ptr %11, align 8, !tbaa !21
  %567 = lshr i64 %566, 8
  %568 = trunc i64 %567 to i8
  %569 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 1
  store i8 %568, ptr %569, align 1, !tbaa !24
  %570 = load ptr, ptr %6, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.inflate_state, ptr %570, i32 0, i32 6
  %572 = load i64, ptr %571, align 8, !tbaa !27
  %573 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 0
  %574 = call i64 @crc32(i64 noundef %572, ptr noundef %573, i32 noundef 2)
  %575 = load ptr, ptr %6, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.inflate_state, ptr %575, i32 0, i32 6
  store i64 %574, ptr %576, align 8, !tbaa !27
  br label %577

577:                                              ; preds = %562
  br label %578

578:                                              ; preds = %577
  br label %579

579:                                              ; preds = %578, %555
  br label %580

580:                                              ; preds = %579
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %581

581:                                              ; preds = %580
  br label %582

582:                                              ; preds = %581
  br label %594

583:                                              ; preds = %505
  %584 = load ptr, ptr %6, align 8, !tbaa !5
  %585 = getelementptr inbounds %struct.inflate_state, ptr %584, i32 0, i32 8
  %586 = load ptr, ptr %585, align 8, !tbaa !29
  %587 = icmp ne ptr %586, null
  br i1 %587, label %588, label %593

588:                                              ; preds = %583
  %589 = load ptr, ptr %6, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.inflate_state, ptr %589, i32 0, i32 8
  %591 = load ptr, ptr %590, align 8, !tbaa !29
  %592 = getelementptr inbounds %struct.gz_header_s, ptr %591, i32 0, i32 4
  store ptr null, ptr %592, align 8, !tbaa !46
  br label %593

593:                                              ; preds = %588, %583
  br label %594

594:                                              ; preds = %593, %582
  %595 = load ptr, ptr %6, align 8, !tbaa !5
  %596 = getelementptr inbounds %struct.inflate_state, ptr %595, i32 0, i32 0
  store i32 5, ptr %596, align 8, !tbaa !17
  br label %597

597:                                              ; preds = %594, %81
  %598 = load ptr, ptr %6, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.inflate_state, ptr %598, i32 0, i32 4
  %600 = load i32, ptr %599, align 8, !tbaa !28
  %601 = and i32 %600, 1024
  %602 = icmp ne i32 %601, 0
  br i1 %602, label %603, label %703

603:                                              ; preds = %597
  %604 = load ptr, ptr %6, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.inflate_state, ptr %604, i32 0, i32 16
  %606 = load i32, ptr %605, align 4, !tbaa !44
  store i32 %606, ptr %15, align 4, !tbaa !9
  %607 = load i32, ptr %15, align 4, !tbaa !9
  %608 = load i32, ptr %9, align 4, !tbaa !9
  %609 = icmp ugt i32 %607, %608
  br i1 %609, label %610, label %612

610:                                              ; preds = %603
  %611 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %611, ptr %15, align 4, !tbaa !9
  br label %612

612:                                              ; preds = %610, %603
  %613 = load i32, ptr %15, align 4, !tbaa !9
  %614 = icmp ne i32 %613, 0
  br i1 %614, label %615, label %696

615:                                              ; preds = %612
  %616 = load ptr, ptr %6, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.inflate_state, ptr %616, i32 0, i32 8
  %618 = load ptr, ptr %617, align 8, !tbaa !29
  %619 = icmp ne ptr %618, null
  br i1 %619, label %620, label %668

620:                                              ; preds = %615
  %621 = load ptr, ptr %6, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct.inflate_state, ptr %621, i32 0, i32 8
  %623 = load ptr, ptr %622, align 8, !tbaa !29
  %624 = getelementptr inbounds %struct.gz_header_s, ptr %623, i32 0, i32 4
  %625 = load ptr, ptr %624, align 8, !tbaa !46
  %626 = icmp ne ptr %625, null
  br i1 %626, label %627, label %668

627:                                              ; preds = %620
  %628 = load ptr, ptr %6, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.inflate_state, ptr %628, i32 0, i32 8
  %630 = load ptr, ptr %629, align 8, !tbaa !29
  %631 = getelementptr inbounds %struct.gz_header_s, ptr %630, i32 0, i32 5
  %632 = load i32, ptr %631, align 8, !tbaa !45
  %633 = load ptr, ptr %6, align 8, !tbaa !5
  %634 = getelementptr inbounds %struct.inflate_state, ptr %633, i32 0, i32 16
  %635 = load i32, ptr %634, align 4, !tbaa !44
  %636 = sub i32 %632, %635
  store i32 %636, ptr %19, align 4, !tbaa !9
  %637 = load ptr, ptr %6, align 8, !tbaa !5
  %638 = getelementptr inbounds %struct.inflate_state, ptr %637, i32 0, i32 8
  %639 = load ptr, ptr %638, align 8, !tbaa !29
  %640 = getelementptr inbounds %struct.gz_header_s, ptr %639, i32 0, i32 4
  %641 = load ptr, ptr %640, align 8, !tbaa !46
  %642 = load i32, ptr %19, align 4, !tbaa !9
  %643 = zext i32 %642 to i64
  %644 = getelementptr inbounds i8, ptr %641, i64 %643
  %645 = load ptr, ptr %7, align 8, !tbaa !5
  %646 = load i32, ptr %19, align 4, !tbaa !9
  %647 = load i32, ptr %15, align 4, !tbaa !9
  %648 = add i32 %646, %647
  %649 = load ptr, ptr %6, align 8, !tbaa !5
  %650 = getelementptr inbounds %struct.inflate_state, ptr %649, i32 0, i32 8
  %651 = load ptr, ptr %650, align 8, !tbaa !29
  %652 = getelementptr inbounds %struct.gz_header_s, ptr %651, i32 0, i32 6
  %653 = load i32, ptr %652, align 4, !tbaa !47
  %654 = icmp ugt i32 %648, %653
  br i1 %654, label %655, label %663

655:                                              ; preds = %627
  %656 = load ptr, ptr %6, align 8, !tbaa !5
  %657 = getelementptr inbounds %struct.inflate_state, ptr %656, i32 0, i32 8
  %658 = load ptr, ptr %657, align 8, !tbaa !29
  %659 = getelementptr inbounds %struct.gz_header_s, ptr %658, i32 0, i32 6
  %660 = load i32, ptr %659, align 4, !tbaa !47
  %661 = load i32, ptr %19, align 4, !tbaa !9
  %662 = sub i32 %660, %661
  br label %665

663:                                              ; preds = %627
  %664 = load i32, ptr %15, align 4, !tbaa !9
  br label %665

665:                                              ; preds = %663, %655
  %666 = phi i32 [ %662, %655 ], [ %664, %663 ]
  %667 = zext i32 %666 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %644, ptr align 1 %645, i64 %667, i1 false)
  br label %668

668:                                              ; preds = %665, %620, %615
  %669 = load ptr, ptr %6, align 8, !tbaa !5
  %670 = getelementptr inbounds %struct.inflate_state, ptr %669, i32 0, i32 4
  %671 = load i32, ptr %670, align 8, !tbaa !28
  %672 = and i32 %671, 512
  %673 = icmp ne i32 %672, 0
  br i1 %673, label %674, label %683

674:                                              ; preds = %668
  %675 = load ptr, ptr %6, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.inflate_state, ptr %675, i32 0, i32 6
  %677 = load i64, ptr %676, align 8, !tbaa !27
  %678 = load ptr, ptr %7, align 8, !tbaa !5
  %679 = load i32, ptr %15, align 4, !tbaa !9
  %680 = call i64 @crc32(i64 noundef %677, ptr noundef %678, i32 noundef %679)
  %681 = load ptr, ptr %6, align 8, !tbaa !5
  %682 = getelementptr inbounds %struct.inflate_state, ptr %681, i32 0, i32 6
  store i64 %680, ptr %682, align 8, !tbaa !27
  br label %683

683:                                              ; preds = %674, %668
  %684 = load i32, ptr %15, align 4, !tbaa !9
  %685 = load i32, ptr %9, align 4, !tbaa !9
  %686 = sub i32 %685, %684
  store i32 %686, ptr %9, align 4, !tbaa !9
  %687 = load i32, ptr %15, align 4, !tbaa !9
  %688 = load ptr, ptr %7, align 8, !tbaa !5
  %689 = zext i32 %687 to i64
  %690 = getelementptr inbounds i8, ptr %688, i64 %689
  store ptr %690, ptr %7, align 8, !tbaa !5
  %691 = load i32, ptr %15, align 4, !tbaa !9
  %692 = load ptr, ptr %6, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.inflate_state, ptr %692, i32 0, i32 16
  %694 = load i32, ptr %693, align 4, !tbaa !44
  %695 = sub i32 %694, %691
  store i32 %695, ptr %693, align 4, !tbaa !44
  br label %696

696:                                              ; preds = %683, %612
  %697 = load ptr, ptr %6, align 8, !tbaa !5
  %698 = getelementptr inbounds %struct.inflate_state, ptr %697, i32 0, i32 16
  %699 = load i32, ptr %698, align 4, !tbaa !44
  %700 = icmp ne i32 %699, 0
  br i1 %700, label %701, label %702

701:                                              ; preds = %696
  br label %2877

702:                                              ; preds = %696
  br label %703

703:                                              ; preds = %702, %597
  %704 = load ptr, ptr %6, align 8, !tbaa !5
  %705 = getelementptr inbounds %struct.inflate_state, ptr %704, i32 0, i32 16
  store i32 0, ptr %705, align 4, !tbaa !44
  %706 = load ptr, ptr %6, align 8, !tbaa !5
  %707 = getelementptr inbounds %struct.inflate_state, ptr %706, i32 0, i32 0
  store i32 6, ptr %707, align 8, !tbaa !17
  br label %708

708:                                              ; preds = %703, %81
  %709 = load ptr, ptr %6, align 8, !tbaa !5
  %710 = getelementptr inbounds %struct.inflate_state, ptr %709, i32 0, i32 4
  %711 = load i32, ptr %710, align 8, !tbaa !28
  %712 = and i32 %711, 2048
  %713 = icmp ne i32 %712, 0
  br i1 %713, label %714, label %799

714:                                              ; preds = %708
  %715 = load i32, ptr %9, align 4, !tbaa !9
  %716 = icmp eq i32 %715, 0
  br i1 %716, label %717, label %718

717:                                              ; preds = %714
  br label %2877

718:                                              ; preds = %714
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %719

719:                                              ; preds = %770, %718
  %720 = load ptr, ptr %7, align 8, !tbaa !5
  %721 = load i32, ptr %15, align 4, !tbaa !9
  %722 = add i32 %721, 1
  store i32 %722, ptr %15, align 4, !tbaa !9
  %723 = zext i32 %721 to i64
  %724 = getelementptr inbounds i8, ptr %720, i64 %723
  %725 = load i8, ptr %724, align 1, !tbaa !24
  %726 = zext i8 %725 to i32
  store i32 %726, ptr %19, align 4, !tbaa !9
  %727 = load ptr, ptr %6, align 8, !tbaa !5
  %728 = getelementptr inbounds %struct.inflate_state, ptr %727, i32 0, i32 8
  %729 = load ptr, ptr %728, align 8, !tbaa !29
  %730 = icmp ne ptr %729, null
  br i1 %730, label %731, label %762

731:                                              ; preds = %719
  %732 = load ptr, ptr %6, align 8, !tbaa !5
  %733 = getelementptr inbounds %struct.inflate_state, ptr %732, i32 0, i32 8
  %734 = load ptr, ptr %733, align 8, !tbaa !29
  %735 = getelementptr inbounds %struct.gz_header_s, ptr %734, i32 0, i32 7
  %736 = load ptr, ptr %735, align 8, !tbaa !48
  %737 = icmp ne ptr %736, null
  br i1 %737, label %738, label %762

738:                                              ; preds = %731
  %739 = load ptr, ptr %6, align 8, !tbaa !5
  %740 = getelementptr inbounds %struct.inflate_state, ptr %739, i32 0, i32 16
  %741 = load i32, ptr %740, align 4, !tbaa !44
  %742 = load ptr, ptr %6, align 8, !tbaa !5
  %743 = getelementptr inbounds %struct.inflate_state, ptr %742, i32 0, i32 8
  %744 = load ptr, ptr %743, align 8, !tbaa !29
  %745 = getelementptr inbounds %struct.gz_header_s, ptr %744, i32 0, i32 8
  %746 = load i32, ptr %745, align 8, !tbaa !49
  %747 = icmp ult i32 %741, %746
  br i1 %747, label %748, label %762

748:                                              ; preds = %738
  %749 = load i32, ptr %19, align 4, !tbaa !9
  %750 = trunc i32 %749 to i8
  %751 = load ptr, ptr %6, align 8, !tbaa !5
  %752 = getelementptr inbounds %struct.inflate_state, ptr %751, i32 0, i32 8
  %753 = load ptr, ptr %752, align 8, !tbaa !29
  %754 = getelementptr inbounds %struct.gz_header_s, ptr %753, i32 0, i32 7
  %755 = load ptr, ptr %754, align 8, !tbaa !48
  %756 = load ptr, ptr %6, align 8, !tbaa !5
  %757 = getelementptr inbounds %struct.inflate_state, ptr %756, i32 0, i32 16
  %758 = load i32, ptr %757, align 4, !tbaa !44
  %759 = add i32 %758, 1
  store i32 %759, ptr %757, align 4, !tbaa !44
  %760 = zext i32 %758 to i64
  %761 = getelementptr inbounds i8, ptr %755, i64 %760
  store i8 %750, ptr %761, align 1, !tbaa !24
  br label %762

762:                                              ; preds = %748, %738, %731, %719
  br label %763

763:                                              ; preds = %762
  %764 = load i32, ptr %19, align 4, !tbaa !9
  %765 = icmp ne i32 %764, 0
  br i1 %765, label %766, label %770

766:                                              ; preds = %763
  %767 = load i32, ptr %15, align 4, !tbaa !9
  %768 = load i32, ptr %9, align 4, !tbaa !9
  %769 = icmp ult i32 %767, %768
  br label %770

770:                                              ; preds = %766, %763
  %771 = phi i1 [ false, %763 ], [ %769, %766 ]
  br i1 %771, label %719, label %772, !llvm.loop !50

772:                                              ; preds = %770
  %773 = load ptr, ptr %6, align 8, !tbaa !5
  %774 = getelementptr inbounds %struct.inflate_state, ptr %773, i32 0, i32 4
  %775 = load i32, ptr %774, align 8, !tbaa !28
  %776 = and i32 %775, 512
  %777 = icmp ne i32 %776, 0
  br i1 %777, label %778, label %787

778:                                              ; preds = %772
  %779 = load ptr, ptr %6, align 8, !tbaa !5
  %780 = getelementptr inbounds %struct.inflate_state, ptr %779, i32 0, i32 6
  %781 = load i64, ptr %780, align 8, !tbaa !27
  %782 = load ptr, ptr %7, align 8, !tbaa !5
  %783 = load i32, ptr %15, align 4, !tbaa !9
  %784 = call i64 @crc32(i64 noundef %781, ptr noundef %782, i32 noundef %783)
  %785 = load ptr, ptr %6, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.inflate_state, ptr %785, i32 0, i32 6
  store i64 %784, ptr %786, align 8, !tbaa !27
  br label %787

787:                                              ; preds = %778, %772
  %788 = load i32, ptr %15, align 4, !tbaa !9
  %789 = load i32, ptr %9, align 4, !tbaa !9
  %790 = sub i32 %789, %788
  store i32 %790, ptr %9, align 4, !tbaa !9
  %791 = load i32, ptr %15, align 4, !tbaa !9
  %792 = load ptr, ptr %7, align 8, !tbaa !5
  %793 = zext i32 %791 to i64
  %794 = getelementptr inbounds i8, ptr %792, i64 %793
  store ptr %794, ptr %7, align 8, !tbaa !5
  %795 = load i32, ptr %19, align 4, !tbaa !9
  %796 = icmp ne i32 %795, 0
  br i1 %796, label %797, label %798

797:                                              ; preds = %787
  br label %2877

798:                                              ; preds = %787
  br label %810

799:                                              ; preds = %708
  %800 = load ptr, ptr %6, align 8, !tbaa !5
  %801 = getelementptr inbounds %struct.inflate_state, ptr %800, i32 0, i32 8
  %802 = load ptr, ptr %801, align 8, !tbaa !29
  %803 = icmp ne ptr %802, null
  br i1 %803, label %804, label %809

804:                                              ; preds = %799
  %805 = load ptr, ptr %6, align 8, !tbaa !5
  %806 = getelementptr inbounds %struct.inflate_state, ptr %805, i32 0, i32 8
  %807 = load ptr, ptr %806, align 8, !tbaa !29
  %808 = getelementptr inbounds %struct.gz_header_s, ptr %807, i32 0, i32 7
  store ptr null, ptr %808, align 8, !tbaa !48
  br label %809

809:                                              ; preds = %804, %799
  br label %810

810:                                              ; preds = %809, %798
  %811 = load ptr, ptr %6, align 8, !tbaa !5
  %812 = getelementptr inbounds %struct.inflate_state, ptr %811, i32 0, i32 16
  store i32 0, ptr %812, align 4, !tbaa !44
  %813 = load ptr, ptr %6, align 8, !tbaa !5
  %814 = getelementptr inbounds %struct.inflate_state, ptr %813, i32 0, i32 0
  store i32 7, ptr %814, align 8, !tbaa !17
  br label %815

815:                                              ; preds = %810, %81
  %816 = load ptr, ptr %6, align 8, !tbaa !5
  %817 = getelementptr inbounds %struct.inflate_state, ptr %816, i32 0, i32 4
  %818 = load i32, ptr %817, align 8, !tbaa !28
  %819 = and i32 %818, 4096
  %820 = icmp ne i32 %819, 0
  br i1 %820, label %821, label %906

821:                                              ; preds = %815
  %822 = load i32, ptr %9, align 4, !tbaa !9
  %823 = icmp eq i32 %822, 0
  br i1 %823, label %824, label %825

824:                                              ; preds = %821
  br label %2877

825:                                              ; preds = %821
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %826

826:                                              ; preds = %877, %825
  %827 = load ptr, ptr %7, align 8, !tbaa !5
  %828 = load i32, ptr %15, align 4, !tbaa !9
  %829 = add i32 %828, 1
  store i32 %829, ptr %15, align 4, !tbaa !9
  %830 = zext i32 %828 to i64
  %831 = getelementptr inbounds i8, ptr %827, i64 %830
  %832 = load i8, ptr %831, align 1, !tbaa !24
  %833 = zext i8 %832 to i32
  store i32 %833, ptr %19, align 4, !tbaa !9
  %834 = load ptr, ptr %6, align 8, !tbaa !5
  %835 = getelementptr inbounds %struct.inflate_state, ptr %834, i32 0, i32 8
  %836 = load ptr, ptr %835, align 8, !tbaa !29
  %837 = icmp ne ptr %836, null
  br i1 %837, label %838, label %869

838:                                              ; preds = %826
  %839 = load ptr, ptr %6, align 8, !tbaa !5
  %840 = getelementptr inbounds %struct.inflate_state, ptr %839, i32 0, i32 8
  %841 = load ptr, ptr %840, align 8, !tbaa !29
  %842 = getelementptr inbounds %struct.gz_header_s, ptr %841, i32 0, i32 9
  %843 = load ptr, ptr %842, align 8, !tbaa !51
  %844 = icmp ne ptr %843, null
  br i1 %844, label %845, label %869

845:                                              ; preds = %838
  %846 = load ptr, ptr %6, align 8, !tbaa !5
  %847 = getelementptr inbounds %struct.inflate_state, ptr %846, i32 0, i32 16
  %848 = load i32, ptr %847, align 4, !tbaa !44
  %849 = load ptr, ptr %6, align 8, !tbaa !5
  %850 = getelementptr inbounds %struct.inflate_state, ptr %849, i32 0, i32 8
  %851 = load ptr, ptr %850, align 8, !tbaa !29
  %852 = getelementptr inbounds %struct.gz_header_s, ptr %851, i32 0, i32 10
  %853 = load i32, ptr %852, align 8, !tbaa !52
  %854 = icmp ult i32 %848, %853
  br i1 %854, label %855, label %869

855:                                              ; preds = %845
  %856 = load i32, ptr %19, align 4, !tbaa !9
  %857 = trunc i32 %856 to i8
  %858 = load ptr, ptr %6, align 8, !tbaa !5
  %859 = getelementptr inbounds %struct.inflate_state, ptr %858, i32 0, i32 8
  %860 = load ptr, ptr %859, align 8, !tbaa !29
  %861 = getelementptr inbounds %struct.gz_header_s, ptr %860, i32 0, i32 9
  %862 = load ptr, ptr %861, align 8, !tbaa !51
  %863 = load ptr, ptr %6, align 8, !tbaa !5
  %864 = getelementptr inbounds %struct.inflate_state, ptr %863, i32 0, i32 16
  %865 = load i32, ptr %864, align 4, !tbaa !44
  %866 = add i32 %865, 1
  store i32 %866, ptr %864, align 4, !tbaa !44
  %867 = zext i32 %865 to i64
  %868 = getelementptr inbounds i8, ptr %862, i64 %867
  store i8 %857, ptr %868, align 1, !tbaa !24
  br label %869

869:                                              ; preds = %855, %845, %838, %826
  br label %870

870:                                              ; preds = %869
  %871 = load i32, ptr %19, align 4, !tbaa !9
  %872 = icmp ne i32 %871, 0
  br i1 %872, label %873, label %877

873:                                              ; preds = %870
  %874 = load i32, ptr %15, align 4, !tbaa !9
  %875 = load i32, ptr %9, align 4, !tbaa !9
  %876 = icmp ult i32 %874, %875
  br label %877

877:                                              ; preds = %873, %870
  %878 = phi i1 [ false, %870 ], [ %876, %873 ]
  br i1 %878, label %826, label %879, !llvm.loop !53

879:                                              ; preds = %877
  %880 = load ptr, ptr %6, align 8, !tbaa !5
  %881 = getelementptr inbounds %struct.inflate_state, ptr %880, i32 0, i32 4
  %882 = load i32, ptr %881, align 8, !tbaa !28
  %883 = and i32 %882, 512
  %884 = icmp ne i32 %883, 0
  br i1 %884, label %885, label %894

885:                                              ; preds = %879
  %886 = load ptr, ptr %6, align 8, !tbaa !5
  %887 = getelementptr inbounds %struct.inflate_state, ptr %886, i32 0, i32 6
  %888 = load i64, ptr %887, align 8, !tbaa !27
  %889 = load ptr, ptr %7, align 8, !tbaa !5
  %890 = load i32, ptr %15, align 4, !tbaa !9
  %891 = call i64 @crc32(i64 noundef %888, ptr noundef %889, i32 noundef %890)
  %892 = load ptr, ptr %6, align 8, !tbaa !5
  %893 = getelementptr inbounds %struct.inflate_state, ptr %892, i32 0, i32 6
  store i64 %891, ptr %893, align 8, !tbaa !27
  br label %894

894:                                              ; preds = %885, %879
  %895 = load i32, ptr %15, align 4, !tbaa !9
  %896 = load i32, ptr %9, align 4, !tbaa !9
  %897 = sub i32 %896, %895
  store i32 %897, ptr %9, align 4, !tbaa !9
  %898 = load i32, ptr %15, align 4, !tbaa !9
  %899 = load ptr, ptr %7, align 8, !tbaa !5
  %900 = zext i32 %898 to i64
  %901 = getelementptr inbounds i8, ptr %899, i64 %900
  store ptr %901, ptr %7, align 8, !tbaa !5
  %902 = load i32, ptr %19, align 4, !tbaa !9
  %903 = icmp ne i32 %902, 0
  br i1 %903, label %904, label %905

904:                                              ; preds = %894
  br label %2877

905:                                              ; preds = %894
  br label %917

906:                                              ; preds = %815
  %907 = load ptr, ptr %6, align 8, !tbaa !5
  %908 = getelementptr inbounds %struct.inflate_state, ptr %907, i32 0, i32 8
  %909 = load ptr, ptr %908, align 8, !tbaa !29
  %910 = icmp ne ptr %909, null
  br i1 %910, label %911, label %916

911:                                              ; preds = %906
  %912 = load ptr, ptr %6, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.inflate_state, ptr %912, i32 0, i32 8
  %914 = load ptr, ptr %913, align 8, !tbaa !29
  %915 = getelementptr inbounds %struct.gz_header_s, ptr %914, i32 0, i32 9
  store ptr null, ptr %915, align 8, !tbaa !51
  br label %916

916:                                              ; preds = %911, %906
  br label %917

917:                                              ; preds = %916, %905
  %918 = load ptr, ptr %6, align 8, !tbaa !5
  %919 = getelementptr inbounds %struct.inflate_state, ptr %918, i32 0, i32 0
  store i32 8, ptr %919, align 8, !tbaa !17
  br label %920

920:                                              ; preds = %917, %81
  %921 = load ptr, ptr %6, align 8, !tbaa !5
  %922 = getelementptr inbounds %struct.inflate_state, ptr %921, i32 0, i32 4
  %923 = load i32, ptr %922, align 8, !tbaa !28
  %924 = and i32 %923, 512
  %925 = icmp ne i32 %924, 0
  br i1 %925, label %926, label %970

926:                                              ; preds = %920
  br label %927

927:                                              ; preds = %926
  br label %928

928:                                              ; preds = %951, %927
  %929 = load i32, ptr %12, align 4, !tbaa !9
  %930 = icmp ult i32 %929, 16
  br i1 %930, label %931, label %952

931:                                              ; preds = %928
  br label %932

932:                                              ; preds = %931
  %933 = load i32, ptr %9, align 4, !tbaa !9
  %934 = icmp eq i32 %933, 0
  br i1 %934, label %935, label %936

935:                                              ; preds = %932
  br label %2877

936:                                              ; preds = %932
  %937 = load i32, ptr %9, align 4, !tbaa !9
  %938 = add i32 %937, -1
  store i32 %938, ptr %9, align 4, !tbaa !9
  %939 = load ptr, ptr %7, align 8, !tbaa !5
  %940 = getelementptr inbounds i8, ptr %939, i32 1
  store ptr %940, ptr %7, align 8, !tbaa !5
  %941 = load i8, ptr %939, align 1, !tbaa !24
  %942 = zext i8 %941 to i64
  %943 = load i32, ptr %12, align 4, !tbaa !9
  %944 = zext i32 %943 to i64
  %945 = shl i64 %942, %944
  %946 = load i64, ptr %11, align 8, !tbaa !21
  %947 = add i64 %946, %945
  store i64 %947, ptr %11, align 8, !tbaa !21
  %948 = load i32, ptr %12, align 4, !tbaa !9
  %949 = add i32 %948, 8
  store i32 %949, ptr %12, align 4, !tbaa !9
  br label %950

950:                                              ; preds = %936
  br label %951

951:                                              ; preds = %950
  br label %928, !llvm.loop !54

952:                                              ; preds = %928
  br label %953

953:                                              ; preds = %952
  br label %954

954:                                              ; preds = %953
  %955 = load i64, ptr %11, align 8, !tbaa !21
  %956 = load ptr, ptr %6, align 8, !tbaa !5
  %957 = getelementptr inbounds %struct.inflate_state, ptr %956, i32 0, i32 6
  %958 = load i64, ptr %957, align 8, !tbaa !27
  %959 = and i64 %958, 65535
  %960 = icmp ne i64 %955, %959
  br i1 %960, label %961, label %966

961:                                              ; preds = %954
  %962 = load ptr, ptr %4, align 8, !tbaa !5
  %963 = getelementptr inbounds %struct.z_stream_s, ptr %962, i32 0, i32 6
  store ptr @.str.5, ptr %963, align 8, !tbaa !32
  %964 = load ptr, ptr %6, align 8, !tbaa !5
  %965 = getelementptr inbounds %struct.inflate_state, ptr %964, i32 0, i32 0
  store i32 29, ptr %965, align 8, !tbaa !17
  br label %2876

966:                                              ; preds = %954
  br label %967

967:                                              ; preds = %966
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %968

968:                                              ; preds = %967
  br label %969

969:                                              ; preds = %968
  br label %970

970:                                              ; preds = %969, %920
  %971 = load ptr, ptr %6, align 8, !tbaa !5
  %972 = getelementptr inbounds %struct.inflate_state, ptr %971, i32 0, i32 8
  %973 = load ptr, ptr %972, align 8, !tbaa !29
  %974 = icmp ne ptr %973, null
  br i1 %974, label %975, label %989

975:                                              ; preds = %970
  %976 = load ptr, ptr %6, align 8, !tbaa !5
  %977 = getelementptr inbounds %struct.inflate_state, ptr %976, i32 0, i32 4
  %978 = load i32, ptr %977, align 8, !tbaa !28
  %979 = ashr i32 %978, 9
  %980 = and i32 %979, 1
  %981 = load ptr, ptr %6, align 8, !tbaa !5
  %982 = getelementptr inbounds %struct.inflate_state, ptr %981, i32 0, i32 8
  %983 = load ptr, ptr %982, align 8, !tbaa !29
  %984 = getelementptr inbounds %struct.gz_header_s, ptr %983, i32 0, i32 11
  store i32 %980, ptr %984, align 4, !tbaa !55
  %985 = load ptr, ptr %6, align 8, !tbaa !5
  %986 = getelementptr inbounds %struct.inflate_state, ptr %985, i32 0, i32 8
  %987 = load ptr, ptr %986, align 8, !tbaa !29
  %988 = getelementptr inbounds %struct.gz_header_s, ptr %987, i32 0, i32 12
  store i32 1, ptr %988, align 8, !tbaa !30
  br label %989

989:                                              ; preds = %975, %970
  %990 = call i64 @crc32(i64 noundef 0, ptr noundef null, i32 noundef 0)
  %991 = load ptr, ptr %6, align 8, !tbaa !5
  %992 = getelementptr inbounds %struct.inflate_state, ptr %991, i32 0, i32 6
  store i64 %990, ptr %992, align 8, !tbaa !27
  %993 = load ptr, ptr %4, align 8, !tbaa !5
  %994 = getelementptr inbounds %struct.z_stream_s, ptr %993, i32 0, i32 12
  store i64 %990, ptr %994, align 8, !tbaa !35
  %995 = load ptr, ptr %6, align 8, !tbaa !5
  %996 = getelementptr inbounds %struct.inflate_state, ptr %995, i32 0, i32 0
  store i32 11, ptr %996, align 8, !tbaa !17
  br label %2876

997:                                              ; preds = %81
  br label %998

998:                                              ; preds = %997
  br label %999

999:                                              ; preds = %1022, %998
  %1000 = load i32, ptr %12, align 4, !tbaa !9
  %1001 = icmp ult i32 %1000, 32
  br i1 %1001, label %1002, label %1023

1002:                                             ; preds = %999
  br label %1003

1003:                                             ; preds = %1002
  %1004 = load i32, ptr %9, align 4, !tbaa !9
  %1005 = icmp eq i32 %1004, 0
  br i1 %1005, label %1006, label %1007

1006:                                             ; preds = %1003
  br label %2877

1007:                                             ; preds = %1003
  %1008 = load i32, ptr %9, align 4, !tbaa !9
  %1009 = add i32 %1008, -1
  store i32 %1009, ptr %9, align 4, !tbaa !9
  %1010 = load ptr, ptr %7, align 8, !tbaa !5
  %1011 = getelementptr inbounds i8, ptr %1010, i32 1
  store ptr %1011, ptr %7, align 8, !tbaa !5
  %1012 = load i8, ptr %1010, align 1, !tbaa !24
  %1013 = zext i8 %1012 to i64
  %1014 = load i32, ptr %12, align 4, !tbaa !9
  %1015 = zext i32 %1014 to i64
  %1016 = shl i64 %1013, %1015
  %1017 = load i64, ptr %11, align 8, !tbaa !21
  %1018 = add i64 %1017, %1016
  store i64 %1018, ptr %11, align 8, !tbaa !21
  %1019 = load i32, ptr %12, align 4, !tbaa !9
  %1020 = add i32 %1019, 8
  store i32 %1020, ptr %12, align 4, !tbaa !9
  br label %1021

1021:                                             ; preds = %1007
  br label %1022

1022:                                             ; preds = %1021
  br label %999, !llvm.loop !56

1023:                                             ; preds = %999
  br label %1024

1024:                                             ; preds = %1023
  br label %1025

1025:                                             ; preds = %1024
  %1026 = load i64, ptr %11, align 8, !tbaa !21
  %1027 = lshr i64 %1026, 24
  %1028 = and i64 %1027, 255
  %1029 = load i64, ptr %11, align 8, !tbaa !21
  %1030 = lshr i64 %1029, 8
  %1031 = and i64 %1030, 65280
  %1032 = add i64 %1028, %1031
  %1033 = load i64, ptr %11, align 8, !tbaa !21
  %1034 = and i64 %1033, 65280
  %1035 = shl i64 %1034, 8
  %1036 = add i64 %1032, %1035
  %1037 = load i64, ptr %11, align 8, !tbaa !21
  %1038 = and i64 %1037, 255
  %1039 = shl i64 %1038, 24
  %1040 = add i64 %1036, %1039
  %1041 = load ptr, ptr %6, align 8, !tbaa !5
  %1042 = getelementptr inbounds %struct.inflate_state, ptr %1041, i32 0, i32 6
  store i64 %1040, ptr %1042, align 8, !tbaa !27
  %1043 = load ptr, ptr %4, align 8, !tbaa !5
  %1044 = getelementptr inbounds %struct.z_stream_s, ptr %1043, i32 0, i32 12
  store i64 %1040, ptr %1044, align 8, !tbaa !35
  br label %1045

1045:                                             ; preds = %1025
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %1046

1046:                                             ; preds = %1045
  br label %1047

1047:                                             ; preds = %1046
  %1048 = load ptr, ptr %6, align 8, !tbaa !5
  %1049 = getelementptr inbounds %struct.inflate_state, ptr %1048, i32 0, i32 0
  store i32 10, ptr %1049, align 8, !tbaa !17
  br label %1050

1050:                                             ; preds = %1047, %81
  %1051 = load ptr, ptr %6, align 8, !tbaa !5
  %1052 = getelementptr inbounds %struct.inflate_state, ptr %1051, i32 0, i32 3
  %1053 = load i32, ptr %1052, align 4, !tbaa !57
  %1054 = icmp eq i32 %1053, 0
  br i1 %1054, label %1055, label %1077

1055:                                             ; preds = %1050
  br label %1056

1056:                                             ; preds = %1055
  %1057 = load ptr, ptr %8, align 8, !tbaa !5
  %1058 = load ptr, ptr %4, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.z_stream_s, ptr %1058, i32 0, i32 3
  store ptr %1057, ptr %1059, align 8, !tbaa !14
  %1060 = load i32, ptr %10, align 4, !tbaa !9
  %1061 = load ptr, ptr %4, align 8, !tbaa !5
  %1062 = getelementptr inbounds %struct.z_stream_s, ptr %1061, i32 0, i32 4
  store i32 %1060, ptr %1062, align 8, !tbaa !19
  %1063 = load ptr, ptr %7, align 8, !tbaa !5
  %1064 = load ptr, ptr %4, align 8, !tbaa !5
  %1065 = getelementptr inbounds %struct.z_stream_s, ptr %1064, i32 0, i32 0
  store ptr %1063, ptr %1065, align 8, !tbaa !15
  %1066 = load i32, ptr %9, align 4, !tbaa !9
  %1067 = load ptr, ptr %4, align 8, !tbaa !5
  %1068 = getelementptr inbounds %struct.z_stream_s, ptr %1067, i32 0, i32 1
  store i32 %1066, ptr %1068, align 8, !tbaa !16
  %1069 = load i64, ptr %11, align 8, !tbaa !21
  %1070 = load ptr, ptr %6, align 8, !tbaa !5
  %1071 = getelementptr inbounds %struct.inflate_state, ptr %1070, i32 0, i32 14
  store i64 %1069, ptr %1071, align 8, !tbaa !20
  %1072 = load i32, ptr %12, align 4, !tbaa !9
  %1073 = load ptr, ptr %6, align 8, !tbaa !5
  %1074 = getelementptr inbounds %struct.inflate_state, ptr %1073, i32 0, i32 15
  store i32 %1072, ptr %1074, align 8, !tbaa !22
  br label %1075

1075:                                             ; preds = %1056
  br label %1076

1076:                                             ; preds = %1075
  store i32 2, ptr %3, align 4
  store i32 1, ptr %22, align 4
  br label %3044

1077:                                             ; preds = %1050
  %1078 = call i64 @adler32(i64 noundef 0, ptr noundef null, i32 noundef 0)
  %1079 = load ptr, ptr %6, align 8, !tbaa !5
  %1080 = getelementptr inbounds %struct.inflate_state, ptr %1079, i32 0, i32 6
  store i64 %1078, ptr %1080, align 8, !tbaa !27
  %1081 = load ptr, ptr %4, align 8, !tbaa !5
  %1082 = getelementptr inbounds %struct.z_stream_s, ptr %1081, i32 0, i32 12
  store i64 %1078, ptr %1082, align 8, !tbaa !35
  %1083 = load ptr, ptr %6, align 8, !tbaa !5
  %1084 = getelementptr inbounds %struct.inflate_state, ptr %1083, i32 0, i32 0
  store i32 11, ptr %1084, align 8, !tbaa !17
  br label %1085

1085:                                             ; preds = %1077, %81
  %1086 = load i32, ptr %5, align 4, !tbaa !9
  %1087 = icmp eq i32 %1086, 5
  br i1 %1087, label %1091, label %1088

1088:                                             ; preds = %1085
  %1089 = load i32, ptr %5, align 4, !tbaa !9
  %1090 = icmp eq i32 %1089, 6
  br i1 %1090, label %1091, label %1092

1091:                                             ; preds = %1088, %1085
  br label %2877

1092:                                             ; preds = %1088
  br label %1093

1093:                                             ; preds = %1092, %81
  %1094 = load ptr, ptr %6, align 8, !tbaa !5
  %1095 = getelementptr inbounds %struct.inflate_state, ptr %1094, i32 0, i32 1
  %1096 = load i32, ptr %1095, align 4, !tbaa !58
  %1097 = icmp ne i32 %1096, 0
  br i1 %1097, label %1098, label %1113

1098:                                             ; preds = %1093
  br label %1099

1099:                                             ; preds = %1098
  %1100 = load i32, ptr %12, align 4, !tbaa !9
  %1101 = and i32 %1100, 7
  %1102 = load i64, ptr %11, align 8, !tbaa !21
  %1103 = zext i32 %1101 to i64
  %1104 = lshr i64 %1102, %1103
  store i64 %1104, ptr %11, align 8, !tbaa !21
  %1105 = load i32, ptr %12, align 4, !tbaa !9
  %1106 = and i32 %1105, 7
  %1107 = load i32, ptr %12, align 4, !tbaa !9
  %1108 = sub i32 %1107, %1106
  store i32 %1108, ptr %12, align 4, !tbaa !9
  br label %1109

1109:                                             ; preds = %1099
  br label %1110

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

1113:                                             ; preds = %1093
  br label %1114

1114:                                             ; preds = %1113
  br label %1115

1115:                                             ; preds = %1138, %1114
  %1116 = load i32, ptr %12, align 4, !tbaa !9
  %1117 = icmp ult i32 %1116, 3
  br i1 %1117, label %1118, label %1139

1118:                                             ; preds = %1115
  br label %1119

1119:                                             ; preds = %1118
  %1120 = load i32, ptr %9, align 4, !tbaa !9
  %1121 = icmp eq i32 %1120, 0
  br i1 %1121, label %1122, label %1123

1122:                                             ; preds = %1119
  br label %2877

1123:                                             ; preds = %1119
  %1124 = load i32, ptr %9, align 4, !tbaa !9
  %1125 = add i32 %1124, -1
  store i32 %1125, ptr %9, align 4, !tbaa !9
  %1126 = load ptr, ptr %7, align 8, !tbaa !5
  %1127 = getelementptr inbounds i8, ptr %1126, i32 1
  store ptr %1127, ptr %7, align 8, !tbaa !5
  %1128 = load i8, ptr %1126, align 1, !tbaa !24
  %1129 = zext i8 %1128 to i64
  %1130 = load i32, ptr %12, align 4, !tbaa !9
  %1131 = zext i32 %1130 to i64
  %1132 = shl i64 %1129, %1131
  %1133 = load i64, ptr %11, align 8, !tbaa !21
  %1134 = add i64 %1133, %1132
  store i64 %1134, ptr %11, align 8, !tbaa !21
  %1135 = load i32, ptr %12, align 4, !tbaa !9
  %1136 = add i32 %1135, 8
  store i32 %1136, ptr %12, align 4, !tbaa !9
  br label %1137

1137:                                             ; preds = %1123
  br label %1138

1138:                                             ; preds = %1137
  br label %1115, !llvm.loop !59

1139:                                             ; preds = %1115
  br label %1140

1140:                                             ; preds = %1139
  br label %1141

1141:                                             ; preds = %1140
  %1142 = load i64, ptr %11, align 8, !tbaa !21
  %1143 = trunc i64 %1142 to i32
  %1144 = and i32 %1143, 1
  %1145 = load ptr, ptr %6, align 8, !tbaa !5
  %1146 = getelementptr inbounds %struct.inflate_state, ptr %1145, i32 0, i32 1
  store i32 %1144, ptr %1146, align 4, !tbaa !58
  br label %1147

1147:                                             ; preds = %1141
  %1148 = load i64, ptr %11, align 8, !tbaa !21
  %1149 = lshr i64 %1148, 1
  store i64 %1149, ptr %11, align 8, !tbaa !21
  %1150 = load i32, ptr %12, align 4, !tbaa !9
  %1151 = sub i32 %1150, 1
  store i32 %1151, ptr %12, align 4, !tbaa !9
  br label %1152

1152:                                             ; preds = %1147
  br label %1153

1153:                                             ; preds = %1152
  %1154 = load i64, ptr %11, align 8, !tbaa !21
  %1155 = trunc i64 %1154 to i32
  %1156 = and i32 %1155, 3
  switch i32 %1156, label %1183 [
    i32 0, label %1157
    i32 1, label %1160
    i32 2, label %1175
    i32 3, label %1178
  ]

1157:                                             ; preds = %1153
  %1158 = load ptr, ptr %6, align 8, !tbaa !5
  %1159 = getelementptr inbounds %struct.inflate_state, ptr %1158, i32 0, i32 0
  store i32 13, ptr %1159, align 8, !tbaa !17
  br label %1183

1160:                                             ; preds = %1153
  %1161 = load ptr, ptr %6, align 8, !tbaa !5
  call void @fixedtables(ptr noundef %1161)
  %1162 = load ptr, ptr %6, align 8, !tbaa !5
  %1163 = getelementptr inbounds %struct.inflate_state, ptr %1162, i32 0, i32 0
  store i32 19, ptr %1163, align 8, !tbaa !17
  %1164 = load i32, ptr %5, align 4, !tbaa !9
  %1165 = icmp eq i32 %1164, 6
  br i1 %1165, label %1166, label %1174

1166:                                             ; preds = %1160
  br label %1167

1167:                                             ; preds = %1166
  %1168 = load i64, ptr %11, align 8, !tbaa !21
  %1169 = lshr i64 %1168, 2
  store i64 %1169, ptr %11, align 8, !tbaa !21
  %1170 = load i32, ptr %12, align 4, !tbaa !9
  %1171 = sub i32 %1170, 2
  store i32 %1171, ptr %12, align 4, !tbaa !9
  br label %1172

1172:                                             ; preds = %1167
  br label %1173

1173:                                             ; preds = %1172
  br label %2877

1174:                                             ; preds = %1160
  br label %1183

1175:                                             ; preds = %1153
  %1176 = load ptr, ptr %6, align 8, !tbaa !5
  %1177 = getelementptr inbounds %struct.inflate_state, ptr %1176, i32 0, i32 0
  store i32 16, ptr %1177, align 8, !tbaa !17
  br label %1183

1178:                                             ; preds = %1153
  %1179 = load ptr, ptr %4, align 8, !tbaa !5
  %1180 = getelementptr inbounds %struct.z_stream_s, ptr %1179, i32 0, i32 6
  store ptr @.str.6, ptr %1180, align 8, !tbaa !32
  %1181 = load ptr, ptr %6, align 8, !tbaa !5
  %1182 = getelementptr inbounds %struct.inflate_state, ptr %1181, i32 0, i32 0
  store i32 29, ptr %1182, align 8, !tbaa !17
  br label %1183

1183:                                             ; preds = %1178, %1175, %1174, %1157, %1153
  br label %1184

1184:                                             ; preds = %1183
  %1185 = load i64, ptr %11, align 8, !tbaa !21
  %1186 = lshr i64 %1185, 2
  store i64 %1186, ptr %11, align 8, !tbaa !21
  %1187 = load i32, ptr %12, align 4, !tbaa !9
  %1188 = sub i32 %1187, 2
  store i32 %1188, ptr %12, align 4, !tbaa !9
  br label %1189

1189:                                             ; preds = %1184
  br label %1190

1190:                                             ; preds = %1189
  br label %2876

1191:                                             ; preds = %81
  br label %1192

1192:                                             ; preds = %1191
  %1193 = load i32, ptr %12, align 4, !tbaa !9
  %1194 = and i32 %1193, 7
  %1195 = load i64, ptr %11, align 8, !tbaa !21
  %1196 = zext i32 %1194 to i64
  %1197 = lshr i64 %1195, %1196
  store i64 %1197, ptr %11, align 8, !tbaa !21
  %1198 = load i32, ptr %12, align 4, !tbaa !9
  %1199 = and i32 %1198, 7
  %1200 = load i32, ptr %12, align 4, !tbaa !9
  %1201 = sub i32 %1200, %1199
  store i32 %1201, ptr %12, align 4, !tbaa !9
  br label %1202

1202:                                             ; preds = %1192
  br label %1203

1203:                                             ; preds = %1202
  br label %1204

1204:                                             ; preds = %1203
  br label %1205

1205:                                             ; preds = %1228, %1204
  %1206 = load i32, ptr %12, align 4, !tbaa !9
  %1207 = icmp ult i32 %1206, 32
  br i1 %1207, label %1208, label %1229

1208:                                             ; preds = %1205
  br label %1209

1209:                                             ; preds = %1208
  %1210 = load i32, ptr %9, align 4, !tbaa !9
  %1211 = icmp eq i32 %1210, 0
  br i1 %1211, label %1212, label %1213

1212:                                             ; preds = %1209
  br label %2877

1213:                                             ; preds = %1209
  %1214 = load i32, ptr %9, align 4, !tbaa !9
  %1215 = add i32 %1214, -1
  store i32 %1215, ptr %9, align 4, !tbaa !9
  %1216 = load ptr, ptr %7, align 8, !tbaa !5
  %1217 = getelementptr inbounds i8, ptr %1216, i32 1
  store ptr %1217, ptr %7, align 8, !tbaa !5
  %1218 = load i8, ptr %1216, align 1, !tbaa !24
  %1219 = zext i8 %1218 to i64
  %1220 = load i32, ptr %12, align 4, !tbaa !9
  %1221 = zext i32 %1220 to i64
  %1222 = shl i64 %1219, %1221
  %1223 = load i64, ptr %11, align 8, !tbaa !21
  %1224 = add i64 %1223, %1222
  store i64 %1224, ptr %11, align 8, !tbaa !21
  %1225 = load i32, ptr %12, align 4, !tbaa !9
  %1226 = add i32 %1225, 8
  store i32 %1226, ptr %12, align 4, !tbaa !9
  br label %1227

1227:                                             ; preds = %1213
  br label %1228

1228:                                             ; preds = %1227
  br label %1205, !llvm.loop !60

1229:                                             ; preds = %1205
  br label %1230

1230:                                             ; preds = %1229
  br label %1231

1231:                                             ; preds = %1230
  %1232 = load i64, ptr %11, align 8, !tbaa !21
  %1233 = and i64 %1232, 65535
  %1234 = load i64, ptr %11, align 8, !tbaa !21
  %1235 = lshr i64 %1234, 16
  %1236 = xor i64 %1235, 65535
  %1237 = icmp ne i64 %1233, %1236
  br i1 %1237, label %1238, label %1243

1238:                                             ; preds = %1231
  %1239 = load ptr, ptr %4, align 8, !tbaa !5
  %1240 = getelementptr inbounds %struct.z_stream_s, ptr %1239, i32 0, i32 6
  store ptr @.str.7, ptr %1240, align 8, !tbaa !32
  %1241 = load ptr, ptr %6, align 8, !tbaa !5
  %1242 = getelementptr inbounds %struct.inflate_state, ptr %1241, i32 0, i32 0
  store i32 29, ptr %1242, align 8, !tbaa !17
  br label %2876

1243:                                             ; preds = %1231
  %1244 = load i64, ptr %11, align 8, !tbaa !21
  %1245 = trunc i64 %1244 to i32
  %1246 = and i32 %1245, 65535
  %1247 = load ptr, ptr %6, align 8, !tbaa !5
  %1248 = getelementptr inbounds %struct.inflate_state, ptr %1247, i32 0, i32 16
  store i32 %1246, ptr %1248, align 4, !tbaa !44
  br label %1249

1249:                                             ; preds = %1243
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %1250

1250:                                             ; preds = %1249
  br label %1251

1251:                                             ; preds = %1250
  %1252 = load ptr, ptr %6, align 8, !tbaa !5
  %1253 = getelementptr inbounds %struct.inflate_state, ptr %1252, i32 0, i32 0
  store i32 14, ptr %1253, align 8, !tbaa !17
  %1254 = load i32, ptr %5, align 4, !tbaa !9
  %1255 = icmp eq i32 %1254, 6
  br i1 %1255, label %1256, label %1257

1256:                                             ; preds = %1251
  br label %2877

1257:                                             ; preds = %1251
  br label %1258

1258:                                             ; preds = %1257, %81
  %1259 = load ptr, ptr %6, align 8, !tbaa !5
  %1260 = getelementptr inbounds %struct.inflate_state, ptr %1259, i32 0, i32 0
  store i32 15, ptr %1260, align 8, !tbaa !17
  br label %1261

1261:                                             ; preds = %1258, %81
  %1262 = load ptr, ptr %6, align 8, !tbaa !5
  %1263 = getelementptr inbounds %struct.inflate_state, ptr %1262, i32 0, i32 16
  %1264 = load i32, ptr %1263, align 4, !tbaa !44
  store i32 %1264, ptr %15, align 4, !tbaa !9
  %1265 = load i32, ptr %15, align 4, !tbaa !9
  %1266 = icmp ne i32 %1265, 0
  br i1 %1266, label %1267, label %1307

1267:                                             ; preds = %1261
  %1268 = load i32, ptr %15, align 4, !tbaa !9
  %1269 = load i32, ptr %9, align 4, !tbaa !9
  %1270 = icmp ugt i32 %1268, %1269
  br i1 %1270, label %1271, label %1273

1271:                                             ; preds = %1267
  %1272 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %1272, ptr %15, align 4, !tbaa !9
  br label %1273

1273:                                             ; preds = %1271, %1267
  %1274 = load i32, ptr %15, align 4, !tbaa !9
  %1275 = load i32, ptr %10, align 4, !tbaa !9
  %1276 = icmp ugt i32 %1274, %1275
  br i1 %1276, label %1277, label %1279

1277:                                             ; preds = %1273
  %1278 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1278, ptr %15, align 4, !tbaa !9
  br label %1279

1279:                                             ; preds = %1277, %1273
  %1280 = load i32, ptr %15, align 4, !tbaa !9
  %1281 = icmp eq i32 %1280, 0
  br i1 %1281, label %1282, label %1283

1282:                                             ; preds = %1279
  br label %2877

1283:                                             ; preds = %1279
  %1284 = load ptr, ptr %8, align 8, !tbaa !5
  %1285 = load ptr, ptr %7, align 8, !tbaa !5
  %1286 = load i32, ptr %15, align 4, !tbaa !9
  %1287 = zext i32 %1286 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %1284, ptr align 1 %1285, i64 %1287, i1 false)
  %1288 = load i32, ptr %15, align 4, !tbaa !9
  %1289 = load i32, ptr %9, align 4, !tbaa !9
  %1290 = sub i32 %1289, %1288
  store i32 %1290, ptr %9, align 4, !tbaa !9
  %1291 = load i32, ptr %15, align 4, !tbaa !9
  %1292 = load ptr, ptr %7, align 8, !tbaa !5
  %1293 = zext i32 %1291 to i64
  %1294 = getelementptr inbounds i8, ptr %1292, i64 %1293
  store ptr %1294, ptr %7, align 8, !tbaa !5
  %1295 = load i32, ptr %15, align 4, !tbaa !9
  %1296 = load i32, ptr %10, align 4, !tbaa !9
  %1297 = sub i32 %1296, %1295
  store i32 %1297, ptr %10, align 4, !tbaa !9
  %1298 = load i32, ptr %15, align 4, !tbaa !9
  %1299 = load ptr, ptr %8, align 8, !tbaa !5
  %1300 = zext i32 %1298 to i64
  %1301 = getelementptr inbounds i8, ptr %1299, i64 %1300
  store ptr %1301, ptr %8, align 8, !tbaa !5
  %1302 = load i32, ptr %15, align 4, !tbaa !9
  %1303 = load ptr, ptr %6, align 8, !tbaa !5
  %1304 = getelementptr inbounds %struct.inflate_state, ptr %1303, i32 0, i32 16
  %1305 = load i32, ptr %1304, align 4, !tbaa !44
  %1306 = sub i32 %1305, %1302
  store i32 %1306, ptr %1304, align 4, !tbaa !44
  br label %2876

1307:                                             ; preds = %1261
  %1308 = load ptr, ptr %6, align 8, !tbaa !5
  %1309 = getelementptr inbounds %struct.inflate_state, ptr %1308, i32 0, i32 0
  store i32 11, ptr %1309, align 8, !tbaa !17
  br label %2876

1310:                                             ; preds = %81
  br label %1311

1311:                                             ; preds = %1310
  br label %1312

1312:                                             ; preds = %1335, %1311
  %1313 = load i32, ptr %12, align 4, !tbaa !9
  %1314 = icmp ult i32 %1313, 14
  br i1 %1314, label %1315, label %1336

1315:                                             ; preds = %1312
  br label %1316

1316:                                             ; preds = %1315
  %1317 = load i32, ptr %9, align 4, !tbaa !9
  %1318 = icmp eq i32 %1317, 0
  br i1 %1318, label %1319, label %1320

1319:                                             ; preds = %1316
  br label %2877

1320:                                             ; preds = %1316
  %1321 = load i32, ptr %9, align 4, !tbaa !9
  %1322 = add i32 %1321, -1
  store i32 %1322, ptr %9, align 4, !tbaa !9
  %1323 = load ptr, ptr %7, align 8, !tbaa !5
  %1324 = getelementptr inbounds i8, ptr %1323, i32 1
  store ptr %1324, ptr %7, align 8, !tbaa !5
  %1325 = load i8, ptr %1323, align 1, !tbaa !24
  %1326 = zext i8 %1325 to i64
  %1327 = load i32, ptr %12, align 4, !tbaa !9
  %1328 = zext i32 %1327 to i64
  %1329 = shl i64 %1326, %1328
  %1330 = load i64, ptr %11, align 8, !tbaa !21
  %1331 = add i64 %1330, %1329
  store i64 %1331, ptr %11, align 8, !tbaa !21
  %1332 = load i32, ptr %12, align 4, !tbaa !9
  %1333 = add i32 %1332, 8
  store i32 %1333, ptr %12, align 4, !tbaa !9
  br label %1334

1334:                                             ; preds = %1320
  br label %1335

1335:                                             ; preds = %1334
  br label %1312, !llvm.loop !61

1336:                                             ; preds = %1312
  br label %1337

1337:                                             ; preds = %1336
  br label %1338

1338:                                             ; preds = %1337
  %1339 = load i64, ptr %11, align 8, !tbaa !21
  %1340 = trunc i64 %1339 to i32
  %1341 = and i32 %1340, 31
  %1342 = add i32 %1341, 257
  %1343 = load ptr, ptr %6, align 8, !tbaa !5
  %1344 = getelementptr inbounds %struct.inflate_state, ptr %1343, i32 0, i32 24
  store i32 %1342, ptr %1344, align 4, !tbaa !62
  br label %1345

1345:                                             ; preds = %1338
  %1346 = load i64, ptr %11, align 8, !tbaa !21
  %1347 = lshr i64 %1346, 5
  store i64 %1347, ptr %11, align 8, !tbaa !21
  %1348 = load i32, ptr %12, align 4, !tbaa !9
  %1349 = sub i32 %1348, 5
  store i32 %1349, ptr %12, align 4, !tbaa !9
  br label %1350

1350:                                             ; preds = %1345
  br label %1351

1351:                                             ; preds = %1350
  %1352 = load i64, ptr %11, align 8, !tbaa !21
  %1353 = trunc i64 %1352 to i32
  %1354 = and i32 %1353, 31
  %1355 = add i32 %1354, 1
  %1356 = load ptr, ptr %6, align 8, !tbaa !5
  %1357 = getelementptr inbounds %struct.inflate_state, ptr %1356, i32 0, i32 25
  store i32 %1355, ptr %1357, align 8, !tbaa !63
  br label %1358

1358:                                             ; preds = %1351
  %1359 = load i64, ptr %11, align 8, !tbaa !21
  %1360 = lshr i64 %1359, 5
  store i64 %1360, ptr %11, align 8, !tbaa !21
  %1361 = load i32, ptr %12, align 4, !tbaa !9
  %1362 = sub i32 %1361, 5
  store i32 %1362, ptr %12, align 4, !tbaa !9
  br label %1363

1363:                                             ; preds = %1358
  br label %1364

1364:                                             ; preds = %1363
  %1365 = load i64, ptr %11, align 8, !tbaa !21
  %1366 = trunc i64 %1365 to i32
  %1367 = and i32 %1366, 15
  %1368 = add i32 %1367, 4
  %1369 = load ptr, ptr %6, align 8, !tbaa !5
  %1370 = getelementptr inbounds %struct.inflate_state, ptr %1369, i32 0, i32 23
  store i32 %1368, ptr %1370, align 8, !tbaa !64
  br label %1371

1371:                                             ; preds = %1364
  %1372 = load i64, ptr %11, align 8, !tbaa !21
  %1373 = lshr i64 %1372, 4
  store i64 %1373, ptr %11, align 8, !tbaa !21
  %1374 = load i32, ptr %12, align 4, !tbaa !9
  %1375 = sub i32 %1374, 4
  store i32 %1375, ptr %12, align 4, !tbaa !9
  br label %1376

1376:                                             ; preds = %1371
  br label %1377

1377:                                             ; preds = %1376
  %1378 = load ptr, ptr %6, align 8, !tbaa !5
  %1379 = getelementptr inbounds %struct.inflate_state, ptr %1378, i32 0, i32 24
  %1380 = load i32, ptr %1379, align 4, !tbaa !62
  %1381 = icmp ugt i32 %1380, 286
  br i1 %1381, label %1387, label %1382

1382:                                             ; preds = %1377
  %1383 = load ptr, ptr %6, align 8, !tbaa !5
  %1384 = getelementptr inbounds %struct.inflate_state, ptr %1383, i32 0, i32 25
  %1385 = load i32, ptr %1384, align 8, !tbaa !63
  %1386 = icmp ugt i32 %1385, 30
  br i1 %1386, label %1387, label %1392

1387:                                             ; preds = %1382, %1377
  %1388 = load ptr, ptr %4, align 8, !tbaa !5
  %1389 = getelementptr inbounds %struct.z_stream_s, ptr %1388, i32 0, i32 6
  store ptr @.str.8, ptr %1389, align 8, !tbaa !32
  %1390 = load ptr, ptr %6, align 8, !tbaa !5
  %1391 = getelementptr inbounds %struct.inflate_state, ptr %1390, i32 0, i32 0
  store i32 29, ptr %1391, align 8, !tbaa !17
  br label %2876

1392:                                             ; preds = %1382
  %1393 = load ptr, ptr %6, align 8, !tbaa !5
  %1394 = getelementptr inbounds %struct.inflate_state, ptr %1393, i32 0, i32 26
  store i32 0, ptr %1394, align 4, !tbaa !65
  %1395 = load ptr, ptr %6, align 8, !tbaa !5
  %1396 = getelementptr inbounds %struct.inflate_state, ptr %1395, i32 0, i32 0
  store i32 17, ptr %1396, align 8, !tbaa !17
  br label %1397

1397:                                             ; preds = %1392, %81
  br label %1398

1398:                                             ; preds = %1456, %1397
  %1399 = load ptr, ptr %6, align 8, !tbaa !5
  %1400 = getelementptr inbounds %struct.inflate_state, ptr %1399, i32 0, i32 26
  %1401 = load i32, ptr %1400, align 4, !tbaa !65
  %1402 = load ptr, ptr %6, align 8, !tbaa !5
  %1403 = getelementptr inbounds %struct.inflate_state, ptr %1402, i32 0, i32 23
  %1404 = load i32, ptr %1403, align 8, !tbaa !64
  %1405 = icmp ult i32 %1401, %1404
  br i1 %1405, label %1406, label %1457

1406:                                             ; preds = %1398
  br label %1407

1407:                                             ; preds = %1406
  br label %1408

1408:                                             ; preds = %1431, %1407
  %1409 = load i32, ptr %12, align 4, !tbaa !9
  %1410 = icmp ult i32 %1409, 3
  br i1 %1410, label %1411, label %1432

1411:                                             ; preds = %1408
  br label %1412

1412:                                             ; preds = %1411
  %1413 = load i32, ptr %9, align 4, !tbaa !9
  %1414 = icmp eq i32 %1413, 0
  br i1 %1414, label %1415, label %1416

1415:                                             ; preds = %1412
  br label %2877

1416:                                             ; preds = %1412
  %1417 = load i32, ptr %9, align 4, !tbaa !9
  %1418 = add i32 %1417, -1
  store i32 %1418, ptr %9, align 4, !tbaa !9
  %1419 = load ptr, ptr %7, align 8, !tbaa !5
  %1420 = getelementptr inbounds i8, ptr %1419, i32 1
  store ptr %1420, ptr %7, align 8, !tbaa !5
  %1421 = load i8, ptr %1419, align 1, !tbaa !24
  %1422 = zext i8 %1421 to i64
  %1423 = load i32, ptr %12, align 4, !tbaa !9
  %1424 = zext i32 %1423 to i64
  %1425 = shl i64 %1422, %1424
  %1426 = load i64, ptr %11, align 8, !tbaa !21
  %1427 = add i64 %1426, %1425
  store i64 %1427, ptr %11, align 8, !tbaa !21
  %1428 = load i32, ptr %12, align 4, !tbaa !9
  %1429 = add i32 %1428, 8
  store i32 %1429, ptr %12, align 4, !tbaa !9
  br label %1430

1430:                                             ; preds = %1416
  br label %1431

1431:                                             ; preds = %1430
  br label %1408, !llvm.loop !66

1432:                                             ; preds = %1408
  br label %1433

1433:                                             ; preds = %1432
  br label %1434

1434:                                             ; preds = %1433
  %1435 = load i64, ptr %11, align 8, !tbaa !21
  %1436 = trunc i64 %1435 to i32
  %1437 = and i32 %1436, 7
  %1438 = trunc i32 %1437 to i16
  %1439 = load ptr, ptr %6, align 8, !tbaa !5
  %1440 = getelementptr inbounds %struct.inflate_state, ptr %1439, i32 0, i32 28
  %1441 = load ptr, ptr %6, align 8, !tbaa !5
  %1442 = getelementptr inbounds %struct.inflate_state, ptr %1441, i32 0, i32 26
  %1443 = load i32, ptr %1442, align 4, !tbaa !65
  %1444 = add i32 %1443, 1
  store i32 %1444, ptr %1442, align 4, !tbaa !65
  %1445 = zext i32 %1443 to i64
  %1446 = getelementptr inbounds [19 x i16], ptr @inflate.order, i64 0, i64 %1445
  %1447 = load i16, ptr %1446, align 2, !tbaa !67
  %1448 = zext i16 %1447 to i64
  %1449 = getelementptr inbounds [320 x i16], ptr %1440, i64 0, i64 %1448
  store i16 %1438, ptr %1449, align 2, !tbaa !67
  br label %1450

1450:                                             ; preds = %1434
  %1451 = load i64, ptr %11, align 8, !tbaa !21
  %1452 = lshr i64 %1451, 3
  store i64 %1452, ptr %11, align 8, !tbaa !21
  %1453 = load i32, ptr %12, align 4, !tbaa !9
  %1454 = sub i32 %1453, 3
  store i32 %1454, ptr %12, align 4, !tbaa !9
  br label %1455

1455:                                             ; preds = %1450
  br label %1456

1456:                                             ; preds = %1455
  br label %1398, !llvm.loop !69

1457:                                             ; preds = %1398
  br label %1458

1458:                                             ; preds = %1463, %1457
  %1459 = load ptr, ptr %6, align 8, !tbaa !5
  %1460 = getelementptr inbounds %struct.inflate_state, ptr %1459, i32 0, i32 26
  %1461 = load i32, ptr %1460, align 4, !tbaa !65
  %1462 = icmp ult i32 %1461, 19
  br i1 %1462, label %1463, label %1475

1463:                                             ; preds = %1458
  %1464 = load ptr, ptr %6, align 8, !tbaa !5
  %1465 = getelementptr inbounds %struct.inflate_state, ptr %1464, i32 0, i32 28
  %1466 = load ptr, ptr %6, align 8, !tbaa !5
  %1467 = getelementptr inbounds %struct.inflate_state, ptr %1466, i32 0, i32 26
  %1468 = load i32, ptr %1467, align 4, !tbaa !65
  %1469 = add i32 %1468, 1
  store i32 %1469, ptr %1467, align 4, !tbaa !65
  %1470 = zext i32 %1468 to i64
  %1471 = getelementptr inbounds [19 x i16], ptr @inflate.order, i64 0, i64 %1470
  %1472 = load i16, ptr %1471, align 2, !tbaa !67
  %1473 = zext i16 %1472 to i64
  %1474 = getelementptr inbounds [320 x i16], ptr %1465, i64 0, i64 %1473
  store i16 0, ptr %1474, align 2, !tbaa !67
  br label %1458, !llvm.loop !70

1475:                                             ; preds = %1458
  %1476 = load ptr, ptr %6, align 8, !tbaa !5
  %1477 = getelementptr inbounds %struct.inflate_state, ptr %1476, i32 0, i32 30
  %1478 = getelementptr inbounds [1444 x %struct.code], ptr %1477, i64 0, i64 0
  %1479 = load ptr, ptr %6, align 8, !tbaa !5
  %1480 = getelementptr inbounds %struct.inflate_state, ptr %1479, i32 0, i32 27
  store ptr %1478, ptr %1480, align 8, !tbaa !71
  %1481 = load ptr, ptr %6, align 8, !tbaa !5
  %1482 = getelementptr inbounds %struct.inflate_state, ptr %1481, i32 0, i32 27
  %1483 = load ptr, ptr %1482, align 8, !tbaa !71
  %1484 = load ptr, ptr %6, align 8, !tbaa !5
  %1485 = getelementptr inbounds %struct.inflate_state, ptr %1484, i32 0, i32 19
  store ptr %1483, ptr %1485, align 8, !tbaa !72
  %1486 = load ptr, ptr %6, align 8, !tbaa !5
  %1487 = getelementptr inbounds %struct.inflate_state, ptr %1486, i32 0, i32 21
  store i32 7, ptr %1487, align 8, !tbaa !73
  %1488 = load ptr, ptr %6, align 8, !tbaa !5
  %1489 = getelementptr inbounds %struct.inflate_state, ptr %1488, i32 0, i32 28
  %1490 = getelementptr inbounds [320 x i16], ptr %1489, i64 0, i64 0
  %1491 = load ptr, ptr %6, align 8, !tbaa !5
  %1492 = getelementptr inbounds %struct.inflate_state, ptr %1491, i32 0, i32 27
  %1493 = load ptr, ptr %6, align 8, !tbaa !5
  %1494 = getelementptr inbounds %struct.inflate_state, ptr %1493, i32 0, i32 21
  %1495 = load ptr, ptr %6, align 8, !tbaa !5
  %1496 = getelementptr inbounds %struct.inflate_state, ptr %1495, i32 0, i32 29
  %1497 = getelementptr inbounds [288 x i16], ptr %1496, i64 0, i64 0
  %1498 = call i32 @inflate_table(i32 noundef 0, ptr noundef %1490, i32 noundef 19, ptr noundef %1492, ptr noundef %1494, ptr noundef %1497)
  store i32 %1498, ptr %20, align 4, !tbaa !9
  %1499 = load i32, ptr %20, align 4, !tbaa !9
  %1500 = icmp ne i32 %1499, 0
  br i1 %1500, label %1501, label %1506

1501:                                             ; preds = %1475
  %1502 = load ptr, ptr %4, align 8, !tbaa !5
  %1503 = getelementptr inbounds %struct.z_stream_s, ptr %1502, i32 0, i32 6
  store ptr @.str.9, ptr %1503, align 8, !tbaa !32
  %1504 = load ptr, ptr %6, align 8, !tbaa !5
  %1505 = getelementptr inbounds %struct.inflate_state, ptr %1504, i32 0, i32 0
  store i32 29, ptr %1505, align 8, !tbaa !17
  br label %2876

1506:                                             ; preds = %1475
  %1507 = load ptr, ptr %6, align 8, !tbaa !5
  %1508 = getelementptr inbounds %struct.inflate_state, ptr %1507, i32 0, i32 26
  store i32 0, ptr %1508, align 4, !tbaa !65
  %1509 = load ptr, ptr %6, align 8, !tbaa !5
  %1510 = getelementptr inbounds %struct.inflate_state, ptr %1509, i32 0, i32 0
  store i32 18, ptr %1510, align 8, !tbaa !17
  br label %1511

1511:                                             ; preds = %1506, %81
  br label %1512

1512:                                             ; preds = %1868, %1511
  %1513 = load ptr, ptr %6, align 8, !tbaa !5
  %1514 = getelementptr inbounds %struct.inflate_state, ptr %1513, i32 0, i32 26
  %1515 = load i32, ptr %1514, align 4, !tbaa !65
  %1516 = load ptr, ptr %6, align 8, !tbaa !5
  %1517 = getelementptr inbounds %struct.inflate_state, ptr %1516, i32 0, i32 24
  %1518 = load i32, ptr %1517, align 4, !tbaa !62
  %1519 = load ptr, ptr %6, align 8, !tbaa !5
  %1520 = getelementptr inbounds %struct.inflate_state, ptr %1519, i32 0, i32 25
  %1521 = load i32, ptr %1520, align 8, !tbaa !63
  %1522 = add i32 %1518, %1521
  %1523 = icmp ult i32 %1515, %1522
  br i1 %1523, label %1524, label %1869

1524:                                             ; preds = %1512
  br label %1525

1525:                                             ; preds = %1565, %1524
  %1526 = load ptr, ptr %6, align 8, !tbaa !5
  %1527 = getelementptr inbounds %struct.inflate_state, ptr %1526, i32 0, i32 19
  %1528 = load ptr, ptr %1527, align 8, !tbaa !72
  %1529 = load i64, ptr %11, align 8, !tbaa !21
  %1530 = trunc i64 %1529 to i32
  %1531 = load ptr, ptr %6, align 8, !tbaa !5
  %1532 = getelementptr inbounds %struct.inflate_state, ptr %1531, i32 0, i32 21
  %1533 = load i32, ptr %1532, align 8, !tbaa !73
  %1534 = shl i32 1, %1533
  %1535 = sub i32 %1534, 1
  %1536 = and i32 %1530, %1535
  %1537 = zext i32 %1536 to i64
  %1538 = getelementptr inbounds %struct.code, ptr %1528, i64 %1537
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %17, ptr align 2 %1538, i64 4, i1 false), !tbaa.struct !74
  %1539 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1540 = load i8, ptr %1539, align 1, !tbaa !75
  %1541 = zext i8 %1540 to i32
  %1542 = load i32, ptr %12, align 4, !tbaa !9
  %1543 = icmp ule i32 %1541, %1542
  br i1 %1543, label %1544, label %1545

1544:                                             ; preds = %1525
  br label %1566

1545:                                             ; preds = %1525
  br label %1546

1546:                                             ; preds = %1545
  %1547 = load i32, ptr %9, align 4, !tbaa !9
  %1548 = icmp eq i32 %1547, 0
  br i1 %1548, label %1549, label %1550

1549:                                             ; preds = %1546
  br label %2877

1550:                                             ; preds = %1546
  %1551 = load i32, ptr %9, align 4, !tbaa !9
  %1552 = add i32 %1551, -1
  store i32 %1552, ptr %9, align 4, !tbaa !9
  %1553 = load ptr, ptr %7, align 8, !tbaa !5
  %1554 = getelementptr inbounds i8, ptr %1553, i32 1
  store ptr %1554, ptr %7, align 8, !tbaa !5
  %1555 = load i8, ptr %1553, align 1, !tbaa !24
  %1556 = zext i8 %1555 to i64
  %1557 = load i32, ptr %12, align 4, !tbaa !9
  %1558 = zext i32 %1557 to i64
  %1559 = shl i64 %1556, %1558
  %1560 = load i64, ptr %11, align 8, !tbaa !21
  %1561 = add i64 %1560, %1559
  store i64 %1561, ptr %11, align 8, !tbaa !21
  %1562 = load i32, ptr %12, align 4, !tbaa !9
  %1563 = add i32 %1562, 8
  store i32 %1563, ptr %12, align 4, !tbaa !9
  br label %1564

1564:                                             ; preds = %1550
  br label %1565

1565:                                             ; preds = %1564
  br label %1525

1566:                                             ; preds = %1544
  %1567 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 2
  %1568 = load i16, ptr %1567, align 2, !tbaa !77
  %1569 = zext i16 %1568 to i32
  %1570 = icmp slt i32 %1569, 16
  br i1 %1570, label %1571, label %1627

1571:                                             ; preds = %1566
  br label %1572

1572:                                             ; preds = %1571
  br label %1573

1573:                                             ; preds = %1599, %1572
  %1574 = load i32, ptr %12, align 4, !tbaa !9
  %1575 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1576 = load i8, ptr %1575, align 1, !tbaa !75
  %1577 = zext i8 %1576 to i32
  %1578 = icmp ult i32 %1574, %1577
  br i1 %1578, label %1579, label %1600

1579:                                             ; preds = %1573
  br label %1580

1580:                                             ; preds = %1579
  %1581 = load i32, ptr %9, align 4, !tbaa !9
  %1582 = icmp eq i32 %1581, 0
  br i1 %1582, label %1583, label %1584

1583:                                             ; preds = %1580
  br label %2877

1584:                                             ; preds = %1580
  %1585 = load i32, ptr %9, align 4, !tbaa !9
  %1586 = add i32 %1585, -1
  store i32 %1586, ptr %9, align 4, !tbaa !9
  %1587 = load ptr, ptr %7, align 8, !tbaa !5
  %1588 = getelementptr inbounds i8, ptr %1587, i32 1
  store ptr %1588, ptr %7, align 8, !tbaa !5
  %1589 = load i8, ptr %1587, align 1, !tbaa !24
  %1590 = zext i8 %1589 to i64
  %1591 = load i32, ptr %12, align 4, !tbaa !9
  %1592 = zext i32 %1591 to i64
  %1593 = shl i64 %1590, %1592
  %1594 = load i64, ptr %11, align 8, !tbaa !21
  %1595 = add i64 %1594, %1593
  store i64 %1595, ptr %11, align 8, !tbaa !21
  %1596 = load i32, ptr %12, align 4, !tbaa !9
  %1597 = add i32 %1596, 8
  store i32 %1597, ptr %12, align 4, !tbaa !9
  br label %1598

1598:                                             ; preds = %1584
  br label %1599

1599:                                             ; preds = %1598
  br label %1573, !llvm.loop !78

1600:                                             ; preds = %1573
  br label %1601

1601:                                             ; preds = %1600
  br label %1602

1602:                                             ; preds = %1601
  br label %1603

1603:                                             ; preds = %1602
  %1604 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1605 = load i8, ptr %1604, align 1, !tbaa !75
  %1606 = zext i8 %1605 to i32
  %1607 = load i64, ptr %11, align 8, !tbaa !21
  %1608 = zext i32 %1606 to i64
  %1609 = lshr i64 %1607, %1608
  store i64 %1609, ptr %11, align 8, !tbaa !21
  %1610 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1611 = load i8, ptr %1610, align 1, !tbaa !75
  %1612 = zext i8 %1611 to i32
  %1613 = load i32, ptr %12, align 4, !tbaa !9
  %1614 = sub i32 %1613, %1612
  store i32 %1614, ptr %12, align 4, !tbaa !9
  br label %1615

1615:                                             ; preds = %1603
  br label %1616

1616:                                             ; preds = %1615
  %1617 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 2
  %1618 = load i16, ptr %1617, align 2, !tbaa !77
  %1619 = load ptr, ptr %6, align 8, !tbaa !5
  %1620 = getelementptr inbounds %struct.inflate_state, ptr %1619, i32 0, i32 28
  %1621 = load ptr, ptr %6, align 8, !tbaa !5
  %1622 = getelementptr inbounds %struct.inflate_state, ptr %1621, i32 0, i32 26
  %1623 = load i32, ptr %1622, align 4, !tbaa !65
  %1624 = add i32 %1623, 1
  store i32 %1624, ptr %1622, align 4, !tbaa !65
  %1625 = zext i32 %1623 to i64
  %1626 = getelementptr inbounds [320 x i16], ptr %1620, i64 0, i64 %1625
  store i16 %1618, ptr %1626, align 2, !tbaa !67
  br label %1868

1627:                                             ; preds = %1566
  %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 eq i32 %1630, 16
  br i1 %1631, label %1632, label %1710

1632:                                             ; preds = %1627
  br label %1633

1633:                                             ; preds = %1632
  br label %1634

1634:                                             ; preds = %1661, %1633
  %1635 = load i32, ptr %12, align 4, !tbaa !9
  %1636 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1637 = load i8, ptr %1636, align 1, !tbaa !75
  %1638 = zext i8 %1637 to i32
  %1639 = add nsw i32 %1638, 2
  %1640 = icmp ult i32 %1635, %1639
  br i1 %1640, label %1641, label %1662

1641:                                             ; preds = %1634
  br label %1642

1642:                                             ; preds = %1641
  %1643 = load i32, ptr %9, align 4, !tbaa !9
  %1644 = icmp eq i32 %1643, 0
  br i1 %1644, label %1645, label %1646

1645:                                             ; preds = %1642
  br label %2877

1646:                                             ; preds = %1642
  %1647 = load i32, ptr %9, align 4, !tbaa !9
  %1648 = add i32 %1647, -1
  store i32 %1648, ptr %9, align 4, !tbaa !9
  %1649 = load ptr, ptr %7, align 8, !tbaa !5
  %1650 = getelementptr inbounds i8, ptr %1649, i32 1
  store ptr %1650, ptr %7, align 8, !tbaa !5
  %1651 = load i8, ptr %1649, align 1, !tbaa !24
  %1652 = zext i8 %1651 to i64
  %1653 = load i32, ptr %12, align 4, !tbaa !9
  %1654 = zext i32 %1653 to i64
  %1655 = shl i64 %1652, %1654
  %1656 = load i64, ptr %11, align 8, !tbaa !21
  %1657 = add i64 %1656, %1655
  store i64 %1657, ptr %11, align 8, !tbaa !21
  %1658 = load i32, ptr %12, align 4, !tbaa !9
  %1659 = add i32 %1658, 8
  store i32 %1659, ptr %12, align 4, !tbaa !9
  br label %1660

1660:                                             ; preds = %1646
  br label %1661

1661:                                             ; preds = %1660
  br label %1634, !llvm.loop !79

1662:                                             ; preds = %1634
  br label %1663

1663:                                             ; preds = %1662
  br label %1664

1664:                                             ; preds = %1663
  br label %1665

1665:                                             ; preds = %1664
  %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 = load i64, ptr %11, align 8, !tbaa !21
  %1670 = zext i32 %1668 to i64
  %1671 = lshr i64 %1669, %1670
  store i64 %1671, ptr %11, align 8, !tbaa !21
  %1672 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1673 = load i8, ptr %1672, align 1, !tbaa !75
  %1674 = zext i8 %1673 to i32
  %1675 = load i32, ptr %12, align 4, !tbaa !9
  %1676 = sub i32 %1675, %1674
  store i32 %1676, ptr %12, align 4, !tbaa !9
  br label %1677

1677:                                             ; preds = %1665
  br label %1678

1678:                                             ; preds = %1677
  %1679 = load ptr, ptr %6, align 8, !tbaa !5
  %1680 = getelementptr inbounds %struct.inflate_state, ptr %1679, i32 0, i32 26
  %1681 = load i32, ptr %1680, align 4, !tbaa !65
  %1682 = icmp eq i32 %1681, 0
  br i1 %1682, label %1683, label %1688

1683:                                             ; preds = %1678
  %1684 = load ptr, ptr %4, align 8, !tbaa !5
  %1685 = getelementptr inbounds %struct.z_stream_s, ptr %1684, i32 0, i32 6
  store ptr @.str.10, ptr %1685, align 8, !tbaa !32
  %1686 = load ptr, ptr %6, align 8, !tbaa !5
  %1687 = getelementptr inbounds %struct.inflate_state, ptr %1686, i32 0, i32 0
  store i32 29, ptr %1687, align 8, !tbaa !17
  br label %1869

1688:                                             ; preds = %1678
  %1689 = load ptr, ptr %6, align 8, !tbaa !5
  %1690 = getelementptr inbounds %struct.inflate_state, ptr %1689, i32 0, i32 28
  %1691 = load ptr, ptr %6, align 8, !tbaa !5
  %1692 = getelementptr inbounds %struct.inflate_state, ptr %1691, i32 0, i32 26
  %1693 = load i32, ptr %1692, align 4, !tbaa !65
  %1694 = sub i32 %1693, 1
  %1695 = zext i32 %1694 to i64
  %1696 = getelementptr inbounds [320 x i16], ptr %1690, i64 0, i64 %1695
  %1697 = load i16, ptr %1696, align 2, !tbaa !67
  %1698 = zext i16 %1697 to i32
  store i32 %1698, ptr %19, align 4, !tbaa !9
  %1699 = load i64, ptr %11, align 8, !tbaa !21
  %1700 = trunc i64 %1699 to i32
  %1701 = and i32 %1700, 3
  %1702 = add i32 3, %1701
  store i32 %1702, ptr %15, align 4, !tbaa !9
  br label %1703

1703:                                             ; preds = %1688
  %1704 = load i64, ptr %11, align 8, !tbaa !21
  %1705 = lshr i64 %1704, 2
  store i64 %1705, ptr %11, align 8, !tbaa !21
  %1706 = load i32, ptr %12, align 4, !tbaa !9
  %1707 = sub i32 %1706, 2
  store i32 %1707, ptr %12, align 4, !tbaa !9
  br label %1708

1708:                                             ; preds = %1703
  br label %1709

1709:                                             ; preds = %1708
  br label %1832

1710:                                             ; preds = %1627
  %1711 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 2
  %1712 = load i16, ptr %1711, align 2, !tbaa !77
  %1713 = zext i16 %1712 to i32
  %1714 = icmp eq i32 %1713, 17
  br i1 %1714, label %1715, label %1773

1715:                                             ; preds = %1710
  br label %1716

1716:                                             ; preds = %1715
  br label %1717

1717:                                             ; preds = %1744, %1716
  %1718 = load i32, ptr %12, align 4, !tbaa !9
  %1719 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1720 = load i8, ptr %1719, align 1, !tbaa !75
  %1721 = zext i8 %1720 to i32
  %1722 = add nsw i32 %1721, 3
  %1723 = icmp ult i32 %1718, %1722
  br i1 %1723, label %1724, label %1745

1724:                                             ; preds = %1717
  br label %1725

1725:                                             ; preds = %1724
  %1726 = load i32, ptr %9, align 4, !tbaa !9
  %1727 = icmp eq i32 %1726, 0
  br i1 %1727, label %1728, label %1729

1728:                                             ; preds = %1725
  br label %2877

1729:                                             ; preds = %1725
  %1730 = load i32, ptr %9, align 4, !tbaa !9
  %1731 = add i32 %1730, -1
  store i32 %1731, ptr %9, align 4, !tbaa !9
  %1732 = load ptr, ptr %7, align 8, !tbaa !5
  %1733 = getelementptr inbounds i8, ptr %1732, i32 1
  store ptr %1733, ptr %7, align 8, !tbaa !5
  %1734 = load i8, ptr %1732, align 1, !tbaa !24
  %1735 = zext i8 %1734 to i64
  %1736 = load i32, ptr %12, align 4, !tbaa !9
  %1737 = zext i32 %1736 to i64
  %1738 = shl i64 %1735, %1737
  %1739 = load i64, ptr %11, align 8, !tbaa !21
  %1740 = add i64 %1739, %1738
  store i64 %1740, ptr %11, align 8, !tbaa !21
  %1741 = load i32, ptr %12, align 4, !tbaa !9
  %1742 = add i32 %1741, 8
  store i32 %1742, ptr %12, align 4, !tbaa !9
  br label %1743

1743:                                             ; preds = %1729
  br label %1744

1744:                                             ; preds = %1743
  br label %1717, !llvm.loop !80

1745:                                             ; preds = %1717
  br label %1746

1746:                                             ; preds = %1745
  br label %1747

1747:                                             ; preds = %1746
  br label %1748

1748:                                             ; preds = %1747
  %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 = load i64, ptr %11, align 8, !tbaa !21
  %1753 = zext i32 %1751 to i64
  %1754 = lshr i64 %1752, %1753
  store i64 %1754, ptr %11, align 8, !tbaa !21
  %1755 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1756 = load i8, ptr %1755, align 1, !tbaa !75
  %1757 = zext i8 %1756 to i32
  %1758 = load i32, ptr %12, align 4, !tbaa !9
  %1759 = sub i32 %1758, %1757
  store i32 %1759, ptr %12, align 4, !tbaa !9
  br label %1760

1760:                                             ; preds = %1748
  br label %1761

1761:                                             ; preds = %1760
  store i32 0, ptr %19, align 4, !tbaa !9
  %1762 = load i64, ptr %11, align 8, !tbaa !21
  %1763 = trunc i64 %1762 to i32
  %1764 = and i32 %1763, 7
  %1765 = add i32 3, %1764
  store i32 %1765, ptr %15, align 4, !tbaa !9
  br label %1766

1766:                                             ; preds = %1761
  %1767 = load i64, ptr %11, align 8, !tbaa !21
  %1768 = lshr i64 %1767, 3
  store i64 %1768, ptr %11, align 8, !tbaa !21
  %1769 = load i32, ptr %12, align 4, !tbaa !9
  %1770 = sub i32 %1769, 3
  store i32 %1770, ptr %12, align 4, !tbaa !9
  br label %1771

1771:                                             ; preds = %1766
  br label %1772

1772:                                             ; preds = %1771
  br label %1831

1773:                                             ; preds = %1710
  br label %1774

1774:                                             ; preds = %1773
  br label %1775

1775:                                             ; preds = %1802, %1774
  %1776 = load i32, ptr %12, align 4, !tbaa !9
  %1777 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1778 = load i8, ptr %1777, align 1, !tbaa !75
  %1779 = zext i8 %1778 to i32
  %1780 = add nsw i32 %1779, 7
  %1781 = icmp ult i32 %1776, %1780
  br i1 %1781, label %1782, label %1803

1782:                                             ; preds = %1775
  br label %1783

1783:                                             ; preds = %1782
  %1784 = load i32, ptr %9, align 4, !tbaa !9
  %1785 = icmp eq i32 %1784, 0
  br i1 %1785, label %1786, label %1787

1786:                                             ; preds = %1783
  br label %2877

1787:                                             ; preds = %1783
  %1788 = load i32, ptr %9, align 4, !tbaa !9
  %1789 = add i32 %1788, -1
  store i32 %1789, ptr %9, align 4, !tbaa !9
  %1790 = load ptr, ptr %7, align 8, !tbaa !5
  %1791 = getelementptr inbounds i8, ptr %1790, i32 1
  store ptr %1791, ptr %7, align 8, !tbaa !5
  %1792 = load i8, ptr %1790, align 1, !tbaa !24
  %1793 = zext i8 %1792 to i64
  %1794 = load i32, ptr %12, align 4, !tbaa !9
  %1795 = zext i32 %1794 to i64
  %1796 = shl i64 %1793, %1795
  %1797 = load i64, ptr %11, align 8, !tbaa !21
  %1798 = add i64 %1797, %1796
  store i64 %1798, ptr %11, align 8, !tbaa !21
  %1799 = load i32, ptr %12, align 4, !tbaa !9
  %1800 = add i32 %1799, 8
  store i32 %1800, ptr %12, align 4, !tbaa !9
  br label %1801

1801:                                             ; preds = %1787
  br label %1802

1802:                                             ; preds = %1801
  br label %1775, !llvm.loop !81

1803:                                             ; preds = %1775
  br label %1804

1804:                                             ; preds = %1803
  br label %1805

1805:                                             ; preds = %1804
  br label %1806

1806:                                             ; preds = %1805
  %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 = load i64, ptr %11, align 8, !tbaa !21
  %1811 = zext i32 %1809 to i64
  %1812 = lshr i64 %1810, %1811
  store i64 %1812, ptr %11, align 8, !tbaa !21
  %1813 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1814 = load i8, ptr %1813, align 1, !tbaa !75
  %1815 = zext i8 %1814 to i32
  %1816 = load i32, ptr %12, align 4, !tbaa !9
  %1817 = sub i32 %1816, %1815
  store i32 %1817, ptr %12, align 4, !tbaa !9
  br label %1818

1818:                                             ; preds = %1806
  br label %1819

1819:                                             ; preds = %1818
  store i32 0, ptr %19, align 4, !tbaa !9
  %1820 = load i64, ptr %11, align 8, !tbaa !21
  %1821 = trunc i64 %1820 to i32
  %1822 = and i32 %1821, 127
  %1823 = add i32 11, %1822
  store i32 %1823, ptr %15, align 4, !tbaa !9
  br label %1824

1824:                                             ; preds = %1819
  %1825 = load i64, ptr %11, align 8, !tbaa !21
  %1826 = lshr i64 %1825, 7
  store i64 %1826, ptr %11, align 8, !tbaa !21
  %1827 = load i32, ptr %12, align 4, !tbaa !9
  %1828 = sub i32 %1827, 7
  store i32 %1828, ptr %12, align 4, !tbaa !9
  br label %1829

1829:                                             ; preds = %1824
  br label %1830

1830:                                             ; preds = %1829
  br label %1831

1831:                                             ; preds = %1830, %1772
  br label %1832

1832:                                             ; preds = %1831, %1709
  %1833 = load ptr, ptr %6, align 8, !tbaa !5
  %1834 = getelementptr inbounds %struct.inflate_state, ptr %1833, i32 0, i32 26
  %1835 = load i32, ptr %1834, align 4, !tbaa !65
  %1836 = load i32, ptr %15, align 4, !tbaa !9
  %1837 = add i32 %1835, %1836
  %1838 = load ptr, ptr %6, align 8, !tbaa !5
  %1839 = getelementptr inbounds %struct.inflate_state, ptr %1838, i32 0, i32 24
  %1840 = load i32, ptr %1839, align 4, !tbaa !62
  %1841 = load ptr, ptr %6, align 8, !tbaa !5
  %1842 = getelementptr inbounds %struct.inflate_state, ptr %1841, i32 0, i32 25
  %1843 = load i32, ptr %1842, align 8, !tbaa !63
  %1844 = add i32 %1840, %1843
  %1845 = icmp ugt i32 %1837, %1844
  br i1 %1845, label %1846, label %1851

1846:                                             ; preds = %1832
  %1847 = load ptr, ptr %4, align 8, !tbaa !5
  %1848 = getelementptr inbounds %struct.z_stream_s, ptr %1847, i32 0, i32 6
  store ptr @.str.10, ptr %1848, align 8, !tbaa !32
  %1849 = load ptr, ptr %6, align 8, !tbaa !5
  %1850 = getelementptr inbounds %struct.inflate_state, ptr %1849, i32 0, i32 0
  store i32 29, ptr %1850, align 8, !tbaa !17
  br label %1869

1851:                                             ; preds = %1832
  br label %1852

1852:                                             ; preds = %1856, %1851
  %1853 = load i32, ptr %15, align 4, !tbaa !9
  %1854 = add i32 %1853, -1
  store i32 %1854, ptr %15, align 4, !tbaa !9
  %1855 = icmp ne i32 %1853, 0
  br i1 %1855, label %1856, label %1867

1856:                                             ; preds = %1852
  %1857 = load i32, ptr %19, align 4, !tbaa !9
  %1858 = trunc i32 %1857 to i16
  %1859 = load ptr, ptr %6, align 8, !tbaa !5
  %1860 = getelementptr inbounds %struct.inflate_state, ptr %1859, i32 0, i32 28
  %1861 = load ptr, ptr %6, align 8, !tbaa !5
  %1862 = getelementptr inbounds %struct.inflate_state, ptr %1861, i32 0, i32 26
  %1863 = load i32, ptr %1862, align 4, !tbaa !65
  %1864 = add i32 %1863, 1
  store i32 %1864, ptr %1862, align 4, !tbaa !65
  %1865 = zext i32 %1863 to i64
  %1866 = getelementptr inbounds [320 x i16], ptr %1860, i64 0, i64 %1865
  store i16 %1858, ptr %1866, align 2, !tbaa !67
  br label %1852, !llvm.loop !82

1867:                                             ; preds = %1852
  br label %1868

1868:                                             ; preds = %1867, %1616
  br label %1512, !llvm.loop !83

1869:                                             ; preds = %1846, %1683, %1512
  %1870 = load ptr, ptr %6, align 8, !tbaa !5
  %1871 = getelementptr inbounds %struct.inflate_state, ptr %1870, i32 0, i32 0
  %1872 = load i32, ptr %1871, align 8, !tbaa !17
  %1873 = icmp eq i32 %1872, 29
  br i1 %1873, label %1874, label %1875

1874:                                             ; preds = %1869
  br label %2876

1875:                                             ; preds = %1869
  %1876 = load ptr, ptr %6, align 8, !tbaa !5
  %1877 = getelementptr inbounds %struct.inflate_state, ptr %1876, i32 0, i32 28
  %1878 = getelementptr inbounds [320 x i16], ptr %1877, i64 0, i64 256
  %1879 = load i16, ptr %1878, align 8, !tbaa !67
  %1880 = zext i16 %1879 to i32
  %1881 = icmp eq i32 %1880, 0
  br i1 %1881, label %1882, label %1887

1882:                                             ; preds = %1875
  %1883 = load ptr, ptr %4, align 8, !tbaa !5
  %1884 = getelementptr inbounds %struct.z_stream_s, ptr %1883, i32 0, i32 6
  store ptr @.str.11, ptr %1884, align 8, !tbaa !32
  %1885 = load ptr, ptr %6, align 8, !tbaa !5
  %1886 = getelementptr inbounds %struct.inflate_state, ptr %1885, i32 0, i32 0
  store i32 29, ptr %1886, align 8, !tbaa !17
  br label %2876

1887:                                             ; preds = %1875
  %1888 = load ptr, ptr %6, align 8, !tbaa !5
  %1889 = getelementptr inbounds %struct.inflate_state, ptr %1888, i32 0, i32 30
  %1890 = getelementptr inbounds [1444 x %struct.code], ptr %1889, i64 0, i64 0
  %1891 = load ptr, ptr %6, align 8, !tbaa !5
  %1892 = getelementptr inbounds %struct.inflate_state, ptr %1891, i32 0, i32 27
  store ptr %1890, ptr %1892, align 8, !tbaa !71
  %1893 = load ptr, ptr %6, align 8, !tbaa !5
  %1894 = getelementptr inbounds %struct.inflate_state, ptr %1893, i32 0, i32 27
  %1895 = load ptr, ptr %1894, align 8, !tbaa !71
  %1896 = load ptr, ptr %6, align 8, !tbaa !5
  %1897 = getelementptr inbounds %struct.inflate_state, ptr %1896, i32 0, i32 19
  store ptr %1895, ptr %1897, align 8, !tbaa !72
  %1898 = load ptr, ptr %6, align 8, !tbaa !5
  %1899 = getelementptr inbounds %struct.inflate_state, ptr %1898, i32 0, i32 21
  store i32 9, ptr %1899, align 8, !tbaa !73
  %1900 = load ptr, ptr %6, align 8, !tbaa !5
  %1901 = getelementptr inbounds %struct.inflate_state, ptr %1900, i32 0, i32 28
  %1902 = getelementptr inbounds [320 x i16], ptr %1901, i64 0, i64 0
  %1903 = load ptr, ptr %6, align 8, !tbaa !5
  %1904 = getelementptr inbounds %struct.inflate_state, ptr %1903, i32 0, i32 24
  %1905 = load i32, ptr %1904, align 4, !tbaa !62
  %1906 = load ptr, ptr %6, align 8, !tbaa !5
  %1907 = getelementptr inbounds %struct.inflate_state, ptr %1906, i32 0, i32 27
  %1908 = load ptr, ptr %6, align 8, !tbaa !5
  %1909 = getelementptr inbounds %struct.inflate_state, ptr %1908, i32 0, i32 21
  %1910 = load ptr, ptr %6, align 8, !tbaa !5
  %1911 = getelementptr inbounds %struct.inflate_state, ptr %1910, i32 0, i32 29
  %1912 = getelementptr inbounds [288 x i16], ptr %1911, i64 0, i64 0
  %1913 = call i32 @inflate_table(i32 noundef 1, ptr noundef %1902, i32 noundef %1905, ptr noundef %1907, ptr noundef %1909, ptr noundef %1912)
  store i32 %1913, ptr %20, align 4, !tbaa !9
  %1914 = load i32, ptr %20, align 4, !tbaa !9
  %1915 = icmp ne i32 %1914, 0
  br i1 %1915, label %1916, label %1921

1916:                                             ; preds = %1887
  %1917 = load ptr, ptr %4, align 8, !tbaa !5
  %1918 = getelementptr inbounds %struct.z_stream_s, ptr %1917, i32 0, i32 6
  store ptr @.str.12, ptr %1918, align 8, !tbaa !32
  %1919 = load ptr, ptr %6, align 8, !tbaa !5
  %1920 = getelementptr inbounds %struct.inflate_state, ptr %1919, i32 0, i32 0
  store i32 29, ptr %1920, align 8, !tbaa !17
  br label %2876

1921:                                             ; preds = %1887
  %1922 = load ptr, ptr %6, align 8, !tbaa !5
  %1923 = getelementptr inbounds %struct.inflate_state, ptr %1922, i32 0, i32 27
  %1924 = load ptr, ptr %1923, align 8, !tbaa !71
  %1925 = load ptr, ptr %6, align 8, !tbaa !5
  %1926 = getelementptr inbounds %struct.inflate_state, ptr %1925, i32 0, i32 20
  store ptr %1924, ptr %1926, align 8, !tbaa !84
  %1927 = load ptr, ptr %6, align 8, !tbaa !5
  %1928 = getelementptr inbounds %struct.inflate_state, ptr %1927, i32 0, i32 22
  store i32 6, ptr %1928, align 4, !tbaa !85
  %1929 = load ptr, ptr %6, align 8, !tbaa !5
  %1930 = getelementptr inbounds %struct.inflate_state, ptr %1929, i32 0, i32 28
  %1931 = getelementptr inbounds [320 x i16], ptr %1930, i64 0, i64 0
  %1932 = load ptr, ptr %6, align 8, !tbaa !5
  %1933 = getelementptr inbounds %struct.inflate_state, ptr %1932, i32 0, i32 24
  %1934 = load i32, ptr %1933, align 4, !tbaa !62
  %1935 = zext i32 %1934 to i64
  %1936 = getelementptr inbounds i16, ptr %1931, i64 %1935
  %1937 = load ptr, ptr %6, align 8, !tbaa !5
  %1938 = getelementptr inbounds %struct.inflate_state, ptr %1937, i32 0, i32 25
  %1939 = load i32, ptr %1938, align 8, !tbaa !63
  %1940 = load ptr, ptr %6, align 8, !tbaa !5
  %1941 = getelementptr inbounds %struct.inflate_state, ptr %1940, i32 0, i32 27
  %1942 = load ptr, ptr %6, align 8, !tbaa !5
  %1943 = getelementptr inbounds %struct.inflate_state, ptr %1942, i32 0, i32 22
  %1944 = load ptr, ptr %6, align 8, !tbaa !5
  %1945 = getelementptr inbounds %struct.inflate_state, ptr %1944, i32 0, i32 29
  %1946 = getelementptr inbounds [288 x i16], ptr %1945, i64 0, i64 0
  %1947 = call i32 @inflate_table(i32 noundef 2, ptr noundef %1936, i32 noundef %1939, ptr noundef %1941, ptr noundef %1943, ptr noundef %1946)
  store i32 %1947, ptr %20, align 4, !tbaa !9
  %1948 = load i32, ptr %20, align 4, !tbaa !9
  %1949 = icmp ne i32 %1948, 0
  br i1 %1949, label %1950, label %1955

1950:                                             ; preds = %1921
  %1951 = load ptr, ptr %4, align 8, !tbaa !5
  %1952 = getelementptr inbounds %struct.z_stream_s, ptr %1951, i32 0, i32 6
  store ptr @.str.13, ptr %1952, align 8, !tbaa !32
  %1953 = load ptr, ptr %6, align 8, !tbaa !5
  %1954 = getelementptr inbounds %struct.inflate_state, ptr %1953, i32 0, i32 0
  store i32 29, ptr %1954, align 8, !tbaa !17
  br label %2876

1955:                                             ; preds = %1921
  %1956 = load ptr, ptr %6, align 8, !tbaa !5
  %1957 = getelementptr inbounds %struct.inflate_state, ptr %1956, i32 0, i32 0
  store i32 19, ptr %1957, align 8, !tbaa !17
  %1958 = load i32, ptr %5, align 4, !tbaa !9
  %1959 = icmp eq i32 %1958, 6
  br i1 %1959, label %1960, label %1961

1960:                                             ; preds = %1955
  br label %2877

1961:                                             ; preds = %1955
  br label %1962

1962:                                             ; preds = %1961, %81
  %1963 = load ptr, ptr %6, align 8, !tbaa !5
  %1964 = getelementptr inbounds %struct.inflate_state, ptr %1963, i32 0, i32 0
  store i32 20, ptr %1964, align 8, !tbaa !17
  br label %1965

1965:                                             ; preds = %1962, %81
  %1966 = load i32, ptr %9, align 4, !tbaa !9
  %1967 = icmp uge i32 %1966, 6
  br i1 %1967, label %1968, label %2024

1968:                                             ; preds = %1965
  %1969 = load i32, ptr %10, align 4, !tbaa !9
  %1970 = icmp uge i32 %1969, 258
  br i1 %1970, label %1971, label %2024

1971:                                             ; preds = %1968
  br label %1972

1972:                                             ; preds = %1971
  %1973 = load ptr, ptr %8, align 8, !tbaa !5
  %1974 = load ptr, ptr %4, align 8, !tbaa !5
  %1975 = getelementptr inbounds %struct.z_stream_s, ptr %1974, i32 0, i32 3
  store ptr %1973, ptr %1975, align 8, !tbaa !14
  %1976 = load i32, ptr %10, align 4, !tbaa !9
  %1977 = load ptr, ptr %4, align 8, !tbaa !5
  %1978 = getelementptr inbounds %struct.z_stream_s, ptr %1977, i32 0, i32 4
  store i32 %1976, ptr %1978, align 8, !tbaa !19
  %1979 = load ptr, ptr %7, align 8, !tbaa !5
  %1980 = load ptr, ptr %4, align 8, !tbaa !5
  %1981 = getelementptr inbounds %struct.z_stream_s, ptr %1980, i32 0, i32 0
  store ptr %1979, ptr %1981, align 8, !tbaa !15
  %1982 = load i32, ptr %9, align 4, !tbaa !9
  %1983 = load ptr, ptr %4, align 8, !tbaa !5
  %1984 = getelementptr inbounds %struct.z_stream_s, ptr %1983, i32 0, i32 1
  store i32 %1982, ptr %1984, align 8, !tbaa !16
  %1985 = load i64, ptr %11, align 8, !tbaa !21
  %1986 = load ptr, ptr %6, align 8, !tbaa !5
  %1987 = getelementptr inbounds %struct.inflate_state, ptr %1986, i32 0, i32 14
  store i64 %1985, ptr %1987, align 8, !tbaa !20
  %1988 = load i32, ptr %12, align 4, !tbaa !9
  %1989 = load ptr, ptr %6, align 8, !tbaa !5
  %1990 = getelementptr inbounds %struct.inflate_state, ptr %1989, i32 0, i32 15
  store i32 %1988, ptr %1990, align 8, !tbaa !22
  br label %1991

1991:                                             ; preds = %1972
  br label %1992

1992:                                             ; preds = %1991
  %1993 = load ptr, ptr %4, align 8, !tbaa !5
  %1994 = load i32, ptr %14, align 4, !tbaa !9
  call void @inflate_fast(ptr noundef %1993, i32 noundef %1994)
  br label %1995

1995:                                             ; preds = %1992
  %1996 = load ptr, ptr %4, align 8, !tbaa !5
  %1997 = getelementptr inbounds %struct.z_stream_s, ptr %1996, i32 0, i32 3
  %1998 = load ptr, ptr %1997, align 8, !tbaa !14
  store ptr %1998, ptr %8, align 8, !tbaa !5
  %1999 = load ptr, ptr %4, align 8, !tbaa !5
  %2000 = getelementptr inbounds %struct.z_stream_s, ptr %1999, i32 0, i32 4
  %2001 = load i32, ptr %2000, align 8, !tbaa !19
  store i32 %2001, ptr %10, align 4, !tbaa !9
  %2002 = load ptr, ptr %4, align 8, !tbaa !5
  %2003 = getelementptr inbounds %struct.z_stream_s, ptr %2002, i32 0, i32 0
  %2004 = load ptr, ptr %2003, align 8, !tbaa !15
  store ptr %2004, ptr %7, align 8, !tbaa !5
  %2005 = load ptr, ptr %4, align 8, !tbaa !5
  %2006 = getelementptr inbounds %struct.z_stream_s, ptr %2005, i32 0, i32 1
  %2007 = load i32, ptr %2006, align 8, !tbaa !16
  store i32 %2007, ptr %9, align 4, !tbaa !9
  %2008 = load ptr, ptr %6, align 8, !tbaa !5
  %2009 = getelementptr inbounds %struct.inflate_state, ptr %2008, i32 0, i32 14
  %2010 = load i64, ptr %2009, align 8, !tbaa !20
  store i64 %2010, ptr %11, align 8, !tbaa !21
  %2011 = load ptr, ptr %6, align 8, !tbaa !5
  %2012 = getelementptr inbounds %struct.inflate_state, ptr %2011, i32 0, i32 15
  %2013 = load i32, ptr %2012, align 8, !tbaa !22
  store i32 %2013, ptr %12, align 4, !tbaa !9
  br label %2014

2014:                                             ; preds = %1995
  br label %2015

2015:                                             ; preds = %2014
  %2016 = load ptr, ptr %6, align 8, !tbaa !5
  %2017 = getelementptr inbounds %struct.inflate_state, ptr %2016, i32 0, i32 0
  %2018 = load i32, ptr %2017, align 8, !tbaa !17
  %2019 = icmp eq i32 %2018, 11
  br i1 %2019, label %2020, label %2023

2020:                                             ; preds = %2015
  %2021 = load ptr, ptr %6, align 8, !tbaa !5
  %2022 = getelementptr inbounds %struct.inflate_state, ptr %2021, i32 0, i32 32
  store i32 -1, ptr %2022, align 4, !tbaa !86
  br label %2023

2023:                                             ; preds = %2020, %2015
  br label %2876

2024:                                             ; preds = %1968, %1965
  %2025 = load ptr, ptr %6, align 8, !tbaa !5
  %2026 = getelementptr inbounds %struct.inflate_state, ptr %2025, i32 0, i32 32
  store i32 0, ptr %2026, align 4, !tbaa !86
  br label %2027

2027:                                             ; preds = %2067, %2024
  %2028 = load ptr, ptr %6, align 8, !tbaa !5
  %2029 = getelementptr inbounds %struct.inflate_state, ptr %2028, i32 0, i32 19
  %2030 = load ptr, ptr %2029, align 8, !tbaa !72
  %2031 = load i64, ptr %11, align 8, !tbaa !21
  %2032 = trunc i64 %2031 to i32
  %2033 = load ptr, ptr %6, align 8, !tbaa !5
  %2034 = getelementptr inbounds %struct.inflate_state, ptr %2033, i32 0, i32 21
  %2035 = load i32, ptr %2034, align 8, !tbaa !73
  %2036 = shl i32 1, %2035
  %2037 = sub i32 %2036, 1
  %2038 = and i32 %2032, %2037
  %2039 = zext i32 %2038 to i64
  %2040 = getelementptr inbounds %struct.code, ptr %2030, i64 %2039
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %17, ptr align 2 %2040, i64 4, i1 false), !tbaa.struct !74
  %2041 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2042 = load i8, ptr %2041, align 1, !tbaa !75
  %2043 = zext i8 %2042 to i32
  %2044 = load i32, ptr %12, align 4, !tbaa !9
  %2045 = icmp ule i32 %2043, %2044
  br i1 %2045, label %2046, label %2047

2046:                                             ; preds = %2027
  br label %2068

2047:                                             ; preds = %2027
  br label %2048

2048:                                             ; preds = %2047
  %2049 = load i32, ptr %9, align 4, !tbaa !9
  %2050 = icmp eq i32 %2049, 0
  br i1 %2050, label %2051, label %2052

2051:                                             ; preds = %2048
  br label %2877

2052:                                             ; preds = %2048
  %2053 = load i32, ptr %9, align 4, !tbaa !9
  %2054 = add i32 %2053, -1
  store i32 %2054, ptr %9, align 4, !tbaa !9
  %2055 = load ptr, ptr %7, align 8, !tbaa !5
  %2056 = getelementptr inbounds i8, ptr %2055, i32 1
  store ptr %2056, ptr %7, align 8, !tbaa !5
  %2057 = load i8, ptr %2055, align 1, !tbaa !24
  %2058 = zext i8 %2057 to i64
  %2059 = load i32, ptr %12, align 4, !tbaa !9
  %2060 = zext i32 %2059 to i64
  %2061 = shl i64 %2058, %2060
  %2062 = load i64, ptr %11, align 8, !tbaa !21
  %2063 = add i64 %2062, %2061
  store i64 %2063, ptr %11, align 8, !tbaa !21
  %2064 = load i32, ptr %12, align 4, !tbaa !9
  %2065 = add i32 %2064, 8
  store i32 %2065, ptr %12, align 4, !tbaa !9
  br label %2066

2066:                                             ; preds = %2052
  br label %2067

2067:                                             ; preds = %2066
  br label %2027

2068:                                             ; preds = %2046
  %2069 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2070 = load i8, ptr %2069, align 2, !tbaa !87
  %2071 = zext i8 %2070 to i32
  %2072 = icmp ne i32 %2071, 0
  br i1 %2072, label %2073, label %2159

2073:                                             ; preds = %2068
  %2074 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2075 = load i8, ptr %2074, align 2, !tbaa !87
  %2076 = zext i8 %2075 to i32
  %2077 = and i32 %2076, 240
  %2078 = icmp eq i32 %2077, 0
  br i1 %2078, label %2079, label %2159

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

2080:                                             ; preds = %2136, %2079
  %2081 = load ptr, ptr %6, align 8, !tbaa !5
  %2082 = getelementptr inbounds %struct.inflate_state, ptr %2081, i32 0, i32 19
  %2083 = load ptr, ptr %2082, align 8, !tbaa !72
  %2084 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 2
  %2085 = load i16, ptr %2084, align 2, !tbaa !77
  %2086 = zext i16 %2085 to i32
  %2087 = load i64, ptr %11, align 8, !tbaa !21
  %2088 = trunc i64 %2087 to i32
  %2089 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2090 = load i8, ptr %2089, align 1, !tbaa !75
  %2091 = zext i8 %2090 to i32
  %2092 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 0
  %2093 = load i8, ptr %2092, align 2, !tbaa !87
  %2094 = zext i8 %2093 to i32
  %2095 = add nsw i32 %2091, %2094
  %2096 = shl i32 1, %2095
  %2097 = sub i32 %2096, 1
  %2098 = and i32 %2088, %2097
  %2099 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2100 = load i8, ptr %2099, align 1, !tbaa !75
  %2101 = zext i8 %2100 to i32
  %2102 = lshr i32 %2098, %2101
  %2103 = add i32 %2086, %2102
  %2104 = zext i32 %2103 to i64
  %2105 = getelementptr inbounds %struct.code, ptr %2083, i64 %2104
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %17, ptr align 2 %2105, i64 4, i1 false), !tbaa.struct !74
  %2106 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2107 = load i8, ptr %2106, align 1, !tbaa !75
  %2108 = zext i8 %2107 to i32
  %2109 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2110 = load i8, ptr %2109, align 1, !tbaa !75
  %2111 = zext i8 %2110 to i32
  %2112 = add nsw i32 %2108, %2111
  %2113 = load i32, ptr %12, align 4, !tbaa !9
  %2114 = icmp ule i32 %2112, %2113
  br i1 %2114, label %2115, label %2116

2115:                                             ; preds = %2080
  br label %2137

2116:                                             ; preds = %2080
  br label %2117

2117:                                             ; preds = %2116
  %2118 = load i32, ptr %9, align 4, !tbaa !9
  %2119 = icmp eq i32 %2118, 0
  br i1 %2119, label %2120, label %2121

2120:                                             ; preds = %2117
  br label %2877

2121:                                             ; preds = %2117
  %2122 = load i32, ptr %9, align 4, !tbaa !9
  %2123 = add i32 %2122, -1
  store i32 %2123, ptr %9, align 4, !tbaa !9
  %2124 = load ptr, ptr %7, align 8, !tbaa !5
  %2125 = getelementptr inbounds i8, ptr %2124, i32 1
  store ptr %2125, ptr %7, align 8, !tbaa !5
  %2126 = load i8, ptr %2124, align 1, !tbaa !24
  %2127 = zext i8 %2126 to i64
  %2128 = load i32, ptr %12, align 4, !tbaa !9
  %2129 = zext i32 %2128 to i64
  %2130 = shl i64 %2127, %2129
  %2131 = load i64, ptr %11, align 8, !tbaa !21
  %2132 = add i64 %2131, %2130
  store i64 %2132, ptr %11, align 8, !tbaa !21
  %2133 = load i32, ptr %12, align 4, !tbaa !9
  %2134 = add i32 %2133, 8
  store i32 %2134, ptr %12, align 4, !tbaa !9
  br label %2135

2135:                                             ; preds = %2121
  br label %2136

2136:                                             ; preds = %2135
  br label %2080

2137:                                             ; preds = %2115
  br label %2138

2138:                                             ; preds = %2137
  %2139 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2140 = load i8, ptr %2139, align 1, !tbaa !75
  %2141 = zext i8 %2140 to i32
  %2142 = load i64, ptr %11, align 8, !tbaa !21
  %2143 = zext i32 %2141 to i64
  %2144 = lshr i64 %2142, %2143
  store i64 %2144, ptr %11, align 8, !tbaa !21
  %2145 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2146 = load i8, ptr %2145, align 1, !tbaa !75
  %2147 = zext i8 %2146 to i32
  %2148 = load i32, ptr %12, align 4, !tbaa !9
  %2149 = sub i32 %2148, %2147
  store i32 %2149, ptr %12, align 4, !tbaa !9
  br label %2150

2150:                                             ; preds = %2138
  br label %2151

2151:                                             ; preds = %2150
  %2152 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2153 = load i8, ptr %2152, align 1, !tbaa !75
  %2154 = zext i8 %2153 to i32
  %2155 = load ptr, ptr %6, align 8, !tbaa !5
  %2156 = getelementptr inbounds %struct.inflate_state, ptr %2155, i32 0, i32 32
  %2157 = load i32, ptr %2156, align 4, !tbaa !86
  %2158 = add nsw i32 %2157, %2154
  store i32 %2158, ptr %2156, align 4, !tbaa !86
  br label %2159

2159:                                             ; preds = %2151, %2073, %2068
  br label %2160

2160:                                             ; preds = %2159
  %2161 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2162 = load i8, ptr %2161, align 1, !tbaa !75
  %2163 = zext i8 %2162 to i32
  %2164 = load i64, ptr %11, align 8, !tbaa !21
  %2165 = zext i32 %2163 to i64
  %2166 = lshr i64 %2164, %2165
  store i64 %2166, ptr %11, align 8, !tbaa !21
  %2167 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2168 = load i8, ptr %2167, align 1, !tbaa !75
  %2169 = zext i8 %2168 to i32
  %2170 = load i32, ptr %12, align 4, !tbaa !9
  %2171 = sub i32 %2170, %2169
  store i32 %2171, ptr %12, align 4, !tbaa !9
  br label %2172

2172:                                             ; preds = %2160
  br label %2173

2173:                                             ; preds = %2172
  %2174 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2175 = load i8, ptr %2174, align 1, !tbaa !75
  %2176 = zext i8 %2175 to i32
  %2177 = load ptr, ptr %6, align 8, !tbaa !5
  %2178 = getelementptr inbounds %struct.inflate_state, ptr %2177, i32 0, i32 32
  %2179 = load i32, ptr %2178, align 4, !tbaa !86
  %2180 = add nsw i32 %2179, %2176
  store i32 %2180, ptr %2178, align 4, !tbaa !86
  %2181 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 2
  %2182 = load i16, ptr %2181, align 2, !tbaa !77
  %2183 = zext i16 %2182 to i32
  %2184 = load ptr, ptr %6, align 8, !tbaa !5
  %2185 = getelementptr inbounds %struct.inflate_state, ptr %2184, i32 0, i32 16
  store i32 %2183, ptr %2185, align 4, !tbaa !44
  %2186 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2187 = load i8, ptr %2186, align 2, !tbaa !87
  %2188 = zext i8 %2187 to i32
  %2189 = icmp eq i32 %2188, 0
  br i1 %2189, label %2190, label %2193

2190:                                             ; preds = %2173
  %2191 = load ptr, ptr %6, align 8, !tbaa !5
  %2192 = getelementptr inbounds %struct.inflate_state, ptr %2191, i32 0, i32 0
  store i32 25, ptr %2192, align 8, !tbaa !17
  br label %2876

2193:                                             ; preds = %2173
  %2194 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2195 = load i8, ptr %2194, align 2, !tbaa !87
  %2196 = zext i8 %2195 to i32
  %2197 = and i32 %2196, 32
  %2198 = icmp ne i32 %2197, 0
  br i1 %2198, label %2199, label %2204

2199:                                             ; preds = %2193
  %2200 = load ptr, ptr %6, align 8, !tbaa !5
  %2201 = getelementptr inbounds %struct.inflate_state, ptr %2200, i32 0, i32 32
  store i32 -1, ptr %2201, align 4, !tbaa !86
  %2202 = load ptr, ptr %6, align 8, !tbaa !5
  %2203 = getelementptr inbounds %struct.inflate_state, ptr %2202, i32 0, i32 0
  store i32 11, ptr %2203, align 8, !tbaa !17
  br label %2876

2204:                                             ; preds = %2193
  %2205 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2206 = load i8, ptr %2205, align 2, !tbaa !87
  %2207 = zext i8 %2206 to i32
  %2208 = and i32 %2207, 64
  %2209 = icmp ne i32 %2208, 0
  br i1 %2209, label %2210, label %2215

2210:                                             ; preds = %2204
  %2211 = load ptr, ptr %4, align 8, !tbaa !5
  %2212 = getelementptr inbounds %struct.z_stream_s, ptr %2211, i32 0, i32 6
  store ptr @.str.14, ptr %2212, align 8, !tbaa !32
  %2213 = load ptr, ptr %6, align 8, !tbaa !5
  %2214 = getelementptr inbounds %struct.inflate_state, ptr %2213, i32 0, i32 0
  store i32 29, ptr %2214, align 8, !tbaa !17
  br label %2876

2215:                                             ; preds = %2204
  %2216 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2217 = load i8, ptr %2216, align 2, !tbaa !87
  %2218 = zext i8 %2217 to i32
  %2219 = and i32 %2218, 15
  %2220 = load ptr, ptr %6, align 8, !tbaa !5
  %2221 = getelementptr inbounds %struct.inflate_state, ptr %2220, i32 0, i32 18
  store i32 %2219, ptr %2221, align 4, !tbaa !88
  %2222 = load ptr, ptr %6, align 8, !tbaa !5
  %2223 = getelementptr inbounds %struct.inflate_state, ptr %2222, i32 0, i32 0
  store i32 21, ptr %2223, align 8, !tbaa !17
  br label %2224

2224:                                             ; preds = %2215, %81
  %2225 = load ptr, ptr %6, align 8, !tbaa !5
  %2226 = getelementptr inbounds %struct.inflate_state, ptr %2225, i32 0, i32 18
  %2227 = load i32, ptr %2226, align 4, !tbaa !88
  %2228 = icmp ne i32 %2227, 0
  br i1 %2228, label %2229, label %2294

2229:                                             ; preds = %2224
  br label %2230

2230:                                             ; preds = %2229
  br label %2231

2231:                                             ; preds = %2257, %2230
  %2232 = load i32, ptr %12, align 4, !tbaa !9
  %2233 = load ptr, ptr %6, align 8, !tbaa !5
  %2234 = getelementptr inbounds %struct.inflate_state, ptr %2233, i32 0, i32 18
  %2235 = load i32, ptr %2234, align 4, !tbaa !88
  %2236 = icmp ult i32 %2232, %2235
  br i1 %2236, label %2237, label %2258

2237:                                             ; preds = %2231
  br label %2238

2238:                                             ; preds = %2237
  %2239 = load i32, ptr %9, align 4, !tbaa !9
  %2240 = icmp eq i32 %2239, 0
  br i1 %2240, label %2241, label %2242

2241:                                             ; preds = %2238
  br label %2877

2242:                                             ; preds = %2238
  %2243 = load i32, ptr %9, align 4, !tbaa !9
  %2244 = add i32 %2243, -1
  store i32 %2244, ptr %9, align 4, !tbaa !9
  %2245 = load ptr, ptr %7, align 8, !tbaa !5
  %2246 = getelementptr inbounds i8, ptr %2245, i32 1
  store ptr %2246, ptr %7, align 8, !tbaa !5
  %2247 = load i8, ptr %2245, align 1, !tbaa !24
  %2248 = zext i8 %2247 to i64
  %2249 = load i32, ptr %12, align 4, !tbaa !9
  %2250 = zext i32 %2249 to i64
  %2251 = shl i64 %2248, %2250
  %2252 = load i64, ptr %11, align 8, !tbaa !21
  %2253 = add i64 %2252, %2251
  store i64 %2253, ptr %11, align 8, !tbaa !21
  %2254 = load i32, ptr %12, align 4, !tbaa !9
  %2255 = add i32 %2254, 8
  store i32 %2255, ptr %12, align 4, !tbaa !9
  br label %2256

2256:                                             ; preds = %2242
  br label %2257

2257:                                             ; preds = %2256
  br label %2231, !llvm.loop !89

2258:                                             ; preds = %2231
  br label %2259

2259:                                             ; preds = %2258
  br label %2260

2260:                                             ; preds = %2259
  %2261 = load i64, ptr %11, align 8, !tbaa !21
  %2262 = trunc i64 %2261 to i32
  %2263 = load ptr, ptr %6, align 8, !tbaa !5
  %2264 = getelementptr inbounds %struct.inflate_state, ptr %2263, i32 0, i32 18
  %2265 = load i32, ptr %2264, align 4, !tbaa !88
  %2266 = shl i32 1, %2265
  %2267 = sub i32 %2266, 1
  %2268 = and i32 %2262, %2267
  %2269 = load ptr, ptr %6, align 8, !tbaa !5
  %2270 = getelementptr inbounds %struct.inflate_state, ptr %2269, i32 0, i32 16
  %2271 = load i32, ptr %2270, align 4, !tbaa !44
  %2272 = add i32 %2271, %2268
  store i32 %2272, ptr %2270, align 4, !tbaa !44
  br label %2273

2273:                                             ; preds = %2260
  %2274 = load ptr, ptr %6, align 8, !tbaa !5
  %2275 = getelementptr inbounds %struct.inflate_state, ptr %2274, i32 0, i32 18
  %2276 = load i32, ptr %2275, align 4, !tbaa !88
  %2277 = load i64, ptr %11, align 8, !tbaa !21
  %2278 = zext i32 %2276 to i64
  %2279 = lshr i64 %2277, %2278
  store i64 %2279, ptr %11, align 8, !tbaa !21
  %2280 = load ptr, ptr %6, align 8, !tbaa !5
  %2281 = getelementptr inbounds %struct.inflate_state, ptr %2280, i32 0, i32 18
  %2282 = load i32, ptr %2281, align 4, !tbaa !88
  %2283 = load i32, ptr %12, align 4, !tbaa !9
  %2284 = sub i32 %2283, %2282
  store i32 %2284, ptr %12, align 4, !tbaa !9
  br label %2285

2285:                                             ; preds = %2273
  br label %2286

2286:                                             ; preds = %2285
  %2287 = load ptr, ptr %6, align 8, !tbaa !5
  %2288 = getelementptr inbounds %struct.inflate_state, ptr %2287, i32 0, i32 18
  %2289 = load i32, ptr %2288, align 4, !tbaa !88
  %2290 = load ptr, ptr %6, align 8, !tbaa !5
  %2291 = getelementptr inbounds %struct.inflate_state, ptr %2290, i32 0, i32 32
  %2292 = load i32, ptr %2291, align 4, !tbaa !86
  %2293 = add i32 %2292, %2289
  store i32 %2293, ptr %2291, align 4, !tbaa !86
  br label %2294

2294:                                             ; preds = %2286, %2224
  %2295 = load ptr, ptr %6, align 8, !tbaa !5
  %2296 = getelementptr inbounds %struct.inflate_state, ptr %2295, i32 0, i32 16
  %2297 = load i32, ptr %2296, align 4, !tbaa !44
  %2298 = load ptr, ptr %6, align 8, !tbaa !5
  %2299 = getelementptr inbounds %struct.inflate_state, ptr %2298, i32 0, i32 33
  store i32 %2297, ptr %2299, align 8, !tbaa !90
  %2300 = load ptr, ptr %6, align 8, !tbaa !5
  %2301 = getelementptr inbounds %struct.inflate_state, ptr %2300, i32 0, i32 0
  store i32 22, ptr %2301, align 8, !tbaa !17
  br label %2302

2302:                                             ; preds = %2294, %81
  br label %2303

2303:                                             ; preds = %2343, %2302
  %2304 = load ptr, ptr %6, align 8, !tbaa !5
  %2305 = getelementptr inbounds %struct.inflate_state, ptr %2304, i32 0, i32 20
  %2306 = load ptr, ptr %2305, align 8, !tbaa !84
  %2307 = load i64, ptr %11, align 8, !tbaa !21
  %2308 = trunc i64 %2307 to i32
  %2309 = load ptr, ptr %6, align 8, !tbaa !5
  %2310 = getelementptr inbounds %struct.inflate_state, ptr %2309, i32 0, i32 22
  %2311 = load i32, ptr %2310, align 4, !tbaa !85
  %2312 = shl i32 1, %2311
  %2313 = sub i32 %2312, 1
  %2314 = and i32 %2308, %2313
  %2315 = zext i32 %2314 to i64
  %2316 = getelementptr inbounds %struct.code, ptr %2306, i64 %2315
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %17, ptr align 2 %2316, i64 4, i1 false), !tbaa.struct !74
  %2317 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2318 = load i8, ptr %2317, align 1, !tbaa !75
  %2319 = zext i8 %2318 to i32
  %2320 = load i32, ptr %12, align 4, !tbaa !9
  %2321 = icmp ule i32 %2319, %2320
  br i1 %2321, label %2322, label %2323

2322:                                             ; preds = %2303
  br label %2344

2323:                                             ; preds = %2303
  br label %2324

2324:                                             ; preds = %2323
  %2325 = load i32, ptr %9, align 4, !tbaa !9
  %2326 = icmp eq i32 %2325, 0
  br i1 %2326, label %2327, label %2328

2327:                                             ; preds = %2324
  br label %2877

2328:                                             ; preds = %2324
  %2329 = load i32, ptr %9, align 4, !tbaa !9
  %2330 = add i32 %2329, -1
  store i32 %2330, ptr %9, align 4, !tbaa !9
  %2331 = load ptr, ptr %7, align 8, !tbaa !5
  %2332 = getelementptr inbounds i8, ptr %2331, i32 1
  store ptr %2332, ptr %7, align 8, !tbaa !5
  %2333 = load i8, ptr %2331, align 1, !tbaa !24
  %2334 = zext i8 %2333 to i64
  %2335 = load i32, ptr %12, align 4, !tbaa !9
  %2336 = zext i32 %2335 to i64
  %2337 = shl i64 %2334, %2336
  %2338 = load i64, ptr %11, align 8, !tbaa !21
  %2339 = add i64 %2338, %2337
  store i64 %2339, ptr %11, align 8, !tbaa !21
  %2340 = load i32, ptr %12, align 4, !tbaa !9
  %2341 = add i32 %2340, 8
  store i32 %2341, ptr %12, align 4, !tbaa !9
  br label %2342

2342:                                             ; preds = %2328
  br label %2343

2343:                                             ; preds = %2342
  br label %2303

2344:                                             ; preds = %2322
  %2345 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2346 = load i8, ptr %2345, align 2, !tbaa !87
  %2347 = zext i8 %2346 to i32
  %2348 = and i32 %2347, 240
  %2349 = icmp eq i32 %2348, 0
  br i1 %2349, label %2350, label %2430

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

2351:                                             ; preds = %2407, %2350
  %2352 = load ptr, ptr %6, align 8, !tbaa !5
  %2353 = getelementptr inbounds %struct.inflate_state, ptr %2352, i32 0, i32 20
  %2354 = load ptr, ptr %2353, align 8, !tbaa !84
  %2355 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 2
  %2356 = load i16, ptr %2355, align 2, !tbaa !77
  %2357 = zext i16 %2356 to i32
  %2358 = load i64, ptr %11, align 8, !tbaa !21
  %2359 = trunc i64 %2358 to i32
  %2360 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2361 = load i8, ptr %2360, align 1, !tbaa !75
  %2362 = zext i8 %2361 to i32
  %2363 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 0
  %2364 = load i8, ptr %2363, align 2, !tbaa !87
  %2365 = zext i8 %2364 to i32
  %2366 = add nsw i32 %2362, %2365
  %2367 = shl i32 1, %2366
  %2368 = sub i32 %2367, 1
  %2369 = and i32 %2359, %2368
  %2370 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2371 = load i8, ptr %2370, align 1, !tbaa !75
  %2372 = zext i8 %2371 to i32
  %2373 = lshr i32 %2369, %2372
  %2374 = add i32 %2357, %2373
  %2375 = zext i32 %2374 to i64
  %2376 = getelementptr inbounds %struct.code, ptr %2354, i64 %2375
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %17, ptr align 2 %2376, i64 4, i1 false), !tbaa.struct !74
  %2377 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2378 = load i8, ptr %2377, align 1, !tbaa !75
  %2379 = zext i8 %2378 to i32
  %2380 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2381 = load i8, ptr %2380, align 1, !tbaa !75
  %2382 = zext i8 %2381 to i32
  %2383 = add nsw i32 %2379, %2382
  %2384 = load i32, ptr %12, align 4, !tbaa !9
  %2385 = icmp ule i32 %2383, %2384
  br i1 %2385, label %2386, label %2387

2386:                                             ; preds = %2351
  br label %2408

2387:                                             ; preds = %2351
  br label %2388

2388:                                             ; preds = %2387
  %2389 = load i32, ptr %9, align 4, !tbaa !9
  %2390 = icmp eq i32 %2389, 0
  br i1 %2390, label %2391, label %2392

2391:                                             ; preds = %2388
  br label %2877

2392:                                             ; preds = %2388
  %2393 = load i32, ptr %9, align 4, !tbaa !9
  %2394 = add i32 %2393, -1
  store i32 %2394, ptr %9, align 4, !tbaa !9
  %2395 = load ptr, ptr %7, align 8, !tbaa !5
  %2396 = getelementptr inbounds i8, ptr %2395, i32 1
  store ptr %2396, ptr %7, align 8, !tbaa !5
  %2397 = load i8, ptr %2395, align 1, !tbaa !24
  %2398 = zext i8 %2397 to i64
  %2399 = load i32, ptr %12, align 4, !tbaa !9
  %2400 = zext i32 %2399 to i64
  %2401 = shl i64 %2398, %2400
  %2402 = load i64, ptr %11, align 8, !tbaa !21
  %2403 = add i64 %2402, %2401
  store i64 %2403, ptr %11, align 8, !tbaa !21
  %2404 = load i32, ptr %12, align 4, !tbaa !9
  %2405 = add i32 %2404, 8
  store i32 %2405, ptr %12, align 4, !tbaa !9
  br label %2406

2406:                                             ; preds = %2392
  br label %2407

2407:                                             ; preds = %2406
  br label %2351

2408:                                             ; preds = %2386
  br label %2409

2409:                                             ; preds = %2408
  %2410 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2411 = load i8, ptr %2410, align 1, !tbaa !75
  %2412 = zext i8 %2411 to i32
  %2413 = load i64, ptr %11, align 8, !tbaa !21
  %2414 = zext i32 %2412 to i64
  %2415 = lshr i64 %2413, %2414
  store i64 %2415, ptr %11, align 8, !tbaa !21
  %2416 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2417 = load i8, ptr %2416, align 1, !tbaa !75
  %2418 = zext i8 %2417 to i32
  %2419 = load i32, ptr %12, align 4, !tbaa !9
  %2420 = sub i32 %2419, %2418
  store i32 %2420, ptr %12, align 4, !tbaa !9
  br label %2421

2421:                                             ; preds = %2409
  br label %2422

2422:                                             ; preds = %2421
  %2423 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2424 = load i8, ptr %2423, align 1, !tbaa !75
  %2425 = zext i8 %2424 to i32
  %2426 = load ptr, ptr %6, align 8, !tbaa !5
  %2427 = getelementptr inbounds %struct.inflate_state, ptr %2426, i32 0, i32 32
  %2428 = load i32, ptr %2427, align 4, !tbaa !86
  %2429 = add nsw i32 %2428, %2425
  store i32 %2429, ptr %2427, align 4, !tbaa !86
  br label %2430

2430:                                             ; preds = %2422, %2344
  br label %2431

2431:                                             ; preds = %2430
  %2432 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2433 = load i8, ptr %2432, align 1, !tbaa !75
  %2434 = zext i8 %2433 to i32
  %2435 = load i64, ptr %11, align 8, !tbaa !21
  %2436 = zext i32 %2434 to i64
  %2437 = lshr i64 %2435, %2436
  store i64 %2437, ptr %11, align 8, !tbaa !21
  %2438 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2439 = load i8, ptr %2438, align 1, !tbaa !75
  %2440 = zext i8 %2439 to i32
  %2441 = load i32, ptr %12, align 4, !tbaa !9
  %2442 = sub i32 %2441, %2440
  store i32 %2442, ptr %12, align 4, !tbaa !9
  br label %2443

2443:                                             ; preds = %2431
  br label %2444

2444:                                             ; preds = %2443
  %2445 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2446 = load i8, ptr %2445, align 1, !tbaa !75
  %2447 = zext i8 %2446 to i32
  %2448 = load ptr, ptr %6, align 8, !tbaa !5
  %2449 = getelementptr inbounds %struct.inflate_state, ptr %2448, i32 0, i32 32
  %2450 = load i32, ptr %2449, align 4, !tbaa !86
  %2451 = add nsw i32 %2450, %2447
  store i32 %2451, ptr %2449, align 4, !tbaa !86
  %2452 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2453 = load i8, ptr %2452, align 2, !tbaa !87
  %2454 = zext i8 %2453 to i32
  %2455 = and i32 %2454, 64
  %2456 = icmp ne i32 %2455, 0
  br i1 %2456, label %2457, label %2462

2457:                                             ; preds = %2444
  %2458 = load ptr, ptr %4, align 8, !tbaa !5
  %2459 = getelementptr inbounds %struct.z_stream_s, ptr %2458, i32 0, i32 6
  store ptr @.str.15, ptr %2459, align 8, !tbaa !32
  %2460 = load ptr, ptr %6, align 8, !tbaa !5
  %2461 = getelementptr inbounds %struct.inflate_state, ptr %2460, i32 0, i32 0
  store i32 29, ptr %2461, align 8, !tbaa !17
  br label %2876

2462:                                             ; preds = %2444
  %2463 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 2
  %2464 = load i16, ptr %2463, align 2, !tbaa !77
  %2465 = zext i16 %2464 to i32
  %2466 = load ptr, ptr %6, align 8, !tbaa !5
  %2467 = getelementptr inbounds %struct.inflate_state, ptr %2466, i32 0, i32 17
  store i32 %2465, ptr %2467, align 8, !tbaa !91
  %2468 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2469 = load i8, ptr %2468, align 2, !tbaa !87
  %2470 = zext i8 %2469 to i32
  %2471 = and i32 %2470, 15
  %2472 = load ptr, ptr %6, align 8, !tbaa !5
  %2473 = getelementptr inbounds %struct.inflate_state, ptr %2472, i32 0, i32 18
  store i32 %2471, ptr %2473, align 4, !tbaa !88
  %2474 = load ptr, ptr %6, align 8, !tbaa !5
  %2475 = getelementptr inbounds %struct.inflate_state, ptr %2474, i32 0, i32 0
  store i32 23, ptr %2475, align 8, !tbaa !17
  br label %2476

2476:                                             ; preds = %2462, %81
  %2477 = load ptr, ptr %6, align 8, !tbaa !5
  %2478 = getelementptr inbounds %struct.inflate_state, ptr %2477, i32 0, i32 18
  %2479 = load i32, ptr %2478, align 4, !tbaa !88
  %2480 = icmp ne i32 %2479, 0
  br i1 %2480, label %2481, label %2546

2481:                                             ; preds = %2476
  br label %2482

2482:                                             ; preds = %2481
  br label %2483

2483:                                             ; preds = %2509, %2482
  %2484 = load i32, ptr %12, align 4, !tbaa !9
  %2485 = load ptr, ptr %6, align 8, !tbaa !5
  %2486 = getelementptr inbounds %struct.inflate_state, ptr %2485, i32 0, i32 18
  %2487 = load i32, ptr %2486, align 4, !tbaa !88
  %2488 = icmp ult i32 %2484, %2487
  br i1 %2488, label %2489, label %2510

2489:                                             ; preds = %2483
  br label %2490

2490:                                             ; preds = %2489
  %2491 = load i32, ptr %9, align 4, !tbaa !9
  %2492 = icmp eq i32 %2491, 0
  br i1 %2492, label %2493, label %2494

2493:                                             ; preds = %2490
  br label %2877

2494:                                             ; preds = %2490
  %2495 = load i32, ptr %9, align 4, !tbaa !9
  %2496 = add i32 %2495, -1
  store i32 %2496, ptr %9, align 4, !tbaa !9
  %2497 = load ptr, ptr %7, align 8, !tbaa !5
  %2498 = getelementptr inbounds i8, ptr %2497, i32 1
  store ptr %2498, ptr %7, align 8, !tbaa !5
  %2499 = load i8, ptr %2497, align 1, !tbaa !24
  %2500 = zext i8 %2499 to i64
  %2501 = load i32, ptr %12, align 4, !tbaa !9
  %2502 = zext i32 %2501 to i64
  %2503 = shl i64 %2500, %2502
  %2504 = load i64, ptr %11, align 8, !tbaa !21
  %2505 = add i64 %2504, %2503
  store i64 %2505, ptr %11, align 8, !tbaa !21
  %2506 = load i32, ptr %12, align 4, !tbaa !9
  %2507 = add i32 %2506, 8
  store i32 %2507, ptr %12, align 4, !tbaa !9
  br label %2508

2508:                                             ; preds = %2494
  br label %2509

2509:                                             ; preds = %2508
  br label %2483, !llvm.loop !92

2510:                                             ; preds = %2483
  br label %2511

2511:                                             ; preds = %2510
  br label %2512

2512:                                             ; preds = %2511
  %2513 = load i64, ptr %11, align 8, !tbaa !21
  %2514 = trunc i64 %2513 to i32
  %2515 = load ptr, ptr %6, align 8, !tbaa !5
  %2516 = getelementptr inbounds %struct.inflate_state, ptr %2515, i32 0, i32 18
  %2517 = load i32, ptr %2516, align 4, !tbaa !88
  %2518 = shl i32 1, %2517
  %2519 = sub i32 %2518, 1
  %2520 = and i32 %2514, %2519
  %2521 = load ptr, ptr %6, align 8, !tbaa !5
  %2522 = getelementptr inbounds %struct.inflate_state, ptr %2521, i32 0, i32 17
  %2523 = load i32, ptr %2522, align 8, !tbaa !91
  %2524 = add i32 %2523, %2520
  store i32 %2524, ptr %2522, align 8, !tbaa !91
  br label %2525

2525:                                             ; preds = %2512
  %2526 = load ptr, ptr %6, align 8, !tbaa !5
  %2527 = getelementptr inbounds %struct.inflate_state, ptr %2526, i32 0, i32 18
  %2528 = load i32, ptr %2527, align 4, !tbaa !88
  %2529 = load i64, ptr %11, align 8, !tbaa !21
  %2530 = zext i32 %2528 to i64
  %2531 = lshr i64 %2529, %2530
  store i64 %2531, ptr %11, align 8, !tbaa !21
  %2532 = load ptr, ptr %6, align 8, !tbaa !5
  %2533 = getelementptr inbounds %struct.inflate_state, ptr %2532, i32 0, i32 18
  %2534 = load i32, ptr %2533, align 4, !tbaa !88
  %2535 = load i32, ptr %12, align 4, !tbaa !9
  %2536 = sub i32 %2535, %2534
  store i32 %2536, ptr %12, align 4, !tbaa !9
  br label %2537

2537:                                             ; preds = %2525
  br label %2538

2538:                                             ; preds = %2537
  %2539 = load ptr, ptr %6, align 8, !tbaa !5
  %2540 = getelementptr inbounds %struct.inflate_state, ptr %2539, i32 0, i32 18
  %2541 = load i32, ptr %2540, align 4, !tbaa !88
  %2542 = load ptr, ptr %6, align 8, !tbaa !5
  %2543 = getelementptr inbounds %struct.inflate_state, ptr %2542, i32 0, i32 32
  %2544 = load i32, ptr %2543, align 4, !tbaa !86
  %2545 = add i32 %2544, %2541
  store i32 %2545, ptr %2543, align 4, !tbaa !86
  br label %2546

2546:                                             ; preds = %2538, %2476
  %2547 = load ptr, ptr %6, align 8, !tbaa !5
  %2548 = getelementptr inbounds %struct.inflate_state, ptr %2547, i32 0, i32 0
  store i32 24, ptr %2548, align 8, !tbaa !17
  br label %2549

2549:                                             ; preds = %2546, %81
  %2550 = load i32, ptr %10, align 4, !tbaa !9
  %2551 = icmp eq i32 %2550, 0
  br i1 %2551, label %2552, label %2553

2552:                                             ; preds = %2549
  br label %2877

2553:                                             ; preds = %2549
  %2554 = load i32, ptr %14, align 4, !tbaa !9
  %2555 = load i32, ptr %10, align 4, !tbaa !9
  %2556 = sub i32 %2554, %2555
  store i32 %2556, ptr %15, align 4, !tbaa !9
  %2557 = load ptr, ptr %6, align 8, !tbaa !5
  %2558 = getelementptr inbounds %struct.inflate_state, ptr %2557, i32 0, i32 17
  %2559 = load i32, ptr %2558, align 8, !tbaa !91
  %2560 = load i32, ptr %15, align 4, !tbaa !9
  %2561 = icmp ugt i32 %2559, %2560
  br i1 %2561, label %2562, label %2628

2562:                                             ; preds = %2553
  %2563 = load ptr, ptr %6, align 8, !tbaa !5
  %2564 = getelementptr inbounds %struct.inflate_state, ptr %2563, i32 0, i32 17
  %2565 = load i32, ptr %2564, align 8, !tbaa !91
  %2566 = load i32, ptr %15, align 4, !tbaa !9
  %2567 = sub i32 %2565, %2566
  store i32 %2567, ptr %15, align 4, !tbaa !9
  %2568 = load i32, ptr %15, align 4, !tbaa !9
  %2569 = load ptr, ptr %6, align 8, !tbaa !5
  %2570 = getelementptr inbounds %struct.inflate_state, ptr %2569, i32 0, i32 11
  %2571 = load i32, ptr %2570, align 8, !tbaa !93
  %2572 = icmp ugt i32 %2568, %2571
  br i1 %2572, label %2573, label %2584

2573:                                             ; preds = %2562
  %2574 = load ptr, ptr %6, align 8, !tbaa !5
  %2575 = getelementptr inbounds %struct.inflate_state, ptr %2574, i32 0, i32 31
  %2576 = load i32, ptr %2575, align 8, !tbaa !94
  %2577 = icmp ne i32 %2576, 0
  br i1 %2577, label %2578, label %2583

2578:                                             ; preds = %2573
  %2579 = load ptr, ptr %4, align 8, !tbaa !5
  %2580 = getelementptr inbounds %struct.z_stream_s, ptr %2579, i32 0, i32 6
  store ptr @.str.16, ptr %2580, align 8, !tbaa !32
  %2581 = load ptr, ptr %6, align 8, !tbaa !5
  %2582 = getelementptr inbounds %struct.inflate_state, ptr %2581, i32 0, i32 0
  store i32 29, ptr %2582, align 8, !tbaa !17
  br label %2876

2583:                                             ; preds = %2573
  br label %2584

2584:                                             ; preds = %2583, %2562
  %2585 = load i32, ptr %15, align 4, !tbaa !9
  %2586 = load ptr, ptr %6, align 8, !tbaa !5
  %2587 = getelementptr inbounds %struct.inflate_state, ptr %2586, i32 0, i32 12
  %2588 = load i32, ptr %2587, align 4, !tbaa !95
  %2589 = icmp ugt i32 %2585, %2588
  br i1 %2589, label %2590, label %2606

2590:                                             ; preds = %2584
  %2591 = load ptr, ptr %6, align 8, !tbaa !5
  %2592 = getelementptr inbounds %struct.inflate_state, ptr %2591, i32 0, i32 12
  %2593 = load i32, ptr %2592, align 4, !tbaa !95
  %2594 = load i32, ptr %15, align 4, !tbaa !9
  %2595 = sub i32 %2594, %2593
  store i32 %2595, ptr %15, align 4, !tbaa !9
  %2596 = load ptr, ptr %6, align 8, !tbaa !5
  %2597 = getelementptr inbounds %struct.inflate_state, ptr %2596, i32 0, i32 13
  %2598 = load ptr, ptr %2597, align 8, !tbaa !96
  %2599 = load ptr, ptr %6, align 8, !tbaa !5
  %2600 = getelementptr inbounds %struct.inflate_state, ptr %2599, i32 0, i32 10
  %2601 = load i32, ptr %2600, align 4, !tbaa !97
  %2602 = load i32, ptr %15, align 4, !tbaa !9
  %2603 = sub i32 %2601, %2602
  %2604 = zext i32 %2603 to i64
  %2605 = getelementptr inbounds i8, ptr %2598, i64 %2604
  store ptr %2605, ptr %16, align 8, !tbaa !5
  br label %2617

2606:                                             ; preds = %2584
  %2607 = load ptr, ptr %6, align 8, !tbaa !5
  %2608 = getelementptr inbounds %struct.inflate_state, ptr %2607, i32 0, i32 13
  %2609 = load ptr, ptr %2608, align 8, !tbaa !96
  %2610 = load ptr, ptr %6, align 8, !tbaa !5
  %2611 = getelementptr inbounds %struct.inflate_state, ptr %2610, i32 0, i32 12
  %2612 = load i32, ptr %2611, align 4, !tbaa !95
  %2613 = load i32, ptr %15, align 4, !tbaa !9
  %2614 = sub i32 %2612, %2613
  %2615 = zext i32 %2614 to i64
  %2616 = getelementptr inbounds i8, ptr %2609, i64 %2615
  store ptr %2616, ptr %16, align 8, !tbaa !5
  br label %2617

2617:                                             ; preds = %2606, %2590
  %2618 = load i32, ptr %15, align 4, !tbaa !9
  %2619 = load ptr, ptr %6, align 8, !tbaa !5
  %2620 = getelementptr inbounds %struct.inflate_state, ptr %2619, i32 0, i32 16
  %2621 = load i32, ptr %2620, align 4, !tbaa !44
  %2622 = icmp ugt i32 %2618, %2621
  br i1 %2622, label %2623, label %2627

2623:                                             ; preds = %2617
  %2624 = load ptr, ptr %6, align 8, !tbaa !5
  %2625 = getelementptr inbounds %struct.inflate_state, ptr %2624, i32 0, i32 16
  %2626 = load i32, ptr %2625, align 4, !tbaa !44
  store i32 %2626, ptr %15, align 4, !tbaa !9
  br label %2627

2627:                                             ; preds = %2623, %2617
  br label %2639

2628:                                             ; preds = %2553
  %2629 = load ptr, ptr %8, align 8, !tbaa !5
  %2630 = load ptr, ptr %6, align 8, !tbaa !5
  %2631 = getelementptr inbounds %struct.inflate_state, ptr %2630, i32 0, i32 17
  %2632 = load i32, ptr %2631, align 8, !tbaa !91
  %2633 = zext i32 %2632 to i64
  %2634 = sub i64 0, %2633
  %2635 = getelementptr inbounds i8, ptr %2629, i64 %2634
  store ptr %2635, ptr %16, align 8, !tbaa !5
  %2636 = load ptr, ptr %6, align 8, !tbaa !5
  %2637 = getelementptr inbounds %struct.inflate_state, ptr %2636, i32 0, i32 16
  %2638 = load i32, ptr %2637, align 4, !tbaa !44
  store i32 %2638, ptr %15, align 4, !tbaa !9
  br label %2639

2639:                                             ; preds = %2628, %2627
  %2640 = load i32, ptr %15, align 4, !tbaa !9
  %2641 = load i32, ptr %10, align 4, !tbaa !9
  %2642 = icmp ugt i32 %2640, %2641
  br i1 %2642, label %2643, label %2645

2643:                                             ; preds = %2639
  %2644 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %2644, ptr %15, align 4, !tbaa !9
  br label %2645

2645:                                             ; preds = %2643, %2639
  %2646 = load i32, ptr %15, align 4, !tbaa !9
  %2647 = load i32, ptr %10, align 4, !tbaa !9
  %2648 = sub i32 %2647, %2646
  store i32 %2648, ptr %10, align 4, !tbaa !9
  %2649 = load i32, ptr %15, align 4, !tbaa !9
  %2650 = load ptr, ptr %6, align 8, !tbaa !5
  %2651 = getelementptr inbounds %struct.inflate_state, ptr %2650, i32 0, i32 16
  %2652 = load i32, ptr %2651, align 4, !tbaa !44
  %2653 = sub i32 %2652, %2649
  store i32 %2653, ptr %2651, align 4, !tbaa !44
  br label %2654

2654:                                             ; preds = %2660, %2645
  %2655 = load ptr, ptr %16, align 8, !tbaa !5
  %2656 = getelementptr inbounds i8, ptr %2655, i32 1
  store ptr %2656, ptr %16, align 8, !tbaa !5
  %2657 = load i8, ptr %2655, align 1, !tbaa !24
  %2658 = load ptr, ptr %8, align 8, !tbaa !5
  %2659 = getelementptr inbounds i8, ptr %2658, i32 1
  store ptr %2659, ptr %8, align 8, !tbaa !5
  store i8 %2657, ptr %2658, align 1, !tbaa !24
  br label %2660

2660:                                             ; preds = %2654
  %2661 = load i32, ptr %15, align 4, !tbaa !9
  %2662 = add i32 %2661, -1
  store i32 %2662, ptr %15, align 4, !tbaa !9
  %2663 = icmp ne i32 %2662, 0
  br i1 %2663, label %2654, label %2664, !llvm.loop !98

2664:                                             ; preds = %2660
  %2665 = load ptr, ptr %6, align 8, !tbaa !5
  %2666 = getelementptr inbounds %struct.inflate_state, ptr %2665, i32 0, i32 16
  %2667 = load i32, ptr %2666, align 4, !tbaa !44
  %2668 = icmp eq i32 %2667, 0
  br i1 %2668, label %2669, label %2672

2669:                                             ; preds = %2664
  %2670 = load ptr, ptr %6, align 8, !tbaa !5
  %2671 = getelementptr inbounds %struct.inflate_state, ptr %2670, i32 0, i32 0
  store i32 20, ptr %2671, align 8, !tbaa !17
  br label %2672

2672:                                             ; preds = %2669, %2664
  br label %2876

2673:                                             ; preds = %81
  %2674 = load i32, ptr %10, align 4, !tbaa !9
  %2675 = icmp eq i32 %2674, 0
  br i1 %2675, label %2676, label %2677

2676:                                             ; preds = %2673
  br label %2877

2677:                                             ; preds = %2673
  %2678 = load ptr, ptr %6, align 8, !tbaa !5
  %2679 = getelementptr inbounds %struct.inflate_state, ptr %2678, i32 0, i32 16
  %2680 = load i32, ptr %2679, align 4, !tbaa !44
  %2681 = trunc i32 %2680 to i8
  %2682 = load ptr, ptr %8, align 8, !tbaa !5
  %2683 = getelementptr inbounds i8, ptr %2682, i32 1
  store ptr %2683, ptr %8, align 8, !tbaa !5
  store i8 %2681, ptr %2682, align 1, !tbaa !24
  %2684 = load i32, ptr %10, align 4, !tbaa !9
  %2685 = add i32 %2684, -1
  store i32 %2685, ptr %10, align 4, !tbaa !9
  %2686 = load ptr, ptr %6, align 8, !tbaa !5
  %2687 = getelementptr inbounds %struct.inflate_state, ptr %2686, i32 0, i32 0
  store i32 20, ptr %2687, align 8, !tbaa !17
  br label %2876

2688:                                             ; preds = %81
  %2689 = load ptr, ptr %6, align 8, !tbaa !5
  %2690 = getelementptr inbounds %struct.inflate_state, ptr %2689, i32 0, i32 2
  %2691 = load i32, ptr %2690, align 8, !tbaa !23
  %2692 = icmp ne i32 %2691, 0
  br i1 %2692, label %2693, label %2811

2693:                                             ; preds = %2688
  br label %2694

2694:                                             ; preds = %2693
  br label %2695

2695:                                             ; preds = %2718, %2694
  %2696 = load i32, ptr %12, align 4, !tbaa !9
  %2697 = icmp ult i32 %2696, 32
  br i1 %2697, label %2698, label %2719

2698:                                             ; preds = %2695
  br label %2699

2699:                                             ; preds = %2698
  %2700 = load i32, ptr %9, align 4, !tbaa !9
  %2701 = icmp eq i32 %2700, 0
  br i1 %2701, label %2702, label %2703

2702:                                             ; preds = %2699
  br label %2877

2703:                                             ; preds = %2699
  %2704 = load i32, ptr %9, align 4, !tbaa !9
  %2705 = add i32 %2704, -1
  store i32 %2705, ptr %9, align 4, !tbaa !9
  %2706 = load ptr, ptr %7, align 8, !tbaa !5
  %2707 = getelementptr inbounds i8, ptr %2706, i32 1
  store ptr %2707, ptr %7, align 8, !tbaa !5
  %2708 = load i8, ptr %2706, align 1, !tbaa !24
  %2709 = zext i8 %2708 to i64
  %2710 = load i32, ptr %12, align 4, !tbaa !9
  %2711 = zext i32 %2710 to i64
  %2712 = shl i64 %2709, %2711
  %2713 = load i64, ptr %11, align 8, !tbaa !21
  %2714 = add i64 %2713, %2712
  store i64 %2714, ptr %11, align 8, !tbaa !21
  %2715 = load i32, ptr %12, align 4, !tbaa !9
  %2716 = add i32 %2715, 8
  store i32 %2716, ptr %12, align 4, !tbaa !9
  br label %2717

2717:                                             ; preds = %2703
  br label %2718

2718:                                             ; preds = %2717
  br label %2695, !llvm.loop !99

2719:                                             ; preds = %2695
  br label %2720

2720:                                             ; preds = %2719
  br label %2721

2721:                                             ; preds = %2720
  %2722 = load i32, ptr %10, align 4, !tbaa !9
  %2723 = load i32, ptr %14, align 4, !tbaa !9
  %2724 = sub i32 %2723, %2722
  store i32 %2724, ptr %14, align 4, !tbaa !9
  %2725 = load i32, ptr %14, align 4, !tbaa !9
  %2726 = zext i32 %2725 to i64
  %2727 = load ptr, ptr %4, align 8, !tbaa !5
  %2728 = getelementptr inbounds %struct.z_stream_s, ptr %2727, i32 0, i32 5
  %2729 = load i64, ptr %2728, align 8, !tbaa !100
  %2730 = add i64 %2729, %2726
  store i64 %2730, ptr %2728, align 8, !tbaa !100
  %2731 = load i32, ptr %14, align 4, !tbaa !9
  %2732 = zext i32 %2731 to i64
  %2733 = load ptr, ptr %6, align 8, !tbaa !5
  %2734 = getelementptr inbounds %struct.inflate_state, ptr %2733, i32 0, i32 7
  %2735 = load i64, ptr %2734, align 8, !tbaa !101
  %2736 = add i64 %2735, %2732
  store i64 %2736, ptr %2734, align 8, !tbaa !101
  %2737 = load i32, ptr %14, align 4, !tbaa !9
  %2738 = icmp ne i32 %2737, 0
  br i1 %2738, label %2739, label %2772

2739:                                             ; preds = %2721
  %2740 = load ptr, ptr %6, align 8, !tbaa !5
  %2741 = getelementptr inbounds %struct.inflate_state, ptr %2740, i32 0, i32 4
  %2742 = load i32, ptr %2741, align 8, !tbaa !28
  %2743 = icmp ne i32 %2742, 0
  br i1 %2743, label %2744, label %2755

2744:                                             ; preds = %2739
  %2745 = load ptr, ptr %6, align 8, !tbaa !5
  %2746 = getelementptr inbounds %struct.inflate_state, ptr %2745, i32 0, i32 6
  %2747 = load i64, ptr %2746, align 8, !tbaa !27
  %2748 = load ptr, ptr %8, align 8, !tbaa !5
  %2749 = load i32, ptr %14, align 4, !tbaa !9
  %2750 = zext i32 %2749 to i64
  %2751 = sub i64 0, %2750
  %2752 = getelementptr inbounds i8, ptr %2748, i64 %2751
  %2753 = load i32, ptr %14, align 4, !tbaa !9
  %2754 = call i64 @crc32(i64 noundef %2747, ptr noundef %2752, i32 noundef %2753)
  br label %2766

2755:                                             ; preds = %2739
  %2756 = load ptr, ptr %6, align 8, !tbaa !5
  %2757 = getelementptr inbounds %struct.inflate_state, ptr %2756, i32 0, i32 6
  %2758 = load i64, ptr %2757, align 8, !tbaa !27
  %2759 = load ptr, ptr %8, align 8, !tbaa !5
  %2760 = load i32, ptr %14, align 4, !tbaa !9
  %2761 = zext i32 %2760 to i64
  %2762 = sub i64 0, %2761
  %2763 = getelementptr inbounds i8, ptr %2759, i64 %2762
  %2764 = load i32, ptr %14, align 4, !tbaa !9
  %2765 = call i64 @adler32(i64 noundef %2758, ptr noundef %2763, i32 noundef %2764)
  br label %2766

2766:                                             ; preds = %2755, %2744
  %2767 = phi i64 [ %2754, %2744 ], [ %2765, %2755 ]
  %2768 = load ptr, ptr %6, align 8, !tbaa !5
  %2769 = getelementptr inbounds %struct.inflate_state, ptr %2768, i32 0, i32 6
  store i64 %2767, ptr %2769, align 8, !tbaa !27
  %2770 = load ptr, ptr %4, align 8, !tbaa !5
  %2771 = getelementptr inbounds %struct.z_stream_s, ptr %2770, i32 0, i32 12
  store i64 %2767, ptr %2771, align 8, !tbaa !35
  br label %2772

2772:                                             ; preds = %2766, %2721
  %2773 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %2773, ptr %14, align 4, !tbaa !9
  %2774 = load ptr, ptr %6, align 8, !tbaa !5
  %2775 = getelementptr inbounds %struct.inflate_state, ptr %2774, i32 0, i32 4
  %2776 = load i32, ptr %2775, align 8, !tbaa !28
  %2777 = icmp ne i32 %2776, 0
  br i1 %2777, label %2778, label %2780

2778:                                             ; preds = %2772
  %2779 = load i64, ptr %11, align 8, !tbaa !21
  br label %2796

2780:                                             ; preds = %2772
  %2781 = load i64, ptr %11, align 8, !tbaa !21
  %2782 = lshr i64 %2781, 24
  %2783 = and i64 %2782, 255
  %2784 = load i64, ptr %11, align 8, !tbaa !21
  %2785 = lshr i64 %2784, 8
  %2786 = and i64 %2785, 65280
  %2787 = add i64 %2783, %2786
  %2788 = load i64, ptr %11, align 8, !tbaa !21
  %2789 = and i64 %2788, 65280
  %2790 = shl i64 %2789, 8
  %2791 = add i64 %2787, %2790
  %2792 = load i64, ptr %11, align 8, !tbaa !21
  %2793 = and i64 %2792, 255
  %2794 = shl i64 %2793, 24
  %2795 = add i64 %2791, %2794
  br label %2796

2796:                                             ; preds = %2780, %2778
  %2797 = phi i64 [ %2779, %2778 ], [ %2795, %2780 ]
  %2798 = load ptr, ptr %6, align 8, !tbaa !5
  %2799 = getelementptr inbounds %struct.inflate_state, ptr %2798, i32 0, i32 6
  %2800 = load i64, ptr %2799, align 8, !tbaa !27
  %2801 = icmp ne i64 %2797, %2800
  br i1 %2801, label %2802, label %2807

2802:                                             ; preds = %2796
  %2803 = load ptr, ptr %4, align 8, !tbaa !5
  %2804 = getelementptr inbounds %struct.z_stream_s, ptr %2803, i32 0, i32 6
  store ptr @.str.17, ptr %2804, align 8, !tbaa !32
  %2805 = load ptr, ptr %6, align 8, !tbaa !5
  %2806 = getelementptr inbounds %struct.inflate_state, ptr %2805, i32 0, i32 0
  store i32 29, ptr %2806, align 8, !tbaa !17
  br label %2876

2807:                                             ; preds = %2796
  br label %2808

2808:                                             ; preds = %2807
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %2809

2809:                                             ; preds = %2808
  br label %2810

2810:                                             ; preds = %2809
  br label %2811

2811:                                             ; preds = %2810, %2688
  %2812 = load ptr, ptr %6, align 8, !tbaa !5
  %2813 = getelementptr inbounds %struct.inflate_state, ptr %2812, i32 0, i32 0
  store i32 27, ptr %2813, align 8, !tbaa !17
  br label %2814

2814:                                             ; preds = %2811, %81
  %2815 = load ptr, ptr %6, align 8, !tbaa !5
  %2816 = getelementptr inbounds %struct.inflate_state, ptr %2815, i32 0, i32 2
  %2817 = load i32, ptr %2816, align 8, !tbaa !23
  %2818 = icmp ne i32 %2817, 0
  br i1 %2818, label %2819, label %2868

2819:                                             ; preds = %2814
  %2820 = load ptr, ptr %6, align 8, !tbaa !5
  %2821 = getelementptr inbounds %struct.inflate_state, ptr %2820, i32 0, i32 4
  %2822 = load i32, ptr %2821, align 8, !tbaa !28
  %2823 = icmp ne i32 %2822, 0
  br i1 %2823, label %2824, label %2868

2824:                                             ; preds = %2819
  br label %2825

2825:                                             ; preds = %2824
  br label %2826

2826:                                             ; preds = %2849, %2825
  %2827 = load i32, ptr %12, align 4, !tbaa !9
  %2828 = icmp ult i32 %2827, 32
  br i1 %2828, label %2829, label %2850

2829:                                             ; preds = %2826
  br label %2830

2830:                                             ; preds = %2829
  %2831 = load i32, ptr %9, align 4, !tbaa !9
  %2832 = icmp eq i32 %2831, 0
  br i1 %2832, label %2833, label %2834

2833:                                             ; preds = %2830
  br label %2877

2834:                                             ; preds = %2830
  %2835 = load i32, ptr %9, align 4, !tbaa !9
  %2836 = add i32 %2835, -1
  store i32 %2836, ptr %9, align 4, !tbaa !9
  %2837 = load ptr, ptr %7, align 8, !tbaa !5
  %2838 = getelementptr inbounds i8, ptr %2837, i32 1
  store ptr %2838, ptr %7, align 8, !tbaa !5
  %2839 = load i8, ptr %2837, align 1, !tbaa !24
  %2840 = zext i8 %2839 to i64
  %2841 = load i32, ptr %12, align 4, !tbaa !9
  %2842 = zext i32 %2841 to i64
  %2843 = shl i64 %2840, %2842
  %2844 = load i64, ptr %11, align 8, !tbaa !21
  %2845 = add i64 %2844, %2843
  store i64 %2845, ptr %11, align 8, !tbaa !21
  %2846 = load i32, ptr %12, align 4, !tbaa !9
  %2847 = add i32 %2846, 8
  store i32 %2847, ptr %12, align 4, !tbaa !9
  br label %2848

2848:                                             ; preds = %2834
  br label %2849

2849:                                             ; preds = %2848
  br label %2826, !llvm.loop !102

2850:                                             ; preds = %2826
  br label %2851

2851:                                             ; preds = %2850
  br label %2852

2852:                                             ; preds = %2851
  %2853 = load i64, ptr %11, align 8, !tbaa !21
  %2854 = load ptr, ptr %6, align 8, !tbaa !5
  %2855 = getelementptr inbounds %struct.inflate_state, ptr %2854, i32 0, i32 7
  %2856 = load i64, ptr %2855, align 8, !tbaa !101
  %2857 = and i64 %2856, 4294967295
  %2858 = icmp ne i64 %2853, %2857
  br i1 %2858, label %2859, label %2864

2859:                                             ; preds = %2852
  %2860 = load ptr, ptr %4, align 8, !tbaa !5
  %2861 = getelementptr inbounds %struct.z_stream_s, ptr %2860, i32 0, i32 6
  store ptr @.str.18, ptr %2861, align 8, !tbaa !32
  %2862 = load ptr, ptr %6, align 8, !tbaa !5
  %2863 = getelementptr inbounds %struct.inflate_state, ptr %2862, i32 0, i32 0
  store i32 29, ptr %2863, align 8, !tbaa !17
  br label %2876

2864:                                             ; preds = %2852
  br label %2865

2865:                                             ; preds = %2864
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %2866

2866:                                             ; preds = %2865
  br label %2867

2867:                                             ; preds = %2866
  br label %2868

2868:                                             ; preds = %2867, %2819, %2814
  %2869 = load ptr, ptr %6, align 8, !tbaa !5
  %2870 = getelementptr inbounds %struct.inflate_state, ptr %2869, i32 0, i32 0
  store i32 28, ptr %2870, align 8, !tbaa !17
  br label %2871

2871:                                             ; preds = %2868, %81
  store i32 1, ptr %20, align 4, !tbaa !9
  br label %2877

2872:                                             ; preds = %81
  store i32 -3, ptr %20, align 4, !tbaa !9
  br label %2877

2873:                                             ; preds = %81
  store i32 -4, ptr %3, align 4
  store i32 1, ptr %22, align 4
  br label %3044

2874:                                             ; preds = %81
  br label %2875

2875:                                             ; preds = %2874, %81
  store i32 -2, ptr %3, align 4
  store i32 1, ptr %22, align 4
  br label %3044

2876:                                             ; preds = %2859, %2802, %2677, %2672, %2578, %2457, %2210, %2199, %2190, %2023, %1950, %1916, %1882, %1874, %1501, %1387, %1307, %1283, %1238, %1190, %1110, %989, %961, %301, %290, %251, %226, %195, %185, %153, %90
  br label %81

2877:                                             ; preds = %2872, %2871, %2833, %2702, %2676, %2552, %2493, %2391, %2327, %2241, %2120, %2051, %1960, %1786, %1728, %1645, %1583, %1549, %1415, %1319, %1282, %1256, %1212, %1173, %1122, %1091, %1006, %935, %904, %824, %797, %717, %701, %520, %436, %359, %261, %102
  br label %2878

2878:                                             ; preds = %2877
  %2879 = load ptr, ptr %8, align 8, !tbaa !5
  %2880 = load ptr, ptr %4, align 8, !tbaa !5
  %2881 = getelementptr inbounds %struct.z_stream_s, ptr %2880, i32 0, i32 3
  store ptr %2879, ptr %2881, align 8, !tbaa !14
  %2882 = load i32, ptr %10, align 4, !tbaa !9
  %2883 = load ptr, ptr %4, align 8, !tbaa !5
  %2884 = getelementptr inbounds %struct.z_stream_s, ptr %2883, i32 0, i32 4
  store i32 %2882, ptr %2884, align 8, !tbaa !19
  %2885 = load ptr, ptr %7, align 8, !tbaa !5
  %2886 = load ptr, ptr %4, align 8, !tbaa !5
  %2887 = getelementptr inbounds %struct.z_stream_s, ptr %2886, i32 0, i32 0
  store ptr %2885, ptr %2887, align 8, !tbaa !15
  %2888 = load i32, ptr %9, align 4, !tbaa !9
  %2889 = load ptr, ptr %4, align 8, !tbaa !5
  %2890 = getelementptr inbounds %struct.z_stream_s, ptr %2889, i32 0, i32 1
  store i32 %2888, ptr %2890, align 8, !tbaa !16
  %2891 = load i64, ptr %11, align 8, !tbaa !21
  %2892 = load ptr, ptr %6, align 8, !tbaa !5
  %2893 = getelementptr inbounds %struct.inflate_state, ptr %2892, i32 0, i32 14
  store i64 %2891, ptr %2893, align 8, !tbaa !20
  %2894 = load i32, ptr %12, align 4, !tbaa !9
  %2895 = load ptr, ptr %6, align 8, !tbaa !5
  %2896 = getelementptr inbounds %struct.inflate_state, ptr %2895, i32 0, i32 15
  store i32 %2894, ptr %2896, align 8, !tbaa !22
  br label %2897

2897:                                             ; preds = %2878
  br label %2898

2898:                                             ; preds = %2897
  %2899 = load ptr, ptr %6, align 8, !tbaa !5
  %2900 = getelementptr inbounds %struct.inflate_state, ptr %2899, i32 0, i32 10
  %2901 = load i32, ptr %2900, align 4, !tbaa !97
  %2902 = icmp ne i32 %2901, 0
  br i1 %2902, label %2914, label %2903

2903:                                             ; preds = %2898
  %2904 = load ptr, ptr %6, align 8, !tbaa !5
  %2905 = getelementptr inbounds %struct.inflate_state, ptr %2904, i32 0, i32 0
  %2906 = load i32, ptr %2905, align 8, !tbaa !17
  %2907 = icmp ult i32 %2906, 26
  br i1 %2907, label %2908, label %2923

2908:                                             ; preds = %2903
  %2909 = load i32, ptr %14, align 4, !tbaa !9
  %2910 = load ptr, ptr %4, align 8, !tbaa !5
  %2911 = getelementptr inbounds %struct.z_stream_s, ptr %2910, i32 0, i32 4
  %2912 = load i32, ptr %2911, align 8, !tbaa !19
  %2913 = icmp ne i32 %2909, %2912
  br i1 %2913, label %2914, label %2923

2914:                                             ; preds = %2908, %2898
  %2915 = load ptr, ptr %4, align 8, !tbaa !5
  %2916 = load i32, ptr %14, align 4, !tbaa !9
  %2917 = call i32 @updatewindow(ptr noundef %2915, i32 noundef %2916)
  %2918 = icmp ne i32 %2917, 0
  br i1 %2918, label %2919, label %2922

2919:                                             ; preds = %2914
  %2920 = load ptr, ptr %6, align 8, !tbaa !5
  %2921 = getelementptr inbounds %struct.inflate_state, ptr %2920, i32 0, i32 0
  store i32 30, ptr %2921, align 8, !tbaa !17
  store i32 -4, ptr %3, align 4
  store i32 1, ptr %22, align 4
  br label %3044

2922:                                             ; preds = %2914
  br label %2923

2923:                                             ; preds = %2922, %2908, %2903
  %2924 = load ptr, ptr %4, align 8, !tbaa !5
  %2925 = getelementptr inbounds %struct.z_stream_s, ptr %2924, i32 0, i32 1
  %2926 = load i32, ptr %2925, align 8, !tbaa !16
  %2927 = load i32, ptr %13, align 4, !tbaa !9
  %2928 = sub i32 %2927, %2926
  store i32 %2928, ptr %13, align 4, !tbaa !9
  %2929 = load ptr, ptr %4, align 8, !tbaa !5
  %2930 = getelementptr inbounds %struct.z_stream_s, ptr %2929, i32 0, i32 4
  %2931 = load i32, ptr %2930, align 8, !tbaa !19
  %2932 = load i32, ptr %14, align 4, !tbaa !9
  %2933 = sub i32 %2932, %2931
  store i32 %2933, ptr %14, align 4, !tbaa !9
  %2934 = load i32, ptr %13, align 4, !tbaa !9
  %2935 = zext i32 %2934 to i64
  %2936 = load ptr, ptr %4, align 8, !tbaa !5
  %2937 = getelementptr inbounds %struct.z_stream_s, ptr %2936, i32 0, i32 2
  %2938 = load i64, ptr %2937, align 8, !tbaa !103
  %2939 = add i64 %2938, %2935
  store i64 %2939, ptr %2937, align 8, !tbaa !103
  %2940 = load i32, ptr %14, align 4, !tbaa !9
  %2941 = zext i32 %2940 to i64
  %2942 = load ptr, ptr %4, align 8, !tbaa !5
  %2943 = getelementptr inbounds %struct.z_stream_s, ptr %2942, i32 0, i32 5
  %2944 = load i64, ptr %2943, align 8, !tbaa !100
  %2945 = add i64 %2944, %2941
  store i64 %2945, ptr %2943, align 8, !tbaa !100
  %2946 = load i32, ptr %14, align 4, !tbaa !9
  %2947 = zext i32 %2946 to i64
  %2948 = load ptr, ptr %6, align 8, !tbaa !5
  %2949 = getelementptr inbounds %struct.inflate_state, ptr %2948, i32 0, i32 7
  %2950 = load i64, ptr %2949, align 8, !tbaa !101
  %2951 = add i64 %2950, %2947
  store i64 %2951, ptr %2949, align 8, !tbaa !101
  %2952 = load ptr, ptr %6, align 8, !tbaa !5
  %2953 = getelementptr inbounds %struct.inflate_state, ptr %2952, i32 0, i32 2
  %2954 = load i32, ptr %2953, align 8, !tbaa !23
  %2955 = icmp ne i32 %2954, 0
  br i1 %2955, label %2956, label %2996

2956:                                             ; preds = %2923
  %2957 = load i32, ptr %14, align 4, !tbaa !9
  %2958 = icmp ne i32 %2957, 0
  br i1 %2958, label %2959, label %2996

2959:                                             ; preds = %2956
  %2960 = load ptr, ptr %6, align 8, !tbaa !5
  %2961 = getelementptr inbounds %struct.inflate_state, ptr %2960, i32 0, i32 4
  %2962 = load i32, ptr %2961, align 8, !tbaa !28
  %2963 = icmp ne i32 %2962, 0
  br i1 %2963, label %2964, label %2977

2964:                                             ; preds = %2959
  %2965 = load ptr, ptr %6, align 8, !tbaa !5
  %2966 = getelementptr inbounds %struct.inflate_state, ptr %2965, i32 0, i32 6
  %2967 = load i64, ptr %2966, align 8, !tbaa !27
  %2968 = load ptr, ptr %4, align 8, !tbaa !5
  %2969 = getelementptr inbounds %struct.z_stream_s, ptr %2968, i32 0, i32 3
  %2970 = load ptr, ptr %2969, align 8, !tbaa !14
  %2971 = load i32, ptr %14, align 4, !tbaa !9
  %2972 = zext i32 %2971 to i64
  %2973 = sub i64 0, %2972
  %2974 = getelementptr inbounds i8, ptr %2970, i64 %2973
  %2975 = load i32, ptr %14, align 4, !tbaa !9
  %2976 = call i64 @crc32(i64 noundef %2967, ptr noundef %2974, i32 noundef %2975)
  br label %2990

2977:                                             ; preds = %2959
  %2978 = load ptr, ptr %6, align 8, !tbaa !5
  %2979 = getelementptr inbounds %struct.inflate_state, ptr %2978, i32 0, i32 6
  %2980 = load i64, ptr %2979, align 8, !tbaa !27
  %2981 = load ptr, ptr %4, align 8, !tbaa !5
  %2982 = getelementptr inbounds %struct.z_stream_s, ptr %2981, i32 0, i32 3
  %2983 = load ptr, ptr %2982, align 8, !tbaa !14
  %2984 = load i32, ptr %14, align 4, !tbaa !9
  %2985 = zext i32 %2984 to i64
  %2986 = sub i64 0, %2985
  %2987 = getelementptr inbounds i8, ptr %2983, i64 %2986
  %2988 = load i32, ptr %14, align 4, !tbaa !9
  %2989 = call i64 @adler32(i64 noundef %2980, ptr noundef %2987, i32 noundef %2988)
  br label %2990

2990:                                             ; preds = %2977, %2964
  %2991 = phi i64 [ %2976, %2964 ], [ %2989, %2977 ]
  %2992 = load ptr, ptr %6, align 8, !tbaa !5
  %2993 = getelementptr inbounds %struct.inflate_state, ptr %2992, i32 0, i32 6
  store i64 %2991, ptr %2993, align 8, !tbaa !27
  %2994 = load ptr, ptr %4, align 8, !tbaa !5
  %2995 = getelementptr inbounds %struct.z_stream_s, ptr %2994, i32 0, i32 12
  store i64 %2991, ptr %2995, align 8, !tbaa !35
  br label %2996

2996:                                             ; preds = %2990, %2956, %2923
  %2997 = load ptr, ptr %6, align 8, !tbaa !5
  %2998 = getelementptr inbounds %struct.inflate_state, ptr %2997, i32 0, i32 15
  %2999 = load i32, ptr %2998, align 8, !tbaa !22
  %3000 = load ptr, ptr %6, align 8, !tbaa !5
  %3001 = getelementptr inbounds %struct.inflate_state, ptr %3000, i32 0, i32 1
  %3002 = load i32, ptr %3001, align 4, !tbaa !58
  %3003 = icmp ne i32 %3002, 0
  %3004 = zext i1 %3003 to i64
  %3005 = select i1 %3003, i32 64, i32 0
  %3006 = add i32 %2999, %3005
  %3007 = load ptr, ptr %6, align 8, !tbaa !5
  %3008 = getelementptr inbounds %struct.inflate_state, ptr %3007, i32 0, i32 0
  %3009 = load i32, ptr %3008, align 8, !tbaa !17
  %3010 = icmp eq i32 %3009, 11
  %3011 = zext i1 %3010 to i64
  %3012 = select i1 %3010, i32 128, i32 0
  %3013 = add i32 %3006, %3012
  %3014 = load ptr, ptr %6, align 8, !tbaa !5
  %3015 = getelementptr inbounds %struct.inflate_state, ptr %3014, i32 0, i32 0
  %3016 = load i32, ptr %3015, align 8, !tbaa !17
  %3017 = icmp eq i32 %3016, 19
  br i1 %3017, label %3023, label %3018

3018:                                             ; preds = %2996
  %3019 = load ptr, ptr %6, align 8, !tbaa !5
  %3020 = getelementptr inbounds %struct.inflate_state, ptr %3019, i32 0, i32 0
  %3021 = load i32, ptr %3020, align 8, !tbaa !17
  %3022 = icmp eq i32 %3021, 14
  br label %3023

3023:                                             ; preds = %3018, %2996
  %3024 = phi i1 [ true, %2996 ], [ %3022, %3018 ]
  %3025 = zext i1 %3024 to i64
  %3026 = select i1 %3024, i32 256, i32 0
  %3027 = add i32 %3013, %3026
  %3028 = load ptr, ptr %4, align 8, !tbaa !5
  %3029 = getelementptr inbounds %struct.z_stream_s, ptr %3028, i32 0, i32 11
  store i32 %3027, ptr %3029, align 8, !tbaa !104
  %3030 = load i32, ptr %13, align 4, !tbaa !9
  %3031 = icmp eq i32 %3030, 0
  br i1 %3031, label %3032, label %3035

3032:                                             ; preds = %3023
  %3033 = load i32, ptr %14, align 4, !tbaa !9
  %3034 = icmp eq i32 %3033, 0
  br i1 %3034, label %3038, label %3035

3035:                                             ; preds = %3032, %3023
  %3036 = load i32, ptr %5, align 4, !tbaa !9
  %3037 = icmp eq i32 %3036, 4
  br i1 %3037, label %3038, label %3042

3038:                                             ; preds = %3035, %3032
  %3039 = load i32, ptr %20, align 4, !tbaa !9
  %3040 = icmp eq i32 %3039, 0
  br i1 %3040, label %3041, label %3042

3041:                                             ; preds = %3038
  store i32 -5, ptr %20, align 4, !tbaa !9
  br label %3042

3042:                                             ; preds = %3041, %3038, %3035
  %3043 = load i32, ptr %20, align 4, !tbaa !9
  store i32 %3043, ptr %3, align 4
  store i32 1, ptr %22, align 4
  br label %3044

3044:                                             ; preds = %3042, %2919, %2875, %2873, %1076, %45
  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
  %3045 = load i32, ptr %3, align 4
  ret i32 %3045
}

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, 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 56}
!12 = !{!"z_stream_s", !6, i64 0, !10, i64 8, !13, i64 16, !6, i64 24, !10, i64 32, !13, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !10, i64 88, !13, i64 96, !13, i64 104}
!13 = !{!"long", !7, i64 0}
!14 = !{!12, !6, i64 24}
!15 = !{!12, !6, i64 0}
!16 = !{!12, !10, i64 8}
!17 = !{!18, !10, i64 0}
!18 = !{!"inflate_state", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !13, i64 24, !13, i64 32, !6, i64 40, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !6, i64 64, !13, i64 72, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !6, i64 96, !6, i64 104, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !6, i64 136, !7, i64 144, !7, i64 784, !7, i64 1360, !10, i64 7136, !10, i64 7140, !10, i64 7144}
!19 = !{!12, !10, i64 32}
!20 = !{!18, !13, i64 72}
!21 = !{!13, !13, i64 0}
!22 = !{!18, !10, i64 80}
!23 = !{!18, !10, i64 8}
!24 = !{!7, !7, i64 0}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = !{!18, !13, i64 24}
!28 = !{!18, !10, i64 16}
!29 = !{!18, !6, i64 40}
!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 48}
!34 = !{!18, !10, i64 20}
!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 84}
!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 12}
!58 = !{!18, !10, i64 4}
!59 = distinct !{!59, !26}
!60 = distinct !{!60, !26}
!61 = distinct !{!61, !26}
!62 = !{!18, !10, i64 124}
!63 = !{!18, !10, i64 128}
!64 = !{!18, !10, i64 120}
!65 = !{!18, !10, i64 132}
!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 136}
!72 = !{!18, !6, i64 96}
!73 = !{!18, !10, i64 112}
!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 = distinct !{!83, !26}
!84 = !{!18, !6, i64 104}
!85 = !{!18, !10, i64 116}
!86 = !{!18, !10, i64 7140}
!87 = !{!76, !7, i64 0}
!88 = !{!18, !10, i64 92}
!89 = distinct !{!89, !26}
!90 = !{!18, !10, i64 7144}
!91 = !{!18, !10, i64 88}
!92 = distinct !{!92, !26}
!93 = !{!18, !10, i64 56}
!94 = !{!18, !10, i64 7136}
!95 = !{!18, !10, i64 60}
!96 = !{!18, !6, i64 64}
!97 = !{!18, !10, i64 52}
!98 = distinct !{!98, !26}
!99 = distinct !{!99, !26}
!100 = !{!12, !13, i64 40}
!101 = !{!18, !13, i64 32}
!102 = distinct !{!102, !26}
!103 = !{!12, !13, i64 16}
!104 = !{!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: 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 = icmp eq ptr %0, null
  br i1 %4, label %.loopexit1295, label %5

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

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

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

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

19:                                               ; preds = %16, %13
  %20 = load i32, ptr %7, align 8, !tbaa !15
  %21 = icmp eq i32 %20, 11
  br i1 %21, label %22, label %.split2352

22:                                               ; preds = %19
  store i32 12, ptr %7, align 8, !tbaa !15
  br label %.split2352

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

72:                                               ; preds = %.thread, %.split2352
  %73 = phi i32 [ %23, %.split2352 ], [ %.pre, %.thread ]
  %.01043 = phi ptr [ %14, %.split2352 ], [ %.641107, %.thread ]
  %.01040 = phi ptr [ %11, %.split2352 ], [ %.21042, %.thread ]
  %.0978 = phi i32 [ %27, %.split2352 ], [ %.64, %.thread ]
  %.0976 = phi i32 [ %25, %.split2352 ], [ %.1977, %.thread ]
  %.0914 = phi i64 [ %29, %.split2352 ], [ %.60974, %.thread ]
  %.0903 = phi i32 [ %31, %.split2352 ], [ %.60, %.thread ]
  %.0897 = phi i32 [ %25, %.split2352 ], [ %.4901, %.thread ]
  %.0 = phi i32 [ 0, %.split2352 ], [ %.8, %.thread ]
  %.010403811 = ptrtoint ptr %.01040 to i64
  switch i32 %73, label %.loopexit1295 [
    i32 0, label %83
    i32 1, label %.preheader1270
    i32 2, label %182
    i32 3, label %236
    i32 4, label %273
    i32 5, label %316
    i32 6, label %354
    i32 7, label %395
    i32 8, label %436
    i32 9, label %.preheader1274
    i32 10, label %506
    i32 11, label %512
    i32 12, label %513
    i32 13, label %544
    i32 14, label %594
    i32 15, label %595
    i32 16, label %.preheader1288
    i32 17, label %.split
    i32 18, label %._crit_edge2890
    i32 19, label %868
    i32 20, label %869
    i32 21, label %._crit_edge2893
    i32 22, label %987
    i32 23, label %._crit_edge2898
    i32 24, label %1087
    i32 25, label %1163
    i32 26, label %1170
    i32 27, label %1233
    i32 28, label %.loopexit.loopexit3841
    i32 29, label %.loopexit
    i32 30, label %.loopexit1295.loopexit
  ]

._crit_edge2898:                                  ; preds = %72
  %.pre2899 = load i32, ptr %55, align 4, !tbaa !20
  br label %1062

._crit_edge2893:                                  ; preds = %72
  %.pre2894 = load i32, ptr %55, align 4, !tbaa !20
  br label %961

._crit_edge2890:                                  ; preds = %72
  %.promoted2006.pre = load i32, ptr %43, align 4, !tbaa !21
  br label %673

.preheader1288:                                   ; preds = %72
  %74 = icmp ult i32 %.0903, 14
  br i1 %74, label %.lr.ph1767.preheader, label %._crit_edge1768

.lr.ph1767.preheader:                             ; preds = %.preheader1288
  %75 = zext nneg i32 %.0903 to i64
  %76 = icmp eq i32 %.0978, 0
  br i1 %76, label %.loopexit.loopexit2373, label %608

.preheader1274:                                   ; preds = %72
  %77 = icmp ult i32 %.0903, 32
  br i1 %77, label %.lr.ph2125.preheader, label %._crit_edge2126

.lr.ph2125.preheader:                             ; preds = %.preheader1274
  %78 = zext nneg i32 %.0903 to i64
  %79 = icmp eq i32 %.0978, 0
  br i1 %79, label %.loopexit.loopexit2364, label %471

.preheader1270:                                   ; preds = %72
  %80 = icmp ult i32 %.0903, 16
  br i1 %80, label %.lr.ph2297.preheader, label %._crit_edge2298

.lr.ph2297.preheader:                             ; preds = %.preheader1270
  %81 = zext nneg i32 %.0903 to i64
  %82 = icmp eq i32 %.0978, 0
  br i1 %82, label %.loopexit.loopexit2363, label %146

83:                                               ; preds = %72
  %84 = load i32, ptr %32, align 8, !tbaa !22
  %85 = icmp eq i32 %84, 0
  br i1 %85, label %89, label %.preheader1260

.preheader1260:                                   ; preds = %83
  %86 = icmp ult i32 %.0903, 16
  br i1 %86, label %.lr.ph2346.preheader, label %._crit_edge2347

.lr.ph2346.preheader:                             ; preds = %.preheader1260
  %87 = zext nneg i32 %.0903 to i64
  %88 = icmp eq i32 %.0978, 0
  br i1 %88, label %.loopexit.loopexit2358, label %90

89:                                               ; preds = %83
  store i32 12, ptr %7, align 8, !tbaa !15
  br label %.thread

90:                                               ; preds = %.lr.ph2346.preheader
  %91 = add i32 %.0978, -1
  %92 = getelementptr inbounds i8, ptr %.01043, i64 1
  %93 = load i8, ptr %.01043, align 1, !tbaa !23
  %94 = zext i8 %93 to i64
  %95 = shl nuw nsw i64 %94, %87
  %96 = add i64 %95, %.0914
  %indvars.iv.next2883 = add nuw nsw i64 %87, 8
  %97 = icmp ult i32 %.0903, 8
  br i1 %97, label %.lr.ph2346.1, label %._crit_edge2347.loopexit, !llvm.loop !24

.lr.ph2346.1:                                     ; preds = %90
  %98 = icmp eq i32 %91, 0
  br i1 %98, label %.loopexit.loopexit2358, label %99

99:                                               ; preds = %.lr.ph2346.1
  %100 = add i32 %.0978, -2
  %101 = getelementptr inbounds i8, ptr %.01043, i64 2
  %102 = load i8, ptr %92, align 1, !tbaa !23
  %103 = zext i8 %102 to i64
  %104 = shl nuw nsw i64 %103, %indvars.iv.next2883
  %105 = add i64 %104, %96
  %indvars.iv.next2883.1 = or disjoint i64 %87, 16
  br label %._crit_edge2347.loopexit

._crit_edge2347.loopexit:                         ; preds = %99, %90
  %.lcssa4003 = phi i32 [ %91, %90 ], [ %100, %99 ]
  %.lcssa4002 = phi ptr [ %92, %90 ], [ %101, %99 ]
  %.lcssa4001 = phi i64 [ %96, %90 ], [ %105, %99 ]
  %indvars.iv.next2883.lcssa = phi i64 [ %indvars.iv.next2883, %90 ], [ %indvars.iv.next2883.1, %99 ]
  %106 = trunc nuw nsw i64 %indvars.iv.next2883.lcssa to i32
  br label %._crit_edge2347

._crit_edge2347:                                  ; preds = %._crit_edge2347.loopexit, %.preheader1260
  %.11044.lcssa = phi ptr [ %.01043, %.preheader1260 ], [ %.lcssa4002, %._crit_edge2347.loopexit ]
  %.1979.lcssa = phi i32 [ %.0978, %.preheader1260 ], [ %.lcssa4003, %._crit_edge2347.loopexit ]
  %.1915.lcssa = phi i64 [ %.0914, %.preheader1260 ], [ %.lcssa4001, %._crit_edge2347.loopexit ]
  %.1904.lcssa = phi i32 [ %.0903, %.preheader1260 ], [ %106, %._crit_edge2347.loopexit ]
  %107 = and i32 %84, 2
  %108 = icmp ne i32 %107, 0
  %109 = icmp eq i64 %.1915.lcssa, 35615
  %or.cond = select i1 %108, i1 %109, i1 false
  br i1 %or.cond, label %110, label %113

110:                                              ; preds = %._crit_edge2347
  %111 = call i64 @crc32(i64 noundef 0, ptr noundef null, i32 noundef 0) #5
  store i64 %111, ptr %36, align 8, !tbaa !26
  store i8 31, ptr %3, align 1, !tbaa !23
  store i8 -117, ptr %67, align 1, !tbaa !23
  %112 = call i64 @crc32(i64 noundef %111, ptr noundef nonnull %3, i32 noundef 2) #5
  store i64 %112, ptr %36, align 8, !tbaa !26
  store i32 1, ptr %7, align 8, !tbaa !15
  br label %.thread

113:                                              ; preds = %._crit_edge2347
  store i32 0, ptr %35, align 8, !tbaa !27
  %114 = load ptr, ptr %66, align 8, !tbaa !28
  %.not1227 = icmp eq ptr %114, null
  br i1 %.not1227, label %117, label %115

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

117:                                              ; preds = %115, %113
  %118 = and i32 %84, 1
  %.not1228 = icmp eq i32 %118, 0
  br i1 %.not1228, label %125, label %119

119:                                              ; preds = %117
  %120 = shl i64 %.1915.lcssa, 8
  %121 = and i64 %120, 65280
  %122 = lshr i64 %.1915.lcssa, 8
  %123 = add nuw nsw i64 %121, %122
  %124 = urem i64 %123, 31
  %.not1229 = icmp eq i64 %124, 0
  br i1 %.not1229, label %126, label %125

125:                                              ; preds = %119, %117
  store ptr @.str.1, ptr %38, align 8, !tbaa !31
  store i32 29, ptr %7, align 8, !tbaa !15
  br label %.thread

126:                                              ; preds = %119
  %127 = and i64 %.1915.lcssa, 15
  %.not1230 = icmp eq i64 %127, 8
  br i1 %.not1230, label %129, label %128

128:                                              ; preds = %126
  store ptr @.str.2, ptr %38, align 8, !tbaa !31
  store i32 29, ptr %7, align 8, !tbaa !15
  br label %.thread

129:                                              ; preds = %126
  %130 = lshr i64 %.1915.lcssa, 4
  %131 = add i32 %.1904.lcssa, -4
  %132 = trunc i64 %130 to i32
  %133 = and i32 %132, 15
  %134 = add nuw nsw i32 %133, 8
  %135 = load i32, ptr %70, align 8, !tbaa !32
  %136 = icmp eq i32 %135, 0
  br i1 %136, label %137, label %138

137:                                              ; preds = %129
  store i32 %134, ptr %70, align 8, !tbaa !32
  br label %141

138:                                              ; preds = %129
  %139 = icmp ugt i32 %134, %135
  br i1 %139, label %140, label %141

140:                                              ; preds = %138
  store ptr @.str.3, ptr %38, align 8, !tbaa !31
  store i32 29, ptr %7, align 8, !tbaa !15
  br label %.thread

141:                                              ; preds = %138, %137
  %142 = shl nuw nsw i32 256, %133
  store i32 %142, ptr %71, align 4, !tbaa !33
  %143 = call i64 @adler32(i64 noundef 0, ptr noundef null, i32 noundef 0) #5
  store i64 %143, ptr %36, align 8, !tbaa !26
  store i64 %143, ptr %37, align 8, !tbaa !34
  %144 = and i64 %.1915.lcssa, 8192
  %.not1231 = icmp eq i64 %144, 0
  %145 = select i1 %.not1231, i32 11, i32 9
  store i32 %145, ptr %7, align 8, !tbaa !15
  br label %.thread

146:                                              ; preds = %.lr.ph2297.preheader
  %147 = add i32 %.0978, -1
  %148 = getelementptr inbounds i8, ptr %.01043, i64 1
  %149 = load i8, ptr %.01043, align 1, !tbaa !23
  %150 = zext i8 %149 to i64
  %151 = shl nuw nsw i64 %150, %81
  %152 = add i64 %151, %.0914
  %indvars.iv.next2862 = add nuw nsw i64 %81, 8
  %153 = icmp ult i32 %.0903, 8
  br i1 %153, label %.lr.ph2297.1, label %._crit_edge2298.loopexit, !llvm.loop !35

.lr.ph2297.1:                                     ; preds = %146
  %154 = icmp eq i32 %147, 0
  br i1 %154, label %.loopexit.loopexit2363, label %155

155:                                              ; preds = %.lr.ph2297.1
  %156 = add i32 %.0978, -2
  %157 = getelementptr inbounds i8, ptr %.01043, i64 2
  %158 = load i8, ptr %148, align 1, !tbaa !23
  %159 = zext i8 %158 to i64
  %160 = shl nuw nsw i64 %159, %indvars.iv.next2862
  %161 = add i64 %160, %152
  %indvars.iv.next2862.1 = or disjoint i64 %81, 16
  br label %._crit_edge2298.loopexit

._crit_edge2298.loopexit:                         ; preds = %155, %146
  %.lcssa3971 = phi i32 [ %147, %146 ], [ %156, %155 ]
  %.lcssa3970 = phi ptr [ %148, %146 ], [ %157, %155 ]
  %.lcssa3969 = phi i64 [ %152, %146 ], [ %161, %155 ]
  %indvars.iv.next2862.lcssa = phi i64 [ %indvars.iv.next2862, %146 ], [ %indvars.iv.next2862.1, %155 ]
  %162 = trunc nuw nsw i64 %indvars.iv.next2862.lcssa to i32
  br label %._crit_edge2298

._crit_edge2298:                                  ; preds = %._crit_edge2298.loopexit, %.preheader1270
  %.21045.lcssa = phi ptr [ %.01043, %.preheader1270 ], [ %.lcssa3970, %._crit_edge2298.loopexit ]
  %.2980.lcssa = phi i32 [ %.0978, %.preheader1270 ], [ %.lcssa3971, %._crit_edge2298.loopexit ]
  %.2916.lcssa = phi i64 [ %.0914, %.preheader1270 ], [ %.lcssa3969, %._crit_edge2298.loopexit ]
  %.2905.lcssa = phi i32 [ %.0903, %.preheader1270 ], [ %162, %._crit_edge2298.loopexit ]
  %163 = trunc i64 %.2916.lcssa to i32
  store i32 %163, ptr %35, align 8, !tbaa !27
  %164 = and i32 %163, 255
  %.not1196 = icmp eq i32 %164, 8
  br i1 %.not1196, label %166, label %165

165:                                              ; preds = %._crit_edge2298
  store ptr @.str.2, ptr %38, align 8, !tbaa !31
  store i32 29, ptr %7, align 8, !tbaa !15
  br label %.thread

166:                                              ; preds = %._crit_edge2298
  %167 = and i32 %163, 57344
  %.not1197 = icmp eq i32 %167, 0
  br i1 %.not1197, label %169, label %168

168:                                              ; preds = %166
  store ptr @.str.4, ptr %38, align 8, !tbaa !31
  store i32 29, ptr %7, align 8, !tbaa !15
  br label %.thread

169:                                              ; preds = %166
  %170 = load ptr, ptr %66, align 8, !tbaa !28
  %.not1198 = icmp eq ptr %170, null
  br i1 %.not1198, label %174, label %171

171:                                              ; preds = %169
  %172 = lshr i32 %163, 8
  %173 = and i32 %172, 1
  store i32 %173, ptr %170, align 8, !tbaa !36
  br label %174

174:                                              ; preds = %171, %169
  %175 = and i32 %163, 512
  %.not1199 = icmp eq i32 %175, 0
  br i1 %.not1199, label %.thread2905, label %176

176:                                              ; preds = %174
  %177 = trunc i64 %.2916.lcssa to i8
  store i8 %177, ptr %3, align 1, !tbaa !23
  %178 = lshr i64 %.2916.lcssa, 8
  %179 = trunc i64 %178 to i8
  store i8 %179, ptr %67, align 1, !tbaa !23
  %180 = load i64, ptr %36, align 8, !tbaa !26
  %181 = call i64 @crc32(i64 noundef %180, ptr noundef nonnull %3, i32 noundef 2) #5
  store i64 %181, ptr %36, align 8, !tbaa !26
  br label %.thread2905

.thread2905:                                      ; preds = %176, %174
  store i32 2, ptr %7, align 8, !tbaa !15
  br label %.lr.ph2308.preheader

182:                                              ; preds = %72
  %183 = icmp ult i32 %.0903, 32
  br i1 %183, label %.lr.ph2308.preheader, label %._crit_edge2309

.lr.ph2308.preheader:                             ; preds = %.thread2905, %182
  %.39062913 = phi i32 [ 0, %.thread2905 ], [ %.0903, %182 ]
  %.39172912 = phi i64 [ 0, %.thread2905 ], [ %.0914, %182 ]
  %.39812911 = phi i32 [ %.2980.lcssa, %.thread2905 ], [ %.0978, %182 ]
  %.310462910 = phi ptr [ %.21045.lcssa, %.thread2905 ], [ %.01043, %182 ]
  %184 = zext nneg i32 %.39062913 to i64
  %185 = icmp eq i32 %.39812911, 0
  br i1 %185, label %.loopexit.loopexit2362, label %186

186:                                              ; preds = %.lr.ph2308.preheader
  %187 = add i32 %.39812911, -1
  %188 = getelementptr inbounds i8, ptr %.310462910, i64 1
  %189 = load i8, ptr %.310462910, align 1, !tbaa !23
  %190 = zext i8 %189 to i64
  %191 = shl nuw nsw i64 %190, %184
  %192 = add i64 %191, %.39172912
  %indvars.iv.next2865 = add nuw nsw i64 %184, 8
  %193 = icmp ult i32 %.39062913, 24
  br i1 %193, label %.lr.ph2308.1, label %._crit_edge2309, !llvm.loop !37

.lr.ph2308.1:                                     ; preds = %186
  %194 = icmp eq i32 %187, 0
  br i1 %194, label %.loopexit.loopexit2362, label %195

195:                                              ; preds = %.lr.ph2308.1
  %196 = add i32 %.39812911, -2
  %197 = getelementptr inbounds i8, ptr %.310462910, i64 2
  %198 = load i8, ptr %188, align 1, !tbaa !23
  %199 = zext i8 %198 to i64
  %200 = shl nuw nsw i64 %199, %indvars.iv.next2865
  %201 = add i64 %200, %192
  %indvars.iv.next2865.1 = add nuw nsw i64 %184, 16
  %202 = icmp ult i32 %.39062913, 16
  br i1 %202, label %.lr.ph2308.2, label %._crit_edge2309, !llvm.loop !37

.lr.ph2308.2:                                     ; preds = %195
  %203 = icmp eq i32 %196, 0
  br i1 %203, label %.loopexit.loopexit2362, label %204

204:                                              ; preds = %.lr.ph2308.2
  %205 = add i32 %.39812911, -3
  %206 = getelementptr inbounds i8, ptr %.310462910, i64 3
  %207 = load i8, ptr %197, align 1, !tbaa !23
  %208 = zext i8 %207 to i64
  %209 = shl nuw nsw i64 %208, %indvars.iv.next2865.1
  %210 = add i64 %209, %201
  %indvars.iv.next2865.2 = add nuw nsw i64 %184, 24
  %211 = icmp ult i32 %.39062913, 8
  br i1 %211, label %.lr.ph2308.3, label %._crit_edge2309, !llvm.loop !37

.lr.ph2308.3:                                     ; preds = %204
  %212 = icmp eq i32 %205, 0
  br i1 %212, label %.loopexit.loopexit2362, label %213

213:                                              ; preds = %.lr.ph2308.3
  %214 = add i32 %.39812911, -4
  %215 = getelementptr inbounds i8, ptr %.310462910, i64 4
  %216 = load i8, ptr %206, align 1, !tbaa !23
  %217 = zext i8 %216 to i64
  %218 = shl nuw nsw i64 %217, %indvars.iv.next2865.2
  %219 = add i64 %218, %210
  br label %._crit_edge2309

._crit_edge2309:                                  ; preds = %186, %195, %204, %213, %182
  %.41047.lcssa = phi ptr [ %.01043, %182 ], [ %188, %186 ], [ %197, %195 ], [ %206, %204 ], [ %215, %213 ]
  %.4982.lcssa = phi i32 [ %.0978, %182 ], [ %187, %186 ], [ %196, %195 ], [ %205, %204 ], [ %214, %213 ]
  %.4918.lcssa = phi i64 [ %.0914, %182 ], [ %192, %186 ], [ %201, %195 ], [ %210, %204 ], [ %219, %213 ]
  %220 = load ptr, ptr %66, align 8, !tbaa !28
  %.not1200 = icmp eq ptr %220, null
  br i1 %.not1200, label %223, label %221

221:                                              ; preds = %._crit_edge2309
  %222 = getelementptr inbounds i8, ptr %220, i64 8
  store i64 %.4918.lcssa, ptr %222, align 8, !tbaa !38
  br label %223

223:                                              ; preds = %221, %._crit_edge2309
  %224 = load i32, ptr %35, align 8, !tbaa !27
  %225 = and i32 %224, 512
  %.not1201 = icmp eq i32 %225, 0
  br i1 %.not1201, label %.thread2914, label %226

226:                                              ; preds = %223
  %227 = trunc i64 %.4918.lcssa to i8
  store i8 %227, ptr %3, align 1, !tbaa !23
  %228 = lshr i64 %.4918.lcssa, 8
  %229 = trunc i64 %228 to i8
  store i8 %229, ptr %67, align 1, !tbaa !23
  %230 = lshr i64 %.4918.lcssa, 16
  %231 = trunc i64 %230 to i8
  store i8 %231, ptr %68, align 1, !tbaa !23
  %232 = lshr i64 %.4918.lcssa, 24
  %233 = trunc i64 %232 to i8
  store i8 %233, ptr %69, align 1, !tbaa !23
  %234 = load i64, ptr %36, align 8, !tbaa !26
  %235 = call i64 @crc32(i64 noundef %234, ptr noundef nonnull %3, i32 noundef 4) #5
  store i64 %235, ptr %36, align 8, !tbaa !26
  br label %.thread2914

.thread2914:                                      ; preds = %226, %223
  store i32 3, ptr %7, align 8, !tbaa !15
  br label %.lr.ph2318.preheader

236:                                              ; preds = %72
  %237 = icmp ult i32 %.0903, 16
  br i1 %237, label %.lr.ph2318.preheader, label %._crit_edge2319

.lr.ph2318.preheader:                             ; preds = %.thread2914, %236
  %.59082922 = phi i32 [ 0, %.thread2914 ], [ %.0903, %236 ]
  %.59192921 = phi i64 [ 0, %.thread2914 ], [ %.0914, %236 ]
  %.59832920 = phi i32 [ %.4982.lcssa, %.thread2914 ], [ %.0978, %236 ]
  %.510482919 = phi ptr [ %.41047.lcssa, %.thread2914 ], [ %.01043, %236 ]
  %238 = zext nneg i32 %.59082922 to i64
  %239 = icmp eq i32 %.59832920, 0
  br i1 %239, label %.loopexit.loopexit2361, label %240

240:                                              ; preds = %.lr.ph2318.preheader
  %241 = add i32 %.59832920, -1
  %242 = getelementptr inbounds i8, ptr %.510482919, i64 1
  %243 = load i8, ptr %.510482919, align 1, !tbaa !23
  %244 = zext i8 %243 to i64
  %245 = shl nuw nsw i64 %244, %238
  %246 = add i64 %245, %.59192921
  %indvars.iv.next2868 = add nuw nsw i64 %238, 8
  %247 = icmp ult i32 %.59082922, 8
  br i1 %247, label %.lr.ph2318.1, label %._crit_edge2319, !llvm.loop !39

.lr.ph2318.1:                                     ; preds = %240
  %248 = icmp eq i32 %241, 0
  br i1 %248, label %.loopexit.loopexit2361, label %249

249:                                              ; preds = %.lr.ph2318.1
  %250 = add i32 %.59832920, -2
  %251 = getelementptr inbounds i8, ptr %.510482919, i64 2
  %252 = load i8, ptr %242, align 1, !tbaa !23
  %253 = zext i8 %252 to i64
  %254 = shl nuw nsw i64 %253, %indvars.iv.next2868
  %255 = add i64 %254, %246
  br label %._crit_edge2319

._crit_edge2319:                                  ; preds = %240, %249, %236
  %.61049.lcssa = phi ptr [ %.01043, %236 ], [ %242, %240 ], [ %251, %249 ]
  %.6984.lcssa = phi i32 [ %.0978, %236 ], [ %241, %240 ], [ %250, %249 ]
  %.6920.lcssa = phi i64 [ %.0914, %236 ], [ %246, %240 ], [ %255, %249 ]
  %256 = load ptr, ptr %66, align 8, !tbaa !28
  %.not1202 = icmp eq ptr %256, null
  br i1 %.not1202, label %264, label %257

257:                                              ; preds = %._crit_edge2319
  %258 = trunc i64 %.6920.lcssa to i32
  %259 = and i32 %258, 255
  %260 = getelementptr inbounds i8, ptr %256, i64 16
  store i32 %259, ptr %260, align 8, !tbaa !40
  %261 = lshr i64 %.6920.lcssa, 8
  %262 = trunc i64 %261 to i32
  %263 = getelementptr inbounds i8, ptr %256, i64 20
  store i32 %262, ptr %263, align 4, !tbaa !41
  br label %264

264:                                              ; preds = %257, %._crit_edge2319
  %265 = load i32, ptr %35, align 8, !tbaa !27
  %266 = and i32 %265, 512
  %.not1203 = icmp eq i32 %266, 0
  br i1 %.not1203, label %.thread2923, label %267

267:                                              ; preds = %264
  %268 = trunc i64 %.6920.lcssa to i8
  store i8 %268, ptr %3, align 1, !tbaa !23
  %269 = lshr i64 %.6920.lcssa, 8
  %270 = trunc i64 %269 to i8
  store i8 %270, ptr %67, align 1, !tbaa !23
  %271 = load i64, ptr %36, align 8, !tbaa !26
  %272 = call i64 @crc32(i64 noundef %271, ptr noundef nonnull %3, i32 noundef 2) #5
  store i64 %272, ptr %36, align 8, !tbaa !26
  br label %.thread2923

273:                                              ; preds = %72
  %274 = load i32, ptr %35, align 8, !tbaa !27
  %275 = and i32 %274, 1024
  %.not1204 = icmp eq i32 %275, 0
  br i1 %.not1204, label %311, label %.preheader1266

.thread2923:                                      ; preds = %267, %264
  store i32 4, ptr %7, align 8, !tbaa !15
  %276 = load i32, ptr %35, align 8, !tbaa !27
  %277 = and i32 %276, 1024
  %.not12042928 = icmp eq i32 %277, 0
  br i1 %.not12042928, label %311, label %.lr.ph2327.preheader

.preheader1266:                                   ; preds = %273
  %278 = icmp ult i32 %.0903, 16
  br i1 %278, label %.lr.ph2327.preheader, label %._crit_edge2328

.lr.ph2327.preheader:                             ; preds = %.thread2923, %.preheader1266
  %.7105029302944 = phi ptr [ %.01043, %.preheader1266 ], [ %.61049.lcssa, %.thread2923 ]
  %.798529322943 = phi i32 [ %.0978, %.preheader1266 ], [ %.6984.lcssa, %.thread2923 ]
  %.792129342942 = phi i64 [ %.0914, %.preheader1266 ], [ 0, %.thread2923 ]
  %.791029362941 = phi i32 [ %.0903, %.preheader1266 ], [ 0, %.thread2923 ]
  %279 = phi i32 [ %274, %.preheader1266 ], [ %276, %.thread2923 ]
  %280 = zext nneg i32 %.791029362941 to i64
  %281 = icmp eq i32 %.798529322943, 0
  br i1 %281, label %.loopexit.loopexit2360, label %282

282:                                              ; preds = %.lr.ph2327.preheader
  %283 = add i32 %.798529322943, -1
  %284 = getelementptr inbounds i8, ptr %.7105029302944, i64 1
  %285 = load i8, ptr %.7105029302944, align 1, !tbaa !23
  %286 = zext i8 %285 to i64
  %287 = shl nuw nsw i64 %286, %280
  %288 = add i64 %287, %.792129342942
  %indvars.iv.next2871 = add nuw nsw i64 %280, 8
  %289 = icmp ult i32 %.791029362941, 8
  br i1 %289, label %.lr.ph2327.1, label %._crit_edge2328, !llvm.loop !42

.lr.ph2327.1:                                     ; preds = %282
  %290 = icmp eq i32 %283, 0
  br i1 %290, label %.loopexit.loopexit2360, label %291

291:                                              ; preds = %.lr.ph2327.1
  %292 = add i32 %.798529322943, -2
  %293 = getelementptr inbounds i8, ptr %.7105029302944, i64 2
  %294 = load i8, ptr %284, align 1, !tbaa !23
  %295 = zext i8 %294 to i64
  %296 = shl nuw nsw i64 %295, %indvars.iv.next2871
  %297 = add i64 %296, %288
  br label %._crit_edge2328

._crit_edge2328:                                  ; preds = %282, %291, %.preheader1266
  %298 = phi i32 [ %274, %.preheader1266 ], [ %279, %291 ], [ %279, %282 ]
  %.81051.lcssa = phi ptr [ %.01043, %.preheader1266 ], [ %284, %282 ], [ %293, %291 ]
  %.8986.lcssa = phi i32 [ %.0978, %.preheader1266 ], [ %283, %282 ], [ %292, %291 ]
  %.8922.lcssa = phi i64 [ %.0914, %.preheader1266 ], [ %288, %282 ], [ %297, %291 ]
  %299 = trunc i64 %.8922.lcssa to i32
  store i32 %299, ptr %39, align 4, !tbaa !43
  %300 = load ptr, ptr %66, align 8, !tbaa !28
  %.not1206 = icmp eq ptr %300, null
  br i1 %.not1206, label %303, label %301

301:                                              ; preds = %._crit_edge2328
  %302 = getelementptr inbounds i8, ptr %300, i64 32
  store i32 %299, ptr %302, align 8, !tbaa !44
  br label %303

303:                                              ; preds = %301, %._crit_edge2328
  %304 = and i32 %298, 512
  %.not1207 = icmp eq i32 %304, 0
  br i1 %.not1207, label %315, label %305

305:                                              ; preds = %303
  %306 = trunc i64 %.8922.lcssa to i8
  store i8 %306, ptr %3, align 1, !tbaa !23
  %307 = lshr i64 %.8922.lcssa, 8
  %308 = trunc i64 %307 to i8
  store i8 %308, ptr %67, align 1, !tbaa !23
  %309 = load i64, ptr %36, align 8, !tbaa !26
  %310 = call i64 @crc32(i64 noundef %309, ptr noundef nonnull %3, i32 noundef 2) #5
  store i64 %310, ptr %36, align 8, !tbaa !26
  br label %315

311:                                              ; preds = %.thread2923, %273
  %.79102935 = phi i32 [ 0, %.thread2923 ], [ %.0903, %273 ]
  %.79212933 = phi i64 [ 0, %.thread2923 ], [ %.0914, %273 ]
  %.79852931 = phi i32 [ %.6984.lcssa, %.thread2923 ], [ %.0978, %273 ]
  %.710502929 = phi ptr [ %.61049.lcssa, %.thread2923 ], [ %.01043, %273 ]
  %312 = load ptr, ptr %66, align 8, !tbaa !28
  %.not1205 = icmp eq ptr %312, null
  br i1 %.not1205, label %315, label %313

313:                                              ; preds = %311
  %314 = getelementptr inbounds i8, ptr %312, i64 24
  store ptr null, ptr %314, align 8, !tbaa !45
  br label %315

315:                                              ; preds = %305, %303, %311, %313
  %.91052 = phi ptr [ %.710502929, %313 ], [ %.710502929, %311 ], [ %.81051.lcssa, %303 ], [ %.81051.lcssa, %305 ]
  %.9987 = phi i32 [ %.79852931, %313 ], [ %.79852931, %311 ], [ %.8986.lcssa, %303 ], [ %.8986.lcssa, %305 ]
  %.9923 = phi i64 [ %.79212933, %313 ], [ %.79212933, %311 ], [ 0, %303 ], [ 0, %305 ]
  %.9912 = phi i32 [ %.79102935, %313 ], [ %.79102935, %311 ], [ 0, %303 ], [ 0, %305 ]
  store i32 5, ptr %7, align 8, !tbaa !15
  br label %316

316:                                              ; preds = %315, %72
  %.101053 = phi ptr [ %.01043, %72 ], [ %.91052, %315 ]
  %.10988 = phi i32 [ %.0978, %72 ], [ %.9987, %315 ]
  %.10924 = phi i64 [ %.0914, %72 ], [ %.9923, %315 ]
  %.10913 = phi i32 [ %.0903, %72 ], [ %.9912, %315 ]
  %317 = load i32, ptr %35, align 8, !tbaa !27
  %318 = and i32 %317, 1024
  %.not1208 = icmp eq i32 %318, 0
  br i1 %.not1208, label %353, label %319

319:                                              ; preds = %316
  %320 = load i32, ptr %39, align 4, !tbaa !43
  %spec.select = call i32 @llvm.umin.i32(i32 %320, i32 %.10988)
  %.not1209 = icmp eq i32 %spec.select, 0
  br i1 %.not1209, label %351, label %321

321:                                              ; preds = %319
  %322 = load ptr, ptr %66, align 8, !tbaa !28
  %.not1210 = icmp eq ptr %322, null
  br i1 %.not1210, label %339, label %323

323:                                              ; preds = %321
  %324 = getelementptr inbounds i8, ptr %322, i64 24
  %325 = load ptr, ptr %324, align 8, !tbaa !45
  %.not1211 = icmp eq ptr %325, null
  br i1 %.not1211, label %339, label %326

326:                                              ; preds = %323
  %327 = getelementptr inbounds i8, ptr %322, i64 32
  %328 = load i32, ptr %327, align 8, !tbaa !44
  %329 = sub i32 %328, %320
  %330 = zext i32 %329 to i64
  %331 = getelementptr inbounds i8, ptr %325, i64 %330
  %332 = add i32 %329, %spec.select
  %333 = getelementptr inbounds i8, ptr %322, i64 36
  %334 = load i32, ptr %333, align 4, !tbaa !46
  %335 = icmp ugt i32 %332, %334
  %336 = sub i32 %334, %329
  %337 = select i1 %335, i32 %336, i32 %spec.select
  %338 = zext i32 %337 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %331, ptr align 1 %.101053, i64 %338, i1 false)
  %.pre2900 = load i32, ptr %35, align 8, !tbaa !27
  br label %339

339:                                              ; preds = %326, %323, %321
  %340 = phi i32 [ %.pre2900, %326 ], [ %317, %323 ], [ %317, %321 ]
  %341 = and i32 %340, 512
  %.not1212 = icmp eq i32 %341, 0
  br i1 %.not1212, label %345, label %342

342:                                              ; preds = %339
  %343 = load i64, ptr %36, align 8, !tbaa !26
  %344 = call i64 @crc32(i64 noundef %343, ptr noundef %.101053, i32 noundef %spec.select) #5
  store i64 %344, ptr %36, align 8, !tbaa !26
  br label %345

345:                                              ; preds = %342, %339
  %346 = sub i32 %.10988, %spec.select
  %347 = zext i32 %spec.select to i64
  %348 = getelementptr inbounds i8, ptr %.101053, i64 %347
  %349 = load i32, ptr %39, align 4, !tbaa !43
  %350 = sub i32 %349, %spec.select
  store i32 %350, ptr %39, align 4, !tbaa !43
  br label %351

351:                                              ; preds = %345, %319
  %352 = phi i32 [ %350, %345 ], [ %320, %319 ]
  %.111054 = phi ptr [ %348, %345 ], [ %.101053, %319 ]
  %.11989 = phi i32 [ %346, %345 ], [ %.10988, %319 ]
  %.not1213 = icmp eq i32 %352, 0
  br i1 %.not1213, label %353, label %.loopexit

353:                                              ; preds = %351, %316
  %.121055 = phi ptr [ %.111054, %351 ], [ %.101053, %316 ]
  %.12990 = phi i32 [ %.11989, %351 ], [ %.10988, %316 ]
  store i32 0, ptr %39, align 4, !tbaa !43
  store i32 6, ptr %7, align 8, !tbaa !15
  br label %354

354:                                              ; preds = %353, %72
  %.131056 = phi ptr [ %.01043, %72 ], [ %.121055, %353 ]
  %.13991 = phi i32 [ %.0978, %72 ], [ %.12990, %353 ]
  %.11925 = phi i64 [ %.0914, %72 ], [ %.10924, %353 ]
  %.11 = phi i32 [ %.0903, %72 ], [ %.10913, %353 ]
  %355 = load i32, ptr %35, align 8, !tbaa !27
  %356 = and i32 %355, 2048
  %.not1214 = icmp eq i32 %356, 0
  br i1 %.not1214, label %390, label %357

357:                                              ; preds = %354
  %358 = icmp eq i32 %.13991, 0
  br i1 %358, label %.loopexit, label %.preheader1265.preheader

.preheader1265.preheader:                         ; preds = %357
  %359 = zext i32 %.13991 to i64
  br label %.preheader1265

.preheader1265:                                   ; preds = %.preheader1265.preheader, %375
  %indvars.iv2873 = phi i64 [ 0, %.preheader1265.preheader ], [ %indvars.iv.next2874, %375 ]
  %indvars.iv.next2874 = add nuw nsw i64 %indvars.iv2873, 1
  %360 = getelementptr inbounds i8, ptr %.131056, i64 %indvars.iv2873
  %361 = load i8, ptr %360, align 1, !tbaa !23
  %362 = load ptr, ptr %66, align 8, !tbaa !28
  %.not1216 = icmp eq ptr %362, null
  br i1 %.not1216, label %375, label %363

363:                                              ; preds = %.preheader1265
  %364 = getelementptr inbounds i8, ptr %362, i64 40
  %365 = load ptr, ptr %364, align 8, !tbaa !47
  %.not1217 = icmp eq ptr %365, null
  br i1 %.not1217, label %375, label %366

366:                                              ; preds = %363
  %367 = load i32, ptr %39, align 4, !tbaa !43
  %368 = getelementptr inbounds i8, ptr %362, i64 48
  %369 = load i32, ptr %368, align 8, !tbaa !48
  %370 = icmp ult i32 %367, %369
  br i1 %370, label %371, label %375

371:                                              ; preds = %366
  %372 = add nuw i32 %367, 1
  store i32 %372, ptr %39, align 4, !tbaa !43
  %373 = zext i32 %367 to i64
  %374 = getelementptr inbounds i8, ptr %365, i64 %373
  store i8 %361, ptr %374, align 1, !tbaa !23
  br label %375

375:                                              ; preds = %.preheader1265, %363, %366, %371
  %376 = icmp ne i8 %361, 0
  %377 = icmp ult i64 %indvars.iv.next2874, %359
  %378 = select i1 %376, i1 %377, i1 false
  br i1 %378, label %.preheader1265, label %379, !llvm.loop !49

379:                                              ; preds = %375
  %380 = trunc nuw i64 %indvars.iv.next2874 to i32
  %381 = load i32, ptr %35, align 8, !tbaa !27
  %382 = and i32 %381, 512
  %.not1218 = icmp eq i32 %382, 0
  br i1 %.not1218, label %386, label %383

383:                                              ; preds = %379
  %384 = load i64, ptr %36, align 8, !tbaa !26
  %385 = call i64 @crc32(i64 noundef %384, ptr noundef nonnull %.131056, i32 noundef %380) #5
  store i64 %385, ptr %36, align 8, !tbaa !26
  br label %386

386:                                              ; preds = %383, %379
  %387 = sub i32 %.13991, %380
  %388 = and i64 %indvars.iv.next2874, 4294967295
  %389 = getelementptr inbounds i8, ptr %.131056, i64 %388
  br i1 %376, label %.loopexit, label %394

390:                                              ; preds = %354
  %391 = load ptr, ptr %66, align 8, !tbaa !28
  %.not1215 = icmp eq ptr %391, null
  br i1 %.not1215, label %394, label %392

392:                                              ; preds = %390
  %393 = getelementptr inbounds i8, ptr %391, i64 40
  store ptr null, ptr %393, align 8, !tbaa !47
  br label %394

394:                                              ; preds = %390, %392, %386
  %.141057 = phi ptr [ %389, %386 ], [ %.131056, %392 ], [ %.131056, %390 ]
  %.14992 = phi i32 [ %387, %386 ], [ %.13991, %392 ], [ %.13991, %390 ]
  store i32 0, ptr %39, align 4, !tbaa !43
  store i32 7, ptr %7, align 8, !tbaa !15
  br label %395

395:                                              ; preds = %394, %72
  %.151058 = phi ptr [ %.01043, %72 ], [ %.141057, %394 ]
  %.15993 = phi i32 [ %.0978, %72 ], [ %.14992, %394 ]
  %.12926 = phi i64 [ %.0914, %72 ], [ %.11925, %394 ]
  %.12 = phi i32 [ %.0903, %72 ], [ %.11, %394 ]
  %396 = load i32, ptr %35, align 8, !tbaa !27
  %397 = and i32 %396, 4096
  %.not1219 = icmp eq i32 %397, 0
  br i1 %.not1219, label %431, label %398

398:                                              ; preds = %395
  %399 = icmp eq i32 %.15993, 0
  br i1 %399, label %.loopexit, label %.preheader1264.preheader

.preheader1264.preheader:                         ; preds = %398
  %400 = zext i32 %.15993 to i64
  br label %.preheader1264

.preheader1264:                                   ; preds = %.preheader1264.preheader, %416
  %indvars.iv2876 = phi i64 [ 0, %.preheader1264.preheader ], [ %indvars.iv.next2877, %416 ]
  %indvars.iv.next2877 = add nuw nsw i64 %indvars.iv2876, 1
  %401 = getelementptr inbounds i8, ptr %.151058, i64 %indvars.iv2876
  %402 = load i8, ptr %401, align 1, !tbaa !23
  %403 = load ptr, ptr %66, align 8, !tbaa !28
  %.not1221 = icmp eq ptr %403, null
  br i1 %.not1221, label %416, label %404

404:                                              ; preds = %.preheader1264
  %405 = getelementptr inbounds i8, ptr %403, i64 56
  %406 = load ptr, ptr %405, align 8, !tbaa !50
  %.not1222 = icmp eq ptr %406, null
  br i1 %.not1222, label %416, label %407

407:                                              ; preds = %404
  %408 = load i32, ptr %39, align 4, !tbaa !43
  %409 = getelementptr inbounds i8, ptr %403, i64 64
  %410 = load i32, ptr %409, align 8, !tbaa !51
  %411 = icmp ult i32 %408, %410
  br i1 %411, label %412, label %416

412:                                              ; preds = %407
  %413 = add nuw i32 %408, 1
  store i32 %413, ptr %39, align 4, !tbaa !43
  %414 = zext i32 %408 to i64
  %415 = getelementptr inbounds i8, ptr %406, i64 %414
  store i8 %402, ptr %415, align 1, !tbaa !23
  br label %416

416:                                              ; preds = %.preheader1264, %404, %407, %412
  %417 = icmp ne i8 %402, 0
  %418 = icmp ult i64 %indvars.iv.next2877, %400
  %419 = select i1 %417, i1 %418, i1 false
  br i1 %419, label %.preheader1264, label %420, !llvm.loop !52

420:                                              ; preds = %416
  %421 = trunc nuw i64 %indvars.iv.next2877 to i32
  %422 = load i32, ptr %35, align 8, !tbaa !27
  %423 = and i32 %422, 512
  %.not1223 = icmp eq i32 %423, 0
  br i1 %.not1223, label %427, label %424

424:                                              ; preds = %420
  %425 = load i64, ptr %36, align 8, !tbaa !26
  %426 = call i64 @crc32(i64 noundef %425, ptr noundef nonnull %.151058, i32 noundef %421) #5
  store i64 %426, ptr %36, align 8, !tbaa !26
  br label %427

427:                                              ; preds = %424, %420
  %428 = sub i32 %.15993, %421
  %429 = and i64 %indvars.iv.next2877, 4294967295
  %430 = getelementptr inbounds i8, ptr %.151058, i64 %429
  br i1 %417, label %.loopexit, label %435

431:                                              ; preds = %395
  %432 = load ptr, ptr %66, align 8, !tbaa !28
  %.not1220 = icmp eq ptr %432, null
  br i1 %.not1220, label %435, label %433

433:                                              ; preds = %431
  %434 = getelementptr inbounds i8, ptr %432, i64 56
  store ptr null, ptr %434, align 8, !tbaa !50
  br label %435

435:                                              ; preds = %431, %433, %427
  %.161059 = phi ptr [ %430, %427 ], [ %.151058, %433 ], [ %.151058, %431 ]
  %.16994 = phi i32 [ %428, %427 ], [ %.15993, %433 ], [ %.15993, %431 ]
  store i32 8, ptr %7, align 8, !tbaa !15
  br label %436

436:                                              ; preds = %435, %72
  %.171060 = phi ptr [ %.01043, %72 ], [ %.161059, %435 ]
  %.17995 = phi i32 [ %.0978, %72 ], [ %.16994, %435 ]
  %.13927 = phi i64 [ %.0914, %72 ], [ %.12926, %435 ]
  %.13 = phi i32 [ %.0903, %72 ], [ %.12, %435 ]
  %437 = load i32, ptr %35, align 8, !tbaa !27
  %438 = and i32 %437, 512
  %.not1224 = icmp eq i32 %438, 0
  br i1 %.not1224, label %462, label %.preheader1262

.preheader1262:                                   ; preds = %436
  %439 = icmp ult i32 %.13, 16
  br i1 %439, label %.lr.ph2336.preheader, label %._crit_edge2337

.lr.ph2336.preheader:                             ; preds = %.preheader1262
  %440 = zext nneg i32 %.13 to i64
  %441 = icmp eq i32 %.17995, 0
  br i1 %441, label %.loopexit.loopexit2359, label %442

442:                                              ; preds = %.lr.ph2336.preheader
  %443 = add i32 %.17995, -1
  %444 = getelementptr inbounds i8, ptr %.171060, i64 1
  %445 = load i8, ptr %.171060, align 1, !tbaa !23
  %446 = zext i8 %445 to i64
  %447 = shl nuw nsw i64 %446, %440
  %448 = add i64 %447, %.13927
  %indvars.iv.next2880 = add nuw nsw i64 %440, 8
  %449 = icmp ult i32 %.13, 8
  br i1 %449, label %.lr.ph2336.1, label %._crit_edge2337.loopexit, !llvm.loop !53

.lr.ph2336.1:                                     ; preds = %442
  %450 = icmp eq i32 %443, 0
  br i1 %450, label %.loopexit.loopexit2359, label %451

451:                                              ; preds = %.lr.ph2336.1
  %452 = add i32 %.17995, -2
  %453 = getelementptr inbounds i8, ptr %.171060, i64 2
  %454 = load i8, ptr %444, align 1, !tbaa !23
  %455 = zext i8 %454 to i64
  %456 = shl nuw nsw i64 %455, %indvars.iv.next2880
  %457 = add i64 %456, %448
  %indvars.iv.next2880.1 = or disjoint i64 %440, 16
  br label %._crit_edge2337.loopexit

._crit_edge2337.loopexit:                         ; preds = %451, %442
  %.lcssa3997 = phi i32 [ %443, %442 ], [ %452, %451 ]
  %.lcssa3996 = phi ptr [ %444, %442 ], [ %453, %451 ]
  %.lcssa3995 = phi i64 [ %448, %442 ], [ %457, %451 ]
  %indvars.iv.next2880.lcssa = phi i64 [ %indvars.iv.next2880, %442 ], [ %indvars.iv.next2880.1, %451 ]
  %458 = trunc nuw nsw i64 %indvars.iv.next2880.lcssa to i32
  br label %._crit_edge2337

._crit_edge2337:                                  ; preds = %._crit_edge2337.loopexit, %.preheader1262
  %.181061.lcssa = phi ptr [ %.171060, %.preheader1262 ], [ %.lcssa3996, %._crit_edge2337.loopexit ]
  %.18996.lcssa = phi i32 [ %.17995, %.preheader1262 ], [ %.lcssa3997, %._crit_edge2337.loopexit ]
  %.14928.lcssa = phi i64 [ %.13927, %.preheader1262 ], [ %.lcssa3995, %._crit_edge2337.loopexit ]
  %.14.lcssa = phi i32 [ %.13, %.preheader1262 ], [ %458, %._crit_edge2337.loopexit ]
  %459 = load i64, ptr %36, align 8, !tbaa !26
  %460 = and i64 %459, 65535
  %.not1225 = icmp eq i64 %.14928.lcssa, %460
  br i1 %.not1225, label %462, label %461

461:                                              ; preds = %._crit_edge2337
  store ptr @.str.5, ptr %38, align 8, !tbaa !31
  store i32 29, ptr %7, align 8, !tbaa !15
  br label %.thread

462:                                              ; preds = %._crit_edge2337, %436
  %.191062 = phi ptr [ %.171060, %436 ], [ %.181061.lcssa, %._crit_edge2337 ]
  %.19997 = phi i32 [ %.17995, %436 ], [ %.18996.lcssa, %._crit_edge2337 ]
  %.15929 = phi i64 [ %.13927, %436 ], [ 0, %._crit_edge2337 ]
  %.15 = phi i32 [ %.13, %436 ], [ 0, %._crit_edge2337 ]
  %463 = load ptr, ptr %66, align 8, !tbaa !28
  %.not1226 = icmp eq ptr %463, null
  br i1 %.not1226, label %469, label %464

464:                                              ; preds = %462
  %465 = lshr i32 %437, 9
  %466 = and i32 %465, 1
  %467 = getelementptr inbounds i8, ptr %463, i64 68
  store i32 %466, ptr %467, align 4, !tbaa !54
  %468 = getelementptr inbounds i8, ptr %463, i64 72
  store i32 1, ptr %468, align 8, !tbaa !29
  br label %469

469:                                              ; preds = %464, %462
  %470 = call i64 @crc32(i64 noundef 0, ptr noundef null, i32 noundef 0) #5
  store i64 %470, ptr %36, align 8, !tbaa !26
  store i64 %470, ptr %37, align 8, !tbaa !34
  store i32 11, ptr %7, align 8, !tbaa !15
  br label %.thread

471:                                              ; preds = %.lr.ph2125.preheader
  %472 = add i32 %.0978, -1
  %473 = getelementptr inbounds i8, ptr %.01043, i64 1
  %474 = load i8, ptr %.01043, align 1, !tbaa !23
  %475 = zext i8 %474 to i64
  %476 = shl nuw nsw i64 %475, %78
  %477 = add i64 %476, %.0914
  %indvars.iv.next2859 = add nuw nsw i64 %78, 8
  %478 = icmp ult i32 %.0903, 24
  br i1 %478, label %.lr.ph2125.1, label %._crit_edge2126, !llvm.loop !55

.lr.ph2125.1:                                     ; preds = %471
  %479 = icmp eq i32 %472, 0
  br i1 %479, label %.loopexit.loopexit2364, label %480

480:                                              ; preds = %.lr.ph2125.1
  %481 = add i32 %.0978, -2
  %482 = getelementptr inbounds i8, ptr %.01043, i64 2
  %483 = load i8, ptr %473, align 1, !tbaa !23
  %484 = zext i8 %483 to i64
  %485 = shl nuw nsw i64 %484, %indvars.iv.next2859
  %486 = add i64 %485, %477
  %indvars.iv.next2859.1 = add nuw nsw i64 %78, 16
  %487 = icmp ult i32 %.0903, 16
  br i1 %487, label %.lr.ph2125.2, label %._crit_edge2126, !llvm.loop !55

.lr.ph2125.2:                                     ; preds = %480
  %488 = icmp eq i32 %481, 0
  br i1 %488, label %.loopexit.loopexit2364, label %489

489:                                              ; preds = %.lr.ph2125.2
  %490 = add i32 %.0978, -3
  %491 = getelementptr inbounds i8, ptr %.01043, i64 3
  %492 = load i8, ptr %482, align 1, !tbaa !23
  %493 = zext i8 %492 to i64
  %494 = shl nuw nsw i64 %493, %indvars.iv.next2859.1
  %495 = add i64 %494, %486
  %indvars.iv.next2859.2 = add nuw nsw i64 %78, 24
  %496 = icmp ult i32 %.0903, 8
  br i1 %496, label %.lr.ph2125.3, label %._crit_edge2126, !llvm.loop !55

.lr.ph2125.3:                                     ; preds = %489
  %497 = icmp eq i32 %490, 0
  br i1 %497, label %.loopexit.loopexit2364, label %498

498:                                              ; preds = %.lr.ph2125.3
  %499 = add i32 %.0978, -4
  %500 = getelementptr inbounds i8, ptr %.01043, i64 4
  %501 = load i8, ptr %491, align 1, !tbaa !23
  %502 = zext i8 %501 to i64
  %503 = shl nuw nsw i64 %502, %indvars.iv.next2859.2
  %504 = add i64 %503, %495
  br label %._crit_edge2126

._crit_edge2126:                                  ; preds = %471, %480, %489, %498, %.preheader1274
  %.201063.lcssa = phi ptr [ %.01043, %.preheader1274 ], [ %473, %471 ], [ %482, %480 ], [ %491, %489 ], [ %500, %498 ]
  %.20998.lcssa = phi i32 [ %.0978, %.preheader1274 ], [ %472, %471 ], [ %481, %480 ], [ %490, %489 ], [ %499, %498 ]
  %.16930.lcssa = phi i64 [ %.0914, %.preheader1274 ], [ %477, %471 ], [ %486, %480 ], [ %495, %489 ], [ %504, %498 ]
  %trunc1193 = trunc i64 %.16930.lcssa to i32
  %rev1194 = call i32 @llvm.bswap.i32(i32 %trunc1193)
  %505 = zext i32 %rev1194 to i64
  store i64 %505, ptr %36, align 8, !tbaa !26
  store i64 %505, ptr %37, align 8, !tbaa !34
  store i32 10, ptr %7, align 8, !tbaa !15
  br label %506

506:                                              ; preds = %._crit_edge2126, %72
  %.211064 = phi ptr [ %.01043, %72 ], [ %.201063.lcssa, %._crit_edge2126 ]
  %.21999 = phi i32 [ %.0978, %72 ], [ %.20998.lcssa, %._crit_edge2126 ]
  %.17931 = phi i64 [ %.0914, %72 ], [ 0, %._crit_edge2126 ]
  %.17 = phi i32 [ %.0903, %72 ], [ 0, %._crit_edge2126 ]
  %507 = load i32, ptr %63, align 4, !tbaa !56
  %508 = icmp eq i32 %507, 0
  br i1 %508, label %509, label %510

509:                                              ; preds = %506
  store ptr %.01040, ptr %10, align 8, !tbaa !12
  store i32 %.0976, ptr %24, align 8, !tbaa !17
  store ptr %.211064, ptr %0, align 8, !tbaa !13
  store i32 %.21999, ptr %26, align 8, !tbaa !14
  store i64 %.17931, ptr %28, align 8, !tbaa !18
  store i32 %.17, ptr %30, align 8, !tbaa !19
  br label %.loopexit1295

510:                                              ; preds = %506
  %511 = call i64 @adler32(i64 noundef 0, ptr noundef null, i32 noundef 0) #5
  store i64 %511, ptr %36, align 8, !tbaa !26
  store i64 %511, ptr %37, align 8, !tbaa !34
  store i32 11, ptr %7, align 8, !tbaa !15
  br label %512

512:                                              ; preds = %510, %72
  %.221065 = phi ptr [ %.01043, %72 ], [ %.211064, %510 ]
  %.221000 = phi i32 [ %.0978, %72 ], [ %.21999, %510 ]
  %.18932 = phi i64 [ %.0914, %72 ], [ %.17931, %510 ]
  %.18 = phi i32 [ %.0903, %72 ], [ %.17, %510 ]
  br i1 %or.cond3, label %.loopexit, label %513

513:                                              ; preds = %512, %72
  %.231066 = phi ptr [ %.01043, %72 ], [ %.221065, %512 ]
  %.231001 = phi i32 [ %.0978, %72 ], [ %.221000, %512 ]
  %.19933 = phi i64 [ %.0914, %72 ], [ %.18932, %512 ]
  %.19 = phi i32 [ %.0903, %72 ], [ %.18, %512 ]
  %514 = load i32, ptr %65, align 4, !tbaa !57
  %.not1195 = icmp eq i32 %514, 0
  br i1 %.not1195, label %.preheader1272, label %517

.preheader1272:                                   ; preds = %513
  %515 = icmp ult i32 %.19, 3
  br i1 %515, label %.lr.ph2134, label %530

.lr.ph2134:                                       ; preds = %.preheader1272
  %516 = icmp eq i32 %.231001, 0
  br i1 %516, label %.loopexit, label %._crit_edge2135

517:                                              ; preds = %513
  %518 = and i32 %.19, 7
  %519 = zext nneg i32 %518 to i64
  %520 = lshr i64 %.19933, %519
  %521 = and i32 %.19, -8
  store i32 26, ptr %7, align 8, !tbaa !15
  br label %.thread

._crit_edge2135:                                  ; preds = %.lr.ph2134
  %522 = or disjoint i32 %.19, 8
  %523 = add i32 %.231001, -1
  %524 = getelementptr inbounds i8, ptr %.231066, i64 1
  %525 = load i8, ptr %.231066, align 1, !tbaa !23
  %526 = zext i8 %525 to i64
  %527 = zext nneg i32 %.19 to i64
  %528 = shl nuw nsw i64 %526, %527
  %529 = add i64 %528, %.19933
  br label %530

530:                                              ; preds = %._crit_edge2135, %.preheader1272
  %.241067.lcssa = phi ptr [ %524, %._crit_edge2135 ], [ %.231066, %.preheader1272 ]
  %.241002.lcssa = phi i32 [ %523, %._crit_edge2135 ], [ %.231001, %.preheader1272 ]
  %.20934.lcssa = phi i64 [ %529, %._crit_edge2135 ], [ %.19933, %.preheader1272 ]
  %.20.lcssa = phi i32 [ %522, %._crit_edge2135 ], [ %.19, %.preheader1272 ]
  %531 = trunc i64 %.20934.lcssa to i32
  %532 = and i32 %531, 1
  store i32 %532, ptr %65, align 4, !tbaa !57
  %533 = lshr i32 %531, 1
  %534 = and i32 %533, 3
  switch i32 %534, label %default.unreachable2904 [
    i32 0, label %.sink.split
    i32 1, label %535
    i32 2, label %539
    i32 3, label %540
  ]

535:                                              ; preds = %530
  call void @fixedtables(ptr noundef nonnull %7)
  store i32 19, ptr %7, align 8, !tbaa !15
  br i1 %53, label %536, label %541

536:                                              ; preds = %535
  %537 = lshr i64 %.20934.lcssa, 3
  %538 = add i32 %.20.lcssa, -3
  br label %.loopexit

539:                                              ; preds = %530
  br label %.sink.split

540:                                              ; preds = %530
  store ptr @.str.6, ptr %38, align 8, !tbaa !31
  br label %.sink.split

default.unreachable2904:                          ; preds = %530
  unreachable

.sink.split:                                      ; preds = %530, %540, %539
  %.sink = phi i32 [ 16, %539 ], [ 29, %540 ], [ 13, %530 ]
  store i32 %.sink, ptr %7, align 8, !tbaa !15
  br label %541

541:                                              ; preds = %.sink.split, %535
  %542 = lshr i64 %.20934.lcssa, 3
  %543 = add i32 %.20.lcssa, -3
  br label %.thread

544:                                              ; preds = %72
  %545 = and i32 %.0903, 7
  %546 = zext nneg i32 %545 to i64
  %547 = lshr i64 %.0914, %546
  %548 = and i32 %.0903, -8
  %549 = icmp ult i32 %.0903, 32
  br i1 %549, label %.lr.ph2115.preheader, label %._crit_edge2116

.lr.ph2115.preheader:                             ; preds = %544
  %550 = and i32 %.0903, 24
  %551 = zext nneg i32 %550 to i64
  %552 = icmp eq i32 %.0978, 0
  br i1 %552, label %.loopexit.loopexit2365, label %553

553:                                              ; preds = %.lr.ph2115.preheader
  %554 = add i32 %.0978, -1
  %555 = getelementptr inbounds i8, ptr %.01043, i64 1
  %556 = load i8, ptr %.01043, align 1, !tbaa !23
  %557 = zext i8 %556 to i64
  %558 = shl nuw nsw i64 %557, %551
  %559 = add i64 %558, %547
  %indvars.iv.next2857 = add nuw nsw i64 %551, 8
  %.not4265 = icmp eq i32 %550, 24
  br i1 %.not4265, label %._crit_edge2116.loopexit, label %.lr.ph2115.1, !llvm.loop !58

.lr.ph2115.1:                                     ; preds = %553
  %560 = icmp eq i32 %554, 0
  br i1 %560, label %.loopexit.loopexit2365, label %561

561:                                              ; preds = %.lr.ph2115.1
  %562 = add i32 %.0978, -2
  %563 = getelementptr inbounds i8, ptr %.01043, i64 2
  %564 = load i8, ptr %555, align 1, !tbaa !23
  %565 = zext i8 %564 to i64
  %566 = shl nuw nsw i64 %565, %indvars.iv.next2857
  %567 = add i64 %566, %559
  %indvars.iv.next2857.1 = add nuw nsw i64 %551, 16
  %568 = icmp ult i32 %550, 16
  br i1 %568, label %.lr.ph2115.2, label %._crit_edge2116.loopexit, !llvm.loop !58

.lr.ph2115.2:                                     ; preds = %561
  %569 = icmp eq i32 %562, 0
  br i1 %569, label %.loopexit.loopexit2365, label %570

570:                                              ; preds = %.lr.ph2115.2
  %571 = add i32 %.0978, -3
  %572 = getelementptr inbounds i8, ptr %.01043, i64 3
  %573 = load i8, ptr %563, align 1, !tbaa !23
  %574 = zext i8 %573 to i64
  %575 = shl nuw nsw i64 %574, %indvars.iv.next2857.1
  %576 = add i64 %575, %567
  %indvars.iv.next2857.2 = add nuw nsw i64 %551, 24
  %577 = icmp eq i32 %550, 0
  br i1 %577, label %.lr.ph2115.3, label %._crit_edge2116.loopexit, !llvm.loop !58

.lr.ph2115.3:                                     ; preds = %570
  %578 = icmp eq i32 %571, 0
  br i1 %578, label %.loopexit.loopexit2365, label %579

579:                                              ; preds = %.lr.ph2115.3
  %580 = add i32 %.0978, -4
  %581 = getelementptr inbounds i8, ptr %.01043, i64 4
  %582 = load i8, ptr %572, align 1, !tbaa !23
  %583 = zext i8 %582 to i64
  %584 = shl nuw nsw i64 %583, %indvars.iv.next2857.2
  %585 = add i64 %584, %576
  br label %._crit_edge2116.loopexit

._crit_edge2116.loopexit:                         ; preds = %579, %570, %561, %553
  %.lcssa3959 = phi i32 [ %554, %553 ], [ %562, %561 ], [ %571, %570 ], [ %580, %579 ]
  %.lcssa3958 = phi ptr [ %555, %553 ], [ %563, %561 ], [ %572, %570 ], [ %581, %579 ]
  %.lcssa3957 = phi i64 [ %559, %553 ], [ %567, %561 ], [ %576, %570 ], [ %585, %579 ]
  %indvars.iv.next2857.lcssa = phi i64 [ %indvars.iv.next2857, %553 ], [ %indvars.iv.next2857.1, %561 ], [ %indvars.iv.next2857.2, %570 ], [ 32, %579 ]
  %586 = trunc nuw nsw i64 %indvars.iv.next2857.lcssa to i32
  br label %._crit_edge2116

._crit_edge2116:                                  ; preds = %._crit_edge2116.loopexit, %544
  %.251068.lcssa = phi ptr [ %.01043, %544 ], [ %.lcssa3958, %._crit_edge2116.loopexit ]
  %.251003.lcssa = phi i32 [ %.0978, %544 ], [ %.lcssa3959, %._crit_edge2116.loopexit ]
  %.21935.lcssa = phi i64 [ %547, %544 ], [ %.lcssa3957, %._crit_edge2116.loopexit ]
  %.21.lcssa = phi i32 [ %548, %544 ], [ %586, %._crit_edge2116.loopexit ]
  %587 = and i64 %.21935.lcssa, 65535
  %588 = lshr i64 %.21935.lcssa, 16
  %589 = xor i64 %588, %587
  %.not1191 = icmp eq i64 %589, 65535
  br i1 %.not1191, label %591, label %590

590:                                              ; preds = %._crit_edge2116
  store ptr @.str.7, ptr %38, align 8, !tbaa !31
  store i32 29, ptr %7, align 8, !tbaa !15
  br label %.thread

591:                                              ; preds = %._crit_edge2116
  %592 = trunc i64 %.21935.lcssa to i32
  %593 = and i32 %592, 65535
  store i32 %593, ptr %39, align 4, !tbaa !43
  store i32 14, ptr %7, align 8, !tbaa !15
  br i1 %53, label %.loopexit, label %594

594:                                              ; preds = %591, %72
  %.261069 = phi ptr [ %.01043, %72 ], [ %.251068.lcssa, %591 ]
  %.261004 = phi i32 [ %.0978, %72 ], [ %.251003.lcssa, %591 ]
  %.22936 = phi i64 [ %.0914, %72 ], [ 0, %591 ]
  %.22 = phi i32 [ %.0903, %72 ], [ 0, %591 ]
  store i32 15, ptr %7, align 8, !tbaa !15
  br label %595

595:                                              ; preds = %594, %72
  %.271070 = phi ptr [ %.01043, %72 ], [ %.261069, %594 ]
  %.271005 = phi i32 [ %.0978, %72 ], [ %.261004, %594 ]
  %.23937 = phi i64 [ %.0914, %72 ], [ %.22936, %594 ]
  %.23 = phi i32 [ %.0903, %72 ], [ %.22, %594 ]
  %596 = load i32, ptr %39, align 4, !tbaa !43
  %.not1192 = icmp eq i32 %596, 0
  br i1 %.not1192, label %607, label %597

597:                                              ; preds = %595
  %spec.select1237 = call i32 @llvm.umin.i32(i32 %596, i32 %.271005)
  %.4891 = call i32 @llvm.umin.i32(i32 %spec.select1237, i32 %.0976)
  %598 = icmp eq i32 %.4891, 0
  br i1 %598, label %.loopexit, label %599

599:                                              ; preds = %597
  %600 = zext i32 %.4891 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.01040, ptr align 1 %.271070, i64 %600, i1 false)
  %601 = sub i32 %.271005, %.4891
  %602 = getelementptr inbounds i8, ptr %.271070, i64 %600
  %603 = sub i32 %.0976, %.4891
  %604 = getelementptr inbounds i8, ptr %.01040, i64 %600
  %605 = load i32, ptr %39, align 4, !tbaa !43
  %606 = sub i32 %605, %.4891
  store i32 %606, ptr %39, align 4, !tbaa !43
  br label %.thread

607:                                              ; preds = %595
  store i32 11, ptr %7, align 8, !tbaa !15
  br label %.thread

608:                                              ; preds = %.lr.ph1767.preheader
  %609 = add i32 %.0978, -1
  %610 = getelementptr inbounds i8, ptr %.01043, i64 1
  %611 = load i8, ptr %.01043, align 1, !tbaa !23
  %612 = zext i8 %611 to i64
  %613 = shl nuw nsw i64 %612, %75
  %614 = add i64 %613, %.0914
  %indvars.iv.next2814 = add nuw nsw i64 %75, 8
  %615 = icmp ult i32 %.0903, 6
  br i1 %615, label %.lr.ph1767.1, label %._crit_edge1768.loopexit, !llvm.loop !59

.lr.ph1767.1:                                     ; preds = %608
  %616 = icmp eq i32 %609, 0
  br i1 %616, label %.loopexit.loopexit2373, label %617

617:                                              ; preds = %.lr.ph1767.1
  %618 = add i32 %.0978, -2
  %619 = getelementptr inbounds i8, ptr %.01043, i64 2
  %620 = load i8, ptr %610, align 1, !tbaa !23
  %621 = zext i8 %620 to i64
  %622 = shl nuw nsw i64 %621, %indvars.iv.next2814
  %623 = add i64 %622, %614
  %indvars.iv.next2814.1 = or disjoint i64 %75, 16
  br label %._crit_edge1768.loopexit

._crit_edge1768.loopexit:                         ; preds = %617, %608
  %.lcssa3859 = phi i32 [ %609, %608 ], [ %618, %617 ]
  %.lcssa3858 = phi ptr [ %610, %608 ], [ %619, %617 ]
  %.lcssa3857 = phi i64 [ %614, %608 ], [ %623, %617 ]
  %indvars.iv.next2814.lcssa = phi i64 [ %indvars.iv.next2814, %608 ], [ %indvars.iv.next2814.1, %617 ]
  %624 = trunc nuw nsw i64 %indvars.iv.next2814.lcssa to i32
  br label %._crit_edge1768

._crit_edge1768:                                  ; preds = %._crit_edge1768.loopexit, %.preheader1288
  %.281071.lcssa = phi ptr [ %.01043, %.preheader1288 ], [ %.lcssa3858, %._crit_edge1768.loopexit ]
  %.281006.lcssa = phi i32 [ %.0978, %.preheader1288 ], [ %.lcssa3859, %._crit_edge1768.loopexit ]
  %.24938.lcssa = phi i64 [ %.0914, %.preheader1288 ], [ %.lcssa3857, %._crit_edge1768.loopexit ]
  %.24.lcssa = phi i32 [ %.0903, %.preheader1288 ], [ %624, %._crit_edge1768.loopexit ]
  %625 = trunc i64 %.24938.lcssa to i32
  %626 = and i32 %625, 31
  %627 = add nuw nsw i32 %626, 257
  store i32 %627, ptr %40, align 4, !tbaa !60
  %628 = lshr i32 %625, 5
  %629 = and i32 %628, 31
  %630 = add nuw nsw i32 %629, 1
  store i32 %630, ptr %41, align 8, !tbaa !61
  %631 = lshr i32 %625, 10
  %632 = and i32 %631, 15
  %633 = add nuw nsw i32 %632, 4
  store i32 %633, ptr %42, align 8, !tbaa !62
  %634 = lshr i64 %.24938.lcssa, 14
  %635 = add i32 %.24.lcssa, -14
  %636 = icmp ugt i32 %626, 29
  %637 = icmp ugt i32 %629, 29
  %or.cond1246 = or i1 %636, %637
  br i1 %or.cond1246, label %638, label %.split.thread

638:                                              ; preds = %._crit_edge1768
  store ptr @.str.8, ptr %38, align 8, !tbaa !31
  store i32 29, ptr %7, align 8, !tbaa !15
  br label %.thread

.split.thread:                                    ; preds = %._crit_edge1768
  store i32 0, ptr %43, align 4, !tbaa !21
  store i32 17, ptr %7, align 8, !tbaa !15
  br label %.preheader1258.preheader

.split:                                           ; preds = %72
  %.pre2888 = load i32, ptr %42, align 8, !tbaa !62
  %.promoted.pre = load i32, ptr %43, align 4, !tbaa !21
  %639 = icmp ult i32 %.promoted.pre, %.pre2888
  br i1 %639, label %.preheader1258.preheader, label %.preheader1287

.preheader1258.preheader:                         ; preds = %.split.thread, %.split
  %.252954 = phi i32 [ %635, %.split.thread ], [ %.0903, %.split ]
  %.259392953 = phi i64 [ %634, %.split.thread ], [ %.0914, %.split ]
  %.2910072952 = phi i32 [ %.281006.lcssa, %.split.thread ], [ %.0978, %.split ]
  %.2910722951 = phi ptr [ %.281071.lcssa, %.split.thread ], [ %.01043, %.split ]
  %640 = phi i32 [ %633, %.split.thread ], [ %.pre2888, %.split ]
  %.promoted2950 = phi i32 [ 0, %.split.thread ], [ %.promoted.pre, %.split ]
  %641 = zext i32 %.promoted2950 to i64
  %wide.trip.count = zext i32 %640 to i64
  br label %.preheader1258

.preheader1287:                                   ; preds = %654, %.split
  %.301073.lcssa = phi ptr [ %.01043, %.split ], [ %.311074.lcssa, %654 ]
  %.301008.lcssa = phi i32 [ %.0978, %.split ], [ %.311009.lcssa, %654 ]
  %.26940.lcssa = phi i64 [ %.0914, %.split ], [ %662, %654 ]
  %.26.lcssa = phi i32 [ %.0903, %.split ], [ %663, %654 ]
  %.lcssa = phi i32 [ %.promoted.pre, %.split ], [ %640, %654 ]
  %642 = icmp ult i32 %.lcssa, 19
  br i1 %642, label %.lr.ph1941.preheader, label %669

.lr.ph1941.preheader:                             ; preds = %.preheader1287
  %643 = zext nneg i32 %.lcssa to i64
  br label %.lr.ph1941

.preheader1258:                                   ; preds = %.preheader1258.preheader, %654
  %indvars.iv2816 = phi i64 [ %641, %.preheader1258.preheader ], [ %indvars.iv.next2817, %654 ]
  %.261934 = phi i32 [ %.252954, %.preheader1258.preheader ], [ %663, %654 ]
  %.269401933 = phi i64 [ %.259392953, %.preheader1258.preheader ], [ %662, %654 ]
  %.3010081932 = phi i32 [ %.2910072952, %.preheader1258.preheader ], [ %.311009.lcssa, %654 ]
  %.3010731931 = phi ptr [ %.2910722951, %.preheader1258.preheader ], [ %.311074.lcssa, %654 ]
  %644 = icmp ult i32 %.261934, 3
  br i1 %644, label %.lr.ph1777, label %654

.lr.ph1777:                                       ; preds = %.preheader1258
  %645 = icmp eq i32 %.3010081932, 0
  br i1 %645, label %.loopexit, label %._crit_edge1778

._crit_edge1778:                                  ; preds = %.lr.ph1777
  %646 = or disjoint i32 %.261934, 8
  %647 = add i32 %.3010081932, -1
  %648 = getelementptr inbounds i8, ptr %.3010731931, i64 1
  %649 = load i8, ptr %.3010731931, align 1, !tbaa !23
  %650 = zext i8 %649 to i64
  %651 = zext nneg i32 %.261934 to i64
  %652 = shl nuw nsw i64 %650, %651
  %653 = add i64 %652, %.269401933
  br label %654

654:                                              ; preds = %._crit_edge1778, %.preheader1258
  %.311074.lcssa = phi ptr [ %648, %._crit_edge1778 ], [ %.3010731931, %.preheader1258 ]
  %.311009.lcssa = phi i32 [ %647, %._crit_edge1778 ], [ %.3010081932, %.preheader1258 ]
  %.27941.lcssa = phi i64 [ %653, %._crit_edge1778 ], [ %.269401933, %.preheader1258 ]
  %.27.lcssa = phi i32 [ %646, %._crit_edge1778 ], [ %.261934, %.preheader1258 ]
  %655 = trunc i64 %.27941.lcssa to i16
  %656 = and i16 %655, 7
  %indvars.iv.next2817 = add nuw nsw i64 %indvars.iv2816, 1
  %657 = trunc nuw i64 %indvars.iv.next2817 to i32
  store i32 %657, ptr %43, align 4, !tbaa !21
  %658 = getelementptr inbounds [19 x i16], ptr @inflate.order, i64 0, i64 %indvars.iv2816
  %659 = load i16, ptr %658, align 2, !tbaa !63
  %660 = zext i16 %659 to i64
  %661 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %660
  store i16 %656, ptr %661, align 2, !tbaa !63
  %662 = lshr i64 %.27941.lcssa, 3
  %663 = add i32 %.27.lcssa, -3
  %exitcond.not = icmp eq i64 %indvars.iv.next2817, %wide.trip.count
  br i1 %exitcond.not, label %.preheader1287, label %.preheader1258, !llvm.loop !65

.lr.ph1941:                                       ; preds = %.lr.ph1941.preheader, %.lr.ph1941
  %indvars.iv2819 = phi i64 [ %643, %.lr.ph1941.preheader ], [ %indvars.iv.next2820, %.lr.ph1941 ]
  %indvars.iv.next2820 = add nuw nsw i64 %indvars.iv2819, 1
  %664 = getelementptr inbounds [19 x i16], ptr @inflate.order, i64 0, i64 %indvars.iv2819
  %665 = load i16, ptr %664, align 2, !tbaa !63
  %666 = zext i16 %665 to i64
  %667 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %666
  store i16 0, ptr %667, align 2, !tbaa !63
  %668 = and i64 %indvars.iv.next2820, 4294967295
  %exitcond2822.not = icmp eq i64 %668, 19
  br i1 %exitcond2822.not, label %._crit_edge1942, label %.lr.ph1941, !llvm.loop !66

._crit_edge1942:                                  ; preds = %.lr.ph1941
  store i32 19, ptr %43, align 4, !tbaa !21
  br label %669

669:                                              ; preds = %._crit_edge1942, %.preheader1287
  store ptr %45, ptr %46, align 8, !tbaa !67
  store ptr %45, ptr %47, align 8, !tbaa !68
  store i32 7, ptr %48, align 8, !tbaa !69
  %670 = call i32 @inflate_table(i32 noundef 0, ptr noundef nonnull %44, i32 noundef 19, ptr noundef nonnull %46, ptr noundef nonnull %48, ptr noundef nonnull %49) #5
  %.not1168 = icmp eq i32 %670, 0
  br i1 %.not1168, label %672, label %671

671:                                              ; preds = %669
  store ptr @.str.9, ptr %38, align 8, !tbaa !31
  store i32 29, ptr %7, align 8, !tbaa !15
  br label %.thread

672:                                              ; preds = %669
  store i32 0, ptr %43, align 4, !tbaa !21
  store i32 18, ptr %7, align 8, !tbaa !15
  br label %673

673:                                              ; preds = %._crit_edge2890, %672
  %.promoted2006 = phi i32 [ %.promoted2006.pre, %._crit_edge2890 ], [ 0, %672 ]
  %.321075 = phi ptr [ %.01043, %._crit_edge2890 ], [ %.301073.lcssa, %672 ]
  %.321010 = phi i32 [ %.0978, %._crit_edge2890 ], [ %.301008.lcssa, %672 ]
  %.28942 = phi i64 [ %.0914, %._crit_edge2890 ], [ %.26940.lcssa, %672 ]
  %.28 = phi i32 [ %.0903, %._crit_edge2890 ], [ %.26.lcssa, %672 ]
  %.1 = phi i32 [ %.0, %._crit_edge2890 ], [ 0, %672 ]
  %674 = load i32, ptr %40, align 4, !tbaa !60
  %675 = load i32, ptr %41, align 8, !tbaa !61
  %676 = add i32 %675, %674
  %677 = icmp ult i32 %.promoted2006, %676
  br i1 %677, label %.preheader1256.lr.ph, label %._crit_edge2014

.preheader1256.lr.ph:                             ; preds = %673
  %678 = load ptr, ptr %47, align 8, !tbaa !68
  %679 = load i32, ptr %48, align 8, !tbaa !69
  %notmask = shl nsw i32 -1, %679
  %680 = xor i32 %notmask, -1
  br label %.preheader1256

.preheader1256:                                   ; preds = %.preheader1256.lr.ph, %851
  %.292013 = phi i32 [ %.28, %.preheader1256.lr.ph ], [ %.36, %851 ]
  %.299432012 = phi i64 [ %.28942, %.preheader1256.lr.ph ], [ %.36950, %851 ]
  %.3310112011 = phi i32 [ %.321010, %.preheader1256.lr.ph ], [ %.401018, %851 ]
  %.3310762010 = phi ptr [ %.321075, %.preheader1256.lr.ph ], [ %.401083, %851 ]
  %.lcssa199420072009 = phi i32 [ %.promoted2006, %.preheader1256.lr.ph ], [ %.lcssa19942008, %851 ]
  %681 = trunc i64 %.299432012 to i32
  %682 = and i32 %680, %681
  %683 = zext nneg i32 %682 to i64
  %.sroa.1862.0..sroa_idx1946 = getelementptr inbounds %struct.code, ptr %678, i64 %683, i32 1
  %.sroa.1862.0.copyload1947 = load i8, ptr %.sroa.1862.0..sroa_idx1946, align 1, !tbaa !23
  %684 = zext i8 %.sroa.1862.0.copyload1947 to i32
  %.not11691948 = icmp ult i32 %.292013, %684
  br i1 %.not11691948, label %.lr.ph1953.preheader, label %._crit_edge1954

.lr.ph1953.preheader:                             ; preds = %.preheader1256
  %685 = zext nneg i32 %.292013 to i64
  br label %.lr.ph1953

.lr.ph1953:                                       ; preds = %.lr.ph1953.preheader, %687
  %indvars.iv2823 = phi i64 [ %685, %.lr.ph1953.preheader ], [ %indvars.iv.next2824, %687 ]
  %.309441951 = phi i64 [ %.299432012, %.lr.ph1953.preheader ], [ %693, %687 ]
  %.3410121950 = phi i32 [ %.3310112011, %.lr.ph1953.preheader ], [ %688, %687 ]
  %.3410771949 = phi ptr [ %.3310762010, %.lr.ph1953.preheader ], [ %689, %687 ]
  %686 = icmp eq i32 %.3410121950, 0
  br i1 %686, label %.loopexit.loopexit2955, label %687

687:                                              ; preds = %.lr.ph1953
  %688 = add i32 %.3410121950, -1
  %689 = getelementptr inbounds i8, ptr %.3410771949, i64 1
  %690 = load i8, ptr %.3410771949, align 1, !tbaa !23
  %691 = zext i8 %690 to i64
  %692 = shl i64 %691, %indvars.iv2823
  %693 = add i64 %692, %.309441951
  %indvars.iv.next2824 = add nuw nsw i64 %indvars.iv2823, 8
  %694 = trunc i64 %693 to i32
  %695 = and i32 %680, %694
  %696 = zext nneg i32 %695 to i64
  %.sroa.1862.0..sroa_idx = getelementptr inbounds %struct.code, ptr %678, i64 %696, i32 1
  %.sroa.1862.0.copyload = load i8, ptr %.sroa.1862.0..sroa_idx, align 1, !tbaa !23
  %697 = zext i8 %.sroa.1862.0.copyload to i64
  %.not1169 = icmp ult i64 %indvars.iv.next2824, %697
  br i1 %.not1169, label %.lr.ph1953, label %._crit_edge1954.loopexit

._crit_edge1954.loopexit:                         ; preds = %687
  %698 = zext i8 %.sroa.1862.0.copyload to i32
  %699 = trunc nuw i64 %indvars.iv.next2824 to i32
  br label %._crit_edge1954

._crit_edge1954:                                  ; preds = %._crit_edge1954.loopexit, %.preheader1256
  %700 = phi i64 [ %683, %.preheader1256 ], [ %696, %._crit_edge1954.loopexit ]
  %.lcssa1944 = phi i32 [ %684, %.preheader1256 ], [ %698, %._crit_edge1954.loopexit ]
  %.341077.lcssa = phi ptr [ %.3310762010, %.preheader1256 ], [ %689, %._crit_edge1954.loopexit ]
  %.341012.lcssa = phi i32 [ %.3310112011, %.preheader1256 ], [ %688, %._crit_edge1954.loopexit ]
  %.30944.lcssa = phi i64 [ %.299432012, %.preheader1256 ], [ %693, %._crit_edge1954.loopexit ]
  %.30.lcssa = phi i32 [ %.292013, %.preheader1256 ], [ %699, %._crit_edge1954.loopexit ]
  %.sroa.1862.0.copyload.lcssa = phi i8 [ %.sroa.1862.0.copyload1947, %.preheader1256 ], [ %.sroa.1862.0.copyload, %._crit_edge1954.loopexit ]
  %.sroa.43.0..sroa_idx.le = getelementptr inbounds %struct.code, ptr %678, i64 %700, i32 2
  %.sroa.43.0.copyload.le = load i16, ptr %.sroa.43.0..sroa_idx.le, align 2, !tbaa !63
  %701 = icmp ult i16 %.sroa.43.0.copyload.le, 16
  br i1 %701, label %.preheader, label %721

.preheader:                                       ; preds = %._crit_edge1954
  %702 = icmp ult i32 %.30.lcssa, %.lcssa1944
  br i1 %702, label %.lr.ph2000.preheader, label %._crit_edge2001

.lr.ph2000.preheader:                             ; preds = %.preheader
  %703 = zext nneg i32 %.30.lcssa to i64
  %704 = zext nneg i32 %.lcssa1944 to i64
  br label %.lr.ph2000

.lr.ph2000:                                       ; preds = %.lr.ph2000.preheader, %706
  %indvars.iv2835 = phi i64 [ %703, %.lr.ph2000.preheader ], [ %indvars.iv.next2836, %706 ]
  %.319451998 = phi i64 [ %.30944.lcssa, %.lr.ph2000.preheader ], [ %712, %706 ]
  %.3510131997 = phi i32 [ %.341012.lcssa, %.lr.ph2000.preheader ], [ %707, %706 ]
  %.3510781996 = phi ptr [ %.341077.lcssa, %.lr.ph2000.preheader ], [ %708, %706 ]
  %705 = icmp eq i32 %.3510131997, 0
  br i1 %705, label %.loopexit.loopexit, label %706

706:                                              ; preds = %.lr.ph2000
  %707 = add i32 %.3510131997, -1
  %708 = getelementptr inbounds i8, ptr %.3510781996, i64 1
  %709 = load i8, ptr %.3510781996, align 1, !tbaa !23
  %710 = zext i8 %709 to i64
  %711 = shl i64 %710, %indvars.iv2835
  %712 = add i64 %711, %.319451998
  %indvars.iv.next2836 = add nuw nsw i64 %indvars.iv2835, 8
  %713 = icmp ult i64 %indvars.iv.next2836, %704
  br i1 %713, label %.lr.ph2000, label %._crit_edge2001.loopexit, !llvm.loop !70

._crit_edge2001.loopexit:                         ; preds = %706
  %714 = trunc nuw i64 %indvars.iv.next2836 to i32
  br label %._crit_edge2001

._crit_edge2001:                                  ; preds = %._crit_edge2001.loopexit, %.preheader
  %.351078.lcssa = phi ptr [ %.341077.lcssa, %.preheader ], [ %708, %._crit_edge2001.loopexit ]
  %.351013.lcssa = phi i32 [ %.341012.lcssa, %.preheader ], [ %707, %._crit_edge2001.loopexit ]
  %.31945.lcssa = phi i64 [ %.30944.lcssa, %.preheader ], [ %712, %._crit_edge2001.loopexit ]
  %.31.lcssa = phi i32 [ %.30.lcssa, %.preheader ], [ %714, %._crit_edge2001.loopexit ]
  %715 = zext nneg i8 %.sroa.1862.0.copyload.lcssa to i64
  %716 = lshr i64 %.31945.lcssa, %715
  %717 = sub i32 %.31.lcssa, %.lcssa1944
  %718 = add i32 %.lcssa199420072009, 1
  store i32 %718, ptr %43, align 4, !tbaa !21
  %719 = zext i32 %.lcssa199420072009 to i64
  %720 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %719
  store i16 %.sroa.43.0.copyload.le, ptr %720, align 2, !tbaa !63
  br label %851

721:                                              ; preds = %._crit_edge1954
  switch i16 %.sroa.43.0.copyload.le, label %.preheader1250 [
    i16 16, label %.preheader1252
    i16 17, label %.preheader1254
  ]

.preheader1254:                                   ; preds = %721
  %722 = add nuw nsw i32 %.lcssa1944, 3
  %723 = icmp ult i32 %.30.lcssa, %722
  br i1 %723, label %.lr.ph1967.preheader, label %._crit_edge1968

.lr.ph1967.preheader:                             ; preds = %.preheader1254
  %724 = zext nneg i32 %.30.lcssa to i64
  %725 = zext nneg i32 %722 to i64
  br label %.lr.ph1967

.preheader1252:                                   ; preds = %721
  %726 = add nuw nsw i32 %.lcssa1944, 2
  %727 = icmp ult i32 %.30.lcssa, %726
  br i1 %727, label %.lr.ph1977.preheader, label %._crit_edge1978

.lr.ph1977.preheader:                             ; preds = %.preheader1252
  %728 = zext nneg i32 %.30.lcssa to i64
  %729 = zext nneg i32 %726 to i64
  br label %.lr.ph1977

.preheader1250:                                   ; preds = %721
  %730 = add nuw nsw i32 %.lcssa1944, 7
  %731 = icmp ult i32 %.30.lcssa, %730
  br i1 %731, label %.lr.ph1987.preheader, label %._crit_edge1988

.lr.ph1987.preheader:                             ; preds = %.preheader1250
  %732 = zext nneg i32 %.30.lcssa to i64
  %733 = zext nneg i32 %730 to i64
  br label %.lr.ph1987

.lr.ph1977:                                       ; preds = %.lr.ph1977.preheader, %735
  %indvars.iv2829 = phi i64 [ %728, %.lr.ph1977.preheader ], [ %indvars.iv.next2830, %735 ]
  %.329461975 = phi i64 [ %.30944.lcssa, %.lr.ph1977.preheader ], [ %741, %735 ]
  %.3610141974 = phi i32 [ %.341012.lcssa, %.lr.ph1977.preheader ], [ %736, %735 ]
  %.3610791973 = phi ptr [ %.341077.lcssa, %.lr.ph1977.preheader ], [ %737, %735 ]
  %734 = icmp eq i32 %.3610141974, 0
  br i1 %734, label %.loopexit.loopexit2355, label %735

735:                                              ; preds = %.lr.ph1977
  %736 = add i32 %.3610141974, -1
  %737 = getelementptr inbounds i8, ptr %.3610791973, i64 1
  %738 = load i8, ptr %.3610791973, align 1, !tbaa !23
  %739 = zext i8 %738 to i64
  %740 = shl i64 %739, %indvars.iv2829
  %741 = add i64 %740, %.329461975
  %indvars.iv.next2830 = add nuw nsw i64 %indvars.iv2829, 8
  %742 = icmp ult i64 %indvars.iv.next2830, %729
  br i1 %742, label %.lr.ph1977, label %._crit_edge1978.loopexit, !llvm.loop !71

._crit_edge1978.loopexit:                         ; preds = %735
  %743 = trunc nuw i64 %indvars.iv.next2830 to i32
  br label %._crit_edge1978

._crit_edge1978:                                  ; preds = %._crit_edge1978.loopexit, %.preheader1252
  %.361079.lcssa = phi ptr [ %.341077.lcssa, %.preheader1252 ], [ %737, %._crit_edge1978.loopexit ]
  %.361014.lcssa = phi i32 [ %.341012.lcssa, %.preheader1252 ], [ %736, %._crit_edge1978.loopexit ]
  %.32946.lcssa = phi i64 [ %.30944.lcssa, %.preheader1252 ], [ %741, %._crit_edge1978.loopexit ]
  %.32.lcssa = phi i32 [ %.30.lcssa, %.preheader1252 ], [ %743, %._crit_edge1978.loopexit ]
  %744 = zext nneg i8 %.sroa.1862.0.copyload.lcssa to i64
  %745 = lshr i64 %.32946.lcssa, %744
  %746 = sub i32 %.32.lcssa, %.lcssa1944
  %747 = icmp eq i32 %.lcssa199420072009, 0
  br i1 %747, label %748, label %749

748:                                              ; preds = %._crit_edge1978
  store ptr @.str.10, ptr %38, align 8, !tbaa !31
  store i32 29, ptr %7, align 8, !tbaa !15
  br label %.thread

749:                                              ; preds = %._crit_edge1978
  %750 = add i32 %.lcssa199420072009, -1
  %751 = zext i32 %750 to i64
  %752 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %751
  %753 = load i16, ptr %752, align 2, !tbaa !63
  %754 = trunc i64 %745 to i32
  %755 = and i32 %754, 3
  %756 = add nuw nsw i32 %755, 3
  %757 = lshr i64 %745, 2
  %758 = add i32 %746, -2
  br label %793

.lr.ph1967:                                       ; preds = %.lr.ph1967.preheader, %760
  %indvars.iv2826 = phi i64 [ %724, %.lr.ph1967.preheader ], [ %indvars.iv.next2827, %760 ]
  %.339471965 = phi i64 [ %.30944.lcssa, %.lr.ph1967.preheader ], [ %766, %760 ]
  %.3710151964 = phi i32 [ %.341012.lcssa, %.lr.ph1967.preheader ], [ %761, %760 ]
  %.3710801963 = phi ptr [ %.341077.lcssa, %.lr.ph1967.preheader ], [ %762, %760 ]
  %759 = icmp eq i32 %.3710151964, 0
  br i1 %759, label %.loopexit.loopexit2356, label %760

760:                                              ; preds = %.lr.ph1967
  %761 = add i32 %.3710151964, -1
  %762 = getelementptr inbounds i8, ptr %.3710801963, i64 1
  %763 = load i8, ptr %.3710801963, align 1, !tbaa !23
  %764 = zext i8 %763 to i64
  %765 = shl i64 %764, %indvars.iv2826
  %766 = add i64 %765, %.339471965
  %indvars.iv.next2827 = add nuw nsw i64 %indvars.iv2826, 8
  %767 = icmp ult i64 %indvars.iv.next2827, %725
  br i1 %767, label %.lr.ph1967, label %._crit_edge1968.loopexit, !llvm.loop !72

._crit_edge1968.loopexit:                         ; preds = %760
  %768 = trunc nuw i64 %indvars.iv.next2827 to i32
  br label %._crit_edge1968

._crit_edge1968:                                  ; preds = %._crit_edge1968.loopexit, %.preheader1254
  %.371080.lcssa = phi ptr [ %.341077.lcssa, %.preheader1254 ], [ %762, %._crit_edge1968.loopexit ]
  %.371015.lcssa = phi i32 [ %.341012.lcssa, %.preheader1254 ], [ %761, %._crit_edge1968.loopexit ]
  %.33947.lcssa = phi i64 [ %.30944.lcssa, %.preheader1254 ], [ %766, %._crit_edge1968.loopexit ]
  %.33.lcssa = phi i32 [ %.30.lcssa, %.preheader1254 ], [ %768, %._crit_edge1968.loopexit ]
  %769 = zext nneg i8 %.sroa.1862.0.copyload.lcssa to i64
  %770 = lshr i64 %.33947.lcssa, %769
  %771 = trunc i64 %770 to i32
  %772 = and i32 %771, 7
  %773 = add nuw nsw i32 %772, 3
  %774 = lshr i64 %770, 3
  %reass.sub = sub i32 %.33.lcssa, %.lcssa1944
  %775 = add i32 %reass.sub, -3
  br label %793

.lr.ph1987:                                       ; preds = %.lr.ph1987.preheader, %777
  %indvars.iv2832 = phi i64 [ %732, %.lr.ph1987.preheader ], [ %indvars.iv.next2833, %777 ]
  %.349481985 = phi i64 [ %.30944.lcssa, %.lr.ph1987.preheader ], [ %783, %777 ]
  %.3810161984 = phi i32 [ %.341012.lcssa, %.lr.ph1987.preheader ], [ %778, %777 ]
  %.3810811983 = phi ptr [ %.341077.lcssa, %.lr.ph1987.preheader ], [ %779, %777 ]
  %776 = icmp eq i32 %.3810161984, 0
  br i1 %776, label %.loopexit.loopexit2354, label %777

777:                                              ; preds = %.lr.ph1987
  %778 = add i32 %.3810161984, -1
  %779 = getelementptr inbounds i8, ptr %.3810811983, i64 1
  %780 = load i8, ptr %.3810811983, align 1, !tbaa !23
  %781 = zext i8 %780 to i64
  %782 = shl i64 %781, %indvars.iv2832
  %783 = add i64 %782, %.349481985
  %indvars.iv.next2833 = add nuw nsw i64 %indvars.iv2832, 8
  %784 = icmp ult i64 %indvars.iv.next2833, %733
  br i1 %784, label %.lr.ph1987, label %._crit_edge1988.loopexit, !llvm.loop !73

._crit_edge1988.loopexit:                         ; preds = %777
  %785 = trunc nuw i64 %indvars.iv.next2833 to i32
  br label %._crit_edge1988

._crit_edge1988:                                  ; preds = %._crit_edge1988.loopexit, %.preheader1250
  %.381081.lcssa = phi ptr [ %.341077.lcssa, %.preheader1250 ], [ %779, %._crit_edge1988.loopexit ]
  %.381016.lcssa = phi i32 [ %.341012.lcssa, %.preheader1250 ], [ %778, %._crit_edge1988.loopexit ]
  %.34948.lcssa = phi i64 [ %.30944.lcssa, %.preheader1250 ], [ %783, %._crit_edge1988.loopexit ]
  %.34.lcssa = phi i32 [ %.30.lcssa, %.preheader1250 ], [ %785, %._crit_edge1988.loopexit ]
  %786 = zext nneg i8 %.sroa.1862.0.copyload.lcssa to i64
  %787 = lshr i64 %.34948.lcssa, %786
  %788 = trunc i64 %787 to i32
  %789 = and i32 %788, 127
  %790 = add nuw nsw i32 %789, 11
  %791 = lshr i64 %787, 7
  %reass.sub2353 = sub i32 %.34.lcssa, %.lcssa1944
  %792 = add i32 %reass.sub2353, -7
  br label %793

793:                                              ; preds = %._crit_edge1968, %._crit_edge1988, %749
  %.391082 = phi ptr [ %.361079.lcssa, %749 ], [ %.371080.lcssa, %._crit_edge1968 ], [ %.381081.lcssa, %._crit_edge1988 ]
  %.391017 = phi i32 [ %.361014.lcssa, %749 ], [ %.371015.lcssa, %._crit_edge1968 ], [ %.381016.lcssa, %._crit_edge1988 ]
  %.35949 = phi i64 [ %757, %749 ], [ %774, %._crit_edge1968 ], [ %791, %._crit_edge1988 ]
  %.35 = phi i32 [ %758, %749 ], [ %775, %._crit_edge1968 ], [ %792, %._crit_edge1988 ]
  %.5892 = phi i32 [ %756, %749 ], [ %773, %._crit_edge1968 ], [ %790, %._crit_edge1988 ]
  %.0883 = phi i16 [ %753, %749 ], [ 0, %._crit_edge1968 ], [ 0, %._crit_edge1988 ]
  %794 = add i32 %.5892, %.lcssa199420072009
  %795 = icmp ugt i32 %794, %676
  br i1 %795, label %836, label %.preheader1248.preheader

.preheader1248.preheader:                         ; preds = %793
  %min.iters.check3823 = icmp ult i32 %.5892, 16
  %796 = sub nsw i32 0, %.5892
  %797 = icmp ugt i32 %.lcssa199420072009, %796
  %or.cond3837 = select i1 %min.iters.check3823, i1 true, i1 %797
  br i1 %or.cond3837, label %.preheader1248.preheader3839, label %vector.ph3824

.preheader1248.preheader3839:                     ; preds = %middle.block3821, %.preheader1248.preheader
  %.68931995.ph = phi i32 [ %.5892, %.preheader1248.preheader ], [ %ind.end3827, %middle.block3821 ]
  %.ph = phi i32 [ %.lcssa199420072009, %.preheader1248.preheader ], [ %ind.end3829, %middle.block3821 ]
  %798 = add nsw i32 %.68931995.ph, -1
  %xtraiter = and i32 %.68931995.ph, 3
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader1248.prol.loopexit, label %.preheader1248.prol

.preheader1248.prol:                              ; preds = %.preheader1248.preheader3839, %.preheader1248.prol
  %.68931995.prol = phi i32 [ %800, %.preheader1248.prol ], [ %.68931995.ph, %.preheader1248.preheader3839 ]
  %799 = phi i32 [ %801, %.preheader1248.prol ], [ %.ph, %.preheader1248.preheader3839 ]
  %prol.iter = phi i32 [ %prol.iter.next, %.preheader1248.prol ], [ 0, %.preheader1248.preheader3839 ]
  %800 = add nsw i32 %.68931995.prol, -1
  %801 = add i32 %799, 1
  %802 = zext i32 %799 to i64
  %803 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %802
  store i16 %.0883, ptr %803, 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 %.preheader1248.prol.loopexit, label %.preheader1248.prol, !llvm.loop !74

.preheader1248.prol.loopexit:                     ; preds = %.preheader1248.prol, %.preheader1248.preheader3839
  %.lcssa3889.unr = phi i32 [ poison, %.preheader1248.preheader3839 ], [ %801, %.preheader1248.prol ]
  %.68931995.unr = phi i32 [ %.68931995.ph, %.preheader1248.preheader3839 ], [ %800, %.preheader1248.prol ]
  %.unr = phi i32 [ %.ph, %.preheader1248.preheader3839 ], [ %801, %.preheader1248.prol ]
  %804 = icmp ult i32 %798, 3
  br i1 %804, label %.loopexit1249, label %.preheader1248

vector.ph3824:                                    ; preds = %.preheader1248.preheader
  %n.vec3826 = and i32 %.5892, -16
  %ind.end3827 = and i32 %.5892, 15
  %ind.end3829 = add i32 %.lcssa199420072009, %n.vec3826
  %broadcast.splatinsert = insertelement <8 x i16> poison, i16 %.0883, i64 0
  %broadcast.splat = shufflevector <8 x i16> %broadcast.splatinsert, <8 x i16> poison, <8 x i32> zeroinitializer
  %805 = zext i32 %.lcssa199420072009 to i64
  %806 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %805
  %807 = getelementptr inbounds i8, ptr %806, i64 16
  store <8 x i16> %broadcast.splat, ptr %806, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat, ptr %807, align 2, !tbaa !63
  %808 = icmp eq i32 %n.vec3826, 16
  br i1 %808, label %middle.block3821, label %vector.body3831.1, !llvm.loop !76

vector.body3831.1:                                ; preds = %vector.ph3824
  %offset.idx.1 = add i32 %.lcssa199420072009, 16
  %809 = zext i32 %offset.idx.1 to i64
  %810 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %809
  %811 = getelementptr inbounds i8, ptr %810, i64 16
  store <8 x i16> %broadcast.splat, ptr %810, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat, ptr %811, align 2, !tbaa !63
  %812 = icmp eq i32 %n.vec3826, 32
  br i1 %812, label %middle.block3821, label %vector.body3831.2, !llvm.loop !76

vector.body3831.2:                                ; preds = %vector.body3831.1
  %offset.idx.2 = add i32 %.lcssa199420072009, 32
  %813 = zext i32 %offset.idx.2 to i64
  %814 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %813
  %815 = getelementptr inbounds i8, ptr %814, i64 16
  store <8 x i16> %broadcast.splat, ptr %814, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat, ptr %815, align 2, !tbaa !63
  %816 = icmp eq i32 %n.vec3826, 48
  br i1 %816, label %middle.block3821, label %vector.body3831.3, !llvm.loop !76

vector.body3831.3:                                ; preds = %vector.body3831.2
  %offset.idx.3 = add i32 %.lcssa199420072009, 48
  %817 = zext i32 %offset.idx.3 to i64
  %818 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %817
  %819 = getelementptr inbounds i8, ptr %818, i64 16
  store <8 x i16> %broadcast.splat, ptr %818, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat, ptr %819, align 2, !tbaa !63
  %820 = icmp eq i32 %n.vec3826, 64
  br i1 %820, label %middle.block3821, label %vector.body3831.4, !llvm.loop !76

vector.body3831.4:                                ; preds = %vector.body3831.3
  %offset.idx.4 = add i32 %.lcssa199420072009, 64
  %821 = zext i32 %offset.idx.4 to i64
  %822 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %821
  %823 = getelementptr inbounds i8, ptr %822, i64 16
  store <8 x i16> %broadcast.splat, ptr %822, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat, ptr %823, align 2, !tbaa !63
  %824 = icmp eq i32 %n.vec3826, 80
  br i1 %824, label %middle.block3821, label %vector.body3831.5, !llvm.loop !76

vector.body3831.5:                                ; preds = %vector.body3831.4
  %offset.idx.5 = add i32 %.lcssa199420072009, 80
  %825 = zext i32 %offset.idx.5 to i64
  %826 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %825
  %827 = getelementptr inbounds i8, ptr %826, i64 16
  store <8 x i16> %broadcast.splat, ptr %826, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat, ptr %827, align 2, !tbaa !63
  %828 = icmp eq i32 %n.vec3826, 96
  br i1 %828, label %middle.block3821, label %vector.body3831.6, !llvm.loop !76

vector.body3831.6:                                ; preds = %vector.body3831.5
  %offset.idx.6 = add i32 %.lcssa199420072009, 96
  %829 = zext i32 %offset.idx.6 to i64
  %830 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %829
  %831 = getelementptr inbounds i8, ptr %830, i64 16
  store <8 x i16> %broadcast.splat, ptr %830, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat, ptr %831, align 2, !tbaa !63
  %832 = icmp eq i32 %n.vec3826, 112
  br i1 %832, label %middle.block3821, label %vector.body3831.7, !llvm.loop !76

vector.body3831.7:                                ; preds = %vector.body3831.6
  %offset.idx.7 = add i32 %.lcssa199420072009, 112
  %833 = zext i32 %offset.idx.7 to i64
  %834 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %833
  %835 = getelementptr inbounds i8, ptr %834, i64 16
  store <8 x i16> %broadcast.splat, ptr %834, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat, ptr %835, align 2, !tbaa !63
  br label %middle.block3821

middle.block3821:                                 ; preds = %vector.body3831.7, %vector.body3831.6, %vector.body3831.5, %vector.body3831.4, %vector.body3831.3, %vector.body3831.2, %vector.body3831.1, %vector.ph3824
  %cmp.n3834 = icmp eq i32 %.5892, %n.vec3826
  br i1 %cmp.n3834, label %.loopexit1249, label %.preheader1248.preheader3839

836:                                              ; preds = %793
  store ptr @.str.10, ptr %38, align 8, !tbaa !31
  store i32 29, ptr %7, align 8, !tbaa !15
  br label %.thread

.preheader1248:                                   ; preds = %.preheader1248.prol.loopexit, %.preheader1248
  %.68931995 = phi i32 [ %847, %.preheader1248 ], [ %.68931995.unr, %.preheader1248.prol.loopexit ]
  %837 = phi i32 [ %848, %.preheader1248 ], [ %.unr, %.preheader1248.prol.loopexit ]
  %838 = add i32 %837, 1
  %839 = zext i32 %837 to i64
  %840 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %839
  store i16 %.0883, ptr %840, align 2, !tbaa !63
  %841 = add i32 %837, 2
  %842 = zext i32 %838 to i64
  %843 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %842
  store i16 %.0883, ptr %843, align 2, !tbaa !63
  %844 = add i32 %837, 3
  %845 = zext i32 %841 to i64
  %846 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %845
  store i16 %.0883, ptr %846, align 2, !tbaa !63
  %847 = add nsw i32 %.68931995, -4
  %848 = add i32 %837, 4
  %849 = zext i32 %844 to i64
  %850 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %849
  store i16 %.0883, ptr %850, align 2, !tbaa !63
  %.not1170.3 = icmp eq i32 %847, 0
  br i1 %.not1170.3, label %.loopexit1249, label %.preheader1248, !llvm.loop !79

.loopexit1249:                                    ; preds = %.preheader1248.prol.loopexit, %.preheader1248, %middle.block3821
  %.lcssa3438 = phi i32 [ %ind.end3829, %middle.block3821 ], [ %.lcssa3889.unr, %.preheader1248.prol.loopexit ], [ %848, %.preheader1248 ]
  store i32 %.lcssa3438, ptr %43, align 4, !tbaa !21
  br label %851

851:                                              ; preds = %.loopexit1249, %._crit_edge2001
  %.lcssa19942008 = phi i32 [ %718, %._crit_edge2001 ], [ %.lcssa3438, %.loopexit1249 ]
  %.401083 = phi ptr [ %.351078.lcssa, %._crit_edge2001 ], [ %.391082, %.loopexit1249 ]
  %.401018 = phi i32 [ %.351013.lcssa, %._crit_edge2001 ], [ %.391017, %.loopexit1249 ]
  %.36950 = phi i64 [ %716, %._crit_edge2001 ], [ %.35949, %.loopexit1249 ]
  %.36 = phi i32 [ %717, %._crit_edge2001 ], [ %.35, %.loopexit1249 ]
  %852 = icmp ult i32 %.lcssa19942008, %676
  br i1 %852, label %.preheader1256, label %._crit_edge2014, !llvm.loop !80

._crit_edge2014:                                  ; preds = %851, %673
  %.331076.lcssa = phi ptr [ %.321075, %673 ], [ %.401083, %851 ]
  %.331011.lcssa = phi i32 [ %.321010, %673 ], [ %.401018, %851 ]
  %.29943.lcssa = phi i64 [ %.28942, %673 ], [ %.36950, %851 ]
  %.29.lcssa = phi i32 [ %.28, %673 ], [ %.36, %851 ]
  %853 = load i16, ptr %50, align 8, !tbaa !63
  %854 = icmp eq i16 %853, 0
  br i1 %854, label %855, label %856

855:                                              ; preds = %._crit_edge2014
  store ptr @.str.11, ptr %38, align 8, !tbaa !31
  store i32 29, ptr %7, align 8, !tbaa !15
  br label %.thread

856:                                              ; preds = %._crit_edge2014
  store ptr %45, ptr %46, align 8, !tbaa !67
  store ptr %45, ptr %47, align 8, !tbaa !68
  store i32 9, ptr %48, align 8, !tbaa !69
  %857 = call i32 @inflate_table(i32 noundef 1, ptr noundef nonnull %44, i32 noundef %674, ptr noundef nonnull %46, ptr noundef nonnull %48, ptr noundef nonnull %49) #5
  %.not1171 = icmp eq i32 %857, 0
  br i1 %.not1171, label %859, label %858

858:                                              ; preds = %856
  store ptr @.str.12, ptr %38, align 8, !tbaa !31
  store i32 29, ptr %7, align 8, !tbaa !15
  br label %.thread

859:                                              ; preds = %856
  %860 = load ptr, ptr %46, align 8, !tbaa !67
  store ptr %860, ptr %51, align 8, !tbaa !81
  store i32 6, ptr %52, align 4, !tbaa !82
  %861 = load i32, ptr %40, align 4, !tbaa !60
  %862 = zext i32 %861 to i64
  %863 = getelementptr inbounds i16, ptr %44, i64 %862
  %864 = load i32, ptr %41, align 8, !tbaa !61
  %865 = call i32 @inflate_table(i32 noundef 2, ptr noundef nonnull %863, i32 noundef %864, ptr noundef nonnull %46, ptr noundef nonnull %52, ptr noundef nonnull %49) #5
  %.not1172 = icmp eq i32 %865, 0
  br i1 %.not1172, label %867, label %866

866:                                              ; preds = %859
  store ptr @.str.13, ptr %38, align 8, !tbaa !31
  store i32 29, ptr %7, align 8, !tbaa !15
  br label %.thread

867:                                              ; preds = %859
  store i32 19, ptr %7, align 8, !tbaa !15
  br i1 %53, label %.loopexit, label %868

868:                                              ; preds = %867, %72
  %.421085 = phi ptr [ %.01043, %72 ], [ %.331076.lcssa, %867 ]
  %.421020 = phi i32 [ %.0978, %72 ], [ %.331011.lcssa, %867 ]
  %.38952 = phi i64 [ %.0914, %72 ], [ %.29943.lcssa, %867 ]
  %.38 = phi i32 [ %.0903, %72 ], [ %.29.lcssa, %867 ]
  %.2 = phi i32 [ %.0, %72 ], [ 0, %867 ]
  store i32 20, ptr %7, align 8, !tbaa !15
  br label %869

869:                                              ; preds = %868, %72
  %.431086 = phi ptr [ %.01043, %72 ], [ %.421085, %868 ]
  %.431021 = phi i32 [ %.0978, %72 ], [ %.421020, %868 ]
  %.39953 = phi i64 [ %.0914, %72 ], [ %.38952, %868 ]
  %.39 = phi i32 [ %.0903, %72 ], [ %.38, %868 ]
  %.3 = phi i32 [ %.0, %72 ], [ %.2, %868 ]
  %870 = icmp ugt i32 %.431021, 5
  %871 = icmp ugt i32 %.0976, 257
  %or.cond5 = select i1 %870, i1 %871, i1 false
  br i1 %or.cond5, label %872, label %882

872:                                              ; preds = %869
  store ptr %.01040, ptr %10, align 8, !tbaa !12
  store i32 %.0976, ptr %24, align 8, !tbaa !17
  store ptr %.431086, ptr %0, align 8, !tbaa !13
  store i32 %.431021, ptr %26, align 8, !tbaa !14
  store i64 %.39953, ptr %28, align 8, !tbaa !18
  store i32 %.39, ptr %30, align 8, !tbaa !19
  call void @inflate_fast(ptr noundef nonnull %0, i32 noundef %.0897) #5
  %873 = load ptr, ptr %10, align 8, !tbaa !12
  %874 = load i32, ptr %24, align 8, !tbaa !17
  %875 = load ptr, ptr %0, align 8, !tbaa !13
  %876 = load i32, ptr %26, align 8, !tbaa !14
  %877 = load i64, ptr %28, align 8, !tbaa !18
  %878 = load i32, ptr %30, align 8, !tbaa !19
  %879 = load i32, ptr %7, align 8, !tbaa !15
  %880 = icmp eq i32 %879, 11
  br i1 %880, label %881, label %.thread

881:                                              ; preds = %872
  store i32 -1, ptr %54, align 4, !tbaa !83
  br label %.thread

882:                                              ; preds = %869
  store i32 0, ptr %54, align 4, !tbaa !83
  %883 = load ptr, ptr %47, align 8, !tbaa !68
  %884 = load i32, ptr %48, align 8, !tbaa !69
  %notmask1173 = shl nsw i32 -1, %884
  %885 = xor i32 %notmask1173, -1
  %886 = trunc i64 %.39953 to i32
  %887 = and i32 %885, %886
  %888 = zext nneg i32 %887 to i64
  %889 = getelementptr inbounds %struct.code, ptr %883, i64 %888
  %.sroa.1862.0..sroa_idx632021 = getelementptr inbounds i8, ptr %889, i64 1
  %.sroa.1862.0.copyload642022 = load i8, ptr %.sroa.1862.0..sroa_idx632021, align 1, !tbaa !23
  %890 = zext i8 %.sroa.1862.0.copyload642022 to i32
  %.not11742023 = icmp ult i32 %.39, %890
  br i1 %.not11742023, label %.lr.ph2029.preheader, label %._crit_edge2030

.lr.ph2029.preheader:                             ; preds = %882
  %891 = zext nneg i32 %.39 to i64
  br label %.lr.ph2029

.lr.ph2029:                                       ; preds = %.lr.ph2029.preheader, %893
  %indvars.iv2838 = phi i64 [ %891, %.lr.ph2029.preheader ], [ %indvars.iv.next2839, %893 ]
  %.409542026 = phi i64 [ %.39953, %.lr.ph2029.preheader ], [ %899, %893 ]
  %.4410222025 = phi i32 [ %.431021, %.lr.ph2029.preheader ], [ %894, %893 ]
  %.4410872024 = phi ptr [ %.431086, %.lr.ph2029.preheader ], [ %895, %893 ]
  %892 = icmp eq i32 %.4410222025, 0
  br i1 %892, label %.loopexit.loopexit2961, label %893

893:                                              ; preds = %.lr.ph2029
  %894 = add i32 %.4410222025, -1
  %895 = getelementptr inbounds i8, ptr %.4410872024, i64 1
  %896 = load i8, ptr %.4410872024, align 1, !tbaa !23
  %897 = zext i8 %896 to i64
  %898 = shl i64 %897, %indvars.iv2838
  %899 = add i64 %898, %.409542026
  %indvars.iv.next2839 = add nuw nsw i64 %indvars.iv2838, 8
  %900 = trunc i64 %899 to i32
  %901 = and i32 %885, %900
  %902 = zext nneg i32 %901 to i64
  %903 = getelementptr inbounds %struct.code, ptr %883, i64 %902
  %.sroa.1862.0..sroa_idx63 = getelementptr inbounds i8, ptr %903, i64 1
  %.sroa.1862.0.copyload64 = load i8, ptr %.sroa.1862.0..sroa_idx63, align 1, !tbaa !23
  %904 = zext i8 %.sroa.1862.0.copyload64 to i64
  %.not1174 = icmp ult i64 %indvars.iv.next2839, %904
  br i1 %.not1174, label %.lr.ph2029, label %._crit_edge2030.loopexit

._crit_edge2030.loopexit:                         ; preds = %893
  %905 = zext i8 %.sroa.1862.0.copyload64 to i32
  %906 = trunc nuw i64 %indvars.iv.next2839 to i32
  br label %._crit_edge2030

._crit_edge2030:                                  ; preds = %._crit_edge2030.loopexit, %882
  %.lcssa2020 = phi ptr [ %889, %882 ], [ %903, %._crit_edge2030.loopexit ]
  %.441087.lcssa = phi ptr [ %.431086, %882 ], [ %895, %._crit_edge2030.loopexit ]
  %.441022.lcssa = phi i32 [ %.431021, %882 ], [ %894, %._crit_edge2030.loopexit ]
  %.40954.lcssa = phi i64 [ %.39953, %882 ], [ %899, %._crit_edge2030.loopexit ]
  %.40.lcssa = phi i32 [ %.39, %882 ], [ %906, %._crit_edge2030.loopexit ]
  %.sroa.1862.0.copyload64.lcssa = phi i8 [ %.sroa.1862.0.copyload642022, %882 ], [ %.sroa.1862.0.copyload64, %._crit_edge2030.loopexit ]
  %.lcssa1398 = phi i32 [ %890, %882 ], [ %905, %._crit_edge2030.loopexit ]
  %.sroa.43.0..sroa_idx93.le = getelementptr inbounds i8, ptr %.lcssa2020, i64 2
  %.sroa.43.0.copyload94.le = load i16, ptr %.sroa.43.0..sroa_idx93.le, align 2, !tbaa !63
  %.sroa.049.0.copyload58 = load i8, ptr %.lcssa2020, align 2, !tbaa !23
  %907 = add i8 %.sroa.049.0.copyload58, -1
  %or.cond1238 = icmp ult i8 %907, 15
  br i1 %or.cond1238, label %.preheader1284, label %942

.preheader1284:                                   ; preds = %._crit_edge2030
  %908 = zext nneg i8 %.sroa.049.0.copyload58 to i32
  %909 = zext i16 %.sroa.43.0.copyload94.le to i32
  %910 = add nuw nsw i32 %.lcssa1398, %908
  %notmask1176 = shl nsw i32 -1, %910
  %911 = xor i32 %notmask1176, -1
  %912 = trunc i64 %.40954.lcssa to i32
  %913 = and i32 %912, %911
  %914 = lshr i32 %913, %.lcssa1398
  %915 = add nuw i32 %914, %909
  %916 = zext i32 %915 to i64
  %917 = getelementptr inbounds %struct.code, ptr %883, i64 %916
  %.sroa.1862.0..sroa_idx652040 = getelementptr inbounds i8, ptr %917, i64 1
  %.sroa.1862.0.copyload662041 = load i8, ptr %.sroa.1862.0..sroa_idx652040, align 1, !tbaa !23
  %918 = zext i8 %.sroa.1862.0.copyload662041 to i32
  %919 = add nuw nsw i32 %.lcssa1398, %918
  %.not11772042 = icmp ugt i32 %919, %.40.lcssa
  br i1 %.not11772042, label %.lr.ph2047.preheader, label %._crit_edge2048

.lr.ph2047.preheader:                             ; preds = %.preheader1284
  %920 = zext nneg i32 %.40.lcssa to i64
  br label %.lr.ph2047

.lr.ph2047:                                       ; preds = %.lr.ph2047.preheader, %922
  %indvars.iv2842 = phi i64 [ %920, %.lr.ph2047.preheader ], [ %indvars.iv.next2843, %922 ]
  %.419552045 = phi i64 [ %.40954.lcssa, %.lr.ph2047.preheader ], [ %928, %922 ]
  %.4510232044 = phi i32 [ %.441022.lcssa, %.lr.ph2047.preheader ], [ %923, %922 ]
  %.4510882043 = phi ptr [ %.441087.lcssa, %.lr.ph2047.preheader ], [ %924, %922 ]
  %921 = icmp eq i32 %.4510232044, 0
  br i1 %921, label %.loopexit.loopexit2960, label %922

922:                                              ; preds = %.lr.ph2047
  %923 = add i32 %.4510232044, -1
  %924 = getelementptr inbounds i8, ptr %.4510882043, i64 1
  %925 = load i8, ptr %.4510882043, align 1, !tbaa !23
  %926 = zext i8 %925 to i64
  %927 = shl i64 %926, %indvars.iv2842
  %928 = add i64 %927, %.419552045
  %indvars.iv.next2843 = add nuw nsw i64 %indvars.iv2842, 8
  %929 = trunc i64 %928 to i32
  %930 = and i32 %929, %911
  %931 = lshr i32 %930, %.lcssa1398
  %932 = add nuw i32 %931, %909
  %933 = zext i32 %932 to i64
  %934 = getelementptr inbounds %struct.code, ptr %883, i64 %933
  %.sroa.1862.0..sroa_idx65 = getelementptr inbounds i8, ptr %934, i64 1
  %.sroa.1862.0.copyload66 = load i8, ptr %.sroa.1862.0..sroa_idx65, align 1, !tbaa !23
  %935 = zext i8 %.sroa.1862.0.copyload66 to i32
  %936 = add nuw nsw i32 %.lcssa1398, %935
  %937 = zext nneg i32 %936 to i64
  %.not1177 = icmp ult i64 %indvars.iv.next2843, %937
  br i1 %.not1177, label %.lr.ph2047, label %._crit_edge2048.loopexit

._crit_edge2048.loopexit:                         ; preds = %922
  %938 = trunc nuw i64 %indvars.iv.next2843 to i32
  br label %._crit_edge2048

._crit_edge2048:                                  ; preds = %._crit_edge2048.loopexit, %.preheader1284
  %.451088.lcssa = phi ptr [ %.441087.lcssa, %.preheader1284 ], [ %924, %._crit_edge2048.loopexit ]
  %.451023.lcssa = phi i32 [ %.441022.lcssa, %.preheader1284 ], [ %923, %._crit_edge2048.loopexit ]
  %.41955.lcssa = phi i64 [ %.40954.lcssa, %.preheader1284 ], [ %928, %._crit_edge2048.loopexit ]
  %.41.lcssa = phi i32 [ %.40.lcssa, %.preheader1284 ], [ %938, %._crit_edge2048.loopexit ]
  %.lcssa1411 = phi ptr [ %917, %.preheader1284 ], [ %934, %._crit_edge2048.loopexit ]
  %.sroa.1862.0.copyload66.lcssa = phi i8 [ %.sroa.1862.0.copyload662041, %.preheader1284 ], [ %.sroa.1862.0.copyload66, %._crit_edge2048.loopexit ]
  %.sroa.43.0..sroa_idx95 = getelementptr inbounds i8, ptr %.lcssa1411, i64 2
  %.sroa.43.0.copyload96 = load i16, ptr %.sroa.43.0..sroa_idx95, align 2, !tbaa !63
  %.sroa.049.0.copyload59 = load i8, ptr %.lcssa1411, align 2, !tbaa !23
  %939 = zext nneg i8 %.sroa.1862.0.copyload64.lcssa to i64
  %940 = lshr i64 %.41955.lcssa, %939
  %941 = sub i32 %.41.lcssa, %.lcssa1398
  br label %942

942:                                              ; preds = %._crit_edge2030, %._crit_edge2048
  %943 = phi i32 [ %.lcssa1398, %._crit_edge2048 ], [ 0, %._crit_edge2030 ]
  %.461089 = phi ptr [ %.451088.lcssa, %._crit_edge2048 ], [ %.441087.lcssa, %._crit_edge2030 ]
  %.461024 = phi i32 [ %.451023.lcssa, %._crit_edge2048 ], [ %.441022.lcssa, %._crit_edge2030 ]
  %.42956 = phi i64 [ %940, %._crit_edge2048 ], [ %.40954.lcssa, %._crit_edge2030 ]
  %.42 = phi i32 [ %941, %._crit_edge2048 ], [ %.40.lcssa, %._crit_edge2030 ]
  %.sroa.43.0 = phi i16 [ %.sroa.43.0.copyload96, %._crit_edge2048 ], [ %.sroa.43.0.copyload94.le, %._crit_edge2030 ]
  %.sroa.1862.0 = phi i8 [ %.sroa.1862.0.copyload66.lcssa, %._crit_edge2048 ], [ %.sroa.1862.0.copyload64.lcssa, %._crit_edge2030 ]
  %.sroa.049.0 = phi i8 [ %.sroa.049.0.copyload59, %._crit_edge2048 ], [ %.sroa.049.0.copyload58, %._crit_edge2030 ]
  %944 = zext i8 %.sroa.1862.0 to i32
  %945 = zext nneg i8 %.sroa.1862.0 to i64
  %946 = lshr i64 %.42956, %945
  %947 = sub i32 %.42, %944
  %948 = add nuw nsw i32 %943, %944
  store i32 %948, ptr %54, align 4, !tbaa !83
  %949 = zext i16 %.sroa.43.0 to i32
  store i32 %949, ptr %39, align 4, !tbaa !43
  %950 = zext i8 %.sroa.049.0 to i32
  %951 = icmp eq i8 %.sroa.049.0, 0
  br i1 %951, label %952, label %953

952:                                              ; preds = %942
  store i32 25, ptr %7, align 8, !tbaa !15
  br label %.thread

953:                                              ; preds = %942
  %954 = and i32 %950, 32
  %.not1178 = icmp eq i32 %954, 0
  br i1 %.not1178, label %956, label %955

955:                                              ; preds = %953
  store i32 -1, ptr %54, align 4, !tbaa !83
  store i32 11, ptr %7, align 8, !tbaa !15
  br label %.thread

956:                                              ; preds = %953
  %957 = and i32 %950, 64
  %.not1179 = icmp eq i32 %957, 0
  br i1 %.not1179, label %959, label %958

958:                                              ; preds = %956
  store ptr @.str.14, ptr %38, align 8, !tbaa !31
  store i32 29, ptr %7, align 8, !tbaa !15
  br label %.thread

959:                                              ; preds = %956
  %960 = and i32 %950, 15
  store i32 %960, ptr %55, align 4, !tbaa !20
  store i32 21, ptr %7, align 8, !tbaa !15
  br label %961

961:                                              ; preds = %._crit_edge2893, %959
  %962 = phi i32 [ %.pre2894, %._crit_edge2893 ], [ %960, %959 ]
  %.471090 = phi ptr [ %.01043, %._crit_edge2893 ], [ %.461089, %959 ]
  %.471025 = phi i32 [ %.0978, %._crit_edge2893 ], [ %.461024, %959 ]
  %.43957 = phi i64 [ %.0914, %._crit_edge2893 ], [ %946, %959 ]
  %.43 = phi i32 [ %.0903, %._crit_edge2893 ], [ %947, %959 ]
  %.4 = phi i32 [ %.0, %._crit_edge2893 ], [ %.3, %959 ]
  %.not1180 = icmp eq i32 %962, 0
  br i1 %.not1180, label %._crit_edge2895, label %.preheader1282

._crit_edge2895:                                  ; preds = %961
  %.pre2896 = load i32, ptr %39, align 4, !tbaa !43
  br label %985

.preheader1282:                                   ; preds = %961
  %963 = icmp ult i32 %.43, %962
  br i1 %963, label %.lr.ph2059, label %._crit_edge2060

.lr.ph2059:                                       ; preds = %.preheader1282, %965
  %.442058 = phi i32 [ %973, %965 ], [ %.43, %.preheader1282 ]
  %.449582057 = phi i64 [ %972, %965 ], [ %.43957, %.preheader1282 ]
  %.4810262056 = phi i32 [ %966, %965 ], [ %.471025, %.preheader1282 ]
  %.4810912055 = phi ptr [ %967, %965 ], [ %.471090, %.preheader1282 ]
  %964 = icmp eq i32 %.4810262056, 0
  br i1 %964, label %.loopexit.loopexit2959, label %965

965:                                              ; preds = %.lr.ph2059
  %966 = add i32 %.4810262056, -1
  %967 = getelementptr inbounds i8, ptr %.4810912055, i64 1
  %968 = load i8, ptr %.4810912055, align 1, !tbaa !23
  %969 = zext i8 %968 to i64
  %970 = zext nneg i32 %.442058 to i64
  %971 = shl i64 %969, %970
  %972 = add i64 %971, %.449582057
  %973 = add i32 %.442058, 8
  %974 = icmp ult i32 %973, %962
  br i1 %974, label %.lr.ph2059, label %._crit_edge2060, !llvm.loop !84

._crit_edge2060:                                  ; preds = %965, %.preheader1282
  %.481091.lcssa = phi ptr [ %.471090, %.preheader1282 ], [ %967, %965 ]
  %.481026.lcssa = phi i32 [ %.471025, %.preheader1282 ], [ %966, %965 ]
  %.44958.lcssa = phi i64 [ %.43957, %.preheader1282 ], [ %972, %965 ]
  %.44.lcssa = phi i32 [ %.43, %.preheader1282 ], [ %973, %965 ]
  %975 = trunc i64 %.44958.lcssa to i32
  %notmask1181 = shl nsw i32 -1, %962
  %976 = xor i32 %notmask1181, -1
  %977 = and i32 %975, %976
  %978 = load i32, ptr %39, align 4, !tbaa !43
  %979 = add i32 %978, %977
  store i32 %979, ptr %39, align 4, !tbaa !43
  %980 = zext nneg i32 %962 to i64
  %981 = lshr i64 %.44958.lcssa, %980
  %982 = sub i32 %.44.lcssa, %962
  %983 = load i32, ptr %54, align 4, !tbaa !83
  %984 = add i32 %983, %962
  store i32 %984, ptr %54, align 4, !tbaa !83
  br label %985

985:                                              ; preds = %._crit_edge2895, %._crit_edge2060
  %986 = phi i32 [ %979, %._crit_edge2060 ], [ %.pre2896, %._crit_edge2895 ]
  %.491092 = phi ptr [ %.481091.lcssa, %._crit_edge2060 ], [ %.471090, %._crit_edge2895 ]
  %.491027 = phi i32 [ %.481026.lcssa, %._crit_edge2060 ], [ %.471025, %._crit_edge2895 ]
  %.45959 = phi i64 [ %981, %._crit_edge2060 ], [ %.43957, %._crit_edge2895 ]
  %.45 = phi i32 [ %982, %._crit_edge2060 ], [ %.43, %._crit_edge2895 ]
  store i32 %986, ptr %56, align 8, !tbaa !85
  store i32 22, ptr %7, align 8, !tbaa !15
  br label %987

987:                                              ; preds = %985, %72
  %.501093 = phi ptr [ %.01043, %72 ], [ %.491092, %985 ]
  %.501028 = phi i32 [ %.0978, %72 ], [ %.491027, %985 ]
  %.46960 = phi i64 [ %.0914, %72 ], [ %.45959, %985 ]
  %.46 = phi i32 [ %.0903, %72 ], [ %.45, %985 ]
  %.5 = phi i32 [ %.0, %72 ], [ %.4, %985 ]
  %988 = load ptr, ptr %51, align 8, !tbaa !81
  %989 = load i32, ptr %52, align 4, !tbaa !82
  %notmask1182 = shl nsw i32 -1, %989
  %990 = xor i32 %notmask1182, -1
  %991 = trunc i64 %.46960 to i32
  %992 = and i32 %990, %991
  %993 = zext nneg i32 %992 to i64
  %994 = getelementptr inbounds %struct.code, ptr %988, i64 %993
  %.sroa.1862.0..sroa_idx672066 = getelementptr inbounds i8, ptr %994, i64 1
  %.sroa.1862.0.copyload682067 = load i8, ptr %.sroa.1862.0..sroa_idx672066, align 1, !tbaa !23
  %995 = zext i8 %.sroa.1862.0.copyload682067 to i32
  %.not11832068 = icmp ult i32 %.46, %995
  br i1 %.not11832068, label %.lr.ph2074.preheader, label %._crit_edge2075

.lr.ph2074.preheader:                             ; preds = %987
  %996 = zext nneg i32 %.46 to i64
  br label %.lr.ph2074

.lr.ph2074:                                       ; preds = %.lr.ph2074.preheader, %998
  %indvars.iv2847 = phi i64 [ %996, %.lr.ph2074.preheader ], [ %indvars.iv.next2848, %998 ]
  %.479612071 = phi i64 [ %.46960, %.lr.ph2074.preheader ], [ %1004, %998 ]
  %.5110292070 = phi i32 [ %.501028, %.lr.ph2074.preheader ], [ %999, %998 ]
  %.5110942069 = phi ptr [ %.501093, %.lr.ph2074.preheader ], [ %1000, %998 ]
  %997 = icmp eq i32 %.5110292070, 0
  br i1 %997, label %.loopexit.loopexit2958, label %998

998:                                              ; preds = %.lr.ph2074
  %999 = add i32 %.5110292070, -1
  %1000 = getelementptr inbounds i8, ptr %.5110942069, i64 1
  %1001 = load i8, ptr %.5110942069, align 1, !tbaa !23
  %1002 = zext i8 %1001 to i64
  %1003 = shl i64 %1002, %indvars.iv2847
  %1004 = add i64 %1003, %.479612071
  %indvars.iv.next2848 = add nuw nsw i64 %indvars.iv2847, 8
  %1005 = trunc i64 %1004 to i32
  %1006 = and i32 %990, %1005
  %1007 = zext nneg i32 %1006 to i64
  %1008 = getelementptr inbounds %struct.code, ptr %988, i64 %1007
  %.sroa.1862.0..sroa_idx67 = getelementptr inbounds i8, ptr %1008, i64 1
  %.sroa.1862.0.copyload68 = load i8, ptr %.sroa.1862.0..sroa_idx67, align 1, !tbaa !23
  %1009 = zext i8 %.sroa.1862.0.copyload68 to i64
  %.not1183 = icmp ult i64 %indvars.iv.next2848, %1009
  br i1 %.not1183, label %.lr.ph2074, label %._crit_edge2075.loopexit

._crit_edge2075.loopexit:                         ; preds = %998
  %1010 = zext i8 %.sroa.1862.0.copyload68 to i32
  %1011 = trunc nuw i64 %indvars.iv.next2848 to i32
  br label %._crit_edge2075

._crit_edge2075:                                  ; preds = %._crit_edge2075.loopexit, %987
  %.lcssa2065 = phi ptr [ %994, %987 ], [ %1008, %._crit_edge2075.loopexit ]
  %.511094.lcssa = phi ptr [ %.501093, %987 ], [ %1000, %._crit_edge2075.loopexit ]
  %.511029.lcssa = phi i32 [ %.501028, %987 ], [ %999, %._crit_edge2075.loopexit ]
  %.47961.lcssa = phi i64 [ %.46960, %987 ], [ %1004, %._crit_edge2075.loopexit ]
  %.47.lcssa = phi i32 [ %.46, %987 ], [ %1011, %._crit_edge2075.loopexit ]
  %.sroa.1862.0.copyload68.lcssa = phi i8 [ %.sroa.1862.0.copyload682067, %987 ], [ %.sroa.1862.0.copyload68, %._crit_edge2075.loopexit ]
  %.lcssa1421 = phi i32 [ %995, %987 ], [ %1010, %._crit_edge2075.loopexit ]
  %.sroa.43.0..sroa_idx97.le = getelementptr inbounds i8, ptr %.lcssa2065, i64 2
  %.sroa.43.0.copyload98.le = load i16, ptr %.sroa.43.0..sroa_idx97.le, align 2, !tbaa !63
  %.sroa.049.0.copyload60 = load i8, ptr %.lcssa2065, align 2, !tbaa !23
  %1012 = icmp ult i8 %.sroa.049.0.copyload60, 16
  br i1 %1012, label %.preheader1279, label %._crit_edge2075._crit_edge

._crit_edge2075._crit_edge:                       ; preds = %._crit_edge2075
  %.pre2897 = load i32, ptr %54, align 4, !tbaa !83
  br label %1049

.preheader1279:                                   ; preds = %._crit_edge2075
  %1013 = zext nneg i8 %.sroa.049.0.copyload60 to i32
  %1014 = zext i16 %.sroa.43.0.copyload98.le to i32
  %1015 = add nuw nsw i32 %.lcssa1421, %1013
  %notmask1184 = shl nsw i32 -1, %1015
  %1016 = xor i32 %notmask1184, -1
  %1017 = trunc i64 %.47961.lcssa to i32
  %1018 = and i32 %1017, %1016
  %1019 = lshr i32 %1018, %.lcssa1421
  %1020 = add nuw i32 %1019, %1014
  %1021 = zext i32 %1020 to i64
  %1022 = getelementptr inbounds %struct.code, ptr %988, i64 %1021
  %.sroa.1862.0..sroa_idx692085 = getelementptr inbounds i8, ptr %1022, i64 1
  %.sroa.1862.0.copyload702086 = load i8, ptr %.sroa.1862.0..sroa_idx692085, align 1, !tbaa !23
  %1023 = zext i8 %.sroa.1862.0.copyload702086 to i32
  %1024 = add nuw nsw i32 %.lcssa1421, %1023
  %.not11852087 = icmp ugt i32 %1024, %.47.lcssa
  br i1 %.not11852087, label %.lr.ph2092.preheader, label %._crit_edge2093

.lr.ph2092.preheader:                             ; preds = %.preheader1279
  %1025 = zext nneg i32 %.47.lcssa to i64
  br label %.lr.ph2092

.lr.ph2092:                                       ; preds = %.lr.ph2092.preheader, %1027
  %indvars.iv2851 = phi i64 [ %1025, %.lr.ph2092.preheader ], [ %indvars.iv.next2852, %1027 ]
  %.489622090 = phi i64 [ %.47961.lcssa, %.lr.ph2092.preheader ], [ %1033, %1027 ]
  %.5210302089 = phi i32 [ %.511029.lcssa, %.lr.ph2092.preheader ], [ %1028, %1027 ]
  %.5210952088 = phi ptr [ %.511094.lcssa, %.lr.ph2092.preheader ], [ %1029, %1027 ]
  %1026 = icmp eq i32 %.5210302089, 0
  br i1 %1026, label %.loopexit.loopexit2957, label %1027

1027:                                             ; preds = %.lr.ph2092
  %1028 = add i32 %.5210302089, -1
  %1029 = getelementptr inbounds i8, ptr %.5210952088, i64 1
  %1030 = load i8, ptr %.5210952088, align 1, !tbaa !23
  %1031 = zext i8 %1030 to i64
  %1032 = shl i64 %1031, %indvars.iv2851
  %1033 = add i64 %1032, %.489622090
  %indvars.iv.next2852 = add nuw nsw i64 %indvars.iv2851, 8
  %1034 = trunc i64 %1033 to i32
  %1035 = and i32 %1034, %1016
  %1036 = lshr i32 %1035, %.lcssa1421
  %1037 = add nuw i32 %1036, %1014
  %1038 = zext i32 %1037 to i64
  %1039 = getelementptr inbounds %struct.code, ptr %988, i64 %1038
  %.sroa.1862.0..sroa_idx69 = getelementptr inbounds i8, ptr %1039, i64 1
  %.sroa.1862.0.copyload70 = load i8, ptr %.sroa.1862.0..sroa_idx69, align 1, !tbaa !23
  %1040 = zext i8 %.sroa.1862.0.copyload70 to i32
  %1041 = add nuw nsw i32 %.lcssa1421, %1040
  %1042 = zext nneg i32 %1041 to i64
  %.not1185 = icmp ult i64 %indvars.iv.next2852, %1042
  br i1 %.not1185, label %.lr.ph2092, label %._crit_edge2093.loopexit

._crit_edge2093.loopexit:                         ; preds = %1027
  %1043 = trunc nuw i64 %indvars.iv.next2852 to i32
  br label %._crit_edge2093

._crit_edge2093:                                  ; preds = %._crit_edge2093.loopexit, %.preheader1279
  %.521095.lcssa = phi ptr [ %.511094.lcssa, %.preheader1279 ], [ %1029, %._crit_edge2093.loopexit ]
  %.521030.lcssa = phi i32 [ %.511029.lcssa, %.preheader1279 ], [ %1028, %._crit_edge2093.loopexit ]
  %.48962.lcssa = phi i64 [ %.47961.lcssa, %.preheader1279 ], [ %1033, %._crit_edge2093.loopexit ]
  %.48.lcssa = phi i32 [ %.47.lcssa, %.preheader1279 ], [ %1043, %._crit_edge2093.loopexit ]
  %.lcssa1434 = phi ptr [ %1022, %.preheader1279 ], [ %1039, %._crit_edge2093.loopexit ]
  %.sroa.1862.0.copyload70.lcssa = phi i8 [ %.sroa.1862.0.copyload702086, %.preheader1279 ], [ %.sroa.1862.0.copyload70, %._crit_edge2093.loopexit ]
  %.sroa.43.0..sroa_idx99 = getelementptr inbounds i8, ptr %.lcssa1434, i64 2
  %.sroa.43.0.copyload100 = load i16, ptr %.sroa.43.0..sroa_idx99, align 2, !tbaa !63
  %.sroa.049.0.copyload61 = load i8, ptr %.lcssa1434, align 2, !tbaa !23
  %1044 = zext nneg i8 %.sroa.1862.0.copyload68.lcssa to i64
  %1045 = lshr i64 %.48962.lcssa, %1044
  %1046 = sub i32 %.48.lcssa, %.lcssa1421
  %1047 = load i32, ptr %54, align 4, !tbaa !83
  %1048 = add nsw i32 %1047, %.lcssa1421
  br label %1049

1049:                                             ; preds = %._crit_edge2075._crit_edge, %._crit_edge2093
  %1050 = phi i32 [ %1048, %._crit_edge2093 ], [ %.pre2897, %._crit_edge2075._crit_edge ]
  %.531096 = phi ptr [ %.521095.lcssa, %._crit_edge2093 ], [ %.511094.lcssa, %._crit_edge2075._crit_edge ]
  %.531031 = phi i32 [ %.521030.lcssa, %._crit_edge2093 ], [ %.511029.lcssa, %._crit_edge2075._crit_edge ]
  %.49963 = phi i64 [ %1045, %._crit_edge2093 ], [ %.47961.lcssa, %._crit_edge2075._crit_edge ]
  %.49 = phi i32 [ %1046, %._crit_edge2093 ], [ %.47.lcssa, %._crit_edge2075._crit_edge ]
  %.sroa.43.1 = phi i16 [ %.sroa.43.0.copyload100, %._crit_edge2093 ], [ %.sroa.43.0.copyload98.le, %._crit_edge2075._crit_edge ]
  %.sroa.1862.1 = phi i8 [ %.sroa.1862.0.copyload70.lcssa, %._crit_edge2093 ], [ %.sroa.1862.0.copyload68.lcssa, %._crit_edge2075._crit_edge ]
  %.sroa.049.1 = phi i8 [ %.sroa.049.0.copyload61, %._crit_edge2093 ], [ %.sroa.049.0.copyload60, %._crit_edge2075._crit_edge ]
  %1051 = zext i8 %.sroa.1862.1 to i32
  %1052 = zext nneg i8 %.sroa.1862.1 to i64
  %1053 = lshr i64 %.49963, %1052
  %1054 = sub i32 %.49, %1051
  %1055 = add nsw i32 %1050, %1051
  store i32 %1055, ptr %54, align 4, !tbaa !83
  %1056 = zext i8 %.sroa.049.1 to i32
  %1057 = and i32 %1056, 64
  %.not1186 = icmp eq i32 %1057, 0
  br i1 %.not1186, label %1059, label %1058

1058:                                             ; preds = %1049
  store ptr @.str.15, ptr %38, align 8, !tbaa !31
  store i32 29, ptr %7, align 8, !tbaa !15
  br label %.thread

1059:                                             ; preds = %1049
  %1060 = zext i16 %.sroa.43.1 to i32
  store i32 %1060, ptr %57, align 8, !tbaa !86
  %1061 = and i32 %1056, 15
  store i32 %1061, ptr %55, align 4, !tbaa !20
  store i32 23, ptr %7, align 8, !tbaa !15
  br label %1062

1062:                                             ; preds = %._crit_edge2898, %1059
  %1063 = phi i32 [ %.pre2899, %._crit_edge2898 ], [ %1061, %1059 ]
  %.541097 = phi ptr [ %.01043, %._crit_edge2898 ], [ %.531096, %1059 ]
  %.541032 = phi i32 [ %.0978, %._crit_edge2898 ], [ %.531031, %1059 ]
  %.50964 = phi i64 [ %.0914, %._crit_edge2898 ], [ %1053, %1059 ]
  %.50 = phi i32 [ %.0903, %._crit_edge2898 ], [ %1054, %1059 ]
  %.6 = phi i32 [ %.0, %._crit_edge2898 ], [ %.5, %1059 ]
  %.not1187 = icmp eq i32 %1063, 0
  br i1 %.not1187, label %1086, label %.preheader1277

.preheader1277:                                   ; preds = %1062
  %1064 = icmp ult i32 %.50, %1063
  br i1 %1064, label %.lr.ph2104, label %._crit_edge2105

.lr.ph2104:                                       ; preds = %.preheader1277, %1066
  %.512103 = phi i32 [ %1074, %1066 ], [ %.50, %.preheader1277 ]
  %.519652102 = phi i64 [ %1073, %1066 ], [ %.50964, %.preheader1277 ]
  %.5510332101 = phi i32 [ %1067, %1066 ], [ %.541032, %.preheader1277 ]
  %.5510982100 = phi ptr [ %1068, %1066 ], [ %.541097, %.preheader1277 ]
  %1065 = icmp eq i32 %.5510332101, 0
  br i1 %1065, label %.loopexit.loopexit2956, label %1066

1066:                                             ; preds = %.lr.ph2104
  %1067 = add i32 %.5510332101, -1
  %1068 = getelementptr inbounds i8, ptr %.5510982100, i64 1
  %1069 = load i8, ptr %.5510982100, align 1, !tbaa !23
  %1070 = zext i8 %1069 to i64
  %1071 = zext nneg i32 %.512103 to i64
  %1072 = shl i64 %1070, %1071
  %1073 = add i64 %1072, %.519652102
  %1074 = add i32 %.512103, 8
  %1075 = icmp ult i32 %1074, %1063
  br i1 %1075, label %.lr.ph2104, label %._crit_edge2105, !llvm.loop !87

._crit_edge2105:                                  ; preds = %1066, %.preheader1277
  %.551098.lcssa = phi ptr [ %.541097, %.preheader1277 ], [ %1068, %1066 ]
  %.551033.lcssa = phi i32 [ %.541032, %.preheader1277 ], [ %1067, %1066 ]
  %.51965.lcssa = phi i64 [ %.50964, %.preheader1277 ], [ %1073, %1066 ]
  %.51.lcssa = phi i32 [ %.50, %.preheader1277 ], [ %1074, %1066 ]
  %1076 = trunc i64 %.51965.lcssa to i32
  %notmask1188 = shl nsw i32 -1, %1063
  %1077 = xor i32 %notmask1188, -1
  %1078 = and i32 %1076, %1077
  %1079 = load i32, ptr %57, align 8, !tbaa !86
  %1080 = add i32 %1079, %1078
  store i32 %1080, ptr %57, align 8, !tbaa !86
  %1081 = zext nneg i32 %1063 to i64
  %1082 = lshr i64 %.51965.lcssa, %1081
  %1083 = sub i32 %.51.lcssa, %1063
  %1084 = load i32, ptr %54, align 4, !tbaa !83
  %1085 = add i32 %1084, %1063
  store i32 %1085, ptr %54, align 4, !tbaa !83
  br label %1086

1086:                                             ; preds = %._crit_edge2105, %1062
  %.561099 = phi ptr [ %.551098.lcssa, %._crit_edge2105 ], [ %.541097, %1062 ]
  %.561034 = phi i32 [ %.551033.lcssa, %._crit_edge2105 ], [ %.541032, %1062 ]
  %.52966 = phi i64 [ %1082, %._crit_edge2105 ], [ %.50964, %1062 ]
  %.52 = phi i32 [ %1083, %._crit_edge2105 ], [ %.50, %1062 ]
  store i32 24, ptr %7, align 8, !tbaa !15
  br label %1087

1087:                                             ; preds = %1086, %72
  %.571100 = phi ptr [ %.01043, %72 ], [ %.561099, %1086 ]
  %.571035 = phi i32 [ %.0978, %72 ], [ %.561034, %1086 ]
  %.53967 = phi i64 [ %.0914, %72 ], [ %.52966, %1086 ]
  %.53 = phi i32 [ %.0903, %72 ], [ %.52, %1086 ]
  %.7 = phi i32 [ %.0, %72 ], [ %.6, %1086 ]
  %1088 = icmp eq i32 %.0976, 0
  br i1 %1088, label %.loopexit, label %1089

1089:                                             ; preds = %1087
  %1090 = sub i32 %.0897, %.0976
  %1091 = load i32, ptr %57, align 8, !tbaa !86
  %1092 = icmp ugt i32 %1091, %1090
  br i1 %1092, label %1093, label %1113

1093:                                             ; preds = %1089
  %1094 = sub i32 %1091, %1090
  %1095 = load i32, ptr %58, align 8, !tbaa !88
  %1096 = icmp ugt i32 %1094, %1095
  br i1 %1096, label %1097, label %1100

1097:                                             ; preds = %1093
  %1098 = load i32, ptr %59, align 8, !tbaa !89
  %.not1189 = icmp eq i32 %1098, 0
  br i1 %.not1189, label %1100, label %1099

1099:                                             ; preds = %1097
  store ptr @.str.16, ptr %38, align 8, !tbaa !31
  store i32 29, ptr %7, align 8, !tbaa !15
  br label %.thread

1100:                                             ; preds = %1097, %1093
  %1101 = load i32, ptr %60, align 4, !tbaa !90
  %1102 = icmp ugt i32 %1094, %1101
  br i1 %1102, label %1103, label %1107

1103:                                             ; preds = %1100
  %1104 = sub i32 %1094, %1101
  %1105 = load i32, ptr %62, align 4, !tbaa !91
  %1106 = sub i32 %1105, %1104
  br label %1109

1107:                                             ; preds = %1100
  %1108 = sub i32 %1101, %1094
  br label %1109

1109:                                             ; preds = %1107, %1103
  %.sink3387 = phi i32 [ %1108, %1107 ], [ %1106, %1103 ]
  %.7894 = phi i32 [ %1094, %1107 ], [ %1104, %1103 ]
  %.sink3385 = load ptr, ptr %61, align 8, !tbaa !92
  %1110 = zext i32 %.sink3387 to i64
  %1111 = getelementptr inbounds i8, ptr %.sink3385, i64 %1110
  %1112 = load i32, ptr %39, align 4, !tbaa !43
  %spec.select1239 = call i32 @llvm.umin.i32(i32 %.7894, i32 %1112)
  br label %1118

1113:                                             ; preds = %1089
  %1114 = zext i32 %1091 to i64
  %1115 = sub nsw i64 0, %1114
  %1116 = getelementptr inbounds i8, ptr %.01040, i64 %1115
  %1117 = load i32, ptr %39, align 4, !tbaa !43
  br label %1118

1118:                                             ; preds = %1109, %1113
  %1119 = phi i32 [ %1117, %1113 ], [ %1112, %1109 ]
  %.8895 = phi i32 [ %1117, %1113 ], [ %spec.select1239, %1109 ]
  %.1885 = phi ptr [ %1116, %1113 ], [ %1111, %1109 ]
  %spec.select1240 = call i32 @llvm.umin.i32(i32 %.8895, i32 %.0976)
  %1120 = sub i32 %1119, %spec.select1240
  store i32 %1120, ptr %39, align 4, !tbaa !43
  %1121 = add i32 %spec.select1240, -1
  %1122 = zext i32 %1121 to i64
  %1123 = add nuw nsw i64 %1122, 1
  %min.iters.check = icmp ult i32 %1121, 31
  %.18853812 = ptrtoint ptr %.1885 to i64
  %1124 = sub i64 %.010403811, %.18853812
  %diff.check = icmp ult i64 %1124, 32
  %or.cond3838 = select i1 %min.iters.check, i1 true, i1 %diff.check
  br i1 %or.cond3838, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %1118
  %n.vec = and i64 %1123, 8589934560
  %ind.end = getelementptr i8, ptr %.01040, i64 %n.vec
  %.cast = trunc i64 %n.vec to i32
  %ind.end3813 = sub i32 %spec.select1240, %.cast
  %ind.end3815 = getelementptr i8, ptr %.1885, 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 %.01040, i64 %index
  %next.gep3818 = getelementptr i8, ptr %.1885, i64 %index
  %1125 = getelementptr i8, ptr %next.gep3818, i64 16
  %wide.load = load <16 x i8>, ptr %next.gep3818, align 1, !tbaa !23
  %wide.load3820 = load <16 x i8>, ptr %1125, align 1, !tbaa !23
  %1126 = 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.load3820, ptr %1126, align 1, !tbaa !23
  %index.next = add nuw i64 %index, 32
  %1127 = icmp eq i64 %index.next, %n.vec
  br i1 %1127, label %middle.block, label %vector.body, !llvm.loop !93

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

scalar.ph.preheader:                              ; preds = %middle.block, %1118
  %.11041.ph = phi ptr [ %.01040, %1118 ], [ %ind.end, %middle.block ]
  %.10.ph = phi i32 [ %spec.select1240, %1118 ], [ %ind.end3813, %middle.block ]
  %.2886.ph = phi ptr [ %.1885, %1118 ], [ %ind.end3815, %middle.block ]
  %1128 = add i32 %.10.ph, -1
  %xtraiter4262 = and i32 %.10.ph, 7
  %lcmp.mod4263.not = icmp eq i32 %xtraiter4262, 0
  br i1 %lcmp.mod4263.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %.11041.prol = phi ptr [ %1131, %scalar.ph.prol ], [ %.11041.ph, %scalar.ph.preheader ]
  %.10.prol = phi i32 [ %1132, %scalar.ph.prol ], [ %.10.ph, %scalar.ph.preheader ]
  %.2886.prol = phi ptr [ %1129, %scalar.ph.prol ], [ %.2886.ph, %scalar.ph.preheader ]
  %prol.iter4264 = phi i32 [ %prol.iter4264.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %1129 = getelementptr inbounds i8, ptr %.2886.prol, i64 1
  %1130 = load i8, ptr %.2886.prol, align 1, !tbaa !23
  %1131 = getelementptr inbounds i8, ptr %.11041.prol, i64 1
  store i8 %1130, ptr %.11041.prol, align 1, !tbaa !23
  %1132 = add i32 %.10.prol, -1
  %prol.iter4264.next = add i32 %prol.iter4264, 1
  %prol.iter4264.cmp.not = icmp eq i32 %prol.iter4264.next, %xtraiter4262
  br i1 %prol.iter4264.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !94

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.lcssa3953.unr = phi ptr [ poison, %scalar.ph.preheader ], [ %1131, %scalar.ph.prol ]
  %.11041.unr = phi ptr [ %.11041.ph, %scalar.ph.preheader ], [ %1131, %scalar.ph.prol ]
  %.10.unr = phi i32 [ %.10.ph, %scalar.ph.preheader ], [ %1132, %scalar.ph.prol ]
  %.2886.unr = phi ptr [ %.2886.ph, %scalar.ph.preheader ], [ %1129, %scalar.ph.prol ]
  %1133 = icmp ult i32 %1128, 7
  br i1 %1133, label %.loopexit3835, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %.11041 = phi ptr [ %1157, %scalar.ph ], [ %.11041.unr, %scalar.ph.prol.loopexit ]
  %.10 = phi i32 [ %1158, %scalar.ph ], [ %.10.unr, %scalar.ph.prol.loopexit ]
  %.2886 = phi ptr [ %1155, %scalar.ph ], [ %.2886.unr, %scalar.ph.prol.loopexit ]
  %1134 = getelementptr inbounds i8, ptr %.2886, i64 1
  %1135 = load i8, ptr %.2886, align 1, !tbaa !23
  %1136 = getelementptr inbounds i8, ptr %.11041, i64 1
  store i8 %1135, ptr %.11041, align 1, !tbaa !23
  %1137 = getelementptr inbounds i8, ptr %.2886, i64 2
  %1138 = load i8, ptr %1134, align 1, !tbaa !23
  %1139 = getelementptr inbounds i8, ptr %.11041, i64 2
  store i8 %1138, ptr %1136, align 1, !tbaa !23
  %1140 = getelementptr inbounds i8, ptr %.2886, i64 3
  %1141 = load i8, ptr %1137, align 1, !tbaa !23
  %1142 = getelementptr inbounds i8, ptr %.11041, i64 3
  store i8 %1141, ptr %1139, align 1, !tbaa !23
  %1143 = getelementptr inbounds i8, ptr %.2886, i64 4
  %1144 = load i8, ptr %1140, align 1, !tbaa !23
  %1145 = getelementptr inbounds i8, ptr %.11041, i64 4
  store i8 %1144, ptr %1142, align 1, !tbaa !23
  %1146 = getelementptr inbounds i8, ptr %.2886, i64 5
  %1147 = load i8, ptr %1143, align 1, !tbaa !23
  %1148 = getelementptr inbounds i8, ptr %.11041, i64 5
  store i8 %1147, ptr %1145, align 1, !tbaa !23
  %1149 = getelementptr inbounds i8, ptr %.2886, i64 6
  %1150 = load i8, ptr %1146, align 1, !tbaa !23
  %1151 = getelementptr inbounds i8, ptr %.11041, i64 6
  store i8 %1150, ptr %1148, align 1, !tbaa !23
  %1152 = getelementptr inbounds i8, ptr %.2886, i64 7
  %1153 = load i8, ptr %1149, align 1, !tbaa !23
  %1154 = getelementptr inbounds i8, ptr %.11041, i64 7
  store i8 %1153, ptr %1151, align 1, !tbaa !23
  %1155 = getelementptr inbounds i8, ptr %.2886, i64 8
  %1156 = load i8, ptr %1152, align 1, !tbaa !23
  %1157 = getelementptr inbounds i8, ptr %.11041, i64 8
  store i8 %1156, ptr %1154, align 1, !tbaa !23
  %1158 = add i32 %.10, -8
  %.not1190.7 = icmp eq i32 %1158, 0
  br i1 %.not1190.7, label %.loopexit3835, label %scalar.ph, !llvm.loop !95

.loopexit3835:                                    ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %.lcssa3502 = phi ptr [ %ind.end, %middle.block ], [ %.lcssa3953.unr, %scalar.ph.prol.loopexit ], [ %1157, %scalar.ph ]
  %1159 = sub i32 %.0976, %spec.select1240
  %1160 = load i32, ptr %39, align 4, !tbaa !43
  %1161 = icmp eq i32 %1160, 0
  br i1 %1161, label %1162, label %.thread

1162:                                             ; preds = %.loopexit3835
  store i32 20, ptr %7, align 8, !tbaa !15
  br label %.thread

1163:                                             ; preds = %72
  %1164 = icmp eq i32 %.0976, 0
  br i1 %1164, label %.loopexit, label %1165

1165:                                             ; preds = %1163
  %1166 = load i32, ptr %39, align 4, !tbaa !43
  %1167 = trunc i32 %1166 to i8
  %1168 = getelementptr inbounds i8, ptr %.01040, i64 1
  store i8 %1167, ptr %.01040, align 1, !tbaa !23
  %1169 = add i32 %.0976, -1
  store i32 20, ptr %7, align 8, !tbaa !15
  br label %.thread

1170:                                             ; preds = %72
  %1171 = load i32, ptr %32, align 8, !tbaa !22
  %.not1160 = icmp eq i32 %1171, 0
  br i1 %.not1160, label %1232, label %.preheader1292

.preheader1292:                                   ; preds = %1170
  %1172 = icmp ult i32 %.0903, 32
  br i1 %1172, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.preheader1292
  %1173 = zext nneg i32 %.0903 to i64
  %1174 = icmp eq i32 %.0978, 0
  br i1 %1174, label %.loopexit.loopexit2375, label %1175

1175:                                             ; preds = %.lr.ph.preheader
  %1176 = add i32 %.0978, -1
  %1177 = getelementptr inbounds i8, ptr %.01043, i64 1
  %1178 = load i8, ptr %.01043, align 1, !tbaa !23
  %1179 = zext i8 %1178 to i64
  %1180 = shl nuw nsw i64 %1179, %1173
  %1181 = add i64 %1180, %.0914
  %indvars.iv.next = add nuw nsw i64 %1173, 8
  %1182 = icmp ult i32 %.0903, 24
  br i1 %1182, label %.lr.ph.1, label %._crit_edge.loopexit, !llvm.loop !96

.lr.ph.1:                                         ; preds = %1175
  %1183 = icmp eq i32 %1176, 0
  br i1 %1183, label %.loopexit.loopexit2375, label %1184

1184:                                             ; preds = %.lr.ph.1
  %1185 = add i32 %.0978, -2
  %1186 = getelementptr inbounds i8, ptr %.01043, i64 2
  %1187 = load i8, ptr %1177, align 1, !tbaa !23
  %1188 = zext i8 %1187 to i64
  %1189 = shl nuw nsw i64 %1188, %indvars.iv.next
  %1190 = add i64 %1189, %1181
  %indvars.iv.next.1 = add nuw nsw i64 %1173, 16
  %1191 = icmp ult i32 %.0903, 16
  br i1 %1191, label %.lr.ph.2, label %._crit_edge.loopexit, !llvm.loop !96

.lr.ph.2:                                         ; preds = %1184
  %1192 = icmp eq i32 %1185, 0
  br i1 %1192, label %.loopexit.loopexit2375, label %1193

1193:                                             ; preds = %.lr.ph.2
  %1194 = add i32 %.0978, -3
  %1195 = getelementptr inbounds i8, ptr %.01043, i64 3
  %1196 = load i8, ptr %1186, align 1, !tbaa !23
  %1197 = zext i8 %1196 to i64
  %1198 = shl nuw nsw i64 %1197, %indvars.iv.next.1
  %1199 = add i64 %1198, %1190
  %indvars.iv.next.2 = add nuw nsw i64 %1173, 24
  %1200 = icmp ult i32 %.0903, 8
  br i1 %1200, label %.lr.ph.3, label %._crit_edge.loopexit, !llvm.loop !96

.lr.ph.3:                                         ; preds = %1193
  %1201 = icmp eq i32 %1194, 0
  br i1 %1201, label %.loopexit.loopexit2375, label %1202

1202:                                             ; preds = %.lr.ph.3
  %1203 = add i32 %.0978, -4
  %1204 = getelementptr inbounds i8, ptr %.01043, i64 4
  %1205 = load i8, ptr %1195, align 1, !tbaa !23
  %1206 = zext i8 %1205 to i64
  %1207 = shl nuw nsw i64 %1206, %indvars.iv.next.2
  %1208 = add i64 %1207, %1199
  %indvars.iv.next.3 = or disjoint i64 %1173, 32
  br label %._crit_edge.loopexit

._crit_edge.loopexit:                             ; preds = %1202, %1193, %1184, %1175
  %.lcssa3847 = phi i32 [ %1176, %1175 ], [ %1185, %1184 ], [ %1194, %1193 ], [ %1203, %1202 ]
  %.lcssa3846 = phi ptr [ %1177, %1175 ], [ %1186, %1184 ], [ %1195, %1193 ], [ %1204, %1202 ]
  %.lcssa3845 = phi i64 [ %1181, %1175 ], [ %1190, %1184 ], [ %1199, %1193 ], [ %1208, %1202 ]
  %indvars.iv.next.lcssa = phi i64 [ %indvars.iv.next, %1175 ], [ %indvars.iv.next.1, %1184 ], [ %indvars.iv.next.2, %1193 ], [ %indvars.iv.next.3, %1202 ]
  %1209 = trunc nuw nsw i64 %indvars.iv.next.lcssa to i32
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.preheader1292
  %.581101.lcssa = phi ptr [ %.01043, %.preheader1292 ], [ %.lcssa3846, %._crit_edge.loopexit ]
  %.581036.lcssa = phi i32 [ %.0978, %.preheader1292 ], [ %.lcssa3847, %._crit_edge.loopexit ]
  %.54968.lcssa = phi i64 [ %.0914, %.preheader1292 ], [ %.lcssa3845, %._crit_edge.loopexit ]
  %.54.lcssa = phi i32 [ %.0903, %.preheader1292 ], [ %1209, %._crit_edge.loopexit ]
  %1210 = sub i32 %.0897, %.0976
  %1211 = zext i32 %1210 to i64
  %1212 = load i64, ptr %33, align 8, !tbaa !97
  %1213 = add i64 %1212, %1211
  store i64 %1213, ptr %33, align 8, !tbaa !97
  %1214 = load i64, ptr %34, align 8, !tbaa !98
  %1215 = add i64 %1214, %1211
  store i64 %1215, ptr %34, align 8, !tbaa !98
  %.not1161 = icmp eq i32 %.0897, %.0976
  %.pre2886 = load i32, ptr %35, align 8, !tbaa !27
  br i1 %.not1161, label %._crit_edge._crit_edge, label %1216

._crit_edge._crit_edge:                           ; preds = %._crit_edge
  %.pre2887 = load i64, ptr %36, align 8, !tbaa !26
  br label %1226

1216:                                             ; preds = %._crit_edge
  %.not1162 = icmp eq i32 %.pre2886, 0
  %1217 = load i64, ptr %36, align 8, !tbaa !26
  %1218 = sub nsw i64 0, %1211
  %1219 = getelementptr inbounds i8, ptr %.01040, i64 %1218
  br i1 %.not1162, label %1222, label %1220

1220:                                             ; preds = %1216
  %1221 = call i64 @crc32(i64 noundef %1217, ptr noundef %1219, i32 noundef %1210) #5
  br label %1224

1222:                                             ; preds = %1216
  %1223 = call i64 @adler32(i64 noundef %1217, ptr noundef %1219, i32 noundef %1210) #5
  br label %1224

1224:                                             ; preds = %1222, %1220
  %1225 = phi i64 [ %1221, %1220 ], [ %1223, %1222 ]
  store i64 %1225, ptr %36, align 8, !tbaa !26
  store i64 %1225, ptr %37, align 8, !tbaa !34
  %.pre2885 = load i32, ptr %35, align 8, !tbaa !27
  br label %1226

1226:                                             ; preds = %._crit_edge._crit_edge, %1224
  %1227 = phi i64 [ %1225, %1224 ], [ %.pre2887, %._crit_edge._crit_edge ]
  %1228 = phi i32 [ %.pre2885, %1224 ], [ %.pre2886, %._crit_edge._crit_edge ]
  %.not1163 = icmp eq i32 %1228, 0
  %trunc = trunc i64 %.54968.lcssa to i32
  %rev = call i32 @llvm.bswap.i32(i32 %trunc)
  %1229 = zext i32 %rev to i64
  %1230 = select i1 %.not1163, i64 %1229, i64 %.54968.lcssa
  %.not1164 = icmp eq i64 %1230, %1227
  br i1 %.not1164, label %1232, label %1231

1231:                                             ; preds = %1226
  store ptr @.str.17, ptr %38, align 8, !tbaa !31
  store i32 29, ptr %7, align 8, !tbaa !15
  br label %.thread

1232:                                             ; preds = %1226, %1170
  %.591102 = phi ptr [ %.01043, %1170 ], [ %.581101.lcssa, %1226 ]
  %.591037 = phi i32 [ %.0978, %1170 ], [ %.581036.lcssa, %1226 ]
  %.55969 = phi i64 [ %.0914, %1170 ], [ 0, %1226 ]
  %.55 = phi i32 [ %.0903, %1170 ], [ 0, %1226 ]
  %.1898 = phi i32 [ %.0897, %1170 ], [ %.0976, %1226 ]
  store i32 27, ptr %7, align 8, !tbaa !15
  br label %1233

1233:                                             ; preds = %1232, %72
  %.601103 = phi ptr [ %.01043, %72 ], [ %.591102, %1232 ]
  %.601038 = phi i32 [ %.0978, %72 ], [ %.591037, %1232 ]
  %.56970 = phi i64 [ %.0914, %72 ], [ %.55969, %1232 ]
  %.56 = phi i32 [ %.0903, %72 ], [ %.55, %1232 ]
  %.2899 = phi i32 [ %.0897, %72 ], [ %.1898, %1232 ]
  %1234 = load i32, ptr %32, align 8, !tbaa !22
  %.not1165 = icmp eq i32 %1234, 0
  br i1 %.not1165, label %1278, label %1235

1235:                                             ; preds = %1233
  %1236 = load i32, ptr %35, align 8, !tbaa !27
  %.not1166 = icmp eq i32 %1236, 0
  br i1 %.not1166, label %1278, label %.preheader1290

.preheader1290:                                   ; preds = %1235
  %1237 = icmp ult i32 %.56, 32
  br i1 %1237, label %.lr.ph1757.preheader, label %._crit_edge1758

.lr.ph1757.preheader:                             ; preds = %.preheader1290
  %1238 = zext nneg i32 %.56 to i64
  %1239 = icmp eq i32 %.601038, 0
  br i1 %1239, label %.loopexit.loopexit2374, label %1240

1240:                                             ; preds = %.lr.ph1757.preheader
  %1241 = add i32 %.601038, -1
  %1242 = getelementptr inbounds i8, ptr %.601103, i64 1
  %1243 = load i8, ptr %.601103, align 1, !tbaa !23
  %1244 = zext i8 %1243 to i64
  %1245 = shl nuw nsw i64 %1244, %1238
  %1246 = add i64 %1245, %.56970
  %indvars.iv.next2811 = add nuw nsw i64 %1238, 8
  %1247 = icmp ult i32 %.56, 24
  br i1 %1247, label %.lr.ph1757.1, label %._crit_edge1758.loopexit, !llvm.loop !99

.lr.ph1757.1:                                     ; preds = %1240
  %1248 = icmp eq i32 %1241, 0
  br i1 %1248, label %.loopexit.loopexit2374, label %1249

1249:                                             ; preds = %.lr.ph1757.1
  %1250 = add i32 %.601038, -2
  %1251 = getelementptr inbounds i8, ptr %.601103, i64 2
  %1252 = load i8, ptr %1242, align 1, !tbaa !23
  %1253 = zext i8 %1252 to i64
  %1254 = shl nuw nsw i64 %1253, %indvars.iv.next2811
  %1255 = add i64 %1254, %1246
  %indvars.iv.next2811.1 = add nuw nsw i64 %1238, 16
  %1256 = icmp ult i32 %.56, 16
  br i1 %1256, label %.lr.ph1757.2, label %._crit_edge1758.loopexit, !llvm.loop !99

.lr.ph1757.2:                                     ; preds = %1249
  %1257 = icmp eq i32 %1250, 0
  br i1 %1257, label %.loopexit.loopexit2374, label %1258

1258:                                             ; preds = %.lr.ph1757.2
  %1259 = add i32 %.601038, -3
  %1260 = getelementptr inbounds i8, ptr %.601103, i64 3
  %1261 = load i8, ptr %1251, align 1, !tbaa !23
  %1262 = zext i8 %1261 to i64
  %1263 = shl nuw nsw i64 %1262, %indvars.iv.next2811.1
  %1264 = add i64 %1263, %1255
  %indvars.iv.next2811.2 = add nuw nsw i64 %1238, 24
  %1265 = icmp ult i32 %.56, 8
  br i1 %1265, label %.lr.ph1757.3, label %._crit_edge1758.loopexit, !llvm.loop !99

.lr.ph1757.3:                                     ; preds = %1258
  %1266 = icmp eq i32 %1259, 0
  br i1 %1266, label %.loopexit.loopexit2374, label %1267

1267:                                             ; preds = %.lr.ph1757.3
  %1268 = add i32 %.601038, -4
  %1269 = getelementptr inbounds i8, ptr %.601103, i64 4
  %1270 = load i8, ptr %1260, align 1, !tbaa !23
  %1271 = zext i8 %1270 to i64
  %1272 = shl nuw nsw i64 %1271, %indvars.iv.next2811.2
  %1273 = add i64 %1272, %1264
  %indvars.iv.next2811.3 = or disjoint i64 %1238, 32
  br label %._crit_edge1758.loopexit

._crit_edge1758.loopexit:                         ; preds = %1267, %1258, %1249, %1240
  %.lcssa3853 = phi i32 [ %1241, %1240 ], [ %1250, %1249 ], [ %1259, %1258 ], [ %1268, %1267 ]
  %.lcssa3852 = phi ptr [ %1242, %1240 ], [ %1251, %1249 ], [ %1260, %1258 ], [ %1269, %1267 ]
  %.lcssa3851 = phi i64 [ %1246, %1240 ], [ %1255, %1249 ], [ %1264, %1258 ], [ %1273, %1267 ]
  %indvars.iv.next2811.lcssa = phi i64 [ %indvars.iv.next2811, %1240 ], [ %indvars.iv.next2811.1, %1249 ], [ %indvars.iv.next2811.2, %1258 ], [ %indvars.iv.next2811.3, %1267 ]
  %1274 = trunc nuw nsw i64 %indvars.iv.next2811.lcssa to i32
  br label %._crit_edge1758

._crit_edge1758:                                  ; preds = %._crit_edge1758.loopexit, %.preheader1290
  %.611104.lcssa = phi ptr [ %.601103, %.preheader1290 ], [ %.lcssa3852, %._crit_edge1758.loopexit ]
  %.611039.lcssa = phi i32 [ %.601038, %.preheader1290 ], [ %.lcssa3853, %._crit_edge1758.loopexit ]
  %.57971.lcssa = phi i64 [ %.56970, %.preheader1290 ], [ %.lcssa3851, %._crit_edge1758.loopexit ]
  %.57.lcssa = phi i32 [ %.56, %.preheader1290 ], [ %1274, %._crit_edge1758.loopexit ]
  %1275 = load i64, ptr %34, align 8, !tbaa !98
  %1276 = and i64 %1275, 4294967295
  %.not1167 = icmp eq i64 %.57971.lcssa, %1276
  br i1 %.not1167, label %1278, label %1277

1277:                                             ; preds = %._crit_edge1758
  store ptr @.str.18, ptr %38, align 8, !tbaa !31
  store i32 29, ptr %7, align 8, !tbaa !15
  br label %.thread

1278:                                             ; preds = %._crit_edge1758, %1235, %1233
  %.621105 = phi ptr [ %.601103, %1235 ], [ %.601103, %1233 ], [ %.611104.lcssa, %._crit_edge1758 ]
  %.62 = phi i32 [ %.601038, %1235 ], [ %.601038, %1233 ], [ %.611039.lcssa, %._crit_edge1758 ]
  %.58972 = phi i64 [ %.56970, %1235 ], [ %.56970, %1233 ], [ 0, %._crit_edge1758 ]
  %.58 = phi i32 [ %.56, %1235 ], [ %.56, %1233 ], [ 0, %._crit_edge1758 ]
  store i32 28, ptr %7, align 8, !tbaa !15
  br label %.loopexit

.thread:                                          ; preds = %748, %836, %.loopexit3835, %1162, %872, %881, %1277, %1231, %1165, %1099, %1058, %958, %955, %952, %866, %858, %855, %671, %638, %607, %599, %590, %541, %517, %469, %461, %168, %165, %141, %140, %128, %125, %110, %89
  %.641107 = phi ptr [ %.611104.lcssa, %1277 ], [ %.581101.lcssa, %1231 ], [ %.01043, %1165 ], [ %.571100, %1099 ], [ %.571100, %1162 ], [ %.571100, %.loopexit3835 ], [ %.531096, %1058 ], [ %875, %881 ], [ %875, %872 ], [ %.461089, %952 ], [ %.461089, %955 ], [ %.461089, %958 ], [ %.331076.lcssa, %855 ], [ %.331076.lcssa, %858 ], [ %.331076.lcssa, %866 ], [ %.301073.lcssa, %671 ], [ %.281071.lcssa, %638 ], [ %602, %599 ], [ %.271070, %607 ], [ %.251068.lcssa, %590 ], [ %.231066, %517 ], [ %.241067.lcssa, %541 ], [ %.181061.lcssa, %461 ], [ %.191062, %469 ], [ %.21045.lcssa, %165 ], [ %.21045.lcssa, %168 ], [ %.01043, %89 ], [ %.11044.lcssa, %110 ], [ %.11044.lcssa, %125 ], [ %.11044.lcssa, %128 ], [ %.11044.lcssa, %141 ], [ %.11044.lcssa, %140 ], [ %.391082, %836 ], [ %.361079.lcssa, %748 ]
  %.21042 = phi ptr [ %.01040, %1277 ], [ %.01040, %1231 ], [ %1168, %1165 ], [ %.01040, %1099 ], [ %.lcssa3502, %1162 ], [ %.lcssa3502, %.loopexit3835 ], [ %.01040, %1058 ], [ %873, %881 ], [ %873, %872 ], [ %.01040, %952 ], [ %.01040, %955 ], [ %.01040, %958 ], [ %.01040, %855 ], [ %.01040, %858 ], [ %.01040, %866 ], [ %.01040, %671 ], [ %.01040, %638 ], [ %604, %599 ], [ %.01040, %607 ], [ %.01040, %590 ], [ %.01040, %517 ], [ %.01040, %541 ], [ %.01040, %461 ], [ %.01040, %469 ], [ %.01040, %165 ], [ %.01040, %168 ], [ %.01040, %89 ], [ %.01040, %110 ], [ %.01040, %125 ], [ %.01040, %128 ], [ %.01040, %141 ], [ %.01040, %140 ], [ %.01040, %836 ], [ %.01040, %748 ]
  %.64 = phi i32 [ %.611039.lcssa, %1277 ], [ %.581036.lcssa, %1231 ], [ %.0978, %1165 ], [ %.571035, %1099 ], [ %.571035, %1162 ], [ %.571035, %.loopexit3835 ], [ %.531031, %1058 ], [ %876, %881 ], [ %876, %872 ], [ %.461024, %952 ], [ %.461024, %955 ], [ %.461024, %958 ], [ %.331011.lcssa, %855 ], [ %.331011.lcssa, %858 ], [ %.331011.lcssa, %866 ], [ %.301008.lcssa, %671 ], [ %.281006.lcssa, %638 ], [ %601, %599 ], [ %.271005, %607 ], [ %.251003.lcssa, %590 ], [ %.231001, %517 ], [ %.241002.lcssa, %541 ], [ %.18996.lcssa, %461 ], [ %.19997, %469 ], [ %.2980.lcssa, %165 ], [ %.2980.lcssa, %168 ], [ %.0978, %89 ], [ %.1979.lcssa, %110 ], [ %.1979.lcssa, %125 ], [ %.1979.lcssa, %128 ], [ %.1979.lcssa, %141 ], [ %.1979.lcssa, %140 ], [ %.391017, %836 ], [ %.361014.lcssa, %748 ]
  %.1977 = phi i32 [ %.0976, %1277 ], [ %.0976, %1231 ], [ %1169, %1165 ], [ %.0976, %1099 ], [ %1159, %1162 ], [ %1159, %.loopexit3835 ], [ %.0976, %1058 ], [ %874, %881 ], [ %874, %872 ], [ %.0976, %952 ], [ %.0976, %955 ], [ %.0976, %958 ], [ %.0976, %855 ], [ %.0976, %858 ], [ %.0976, %866 ], [ %.0976, %671 ], [ %.0976, %638 ], [ %603, %599 ], [ %.0976, %607 ], [ %.0976, %590 ], [ %.0976, %517 ], [ %.0976, %541 ], [ %.0976, %461 ], [ %.0976, %469 ], [ %.0976, %165 ], [ %.0976, %168 ], [ %.0976, %89 ], [ %.0976, %110 ], [ %.0976, %125 ], [ %.0976, %128 ], [ %.0976, %141 ], [ %.0976, %140 ], [ %.0976, %836 ], [ %.0976, %748 ]
  %.60974 = phi i64 [ %.57971.lcssa, %1277 ], [ %.54968.lcssa, %1231 ], [ %.0914, %1165 ], [ %.53967, %1099 ], [ %.53967, %1162 ], [ %.53967, %.loopexit3835 ], [ %1053, %1058 ], [ %877, %881 ], [ %877, %872 ], [ %946, %952 ], [ %946, %955 ], [ %946, %958 ], [ %.29943.lcssa, %855 ], [ %.29943.lcssa, %858 ], [ %.29943.lcssa, %866 ], [ %.26940.lcssa, %671 ], [ %634, %638 ], [ %.23937, %599 ], [ %.23937, %607 ], [ %.21935.lcssa, %590 ], [ %520, %517 ], [ %542, %541 ], [ %.14928.lcssa, %461 ], [ %.15929, %469 ], [ %.2916.lcssa, %165 ], [ %.2916.lcssa, %168 ], [ %.0914, %89 ], [ 0, %110 ], [ %.1915.lcssa, %125 ], [ %.1915.lcssa, %128 ], [ 0, %141 ], [ %130, %140 ], [ %.35949, %836 ], [ %745, %748 ]
  %.60 = phi i32 [ %.57.lcssa, %1277 ], [ %.54.lcssa, %1231 ], [ %.0903, %1165 ], [ %.53, %1099 ], [ %.53, %1162 ], [ %.53, %.loopexit3835 ], [ %1054, %1058 ], [ %878, %881 ], [ %878, %872 ], [ %947, %952 ], [ %947, %955 ], [ %947, %958 ], [ %.29.lcssa, %855 ], [ %.29.lcssa, %858 ], [ %.29.lcssa, %866 ], [ %.26.lcssa, %671 ], [ %635, %638 ], [ %.23, %599 ], [ %.23, %607 ], [ %.21.lcssa, %590 ], [ %521, %517 ], [ %543, %541 ], [ %.14.lcssa, %461 ], [ %.15, %469 ], [ %.2905.lcssa, %165 ], [ %.2905.lcssa, %168 ], [ %.0903, %89 ], [ 0, %110 ], [ %.1904.lcssa, %125 ], [ %.1904.lcssa, %128 ], [ 0, %141 ], [ %131, %140 ], [ %.35, %836 ], [ %746, %748 ]
  %.4901 = phi i32 [ %.2899, %1277 ], [ %.0976, %1231 ], [ %.0897, %1165 ], [ %.0897, %1099 ], [ %.0897, %1162 ], [ %.0897, %.loopexit3835 ], [ %.0897, %1058 ], [ %.0897, %881 ], [ %.0897, %872 ], [ %.0897, %952 ], [ %.0897, %955 ], [ %.0897, %958 ], [ %.0897, %855 ], [ %.0897, %858 ], [ %.0897, %866 ], [ %.0897, %671 ], [ %.0897, %638 ], [ %.0897, %599 ], [ %.0897, %607 ], [ %.0897, %590 ], [ %.0897, %517 ], [ %.0897, %541 ], [ %.0897, %461 ], [ %.0897, %469 ], [ %.0897, %165 ], [ %.0897, %168 ], [ %.0897, %89 ], [ %.0897, %110 ], [ %.0897, %125 ], [ %.0897, %128 ], [ %.0897, %141 ], [ %.0897, %140 ], [ %.0897, %836 ], [ %.0897, %748 ]
  %.8 = phi i32 [ %.0, %1277 ], [ %.0, %1231 ], [ %.0, %1165 ], [ %.7, %1099 ], [ %.7, %1162 ], [ %.7, %.loopexit3835 ], [ %.5, %1058 ], [ %.3, %881 ], [ %.3, %872 ], [ %.3, %952 ], [ %.3, %955 ], [ %.3, %958 ], [ %.1, %855 ], [ %857, %858 ], [ %865, %866 ], [ %670, %671 ], [ %.0, %638 ], [ %.0, %599 ], [ %.0, %607 ], [ %.0, %590 ], [ %.0, %517 ], [ %.0, %541 ], [ %.0, %461 ], [ %.0, %469 ], [ %.0, %165 ], [ %.0, %168 ], [ %.0, %89 ], [ %.0, %110 ], [ %.0, %125 ], [ %.0, %128 ], [ %.0, %141 ], [ %.0, %140 ], [ %.1, %836 ], [ %.1, %748 ]
  %.pre = load i32, ptr %7, align 8, !tbaa !15
  br label %72

.loopexit.loopexit:                               ; preds = %.lr.ph2000
  %1279 = trunc nuw i64 %indvars.iv2835 to i32
  br label %.loopexit

.loopexit.loopexit2354:                           ; preds = %.lr.ph1987
  %1280 = trunc nuw i64 %indvars.iv2832 to i32
  br label %.loopexit

.loopexit.loopexit2355:                           ; preds = %.lr.ph1977
  %1281 = trunc nuw i64 %indvars.iv2829 to i32
  br label %.loopexit

.loopexit.loopexit2356:                           ; preds = %.lr.ph1967
  %1282 = trunc nuw i64 %indvars.iv2826 to i32
  br label %.loopexit

.loopexit.loopexit2358:                           ; preds = %.lr.ph2346.1, %.lr.ph2346.preheader
  %indvars.iv2882.lcssa = phi i64 [ %87, %.lr.ph2346.preheader ], [ %indvars.iv.next2883, %.lr.ph2346.1 ]
  %.19152344.lcssa = phi i64 [ %.0914, %.lr.ph2346.preheader ], [ %96, %.lr.ph2346.1 ]
  %.110442342.lcssa = phi ptr [ %.01043, %.lr.ph2346.preheader ], [ %92, %.lr.ph2346.1 ]
  %1283 = trunc nuw nsw i64 %indvars.iv2882.lcssa to i32
  br label %.loopexit

.loopexit.loopexit2359:                           ; preds = %.lr.ph2336.1, %.lr.ph2336.preheader
  %indvars.iv2879.lcssa = phi i64 [ %440, %.lr.ph2336.preheader ], [ %indvars.iv.next2880, %.lr.ph2336.1 ]
  %.149282334.lcssa = phi i64 [ %.13927, %.lr.ph2336.preheader ], [ %448, %.lr.ph2336.1 ]
  %.1810612332.lcssa = phi ptr [ %.171060, %.lr.ph2336.preheader ], [ %444, %.lr.ph2336.1 ]
  %1284 = trunc nuw nsw i64 %indvars.iv2879.lcssa to i32
  br label %.loopexit

.loopexit.loopexit2360:                           ; preds = %.lr.ph2327.1, %.lr.ph2327.preheader
  %indvars.iv2870.lcssa = phi i64 [ %280, %.lr.ph2327.preheader ], [ %indvars.iv.next2871, %.lr.ph2327.1 ]
  %.89222325.lcssa = phi i64 [ %.792129342942, %.lr.ph2327.preheader ], [ %288, %.lr.ph2327.1 ]
  %.810512323.lcssa = phi ptr [ %.7105029302944, %.lr.ph2327.preheader ], [ %284, %.lr.ph2327.1 ]
  %1285 = trunc nuw nsw i64 %indvars.iv2870.lcssa to i32
  br label %.loopexit

.loopexit.loopexit2361:                           ; preds = %.lr.ph2318.1, %.lr.ph2318.preheader
  %indvars.iv2867.lcssa = phi i64 [ %238, %.lr.ph2318.preheader ], [ %indvars.iv.next2868, %.lr.ph2318.1 ]
  %.69202315.lcssa = phi i64 [ %.59192921, %.lr.ph2318.preheader ], [ %246, %.lr.ph2318.1 ]
  %.610492313.lcssa = phi ptr [ %.510482919, %.lr.ph2318.preheader ], [ %242, %.lr.ph2318.1 ]
  %1286 = trunc nuw nsw i64 %indvars.iv2867.lcssa to i32
  br label %.loopexit

.loopexit.loopexit2362:                           ; preds = %.lr.ph2308.3, %.lr.ph2308.2, %.lr.ph2308.1, %.lr.ph2308.preheader
  %indvars.iv2864.lcssa = phi i64 [ %184, %.lr.ph2308.preheader ], [ %indvars.iv.next2865, %.lr.ph2308.1 ], [ %indvars.iv.next2865.1, %.lr.ph2308.2 ], [ %indvars.iv.next2865.2, %.lr.ph2308.3 ]
  %.49182305.lcssa = phi i64 [ %.39172912, %.lr.ph2308.preheader ], [ %192, %.lr.ph2308.1 ], [ %201, %.lr.ph2308.2 ], [ %210, %.lr.ph2308.3 ]
  %.410472303.lcssa = phi ptr [ %.310462910, %.lr.ph2308.preheader ], [ %188, %.lr.ph2308.1 ], [ %197, %.lr.ph2308.2 ], [ %206, %.lr.ph2308.3 ]
  %1287 = trunc nuw nsw i64 %indvars.iv2864.lcssa to i32
  br label %.loopexit

.loopexit.loopexit2363:                           ; preds = %.lr.ph2297.1, %.lr.ph2297.preheader
  %indvars.iv2861.lcssa = phi i64 [ %81, %.lr.ph2297.preheader ], [ %indvars.iv.next2862, %.lr.ph2297.1 ]
  %.29162295.lcssa = phi i64 [ %.0914, %.lr.ph2297.preheader ], [ %152, %.lr.ph2297.1 ]
  %.210452293.lcssa = phi ptr [ %.01043, %.lr.ph2297.preheader ], [ %148, %.lr.ph2297.1 ]
  %1288 = trunc nuw nsw i64 %indvars.iv2861.lcssa to i32
  br label %.loopexit

.loopexit.loopexit2364:                           ; preds = %.lr.ph2125.3, %.lr.ph2125.2, %.lr.ph2125.1, %.lr.ph2125.preheader
  %indvars.iv2858.lcssa = phi i64 [ %78, %.lr.ph2125.preheader ], [ %indvars.iv.next2859, %.lr.ph2125.1 ], [ %indvars.iv.next2859.1, %.lr.ph2125.2 ], [ %indvars.iv.next2859.2, %.lr.ph2125.3 ]
  %.169302123.lcssa = phi i64 [ %.0914, %.lr.ph2125.preheader ], [ %477, %.lr.ph2125.1 ], [ %486, %.lr.ph2125.2 ], [ %495, %.lr.ph2125.3 ]
  %.2010632121.lcssa = phi ptr [ %.01043, %.lr.ph2125.preheader ], [ %473, %.lr.ph2125.1 ], [ %482, %.lr.ph2125.2 ], [ %491, %.lr.ph2125.3 ]
  %1289 = trunc nuw nsw i64 %indvars.iv2858.lcssa to i32
  br label %.loopexit

.loopexit.loopexit2365:                           ; preds = %.lr.ph2115.3, %.lr.ph2115.2, %.lr.ph2115.1, %.lr.ph2115.preheader
  %indvars.iv2856.lcssa = phi i64 [ %551, %.lr.ph2115.preheader ], [ %indvars.iv.next2857, %.lr.ph2115.1 ], [ %indvars.iv.next2857.1, %.lr.ph2115.2 ], [ %indvars.iv.next2857.2, %.lr.ph2115.3 ]
  %.219352112.lcssa = phi i64 [ %547, %.lr.ph2115.preheader ], [ %559, %.lr.ph2115.1 ], [ %567, %.lr.ph2115.2 ], [ %576, %.lr.ph2115.3 ]
  %.2510682110.lcssa = phi ptr [ %.01043, %.lr.ph2115.preheader ], [ %555, %.lr.ph2115.1 ], [ %563, %.lr.ph2115.2 ], [ %572, %.lr.ph2115.3 ]
  %1290 = trunc nuw nsw i64 %indvars.iv2856.lcssa to i32
  br label %.loopexit

.loopexit.loopexit2373:                           ; preds = %.lr.ph1767.1, %.lr.ph1767.preheader
  %indvars.iv2813.lcssa = phi i64 [ %75, %.lr.ph1767.preheader ], [ %indvars.iv.next2814, %.lr.ph1767.1 ]
  %.249381765.lcssa = phi i64 [ %.0914, %.lr.ph1767.preheader ], [ %614, %.lr.ph1767.1 ]
  %.2810711763.lcssa = phi ptr [ %.01043, %.lr.ph1767.preheader ], [ %610, %.lr.ph1767.1 ]
  %1291 = trunc nuw nsw i64 %indvars.iv2813.lcssa to i32
  br label %.loopexit

.loopexit.loopexit2374:                           ; preds = %.lr.ph1757.3, %.lr.ph1757.2, %.lr.ph1757.1, %.lr.ph1757.preheader
  %indvars.iv2810.lcssa = phi i64 [ %1238, %.lr.ph1757.preheader ], [ %indvars.iv.next2811, %.lr.ph1757.1 ], [ %indvars.iv.next2811.1, %.lr.ph1757.2 ], [ %indvars.iv.next2811.2, %.lr.ph1757.3 ]
  %.579711755.lcssa = phi i64 [ %.56970, %.lr.ph1757.preheader ], [ %1246, %.lr.ph1757.1 ], [ %1255, %.lr.ph1757.2 ], [ %1264, %.lr.ph1757.3 ]
  %.6111041753.lcssa = phi ptr [ %.601103, %.lr.ph1757.preheader ], [ %1242, %.lr.ph1757.1 ], [ %1251, %.lr.ph1757.2 ], [ %1260, %.lr.ph1757.3 ]
  %1292 = trunc nuw nsw i64 %indvars.iv2810.lcssa to i32
  br label %.loopexit

.loopexit.loopexit2375:                           ; preds = %.lr.ph.3, %.lr.ph.2, %.lr.ph.1, %.lr.ph.preheader
  %indvars.iv.lcssa = phi i64 [ %1173, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph.1 ], [ %indvars.iv.next.1, %.lr.ph.2 ], [ %indvars.iv.next.2, %.lr.ph.3 ]
  %.549681748.lcssa = phi i64 [ %.0914, %.lr.ph.preheader ], [ %1181, %.lr.ph.1 ], [ %1190, %.lr.ph.2 ], [ %1199, %.lr.ph.3 ]
  %.5811011746.lcssa = phi ptr [ %.01043, %.lr.ph.preheader ], [ %1177, %.lr.ph.1 ], [ %1186, %.lr.ph.2 ], [ %1195, %.lr.ph.3 ]
  %1293 = trunc nuw nsw i64 %indvars.iv.lcssa to i32
  br label %.loopexit

.loopexit.loopexit2955:                           ; preds = %.lr.ph1953
  %1294 = zext i32 %.3310112011 to i64
  %1295 = shl i32 %.3310112011, 3
  %1296 = add i32 %1295, %.292013
  %scevgep.le = getelementptr i8, ptr %.3310762010, i64 %1294
  br label %.loopexit

.loopexit.loopexit2956:                           ; preds = %.lr.ph2104
  %1297 = shl i32 %.541032, 3
  %1298 = add i32 %.50, %1297
  %1299 = zext i32 %.541032 to i64
  %scevgep2855.le = getelementptr i8, ptr %.541097, i64 %1299
  br label %.loopexit

.loopexit.loopexit2957:                           ; preds = %.lr.ph2092
  %1300 = zext i32 %.511029.lcssa to i64
  %1301 = shl i32 %.511029.lcssa, 3
  %1302 = add i32 %1301, %.47.lcssa
  %scevgep2853.le = getelementptr i8, ptr %.511094.lcssa, i64 %1300
  br label %.loopexit

.loopexit.loopexit2958:                           ; preds = %.lr.ph2074
  %1303 = zext i32 %.501028 to i64
  %1304 = shl i32 %.501028, 3
  %1305 = add i32 %1304, %.46
  %scevgep2849.le = getelementptr i8, ptr %.501093, i64 %1303
  br label %.loopexit

.loopexit.loopexit2959:                           ; preds = %.lr.ph2059
  %1306 = shl i32 %.471025, 3
  %1307 = add i32 %.43, %1306
  %1308 = zext i32 %.471025 to i64
  %scevgep2846.le = getelementptr i8, ptr %.471090, i64 %1308
  br label %.loopexit

.loopexit.loopexit2960:                           ; preds = %.lr.ph2047
  %1309 = zext i32 %.441022.lcssa to i64
  %1310 = shl i32 %.441022.lcssa, 3
  %1311 = add i32 %1310, %.40.lcssa
  %scevgep2844.le = getelementptr i8, ptr %.441087.lcssa, i64 %1309
  br label %.loopexit

.loopexit.loopexit2961:                           ; preds = %.lr.ph2029
  %1312 = zext i32 %.431021 to i64
  %1313 = shl i32 %.431021, 3
  %1314 = add i32 %1313, %.39
  %scevgep2840.le = getelementptr i8, ptr %.431086, i64 %1312
  br label %.loopexit

.loopexit.loopexit3841:                           ; preds = %72
  br label %.loopexit

.loopexit:                                        ; preds = %351, %357, %386, %398, %427, %512, %591, %597, %867, %1087, %1163, %.lr.ph2134, %.lr.ph1777, %72, %.loopexit.loopexit3841, %.loopexit.loopexit2961, %.loopexit.loopexit2960, %.loopexit.loopexit2959, %.loopexit.loopexit2958, %.loopexit.loopexit2957, %.loopexit.loopexit2956, %.loopexit.loopexit2955, %.loopexit.loopexit2375, %.loopexit.loopexit2374, %.loopexit.loopexit2373, %.loopexit.loopexit2365, %.loopexit.loopexit2364, %.loopexit.loopexit2363, %.loopexit.loopexit2362, %.loopexit.loopexit2361, %.loopexit.loopexit2360, %.loopexit.loopexit2359, %.loopexit.loopexit2358, %.loopexit.loopexit2356, %.loopexit.loopexit2355, %.loopexit.loopexit2354, %.loopexit.loopexit, %1278, %536
  %.09762717 = phi i32 [ %.0976, %536 ], [ %.0976, %1278 ], [ %.0976, %.loopexit.loopexit ], [ %.0976, %.loopexit.loopexit2354 ], [ %.0976, %.loopexit.loopexit2355 ], [ %.0976, %.loopexit.loopexit2356 ], [ %.0976, %.loopexit.loopexit2358 ], [ %.0976, %.loopexit.loopexit2359 ], [ %.0976, %.loopexit.loopexit2360 ], [ %.0976, %.loopexit.loopexit2361 ], [ %.0976, %.loopexit.loopexit2362 ], [ %.0976, %.loopexit.loopexit2363 ], [ %.0976, %.loopexit.loopexit2364 ], [ %.0976, %.loopexit.loopexit2365 ], [ %.0976, %.loopexit.loopexit2373 ], [ %.0976, %.loopexit.loopexit2374 ], [ %.0976, %.loopexit.loopexit2375 ], [ %.0976, %.loopexit.loopexit2955 ], [ %.0976, %.loopexit.loopexit2956 ], [ %.0976, %.loopexit.loopexit2957 ], [ %.0976, %.loopexit.loopexit2958 ], [ %.0976, %.loopexit.loopexit2959 ], [ %.0976, %.loopexit.loopexit2960 ], [ %.0976, %.loopexit.loopexit2961 ], [ %.0976, %72 ], [ %.0976, %.lr.ph1777 ], [ %.0976, %351 ], [ %.0976, %357 ], [ %.0976, %386 ], [ %.0976, %398 ], [ %.0976, %427 ], [ %.0976, %512 ], [ %.0976, %591 ], [ %.0976, %597 ], [ %.0976, %867 ], [ 0, %1087 ], [ 0, %1163 ], [ %.0976, %.lr.ph2134 ], [ %.0976, %.loopexit.loopexit3841 ]
  %.651108 = phi ptr [ %.241067.lcssa, %536 ], [ %.621105, %1278 ], [ %.3510781996, %.loopexit.loopexit ], [ %.3810811983, %.loopexit.loopexit2354 ], [ %.3610791973, %.loopexit.loopexit2355 ], [ %.3710801963, %.loopexit.loopexit2356 ], [ %.110442342.lcssa, %.loopexit.loopexit2358 ], [ %.1810612332.lcssa, %.loopexit.loopexit2359 ], [ %.810512323.lcssa, %.loopexit.loopexit2360 ], [ %.610492313.lcssa, %.loopexit.loopexit2361 ], [ %.410472303.lcssa, %.loopexit.loopexit2362 ], [ %.210452293.lcssa, %.loopexit.loopexit2363 ], [ %.2010632121.lcssa, %.loopexit.loopexit2364 ], [ %.2510682110.lcssa, %.loopexit.loopexit2365 ], [ %.2810711763.lcssa, %.loopexit.loopexit2373 ], [ %.6111041753.lcssa, %.loopexit.loopexit2374 ], [ %.5811011746.lcssa, %.loopexit.loopexit2375 ], [ %scevgep.le, %.loopexit.loopexit2955 ], [ %scevgep2855.le, %.loopexit.loopexit2956 ], [ %scevgep2853.le, %.loopexit.loopexit2957 ], [ %scevgep2849.le, %.loopexit.loopexit2958 ], [ %scevgep2846.le, %.loopexit.loopexit2959 ], [ %scevgep2844.le, %.loopexit.loopexit2960 ], [ %scevgep2840.le, %.loopexit.loopexit2961 ], [ %.01043, %72 ], [ %.3010731931, %.lr.ph1777 ], [ %.111054, %351 ], [ %.131056, %357 ], [ %389, %386 ], [ %.151058, %398 ], [ %430, %427 ], [ %.221065, %512 ], [ %.251068.lcssa, %591 ], [ %.271070, %597 ], [ %.331076.lcssa, %867 ], [ %.571100, %1087 ], [ %.01043, %1163 ], [ %.231066, %.lr.ph2134 ], [ %.01043, %.loopexit.loopexit3841 ]
  %.65 = phi i32 [ %.241002.lcssa, %536 ], [ %.62, %1278 ], [ 0, %.loopexit.loopexit ], [ 0, %.loopexit.loopexit2354 ], [ 0, %.loopexit.loopexit2355 ], [ 0, %.loopexit.loopexit2356 ], [ 0, %.loopexit.loopexit2358 ], [ 0, %.loopexit.loopexit2359 ], [ 0, %.loopexit.loopexit2360 ], [ 0, %.loopexit.loopexit2361 ], [ 0, %.loopexit.loopexit2362 ], [ 0, %.loopexit.loopexit2363 ], [ 0, %.loopexit.loopexit2364 ], [ 0, %.loopexit.loopexit2365 ], [ 0, %.loopexit.loopexit2373 ], [ 0, %.loopexit.loopexit2374 ], [ 0, %.loopexit.loopexit2375 ], [ 0, %.loopexit.loopexit2955 ], [ 0, %.loopexit.loopexit2956 ], [ 0, %.loopexit.loopexit2957 ], [ 0, %.loopexit.loopexit2958 ], [ 0, %.loopexit.loopexit2959 ], [ 0, %.loopexit.loopexit2960 ], [ 0, %.loopexit.loopexit2961 ], [ %.0978, %72 ], [ 0, %.lr.ph1777 ], [ %.11989, %351 ], [ 0, %357 ], [ %387, %386 ], [ 0, %398 ], [ %428, %427 ], [ %.221000, %512 ], [ %.251003.lcssa, %591 ], [ %.271005, %597 ], [ %.331011.lcssa, %867 ], [ %.571035, %1087 ], [ %.0978, %1163 ], [ 0, %.lr.ph2134 ], [ %.0978, %.loopexit.loopexit3841 ]
  %.61975 = phi i64 [ %537, %536 ], [ %.58972, %1278 ], [ %.319451998, %.loopexit.loopexit ], [ %.349481985, %.loopexit.loopexit2354 ], [ %.329461975, %.loopexit.loopexit2355 ], [ %.339471965, %.loopexit.loopexit2356 ], [ %.19152344.lcssa, %.loopexit.loopexit2358 ], [ %.149282334.lcssa, %.loopexit.loopexit2359 ], [ %.89222325.lcssa, %.loopexit.loopexit2360 ], [ %.69202315.lcssa, %.loopexit.loopexit2361 ], [ %.49182305.lcssa, %.loopexit.loopexit2362 ], [ %.29162295.lcssa, %.loopexit.loopexit2363 ], [ %.169302123.lcssa, %.loopexit.loopexit2364 ], [ %.219352112.lcssa, %.loopexit.loopexit2365 ], [ %.249381765.lcssa, %.loopexit.loopexit2373 ], [ %.579711755.lcssa, %.loopexit.loopexit2374 ], [ %.549681748.lcssa, %.loopexit.loopexit2375 ], [ %.309441951, %.loopexit.loopexit2955 ], [ %.519652102, %.loopexit.loopexit2956 ], [ %.489622090, %.loopexit.loopexit2957 ], [ %.479612071, %.loopexit.loopexit2958 ], [ %.449582057, %.loopexit.loopexit2959 ], [ %.419552045, %.loopexit.loopexit2960 ], [ %.409542026, %.loopexit.loopexit2961 ], [ %.0914, %72 ], [ %.269401933, %.lr.ph1777 ], [ %.10924, %351 ], [ %.11925, %357 ], [ %.11925, %386 ], [ %.12926, %398 ], [ %.12926, %427 ], [ %.18932, %512 ], [ 0, %591 ], [ %.23937, %597 ], [ %.29943.lcssa, %867 ], [ %.53967, %1087 ], [ %.0914, %1163 ], [ %.19933, %.lr.ph2134 ], [ %.0914, %.loopexit.loopexit3841 ]
  %.61 = phi i32 [ %538, %536 ], [ %.58, %1278 ], [ %1279, %.loopexit.loopexit ], [ %1280, %.loopexit.loopexit2354 ], [ %1281, %.loopexit.loopexit2355 ], [ %1282, %.loopexit.loopexit2356 ], [ %1283, %.loopexit.loopexit2358 ], [ %1284, %.loopexit.loopexit2359 ], [ %1285, %.loopexit.loopexit2360 ], [ %1286, %.loopexit.loopexit2361 ], [ %1287, %.loopexit.loopexit2362 ], [ %1288, %.loopexit.loopexit2363 ], [ %1289, %.loopexit.loopexit2364 ], [ %1290, %.loopexit.loopexit2365 ], [ %1291, %.loopexit.loopexit2373 ], [ %1292, %.loopexit.loopexit2374 ], [ %1293, %.loopexit.loopexit2375 ], [ %1296, %.loopexit.loopexit2955 ], [ %1298, %.loopexit.loopexit2956 ], [ %1302, %.loopexit.loopexit2957 ], [ %1305, %.loopexit.loopexit2958 ], [ %1307, %.loopexit.loopexit2959 ], [ %1311, %.loopexit.loopexit2960 ], [ %1314, %.loopexit.loopexit2961 ], [ %.0903, %72 ], [ %.261934, %.lr.ph1777 ], [ %.10913, %351 ], [ %.11, %357 ], [ %.11, %386 ], [ %.12, %398 ], [ %.12, %427 ], [ %.18, %512 ], [ 0, %591 ], [ %.23, %597 ], [ %.29.lcssa, %867 ], [ %.53, %1087 ], [ %.0903, %1163 ], [ %.19, %.lr.ph2134 ], [ %.0903, %.loopexit.loopexit3841 ]
  %.5902 = phi i32 [ %.0897, %536 ], [ %.2899, %1278 ], [ %.0897, %.loopexit.loopexit ], [ %.0897, %.loopexit.loopexit2354 ], [ %.0897, %.loopexit.loopexit2355 ], [ %.0897, %.loopexit.loopexit2356 ], [ %.0897, %.loopexit.loopexit2358 ], [ %.0897, %.loopexit.loopexit2359 ], [ %.0897, %.loopexit.loopexit2360 ], [ %.0897, %.loopexit.loopexit2361 ], [ %.0897, %.loopexit.loopexit2362 ], [ %.0897, %.loopexit.loopexit2363 ], [ %.0897, %.loopexit.loopexit2364 ], [ %.0897, %.loopexit.loopexit2365 ], [ %.0897, %.loopexit.loopexit2373 ], [ %.2899, %.loopexit.loopexit2374 ], [ %.0897, %.loopexit.loopexit2375 ], [ %.0897, %.loopexit.loopexit2955 ], [ %.0897, %.loopexit.loopexit2956 ], [ %.0897, %.loopexit.loopexit2957 ], [ %.0897, %.loopexit.loopexit2958 ], [ %.0897, %.loopexit.loopexit2959 ], [ %.0897, %.loopexit.loopexit2960 ], [ %.0897, %.loopexit.loopexit2961 ], [ %.0897, %72 ], [ %.0897, %.lr.ph1777 ], [ %.0897, %.lr.ph2134 ], [ %.0897, %1163 ], [ %.0897, %1087 ], [ %.0897, %867 ], [ %.0897, %597 ], [ %.0897, %591 ], [ %.0897, %512 ], [ %.0897, %427 ], [ %.0897, %398 ], [ %.0897, %386 ], [ %.0897, %357 ], [ %.0897, %351 ], [ %.0897, %.loopexit.loopexit3841 ]
  %.9 = phi i32 [ %.0, %536 ], [ 1, %1278 ], [ %.1, %.loopexit.loopexit ], [ %.1, %.loopexit.loopexit2354 ], [ %.1, %.loopexit.loopexit2355 ], [ %.1, %.loopexit.loopexit2356 ], [ %.0, %.loopexit.loopexit2358 ], [ %.0, %.loopexit.loopexit2359 ], [ %.0, %.loopexit.loopexit2360 ], [ %.0, %.loopexit.loopexit2361 ], [ %.0, %.loopexit.loopexit2362 ], [ %.0, %.loopexit.loopexit2363 ], [ %.0, %.loopexit.loopexit2364 ], [ %.0, %.loopexit.loopexit2365 ], [ %.0, %.loopexit.loopexit2373 ], [ %.0, %.loopexit.loopexit2374 ], [ %.0, %.loopexit.loopexit2375 ], [ %.1, %.loopexit.loopexit2955 ], [ %.6, %.loopexit.loopexit2956 ], [ %.5, %.loopexit.loopexit2957 ], [ %.5, %.loopexit.loopexit2958 ], [ %.4, %.loopexit.loopexit2959 ], [ %.3, %.loopexit.loopexit2960 ], [ %.3, %.loopexit.loopexit2961 ], [ -3, %72 ], [ %.0, %.lr.ph1777 ], [ %.0, %351 ], [ %.0, %357 ], [ %.0, %386 ], [ %.0, %398 ], [ %.0, %427 ], [ %.0, %512 ], [ %.0, %591 ], [ %.0, %597 ], [ 0, %867 ], [ %.7, %1087 ], [ %.0, %1163 ], [ %.0, %.lr.ph2134 ], [ 1, %.loopexit.loopexit3841 ]
  store ptr %.01040, ptr %10, align 8, !tbaa !12
  store i32 %.09762717, ptr %24, align 8, !tbaa !17
  store ptr %.651108, ptr %0, align 8, !tbaa !13
  store i32 %.65, ptr %26, align 8, !tbaa !14
  store i64 %.61975, ptr %28, align 8, !tbaa !18
  store i32 %.61, ptr %30, align 8, !tbaa !19
  %1315 = load i32, ptr %62, align 4, !tbaa !91
  %.not1232 = icmp eq i32 %1315, 0
  br i1 %.not1232, label %1316, label %1319

1316:                                             ; preds = %.loopexit
  %1317 = load i32, ptr %7, align 8, !tbaa !15
  %1318 = icmp ugt i32 %1317, 25
  %.not1233 = icmp eq i32 %.5902, %.09762717
  %or.cond1247 = select i1 %1318, i1 true, i1 %.not1233
  br i1 %or.cond1247, label %1322, label %1319

1319:                                             ; preds = %1316, %.loopexit
  %1320 = call i32 @updatewindow(ptr noundef nonnull %0, i32 noundef %.5902)
  %.not1234 = icmp eq i32 %1320, 0
  br i1 %.not1234, label %._crit_edge2901, label %1321

._crit_edge2901:                                  ; preds = %1319
  %.pre2902 = load i32, ptr %26, align 8, !tbaa !14
  %.pre2903 = load i32, ptr %24, align 8, !tbaa !17
  br label %1322

1321:                                             ; preds = %1319
  store i32 30, ptr %7, align 8, !tbaa !15
  br label %.loopexit1295

1322:                                             ; preds = %._crit_edge2901, %1316
  %1323 = phi i32 [ %.pre2903, %._crit_edge2901 ], [ %.09762717, %1316 ]
  %1324 = phi i32 [ %.pre2902, %._crit_edge2901 ], [ %.65, %1316 ]
  %1325 = sub i32 %27, %1324
  %1326 = sub i32 %.5902, %1323
  %1327 = zext i32 %1325 to i64
  %1328 = getelementptr inbounds i8, ptr %0, i64 16
  %1329 = load i64, ptr %1328, align 8, !tbaa !100
  %1330 = add i64 %1329, %1327
  store i64 %1330, ptr %1328, align 8, !tbaa !100
  %1331 = zext i32 %1326 to i64
  %1332 = load i64, ptr %33, align 8, !tbaa !97
  %1333 = add i64 %1332, %1331
  store i64 %1333, ptr %33, align 8, !tbaa !97
  %1334 = load i64, ptr %34, align 8, !tbaa !98
  %1335 = add i64 %1334, %1331
  store i64 %1335, ptr %34, align 8, !tbaa !98
  %1336 = load i32, ptr %32, align 8, !tbaa !22
  %1337 = icmp ne i32 %1336, 0
  %1338 = icmp ne i32 %.5902, %1323
  %or.cond7 = select i1 %1337, i1 %1338, i1 false
  br i1 %or.cond7, label %1339, label %1351

1339:                                             ; preds = %1322
  %1340 = load i32, ptr %35, align 8, !tbaa !27
  %.not1235 = icmp eq i32 %1340, 0
  %1341 = load i64, ptr %36, align 8, !tbaa !26
  %1342 = load ptr, ptr %10, align 8, !tbaa !12
  %1343 = sub nsw i64 0, %1331
  %1344 = getelementptr inbounds i8, ptr %1342, i64 %1343
  br i1 %.not1235, label %1347, label %1345

1345:                                             ; preds = %1339
  %1346 = call i64 @crc32(i64 noundef %1341, ptr noundef %1344, i32 noundef %1326) #5
  br label %1349

1347:                                             ; preds = %1339
  %1348 = call i64 @adler32(i64 noundef %1341, ptr noundef %1344, i32 noundef %1326) #5
  br label %1349

1349:                                             ; preds = %1347, %1345
  %1350 = phi i64 [ %1346, %1345 ], [ %1348, %1347 ]
  store i64 %1350, ptr %36, align 8, !tbaa !26
  store i64 %1350, ptr %37, align 8, !tbaa !34
  br label %1351

1351:                                             ; preds = %1349, %1322
  %1352 = load i32, ptr %30, align 8, !tbaa !19
  %1353 = load i32, ptr %65, align 4, !tbaa !57
  %.not1236 = icmp eq i32 %1353, 0
  %1354 = select i1 %.not1236, i32 0, i32 64
  %1355 = add i32 %1354, %1352
  %1356 = load i32, ptr %7, align 8, !tbaa !15
  %1357 = icmp eq i32 %1356, 11
  %1358 = select i1 %1357, i32 128, i32 0
  %1359 = add i32 %1355, %1358
  %1360 = icmp eq i32 %1356, 19
  %1361 = icmp eq i32 %1356, 14
  %1362 = or i1 %1360, %1361
  %1363 = select i1 %1362, i32 256, i32 0
  %1364 = add i32 %1359, %1363
  %1365 = getelementptr inbounds i8, ptr %0, i64 88
  store i32 %1364, ptr %1365, align 8, !tbaa !101
  %1366 = icmp eq i32 %27, %1324
  %1367 = icmp eq i32 %.5902, %1323
  %or.cond9 = select i1 %1366, i1 %1367, i1 false
  %1368 = icmp eq i32 %1, 4
  %or.cond11 = or i1 %1368, %or.cond9
  %1369 = icmp eq i32 %.9, 0
  %or.cond13 = select i1 %or.cond11, i1 %1369, i1 false
  %spec.store.select = select i1 %or.cond13, i32 -5, i32 %.9
  br label %.loopexit1295

.loopexit1295.loopexit:                           ; preds = %72
  br label %.loopexit1295

.loopexit1295:                                    ; preds = %72, %.loopexit1295.loopexit, %2, %5, %9, %16, %1351, %1321, %509
  %.01109 = phi i32 [ -4, %1321 ], [ %spec.store.select, %1351 ], [ 2, %509 ], [ -2, %16 ], [ -2, %9 ], [ -2, %5 ], [ -2, %2 ], [ -4, %.loopexit1295.loopexit ], [ -2, %72 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #5
  ret i32 %.01109
}

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, 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 56}
!6 = !{!"z_stream_s", !7, i64 0, !10, i64 8, !11, i64 16, !7, i64 24, !10, i64 32, !11, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !10, i64 88, !11, i64 96, !11, i64 104}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"long", !8, i64 0}
!12 = !{!6, !7, i64 24}
!13 = !{!6, !7, i64 0}
!14 = !{!6, !10, i64 8}
!15 = !{!16, !10, i64 0}
!16 = !{!"inflate_state", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !11, i64 24, !11, i64 32, !7, i64 40, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !7, i64 64, !11, i64 72, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !7, i64 96, !7, i64 104, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !7, i64 136, !8, i64 144, !8, i64 784, !8, i64 1360, !10, i64 7136, !10, i64 7140, !10, i64 7144}
!17 = !{!6, !10, i64 32}
!18 = !{!16, !11, i64 72}
!19 = !{!16, !10, i64 80}
!20 = !{!16, !10, i64 92}
!21 = !{!16, !10, i64 132}
!22 = !{!16, !10, i64 8}
!23 = !{!8, !8, i64 0}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = !{!16, !11, i64 24}
!27 = !{!16, !10, i64 16}
!28 = !{!16, !7, i64 40}
!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 48}
!33 = !{!16, !10, i64 20}
!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 84}
!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 12}
!57 = !{!16, !10, i64 4}
!58 = distinct !{!58, !25}
!59 = distinct !{!59, !25}
!60 = !{!16, !10, i64 124}
!61 = !{!16, !10, i64 128}
!62 = !{!16, !10, i64 120}
!63 = !{!64, !64, i64 0}
!64 = !{!"short", !8, i64 0}
!65 = distinct !{!65, !25}
!66 = distinct !{!66, !25}
!67 = !{!16, !7, i64 136}
!68 = !{!16, !7, i64 96}
!69 = !{!16, !10, i64 112}
!70 = distinct !{!70, !25}
!71 = distinct !{!71, !25}
!72 = distinct !{!72, !25}
!73 = distinct !{!73, !25}
!74 = distinct !{!74, !75}
!75 = !{!"llvm.loop.unroll.disable"}
!76 = distinct !{!76, !25, !77, !78}
!77 = !{!"llvm.loop.isvectorized", i32 1}
!78 = !{!"llvm.loop.unroll.runtime.disable"}
!79 = distinct !{!79, !25, !77}
!80 = distinct !{!80, !25}
!81 = !{!16, !7, i64 104}
!82 = !{!16, !10, i64 116}
!83 = !{!16, !10, i64 7140}
!84 = distinct !{!84, !25}
!85 = !{!16, !10, i64 7144}
!86 = !{!16, !10, i64 88}
!87 = distinct !{!87, !25}
!88 = !{!16, !10, i64 56}
!89 = !{!16, !10, i64 7136}
!90 = !{!16, !10, i64 60}
!91 = !{!16, !10, i64 52}
!92 = !{!16, !7, i64 64}
!93 = distinct !{!93, !25, !77, !78}
!94 = distinct !{!94, !75}
!95 = distinct !{!95, !25, !77}
!96 = distinct !{!96, !25}
!97 = !{!6, !11, i64 40}
!98 = !{!16, !11, i64 32}
!99 = distinct !{!99, !25}
!100 = !{!6, !11, i64 16}
!101 = !{!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