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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.code = type { i8, i8, i16 }
%struct.z_stream_s = type { ptr, i32, i64, ptr, i32, i64, ptr, ptr, ptr, ptr, ptr, i32, i64, i64 }
%struct.inflate_state = type { 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], [2048 x %struct.code] }
%struct.gz_header_s = type { i32, i64, i32, i32, ptr, i32, i32, ptr, i32, ptr, i32, i32, i32 }

@z_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 [28 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.17 = 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 @z_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 %2921

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 = %2767, %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 %2766 [
    i32 0, label %85
    i32 1, label %242
    i32 2, label %340
    i32 3, label %417
    i32 4, label %495
    i32 5, label %587
    i32 6, label %698
    i32 7, label %805
    i32 8, label %910
    i32 9, label %987
    i32 10, label %1040
    i32 11, label %1075
    i32 12, label %1080
    i32 13, label %1167
    i32 14, label %1230
    i32 15, label %1279
    i32 16, label %1366
    i32 17, label %1480
    i32 18, label %1915
    i32 19, label %2148
    i32 20, label %2214
    i32 21, label %2374
    i32 22, label %2457
    i32 23, label %2564
    i32 24, label %2579
    i32 25, label %2705
    i32 26, label %2762
    i32 27, label %2763
    i32 28, label %2764
    i32 29, label %2765
  ]

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 %2767

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 %2768

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 @z_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 @z_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 %2767

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 27, ptr %189, align 8, !tbaa !17
  br label %2767

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 27, ptr %199, align 8, !tbaa !17
  br label %2767

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 i32, ptr %19, align 4, !tbaa !9
  %213 = load ptr, ptr %6, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.inflate_state, ptr %213, i32 0, i32 9
  %215 = load i32, ptr %214, align 8, !tbaa !33
  %216 = icmp ugt i32 %212, %215
  br i1 %216, label %217, label %222

217:                                              ; preds = %207
  %218 = load ptr, ptr %4, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.z_stream_s, ptr %218, i32 0, i32 6
  store ptr @.str.3, ptr %219, align 8, !tbaa !32
  %220 = load ptr, ptr %6, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.inflate_state, ptr %220, i32 0, i32 0
  store i32 27, ptr %221, align 8, !tbaa !17
  br label %2767

222:                                              ; preds = %207
  %223 = load i32, ptr %19, align 4, !tbaa !9
  %224 = shl i32 1, %223
  %225 = load ptr, ptr %6, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.inflate_state, ptr %225, i32 0, i32 5
  store i32 %224, ptr %226, align 4, !tbaa !34
  %227 = call i64 @z_adler32(i64 noundef 0, ptr noundef null, i32 noundef 0)
  %228 = load ptr, ptr %6, align 8, !tbaa !5
  %229 = getelementptr inbounds %struct.inflate_state, ptr %228, i32 0, i32 6
  store i64 %227, ptr %229, align 8, !tbaa !27
  %230 = load ptr, ptr %4, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.z_stream_s, ptr %230, i32 0, i32 12
  store i64 %227, ptr %231, align 8, !tbaa !35
  %232 = load i64, ptr %11, align 8, !tbaa !21
  %233 = and i64 %232, 512
  %234 = icmp ne i64 %233, 0
  %235 = zext i1 %234 to i64
  %236 = select i1 %234, i32 9, i32 11
  %237 = load ptr, ptr %6, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.inflate_state, ptr %237, i32 0, i32 0
  store i32 %236, ptr %238, align 8, !tbaa !17
  br label %239

239:                                              ; preds = %222
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %240

240:                                              ; preds = %239
  br label %241

241:                                              ; preds = %240
  br label %2767

242:                                              ; preds = %81
  br label %243

243:                                              ; preds = %242
  br label %244

244:                                              ; preds = %267, %243
  %245 = load i32, ptr %12, align 4, !tbaa !9
  %246 = icmp ult i32 %245, 16
  br i1 %246, label %247, label %268

247:                                              ; preds = %244
  br label %248

248:                                              ; preds = %247
  %249 = load i32, ptr %9, align 4, !tbaa !9
  %250 = icmp eq i32 %249, 0
  br i1 %250, label %251, label %252

251:                                              ; preds = %248
  br label %2768

252:                                              ; preds = %248
  %253 = load i32, ptr %9, align 4, !tbaa !9
  %254 = add i32 %253, -1
  store i32 %254, ptr %9, align 4, !tbaa !9
  %255 = load ptr, ptr %7, align 8, !tbaa !5
  %256 = getelementptr inbounds i8, ptr %255, i32 1
  store ptr %256, ptr %7, align 8, !tbaa !5
  %257 = load i8, ptr %255, align 1, !tbaa !24
  %258 = zext i8 %257 to i64
  %259 = load i32, ptr %12, align 4, !tbaa !9
  %260 = zext i32 %259 to i64
  %261 = shl i64 %258, %260
  %262 = load i64, ptr %11, align 8, !tbaa !21
  %263 = add i64 %262, %261
  store i64 %263, ptr %11, align 8, !tbaa !21
  %264 = load i32, ptr %12, align 4, !tbaa !9
  %265 = add i32 %264, 8
  store i32 %265, ptr %12, align 4, !tbaa !9
  br label %266

266:                                              ; preds = %252
  br label %267

267:                                              ; preds = %266
  br label %244, !llvm.loop !36

268:                                              ; preds = %244
  br label %269

269:                                              ; preds = %268
  br label %270

270:                                              ; preds = %269
  %271 = load i64, ptr %11, align 8, !tbaa !21
  %272 = trunc i64 %271 to i32
  %273 = load ptr, ptr %6, align 8, !tbaa !5
  %274 = getelementptr inbounds %struct.inflate_state, ptr %273, i32 0, i32 4
  store i32 %272, ptr %274, align 8, !tbaa !28
  %275 = load ptr, ptr %6, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.inflate_state, ptr %275, i32 0, i32 4
  %277 = load i32, ptr %276, align 8, !tbaa !28
  %278 = and i32 %277, 255
  %279 = icmp ne i32 %278, 8
  br i1 %279, label %280, label %285

280:                                              ; preds = %270
  %281 = load ptr, ptr %4, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.z_stream_s, ptr %281, i32 0, i32 6
  store ptr @.str.2, ptr %282, align 8, !tbaa !32
  %283 = load ptr, ptr %6, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.inflate_state, ptr %283, i32 0, i32 0
  store i32 27, ptr %284, align 8, !tbaa !17
  br label %2767

285:                                              ; preds = %270
  %286 = load ptr, ptr %6, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.inflate_state, ptr %286, i32 0, i32 4
  %288 = load i32, ptr %287, align 8, !tbaa !28
  %289 = and i32 %288, 57344
  %290 = icmp ne i32 %289, 0
  br i1 %290, label %291, label %296

291:                                              ; preds = %285
  %292 = load ptr, ptr %4, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.z_stream_s, ptr %292, i32 0, i32 6
  store ptr @.str.4, ptr %293, align 8, !tbaa !32
  %294 = load ptr, ptr %6, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.inflate_state, ptr %294, i32 0, i32 0
  store i32 27, ptr %295, align 8, !tbaa !17
  br label %2767

296:                                              ; preds = %285
  %297 = load ptr, ptr %6, align 8, !tbaa !5
  %298 = getelementptr inbounds %struct.inflate_state, ptr %297, i32 0, i32 8
  %299 = load ptr, ptr %298, align 8, !tbaa !29
  %300 = icmp ne ptr %299, null
  br i1 %300, label %301, label %310

301:                                              ; preds = %296
  %302 = load i64, ptr %11, align 8, !tbaa !21
  %303 = lshr i64 %302, 8
  %304 = and i64 %303, 1
  %305 = trunc i64 %304 to i32
  %306 = load ptr, ptr %6, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.inflate_state, ptr %306, i32 0, i32 8
  %308 = load ptr, ptr %307, align 8, !tbaa !29
  %309 = getelementptr inbounds %struct.gz_header_s, ptr %308, i32 0, i32 0
  store i32 %305, ptr %309, align 8, !tbaa !37
  br label %310

310:                                              ; preds = %301, %296
  %311 = load ptr, ptr %6, align 8, !tbaa !5
  %312 = getelementptr inbounds %struct.inflate_state, ptr %311, i32 0, i32 4
  %313 = load i32, ptr %312, align 8, !tbaa !28
  %314 = and i32 %313, 512
  %315 = icmp ne i32 %314, 0
  br i1 %315, label %316, label %334

316:                                              ; preds = %310
  br label %317

317:                                              ; preds = %316
  %318 = load i64, ptr %11, align 8, !tbaa !21
  %319 = trunc i64 %318 to i8
  %320 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 0
  store i8 %319, ptr %320, align 1, !tbaa !24
  %321 = load i64, ptr %11, align 8, !tbaa !21
  %322 = lshr i64 %321, 8
  %323 = trunc i64 %322 to i8
  %324 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 1
  store i8 %323, ptr %324, align 1, !tbaa !24
  %325 = load ptr, ptr %6, align 8, !tbaa !5
  %326 = getelementptr inbounds %struct.inflate_state, ptr %325, i32 0, i32 6
  %327 = load i64, ptr %326, align 8, !tbaa !27
  %328 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 0
  %329 = call i64 @z_crc32(i64 noundef %327, ptr noundef %328, i32 noundef 2)
  %330 = load ptr, ptr %6, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.inflate_state, ptr %330, i32 0, i32 6
  store i64 %329, ptr %331, align 8, !tbaa !27
  br label %332

332:                                              ; preds = %317
  br label %333

333:                                              ; preds = %332
  br label %334

334:                                              ; preds = %333, %310
  br label %335

335:                                              ; preds = %334
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %336

336:                                              ; preds = %335
  br label %337

337:                                              ; preds = %336
  %338 = load ptr, ptr %6, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.inflate_state, ptr %338, i32 0, i32 0
  store i32 2, ptr %339, align 8, !tbaa !17
  br label %340

340:                                              ; preds = %337, %81
  br label %341

341:                                              ; preds = %340
  br label %342

342:                                              ; preds = %365, %341
  %343 = load i32, ptr %12, align 4, !tbaa !9
  %344 = icmp ult i32 %343, 32
  br i1 %344, label %345, label %366

345:                                              ; preds = %342
  br label %346

346:                                              ; preds = %345
  %347 = load i32, ptr %9, align 4, !tbaa !9
  %348 = icmp eq i32 %347, 0
  br i1 %348, label %349, label %350

349:                                              ; preds = %346
  br label %2768

350:                                              ; preds = %346
  %351 = load i32, ptr %9, align 4, !tbaa !9
  %352 = add i32 %351, -1
  store i32 %352, ptr %9, align 4, !tbaa !9
  %353 = load ptr, ptr %7, align 8, !tbaa !5
  %354 = getelementptr inbounds i8, ptr %353, i32 1
  store ptr %354, ptr %7, align 8, !tbaa !5
  %355 = load i8, ptr %353, align 1, !tbaa !24
  %356 = zext i8 %355 to i64
  %357 = load i32, ptr %12, align 4, !tbaa !9
  %358 = zext i32 %357 to i64
  %359 = shl i64 %356, %358
  %360 = load i64, ptr %11, align 8, !tbaa !21
  %361 = add i64 %360, %359
  store i64 %361, ptr %11, align 8, !tbaa !21
  %362 = load i32, ptr %12, align 4, !tbaa !9
  %363 = add i32 %362, 8
  store i32 %363, ptr %12, align 4, !tbaa !9
  br label %364

364:                                              ; preds = %350
  br label %365

365:                                              ; preds = %364
  br label %342, !llvm.loop !38

366:                                              ; preds = %342
  br label %367

367:                                              ; preds = %366
  br label %368

368:                                              ; preds = %367
  %369 = load ptr, ptr %6, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.inflate_state, ptr %369, i32 0, i32 8
  %371 = load ptr, ptr %370, align 8, !tbaa !29
  %372 = icmp ne ptr %371, null
  br i1 %372, label %373, label %379

373:                                              ; preds = %368
  %374 = load i64, ptr %11, align 8, !tbaa !21
  %375 = load ptr, ptr %6, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.inflate_state, ptr %375, i32 0, i32 8
  %377 = load ptr, ptr %376, align 8, !tbaa !29
  %378 = getelementptr inbounds %struct.gz_header_s, ptr %377, i32 0, i32 1
  store i64 %374, ptr %378, align 8, !tbaa !39
  br label %379

379:                                              ; preds = %373, %368
  %380 = load ptr, ptr %6, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.inflate_state, ptr %380, i32 0, i32 4
  %382 = load i32, ptr %381, align 8, !tbaa !28
  %383 = and i32 %382, 512
  %384 = icmp ne i32 %383, 0
  br i1 %384, label %385, label %411

385:                                              ; preds = %379
  br label %386

386:                                              ; preds = %385
  %387 = load i64, ptr %11, align 8, !tbaa !21
  %388 = trunc i64 %387 to i8
  %389 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 0
  store i8 %388, ptr %389, align 1, !tbaa !24
  %390 = load i64, ptr %11, align 8, !tbaa !21
  %391 = lshr i64 %390, 8
  %392 = trunc i64 %391 to i8
  %393 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 1
  store i8 %392, ptr %393, align 1, !tbaa !24
  %394 = load i64, ptr %11, align 8, !tbaa !21
  %395 = lshr i64 %394, 16
  %396 = trunc i64 %395 to i8
  %397 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 2
  store i8 %396, ptr %397, align 1, !tbaa !24
  %398 = load i64, ptr %11, align 8, !tbaa !21
  %399 = lshr i64 %398, 24
  %400 = trunc i64 %399 to i8
  %401 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 3
  store i8 %400, ptr %401, align 1, !tbaa !24
  %402 = load ptr, ptr %6, align 8, !tbaa !5
  %403 = getelementptr inbounds %struct.inflate_state, ptr %402, i32 0, i32 6
  %404 = load i64, ptr %403, align 8, !tbaa !27
  %405 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 0
  %406 = call i64 @z_crc32(i64 noundef %404, ptr noundef %405, i32 noundef 4)
  %407 = load ptr, ptr %6, align 8, !tbaa !5
  %408 = getelementptr inbounds %struct.inflate_state, ptr %407, i32 0, i32 6
  store i64 %406, ptr %408, align 8, !tbaa !27
  br label %409

409:                                              ; preds = %386
  br label %410

410:                                              ; preds = %409
  br label %411

411:                                              ; preds = %410, %379
  br label %412

412:                                              ; preds = %411
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %413

413:                                              ; preds = %412
  br label %414

414:                                              ; preds = %413
  %415 = load ptr, ptr %6, align 8, !tbaa !5
  %416 = getelementptr inbounds %struct.inflate_state, ptr %415, i32 0, i32 0
  store i32 3, ptr %416, align 8, !tbaa !17
  br label %417

417:                                              ; preds = %414, %81
  br label %418

418:                                              ; preds = %417
  br label %419

419:                                              ; preds = %442, %418
  %420 = load i32, ptr %12, align 4, !tbaa !9
  %421 = icmp ult i32 %420, 16
  br i1 %421, label %422, label %443

422:                                              ; preds = %419
  br label %423

423:                                              ; preds = %422
  %424 = load i32, ptr %9, align 4, !tbaa !9
  %425 = icmp eq i32 %424, 0
  br i1 %425, label %426, label %427

426:                                              ; preds = %423
  br label %2768

427:                                              ; preds = %423
  %428 = load i32, ptr %9, align 4, !tbaa !9
  %429 = add i32 %428, -1
  store i32 %429, ptr %9, align 4, !tbaa !9
  %430 = load ptr, ptr %7, align 8, !tbaa !5
  %431 = getelementptr inbounds i8, ptr %430, i32 1
  store ptr %431, ptr %7, align 8, !tbaa !5
  %432 = load i8, ptr %430, align 1, !tbaa !24
  %433 = zext i8 %432 to i64
  %434 = load i32, ptr %12, align 4, !tbaa !9
  %435 = zext i32 %434 to i64
  %436 = shl i64 %433, %435
  %437 = load i64, ptr %11, align 8, !tbaa !21
  %438 = add i64 %437, %436
  store i64 %438, ptr %11, align 8, !tbaa !21
  %439 = load i32, ptr %12, align 4, !tbaa !9
  %440 = add i32 %439, 8
  store i32 %440, ptr %12, align 4, !tbaa !9
  br label %441

441:                                              ; preds = %427
  br label %442

442:                                              ; preds = %441
  br label %419, !llvm.loop !40

443:                                              ; preds = %419
  br label %444

444:                                              ; preds = %443
  br label %445

445:                                              ; preds = %444
  %446 = load ptr, ptr %6, align 8, !tbaa !5
  %447 = getelementptr inbounds %struct.inflate_state, ptr %446, i32 0, i32 8
  %448 = load ptr, ptr %447, align 8, !tbaa !29
  %449 = icmp ne ptr %448, null
  br i1 %449, label %450, label %465

450:                                              ; preds = %445
  %451 = load i64, ptr %11, align 8, !tbaa !21
  %452 = and i64 %451, 255
  %453 = trunc i64 %452 to i32
  %454 = load ptr, ptr %6, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.inflate_state, ptr %454, i32 0, i32 8
  %456 = load ptr, ptr %455, align 8, !tbaa !29
  %457 = getelementptr inbounds %struct.gz_header_s, ptr %456, i32 0, i32 2
  store i32 %453, ptr %457, align 8, !tbaa !41
  %458 = load i64, ptr %11, align 8, !tbaa !21
  %459 = lshr i64 %458, 8
  %460 = trunc i64 %459 to i32
  %461 = load ptr, ptr %6, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.inflate_state, ptr %461, i32 0, i32 8
  %463 = load ptr, ptr %462, align 8, !tbaa !29
  %464 = getelementptr inbounds %struct.gz_header_s, ptr %463, i32 0, i32 3
  store i32 %460, ptr %464, align 4, !tbaa !42
  br label %465

465:                                              ; preds = %450, %445
  %466 = load ptr, ptr %6, align 8, !tbaa !5
  %467 = getelementptr inbounds %struct.inflate_state, ptr %466, i32 0, i32 4
  %468 = load i32, ptr %467, align 8, !tbaa !28
  %469 = and i32 %468, 512
  %470 = icmp ne i32 %469, 0
  br i1 %470, label %471, label %489

471:                                              ; preds = %465
  br label %472

472:                                              ; preds = %471
  %473 = load i64, ptr %11, align 8, !tbaa !21
  %474 = trunc i64 %473 to i8
  %475 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 0
  store i8 %474, ptr %475, align 1, !tbaa !24
  %476 = load i64, ptr %11, align 8, !tbaa !21
  %477 = lshr i64 %476, 8
  %478 = trunc i64 %477 to i8
  %479 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 1
  store i8 %478, ptr %479, align 1, !tbaa !24
  %480 = load ptr, ptr %6, align 8, !tbaa !5
  %481 = getelementptr inbounds %struct.inflate_state, ptr %480, i32 0, i32 6
  %482 = load i64, ptr %481, align 8, !tbaa !27
  %483 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 0
  %484 = call i64 @z_crc32(i64 noundef %482, ptr noundef %483, i32 noundef 2)
  %485 = load ptr, ptr %6, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.inflate_state, ptr %485, i32 0, i32 6
  store i64 %484, ptr %486, align 8, !tbaa !27
  br label %487

487:                                              ; preds = %472
  br label %488

488:                                              ; preds = %487
  br label %489

489:                                              ; preds = %488, %465
  br label %490

490:                                              ; preds = %489
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %491

491:                                              ; preds = %490
  br label %492

492:                                              ; preds = %491
  %493 = load ptr, ptr %6, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.inflate_state, ptr %493, i32 0, i32 0
  store i32 4, ptr %494, align 8, !tbaa !17
  br label %495

495:                                              ; preds = %492, %81
  %496 = load ptr, ptr %6, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct.inflate_state, ptr %496, i32 0, i32 4
  %498 = load i32, ptr %497, align 8, !tbaa !28
  %499 = and i32 %498, 1024
  %500 = icmp ne i32 %499, 0
  br i1 %500, label %501, label %573

501:                                              ; preds = %495
  br label %502

502:                                              ; preds = %501
  br label %503

503:                                              ; preds = %526, %502
  %504 = load i32, ptr %12, align 4, !tbaa !9
  %505 = icmp ult i32 %504, 16
  br i1 %505, label %506, label %527

506:                                              ; preds = %503
  br label %507

507:                                              ; preds = %506
  %508 = load i32, ptr %9, align 4, !tbaa !9
  %509 = icmp eq i32 %508, 0
  br i1 %509, label %510, label %511

510:                                              ; preds = %507
  br label %2768

511:                                              ; preds = %507
  %512 = load i32, ptr %9, align 4, !tbaa !9
  %513 = add i32 %512, -1
  store i32 %513, ptr %9, align 4, !tbaa !9
  %514 = load ptr, ptr %7, align 8, !tbaa !5
  %515 = getelementptr inbounds i8, ptr %514, i32 1
  store ptr %515, ptr %7, align 8, !tbaa !5
  %516 = load i8, ptr %514, align 1, !tbaa !24
  %517 = zext i8 %516 to i64
  %518 = load i32, ptr %12, align 4, !tbaa !9
  %519 = zext i32 %518 to i64
  %520 = shl i64 %517, %519
  %521 = load i64, ptr %11, align 8, !tbaa !21
  %522 = add i64 %521, %520
  store i64 %522, ptr %11, align 8, !tbaa !21
  %523 = load i32, ptr %12, align 4, !tbaa !9
  %524 = add i32 %523, 8
  store i32 %524, ptr %12, align 4, !tbaa !9
  br label %525

525:                                              ; preds = %511
  br label %526

526:                                              ; preds = %525
  br label %503, !llvm.loop !43

527:                                              ; preds = %503
  br label %528

528:                                              ; preds = %527
  br label %529

529:                                              ; preds = %528
  %530 = load i64, ptr %11, align 8, !tbaa !21
  %531 = trunc i64 %530 to i32
  %532 = load ptr, ptr %6, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.inflate_state, ptr %532, i32 0, i32 16
  store i32 %531, ptr %533, align 4, !tbaa !44
  %534 = load ptr, ptr %6, align 8, !tbaa !5
  %535 = getelementptr inbounds %struct.inflate_state, ptr %534, i32 0, i32 8
  %536 = load ptr, ptr %535, align 8, !tbaa !29
  %537 = icmp ne ptr %536, null
  br i1 %537, label %538, label %545

538:                                              ; preds = %529
  %539 = load i64, ptr %11, align 8, !tbaa !21
  %540 = trunc i64 %539 to i32
  %541 = load ptr, ptr %6, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.inflate_state, ptr %541, i32 0, i32 8
  %543 = load ptr, ptr %542, align 8, !tbaa !29
  %544 = getelementptr inbounds %struct.gz_header_s, ptr %543, i32 0, i32 5
  store i32 %540, ptr %544, align 8, !tbaa !45
  br label %545

545:                                              ; preds = %538, %529
  %546 = load ptr, ptr %6, align 8, !tbaa !5
  %547 = getelementptr inbounds %struct.inflate_state, ptr %546, i32 0, i32 4
  %548 = load i32, ptr %547, align 8, !tbaa !28
  %549 = and i32 %548, 512
  %550 = icmp ne i32 %549, 0
  br i1 %550, label %551, label %569

551:                                              ; preds = %545
  br label %552

552:                                              ; preds = %551
  %553 = load i64, ptr %11, align 8, !tbaa !21
  %554 = trunc i64 %553 to i8
  %555 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 0
  store i8 %554, ptr %555, align 1, !tbaa !24
  %556 = load i64, ptr %11, align 8, !tbaa !21
  %557 = lshr i64 %556, 8
  %558 = trunc i64 %557 to i8
  %559 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 1
  store i8 %558, ptr %559, align 1, !tbaa !24
  %560 = load ptr, ptr %6, align 8, !tbaa !5
  %561 = getelementptr inbounds %struct.inflate_state, ptr %560, i32 0, i32 6
  %562 = load i64, ptr %561, align 8, !tbaa !27
  %563 = getelementptr inbounds [4 x i8], ptr %21, i64 0, i64 0
  %564 = call i64 @z_crc32(i64 noundef %562, ptr noundef %563, i32 noundef 2)
  %565 = load ptr, ptr %6, align 8, !tbaa !5
  %566 = getelementptr inbounds %struct.inflate_state, ptr %565, i32 0, i32 6
  store i64 %564, ptr %566, align 8, !tbaa !27
  br label %567

567:                                              ; preds = %552
  br label %568

568:                                              ; preds = %567
  br label %569

569:                                              ; preds = %568, %545
  br label %570

570:                                              ; preds = %569
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %571

571:                                              ; preds = %570
  br label %572

572:                                              ; preds = %571
  br label %584

573:                                              ; preds = %495
  %574 = load ptr, ptr %6, align 8, !tbaa !5
  %575 = getelementptr inbounds %struct.inflate_state, ptr %574, i32 0, i32 8
  %576 = load ptr, ptr %575, align 8, !tbaa !29
  %577 = icmp ne ptr %576, null
  br i1 %577, label %578, label %583

578:                                              ; preds = %573
  %579 = load ptr, ptr %6, align 8, !tbaa !5
  %580 = getelementptr inbounds %struct.inflate_state, ptr %579, i32 0, i32 8
  %581 = load ptr, ptr %580, align 8, !tbaa !29
  %582 = getelementptr inbounds %struct.gz_header_s, ptr %581, i32 0, i32 4
  store ptr null, ptr %582, align 8, !tbaa !46
  br label %583

583:                                              ; preds = %578, %573
  br label %584

584:                                              ; preds = %583, %572
  %585 = load ptr, ptr %6, align 8, !tbaa !5
  %586 = getelementptr inbounds %struct.inflate_state, ptr %585, i32 0, i32 0
  store i32 5, ptr %586, align 8, !tbaa !17
  br label %587

587:                                              ; preds = %584, %81
  %588 = load ptr, ptr %6, align 8, !tbaa !5
  %589 = getelementptr inbounds %struct.inflate_state, ptr %588, i32 0, i32 4
  %590 = load i32, ptr %589, align 8, !tbaa !28
  %591 = and i32 %590, 1024
  %592 = icmp ne i32 %591, 0
  br i1 %592, label %593, label %693

593:                                              ; preds = %587
  %594 = load ptr, ptr %6, align 8, !tbaa !5
  %595 = getelementptr inbounds %struct.inflate_state, ptr %594, i32 0, i32 16
  %596 = load i32, ptr %595, align 4, !tbaa !44
  store i32 %596, ptr %15, align 4, !tbaa !9
  %597 = load i32, ptr %15, align 4, !tbaa !9
  %598 = load i32, ptr %9, align 4, !tbaa !9
  %599 = icmp ugt i32 %597, %598
  br i1 %599, label %600, label %602

600:                                              ; preds = %593
  %601 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %601, ptr %15, align 4, !tbaa !9
  br label %602

602:                                              ; preds = %600, %593
  %603 = load i32, ptr %15, align 4, !tbaa !9
  %604 = icmp ne i32 %603, 0
  br i1 %604, label %605, label %686

605:                                              ; preds = %602
  %606 = load ptr, ptr %6, align 8, !tbaa !5
  %607 = getelementptr inbounds %struct.inflate_state, ptr %606, i32 0, i32 8
  %608 = load ptr, ptr %607, align 8, !tbaa !29
  %609 = icmp ne ptr %608, null
  br i1 %609, label %610, label %658

610:                                              ; preds = %605
  %611 = load ptr, ptr %6, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.inflate_state, ptr %611, i32 0, i32 8
  %613 = load ptr, ptr %612, align 8, !tbaa !29
  %614 = getelementptr inbounds %struct.gz_header_s, ptr %613, i32 0, i32 4
  %615 = load ptr, ptr %614, align 8, !tbaa !46
  %616 = icmp ne ptr %615, null
  br i1 %616, label %617, label %658

617:                                              ; preds = %610
  %618 = load ptr, ptr %6, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct.inflate_state, ptr %618, i32 0, i32 8
  %620 = load ptr, ptr %619, align 8, !tbaa !29
  %621 = getelementptr inbounds %struct.gz_header_s, ptr %620, i32 0, i32 5
  %622 = load i32, ptr %621, align 8, !tbaa !45
  %623 = load ptr, ptr %6, align 8, !tbaa !5
  %624 = getelementptr inbounds %struct.inflate_state, ptr %623, i32 0, i32 16
  %625 = load i32, ptr %624, align 4, !tbaa !44
  %626 = sub i32 %622, %625
  store i32 %626, ptr %19, align 4, !tbaa !9
  %627 = load ptr, ptr %6, align 8, !tbaa !5
  %628 = getelementptr inbounds %struct.inflate_state, ptr %627, i32 0, i32 8
  %629 = load ptr, ptr %628, align 8, !tbaa !29
  %630 = getelementptr inbounds %struct.gz_header_s, ptr %629, i32 0, i32 4
  %631 = load ptr, ptr %630, align 8, !tbaa !46
  %632 = load i32, ptr %19, align 4, !tbaa !9
  %633 = zext i32 %632 to i64
  %634 = getelementptr inbounds i8, ptr %631, i64 %633
  %635 = load ptr, ptr %7, align 8, !tbaa !5
  %636 = load i32, ptr %19, align 4, !tbaa !9
  %637 = load i32, ptr %15, align 4, !tbaa !9
  %638 = add i32 %636, %637
  %639 = load ptr, ptr %6, align 8, !tbaa !5
  %640 = getelementptr inbounds %struct.inflate_state, ptr %639, i32 0, i32 8
  %641 = load ptr, ptr %640, align 8, !tbaa !29
  %642 = getelementptr inbounds %struct.gz_header_s, ptr %641, i32 0, i32 6
  %643 = load i32, ptr %642, align 4, !tbaa !47
  %644 = icmp ugt i32 %638, %643
  br i1 %644, label %645, label %653

645:                                              ; preds = %617
  %646 = load ptr, ptr %6, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.inflate_state, ptr %646, i32 0, i32 8
  %648 = load ptr, ptr %647, align 8, !tbaa !29
  %649 = getelementptr inbounds %struct.gz_header_s, ptr %648, i32 0, i32 6
  %650 = load i32, ptr %649, align 4, !tbaa !47
  %651 = load i32, ptr %19, align 4, !tbaa !9
  %652 = sub i32 %650, %651
  br label %655

653:                                              ; preds = %617
  %654 = load i32, ptr %15, align 4, !tbaa !9
  br label %655

655:                                              ; preds = %653, %645
  %656 = phi i32 [ %652, %645 ], [ %654, %653 ]
  %657 = zext i32 %656 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %634, ptr align 1 %635, i64 %657, i1 false)
  br label %658

658:                                              ; preds = %655, %610, %605
  %659 = load ptr, ptr %6, align 8, !tbaa !5
  %660 = getelementptr inbounds %struct.inflate_state, ptr %659, i32 0, i32 4
  %661 = load i32, ptr %660, align 8, !tbaa !28
  %662 = and i32 %661, 512
  %663 = icmp ne i32 %662, 0
  br i1 %663, label %664, label %673

664:                                              ; preds = %658
  %665 = load ptr, ptr %6, align 8, !tbaa !5
  %666 = getelementptr inbounds %struct.inflate_state, ptr %665, i32 0, i32 6
  %667 = load i64, ptr %666, align 8, !tbaa !27
  %668 = load ptr, ptr %7, align 8, !tbaa !5
  %669 = load i32, ptr %15, align 4, !tbaa !9
  %670 = call i64 @z_crc32(i64 noundef %667, ptr noundef %668, i32 noundef %669)
  %671 = load ptr, ptr %6, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct.inflate_state, ptr %671, i32 0, i32 6
  store i64 %670, ptr %672, align 8, !tbaa !27
  br label %673

673:                                              ; preds = %664, %658
  %674 = load i32, ptr %15, align 4, !tbaa !9
  %675 = load i32, ptr %9, align 4, !tbaa !9
  %676 = sub i32 %675, %674
  store i32 %676, ptr %9, align 4, !tbaa !9
  %677 = load i32, ptr %15, align 4, !tbaa !9
  %678 = load ptr, ptr %7, align 8, !tbaa !5
  %679 = zext i32 %677 to i64
  %680 = getelementptr inbounds i8, ptr %678, i64 %679
  store ptr %680, ptr %7, align 8, !tbaa !5
  %681 = load i32, ptr %15, align 4, !tbaa !9
  %682 = load ptr, ptr %6, align 8, !tbaa !5
  %683 = getelementptr inbounds %struct.inflate_state, ptr %682, i32 0, i32 16
  %684 = load i32, ptr %683, align 4, !tbaa !44
  %685 = sub i32 %684, %681
  store i32 %685, ptr %683, align 4, !tbaa !44
  br label %686

686:                                              ; preds = %673, %602
  %687 = load ptr, ptr %6, align 8, !tbaa !5
  %688 = getelementptr inbounds %struct.inflate_state, ptr %687, i32 0, i32 16
  %689 = load i32, ptr %688, align 4, !tbaa !44
  %690 = icmp ne i32 %689, 0
  br i1 %690, label %691, label %692

691:                                              ; preds = %686
  br label %2768

692:                                              ; preds = %686
  br label %693

693:                                              ; preds = %692, %587
  %694 = load ptr, ptr %6, align 8, !tbaa !5
  %695 = getelementptr inbounds %struct.inflate_state, ptr %694, i32 0, i32 16
  store i32 0, ptr %695, align 4, !tbaa !44
  %696 = load ptr, ptr %6, align 8, !tbaa !5
  %697 = getelementptr inbounds %struct.inflate_state, ptr %696, i32 0, i32 0
  store i32 6, ptr %697, align 8, !tbaa !17
  br label %698

698:                                              ; preds = %693, %81
  %699 = load ptr, ptr %6, align 8, !tbaa !5
  %700 = getelementptr inbounds %struct.inflate_state, ptr %699, i32 0, i32 4
  %701 = load i32, ptr %700, align 8, !tbaa !28
  %702 = and i32 %701, 2048
  %703 = icmp ne i32 %702, 0
  br i1 %703, label %704, label %789

704:                                              ; preds = %698
  %705 = load i32, ptr %9, align 4, !tbaa !9
  %706 = icmp eq i32 %705, 0
  br i1 %706, label %707, label %708

707:                                              ; preds = %704
  br label %2768

708:                                              ; preds = %704
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %709

709:                                              ; preds = %760, %708
  %710 = load ptr, ptr %7, align 8, !tbaa !5
  %711 = load i32, ptr %15, align 4, !tbaa !9
  %712 = add i32 %711, 1
  store i32 %712, ptr %15, align 4, !tbaa !9
  %713 = zext i32 %711 to i64
  %714 = getelementptr inbounds i8, ptr %710, i64 %713
  %715 = load i8, ptr %714, align 1, !tbaa !24
  %716 = zext i8 %715 to i32
  store i32 %716, ptr %19, align 4, !tbaa !9
  %717 = load ptr, ptr %6, align 8, !tbaa !5
  %718 = getelementptr inbounds %struct.inflate_state, ptr %717, i32 0, i32 8
  %719 = load ptr, ptr %718, align 8, !tbaa !29
  %720 = icmp ne ptr %719, null
  br i1 %720, label %721, label %752

721:                                              ; preds = %709
  %722 = load ptr, ptr %6, align 8, !tbaa !5
  %723 = getelementptr inbounds %struct.inflate_state, ptr %722, i32 0, i32 8
  %724 = load ptr, ptr %723, align 8, !tbaa !29
  %725 = getelementptr inbounds %struct.gz_header_s, ptr %724, i32 0, i32 7
  %726 = load ptr, ptr %725, align 8, !tbaa !48
  %727 = icmp ne ptr %726, null
  br i1 %727, label %728, label %752

728:                                              ; preds = %721
  %729 = load ptr, ptr %6, align 8, !tbaa !5
  %730 = getelementptr inbounds %struct.inflate_state, ptr %729, i32 0, i32 16
  %731 = load i32, ptr %730, align 4, !tbaa !44
  %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 8
  %736 = load i32, ptr %735, align 8, !tbaa !49
  %737 = icmp ult i32 %731, %736
  br i1 %737, label %738, label %752

738:                                              ; preds = %728
  %739 = load i32, ptr %19, align 4, !tbaa !9
  %740 = trunc i32 %739 to i8
  %741 = load ptr, ptr %6, align 8, !tbaa !5
  %742 = getelementptr inbounds %struct.inflate_state, ptr %741, i32 0, i32 8
  %743 = load ptr, ptr %742, align 8, !tbaa !29
  %744 = getelementptr inbounds %struct.gz_header_s, ptr %743, i32 0, i32 7
  %745 = load ptr, ptr %744, align 8, !tbaa !48
  %746 = load ptr, ptr %6, align 8, !tbaa !5
  %747 = getelementptr inbounds %struct.inflate_state, ptr %746, i32 0, i32 16
  %748 = load i32, ptr %747, align 4, !tbaa !44
  %749 = add i32 %748, 1
  store i32 %749, ptr %747, align 4, !tbaa !44
  %750 = zext i32 %748 to i64
  %751 = getelementptr inbounds i8, ptr %745, i64 %750
  store i8 %740, ptr %751, align 1, !tbaa !24
  br label %752

752:                                              ; preds = %738, %728, %721, %709
  br label %753

753:                                              ; preds = %752
  %754 = load i32, ptr %19, align 4, !tbaa !9
  %755 = icmp ne i32 %754, 0
  br i1 %755, label %756, label %760

756:                                              ; preds = %753
  %757 = load i32, ptr %15, align 4, !tbaa !9
  %758 = load i32, ptr %9, align 4, !tbaa !9
  %759 = icmp ult i32 %757, %758
  br label %760

760:                                              ; preds = %756, %753
  %761 = phi i1 [ false, %753 ], [ %759, %756 ]
  br i1 %761, label %709, label %762, !llvm.loop !50

762:                                              ; preds = %760
  %763 = load ptr, ptr %6, align 8, !tbaa !5
  %764 = getelementptr inbounds %struct.inflate_state, ptr %763, i32 0, i32 4
  %765 = load i32, ptr %764, align 8, !tbaa !28
  %766 = and i32 %765, 512
  %767 = icmp ne i32 %766, 0
  br i1 %767, label %768, label %777

768:                                              ; preds = %762
  %769 = load ptr, ptr %6, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.inflate_state, ptr %769, i32 0, i32 6
  %771 = load i64, ptr %770, align 8, !tbaa !27
  %772 = load ptr, ptr %7, align 8, !tbaa !5
  %773 = load i32, ptr %15, align 4, !tbaa !9
  %774 = call i64 @z_crc32(i64 noundef %771, ptr noundef %772, i32 noundef %773)
  %775 = load ptr, ptr %6, align 8, !tbaa !5
  %776 = getelementptr inbounds %struct.inflate_state, ptr %775, i32 0, i32 6
  store i64 %774, ptr %776, align 8, !tbaa !27
  br label %777

777:                                              ; preds = %768, %762
  %778 = load i32, ptr %15, align 4, !tbaa !9
  %779 = load i32, ptr %9, align 4, !tbaa !9
  %780 = sub i32 %779, %778
  store i32 %780, ptr %9, align 4, !tbaa !9
  %781 = load i32, ptr %15, align 4, !tbaa !9
  %782 = load ptr, ptr %7, align 8, !tbaa !5
  %783 = zext i32 %781 to i64
  %784 = getelementptr inbounds i8, ptr %782, i64 %783
  store ptr %784, ptr %7, align 8, !tbaa !5
  %785 = load i32, ptr %19, align 4, !tbaa !9
  %786 = icmp ne i32 %785, 0
  br i1 %786, label %787, label %788

787:                                              ; preds = %777
  br label %2768

788:                                              ; preds = %777
  br label %800

789:                                              ; preds = %698
  %790 = load ptr, ptr %6, align 8, !tbaa !5
  %791 = getelementptr inbounds %struct.inflate_state, ptr %790, i32 0, i32 8
  %792 = load ptr, ptr %791, align 8, !tbaa !29
  %793 = icmp ne ptr %792, null
  br i1 %793, label %794, label %799

794:                                              ; preds = %789
  %795 = load ptr, ptr %6, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.inflate_state, ptr %795, i32 0, i32 8
  %797 = load ptr, ptr %796, align 8, !tbaa !29
  %798 = getelementptr inbounds %struct.gz_header_s, ptr %797, i32 0, i32 7
  store ptr null, ptr %798, align 8, !tbaa !48
  br label %799

799:                                              ; preds = %794, %789
  br label %800

800:                                              ; preds = %799, %788
  %801 = load ptr, ptr %6, align 8, !tbaa !5
  %802 = getelementptr inbounds %struct.inflate_state, ptr %801, i32 0, i32 16
  store i32 0, ptr %802, align 4, !tbaa !44
  %803 = load ptr, ptr %6, align 8, !tbaa !5
  %804 = getelementptr inbounds %struct.inflate_state, ptr %803, i32 0, i32 0
  store i32 7, ptr %804, align 8, !tbaa !17
  br label %805

805:                                              ; preds = %800, %81
  %806 = load ptr, ptr %6, align 8, !tbaa !5
  %807 = getelementptr inbounds %struct.inflate_state, ptr %806, i32 0, i32 4
  %808 = load i32, ptr %807, align 8, !tbaa !28
  %809 = and i32 %808, 4096
  %810 = icmp ne i32 %809, 0
  br i1 %810, label %811, label %896

811:                                              ; preds = %805
  %812 = load i32, ptr %9, align 4, !tbaa !9
  %813 = icmp eq i32 %812, 0
  br i1 %813, label %814, label %815

814:                                              ; preds = %811
  br label %2768

815:                                              ; preds = %811
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %816

816:                                              ; preds = %867, %815
  %817 = load ptr, ptr %7, align 8, !tbaa !5
  %818 = load i32, ptr %15, align 4, !tbaa !9
  %819 = add i32 %818, 1
  store i32 %819, ptr %15, align 4, !tbaa !9
  %820 = zext i32 %818 to i64
  %821 = getelementptr inbounds i8, ptr %817, i64 %820
  %822 = load i8, ptr %821, align 1, !tbaa !24
  %823 = zext i8 %822 to i32
  store i32 %823, ptr %19, align 4, !tbaa !9
  %824 = load ptr, ptr %6, align 8, !tbaa !5
  %825 = getelementptr inbounds %struct.inflate_state, ptr %824, i32 0, i32 8
  %826 = load ptr, ptr %825, align 8, !tbaa !29
  %827 = icmp ne ptr %826, null
  br i1 %827, label %828, label %859

828:                                              ; preds = %816
  %829 = load ptr, ptr %6, align 8, !tbaa !5
  %830 = getelementptr inbounds %struct.inflate_state, ptr %829, i32 0, i32 8
  %831 = load ptr, ptr %830, align 8, !tbaa !29
  %832 = getelementptr inbounds %struct.gz_header_s, ptr %831, i32 0, i32 9
  %833 = load ptr, ptr %832, align 8, !tbaa !51
  %834 = icmp ne ptr %833, null
  br i1 %834, label %835, label %859

835:                                              ; preds = %828
  %836 = load ptr, ptr %6, align 8, !tbaa !5
  %837 = getelementptr inbounds %struct.inflate_state, ptr %836, i32 0, i32 16
  %838 = load i32, ptr %837, align 4, !tbaa !44
  %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 10
  %843 = load i32, ptr %842, align 8, !tbaa !52
  %844 = icmp ult i32 %838, %843
  br i1 %844, label %845, label %859

845:                                              ; preds = %835
  %846 = load i32, ptr %19, align 4, !tbaa !9
  %847 = trunc i32 %846 to i8
  %848 = load ptr, ptr %6, align 8, !tbaa !5
  %849 = getelementptr inbounds %struct.inflate_state, ptr %848, i32 0, i32 8
  %850 = load ptr, ptr %849, align 8, !tbaa !29
  %851 = getelementptr inbounds %struct.gz_header_s, ptr %850, i32 0, i32 9
  %852 = load ptr, ptr %851, align 8, !tbaa !51
  %853 = load ptr, ptr %6, align 8, !tbaa !5
  %854 = getelementptr inbounds %struct.inflate_state, ptr %853, i32 0, i32 16
  %855 = load i32, ptr %854, align 4, !tbaa !44
  %856 = add i32 %855, 1
  store i32 %856, ptr %854, align 4, !tbaa !44
  %857 = zext i32 %855 to i64
  %858 = getelementptr inbounds i8, ptr %852, i64 %857
  store i8 %847, ptr %858, align 1, !tbaa !24
  br label %859

859:                                              ; preds = %845, %835, %828, %816
  br label %860

860:                                              ; preds = %859
  %861 = load i32, ptr %19, align 4, !tbaa !9
  %862 = icmp ne i32 %861, 0
  br i1 %862, label %863, label %867

863:                                              ; preds = %860
  %864 = load i32, ptr %15, align 4, !tbaa !9
  %865 = load i32, ptr %9, align 4, !tbaa !9
  %866 = icmp ult i32 %864, %865
  br label %867

867:                                              ; preds = %863, %860
  %868 = phi i1 [ false, %860 ], [ %866, %863 ]
  br i1 %868, label %816, label %869, !llvm.loop !53

869:                                              ; preds = %867
  %870 = load ptr, ptr %6, align 8, !tbaa !5
  %871 = getelementptr inbounds %struct.inflate_state, ptr %870, i32 0, i32 4
  %872 = load i32, ptr %871, align 8, !tbaa !28
  %873 = and i32 %872, 512
  %874 = icmp ne i32 %873, 0
  br i1 %874, label %875, label %884

875:                                              ; preds = %869
  %876 = load ptr, ptr %6, align 8, !tbaa !5
  %877 = getelementptr inbounds %struct.inflate_state, ptr %876, i32 0, i32 6
  %878 = load i64, ptr %877, align 8, !tbaa !27
  %879 = load ptr, ptr %7, align 8, !tbaa !5
  %880 = load i32, ptr %15, align 4, !tbaa !9
  %881 = call i64 @z_crc32(i64 noundef %878, ptr noundef %879, i32 noundef %880)
  %882 = load ptr, ptr %6, align 8, !tbaa !5
  %883 = getelementptr inbounds %struct.inflate_state, ptr %882, i32 0, i32 6
  store i64 %881, ptr %883, align 8, !tbaa !27
  br label %884

884:                                              ; preds = %875, %869
  %885 = load i32, ptr %15, align 4, !tbaa !9
  %886 = load i32, ptr %9, align 4, !tbaa !9
  %887 = sub i32 %886, %885
  store i32 %887, ptr %9, align 4, !tbaa !9
  %888 = load i32, ptr %15, align 4, !tbaa !9
  %889 = load ptr, ptr %7, align 8, !tbaa !5
  %890 = zext i32 %888 to i64
  %891 = getelementptr inbounds i8, ptr %889, i64 %890
  store ptr %891, ptr %7, align 8, !tbaa !5
  %892 = load i32, ptr %19, align 4, !tbaa !9
  %893 = icmp ne i32 %892, 0
  br i1 %893, label %894, label %895

894:                                              ; preds = %884
  br label %2768

895:                                              ; preds = %884
  br label %907

896:                                              ; preds = %805
  %897 = load ptr, ptr %6, align 8, !tbaa !5
  %898 = getelementptr inbounds %struct.inflate_state, ptr %897, i32 0, i32 8
  %899 = load ptr, ptr %898, align 8, !tbaa !29
  %900 = icmp ne ptr %899, null
  br i1 %900, label %901, label %906

901:                                              ; preds = %896
  %902 = load ptr, ptr %6, align 8, !tbaa !5
  %903 = getelementptr inbounds %struct.inflate_state, ptr %902, i32 0, i32 8
  %904 = load ptr, ptr %903, align 8, !tbaa !29
  %905 = getelementptr inbounds %struct.gz_header_s, ptr %904, i32 0, i32 9
  store ptr null, ptr %905, align 8, !tbaa !51
  br label %906

906:                                              ; preds = %901, %896
  br label %907

907:                                              ; preds = %906, %895
  %908 = load ptr, ptr %6, align 8, !tbaa !5
  %909 = getelementptr inbounds %struct.inflate_state, ptr %908, i32 0, i32 0
  store i32 8, ptr %909, align 8, !tbaa !17
  br label %910

910:                                              ; preds = %907, %81
  %911 = load ptr, ptr %6, align 8, !tbaa !5
  %912 = getelementptr inbounds %struct.inflate_state, ptr %911, i32 0, i32 4
  %913 = load i32, ptr %912, align 8, !tbaa !28
  %914 = and i32 %913, 512
  %915 = icmp ne i32 %914, 0
  br i1 %915, label %916, label %960

916:                                              ; preds = %910
  br label %917

917:                                              ; preds = %916
  br label %918

918:                                              ; preds = %941, %917
  %919 = load i32, ptr %12, align 4, !tbaa !9
  %920 = icmp ult i32 %919, 16
  br i1 %920, label %921, label %942

921:                                              ; preds = %918
  br label %922

922:                                              ; preds = %921
  %923 = load i32, ptr %9, align 4, !tbaa !9
  %924 = icmp eq i32 %923, 0
  br i1 %924, label %925, label %926

925:                                              ; preds = %922
  br label %2768

926:                                              ; preds = %922
  %927 = load i32, ptr %9, align 4, !tbaa !9
  %928 = add i32 %927, -1
  store i32 %928, ptr %9, align 4, !tbaa !9
  %929 = load ptr, ptr %7, align 8, !tbaa !5
  %930 = getelementptr inbounds i8, ptr %929, i32 1
  store ptr %930, ptr %7, align 8, !tbaa !5
  %931 = load i8, ptr %929, align 1, !tbaa !24
  %932 = zext i8 %931 to i64
  %933 = load i32, ptr %12, align 4, !tbaa !9
  %934 = zext i32 %933 to i64
  %935 = shl i64 %932, %934
  %936 = load i64, ptr %11, align 8, !tbaa !21
  %937 = add i64 %936, %935
  store i64 %937, ptr %11, align 8, !tbaa !21
  %938 = load i32, ptr %12, align 4, !tbaa !9
  %939 = add i32 %938, 8
  store i32 %939, ptr %12, align 4, !tbaa !9
  br label %940

940:                                              ; preds = %926
  br label %941

941:                                              ; preds = %940
  br label %918, !llvm.loop !54

942:                                              ; preds = %918
  br label %943

943:                                              ; preds = %942
  br label %944

944:                                              ; preds = %943
  %945 = load i64, ptr %11, align 8, !tbaa !21
  %946 = load ptr, ptr %6, align 8, !tbaa !5
  %947 = getelementptr inbounds %struct.inflate_state, ptr %946, i32 0, i32 6
  %948 = load i64, ptr %947, align 8, !tbaa !27
  %949 = and i64 %948, 65535
  %950 = icmp ne i64 %945, %949
  br i1 %950, label %951, label %956

951:                                              ; preds = %944
  %952 = load ptr, ptr %4, align 8, !tbaa !5
  %953 = getelementptr inbounds %struct.z_stream_s, ptr %952, i32 0, i32 6
  store ptr @.str.5, ptr %953, align 8, !tbaa !32
  %954 = load ptr, ptr %6, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.inflate_state, ptr %954, i32 0, i32 0
  store i32 27, ptr %955, align 8, !tbaa !17
  br label %2767

956:                                              ; preds = %944
  br label %957

957:                                              ; preds = %956
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %958

958:                                              ; preds = %957
  br label %959

959:                                              ; preds = %958
  br label %960

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

965:                                              ; preds = %960
  %966 = load ptr, ptr %6, align 8, !tbaa !5
  %967 = getelementptr inbounds %struct.inflate_state, ptr %966, i32 0, i32 4
  %968 = load i32, ptr %967, align 8, !tbaa !28
  %969 = ashr i32 %968, 9
  %970 = and i32 %969, 1
  %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 = getelementptr inbounds %struct.gz_header_s, ptr %973, i32 0, i32 11
  store i32 %970, ptr %974, align 4, !tbaa !55
  %975 = load ptr, ptr %6, align 8, !tbaa !5
  %976 = getelementptr inbounds %struct.inflate_state, ptr %975, i32 0, i32 8
  %977 = load ptr, ptr %976, align 8, !tbaa !29
  %978 = getelementptr inbounds %struct.gz_header_s, ptr %977, i32 0, i32 12
  store i32 1, ptr %978, align 8, !tbaa !30
  br label %979

979:                                              ; preds = %965, %960
  %980 = call i64 @z_crc32(i64 noundef 0, ptr noundef null, i32 noundef 0)
  %981 = load ptr, ptr %6, align 8, !tbaa !5
  %982 = getelementptr inbounds %struct.inflate_state, ptr %981, i32 0, i32 6
  store i64 %980, ptr %982, align 8, !tbaa !27
  %983 = load ptr, ptr %4, align 8, !tbaa !5
  %984 = getelementptr inbounds %struct.z_stream_s, ptr %983, i32 0, i32 12
  store i64 %980, ptr %984, align 8, !tbaa !35
  %985 = load ptr, ptr %6, align 8, !tbaa !5
  %986 = getelementptr inbounds %struct.inflate_state, ptr %985, i32 0, i32 0
  store i32 11, ptr %986, align 8, !tbaa !17
  br label %2767

987:                                              ; preds = %81
  br label %988

988:                                              ; preds = %987
  br label %989

989:                                              ; preds = %1012, %988
  %990 = load i32, ptr %12, align 4, !tbaa !9
  %991 = icmp ult i32 %990, 32
  br i1 %991, label %992, label %1013

992:                                              ; preds = %989
  br label %993

993:                                              ; preds = %992
  %994 = load i32, ptr %9, align 4, !tbaa !9
  %995 = icmp eq i32 %994, 0
  br i1 %995, label %996, label %997

996:                                              ; preds = %993
  br label %2768

997:                                              ; preds = %993
  %998 = load i32, ptr %9, align 4, !tbaa !9
  %999 = add i32 %998, -1
  store i32 %999, ptr %9, align 4, !tbaa !9
  %1000 = load ptr, ptr %7, align 8, !tbaa !5
  %1001 = getelementptr inbounds i8, ptr %1000, i32 1
  store ptr %1001, ptr %7, align 8, !tbaa !5
  %1002 = load i8, ptr %1000, align 1, !tbaa !24
  %1003 = zext i8 %1002 to i64
  %1004 = load i32, ptr %12, align 4, !tbaa !9
  %1005 = zext i32 %1004 to i64
  %1006 = shl i64 %1003, %1005
  %1007 = load i64, ptr %11, align 8, !tbaa !21
  %1008 = add i64 %1007, %1006
  store i64 %1008, ptr %11, align 8, !tbaa !21
  %1009 = load i32, ptr %12, align 4, !tbaa !9
  %1010 = add i32 %1009, 8
  store i32 %1010, ptr %12, align 4, !tbaa !9
  br label %1011

1011:                                             ; preds = %997
  br label %1012

1012:                                             ; preds = %1011
  br label %989, !llvm.loop !56

1013:                                             ; preds = %989
  br label %1014

1014:                                             ; preds = %1013
  br label %1015

1015:                                             ; preds = %1014
  %1016 = load i64, ptr %11, align 8, !tbaa !21
  %1017 = lshr i64 %1016, 24
  %1018 = and i64 %1017, 255
  %1019 = load i64, ptr %11, align 8, !tbaa !21
  %1020 = lshr i64 %1019, 8
  %1021 = and i64 %1020, 65280
  %1022 = add i64 %1018, %1021
  %1023 = load i64, ptr %11, align 8, !tbaa !21
  %1024 = and i64 %1023, 65280
  %1025 = shl i64 %1024, 8
  %1026 = add i64 %1022, %1025
  %1027 = load i64, ptr %11, align 8, !tbaa !21
  %1028 = and i64 %1027, 255
  %1029 = shl i64 %1028, 24
  %1030 = add i64 %1026, %1029
  %1031 = load ptr, ptr %6, align 8, !tbaa !5
  %1032 = getelementptr inbounds %struct.inflate_state, ptr %1031, i32 0, i32 6
  store i64 %1030, ptr %1032, align 8, !tbaa !27
  %1033 = load ptr, ptr %4, align 8, !tbaa !5
  %1034 = getelementptr inbounds %struct.z_stream_s, ptr %1033, i32 0, i32 12
  store i64 %1030, ptr %1034, align 8, !tbaa !35
  br label %1035

1035:                                             ; preds = %1015
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %1036

1036:                                             ; preds = %1035
  br label %1037

1037:                                             ; preds = %1036
  %1038 = load ptr, ptr %6, align 8, !tbaa !5
  %1039 = getelementptr inbounds %struct.inflate_state, ptr %1038, i32 0, i32 0
  store i32 10, ptr %1039, align 8, !tbaa !17
  br label %1040

1040:                                             ; preds = %1037, %81
  %1041 = load ptr, ptr %6, align 8, !tbaa !5
  %1042 = getelementptr inbounds %struct.inflate_state, ptr %1041, i32 0, i32 3
  %1043 = load i32, ptr %1042, align 4, !tbaa !57
  %1044 = icmp eq i32 %1043, 0
  br i1 %1044, label %1045, label %1067

1045:                                             ; preds = %1040
  br label %1046

1046:                                             ; preds = %1045
  %1047 = load ptr, ptr %8, align 8, !tbaa !5
  %1048 = load ptr, ptr %4, align 8, !tbaa !5
  %1049 = getelementptr inbounds %struct.z_stream_s, ptr %1048, i32 0, i32 3
  store ptr %1047, ptr %1049, align 8, !tbaa !14
  %1050 = load i32, ptr %10, align 4, !tbaa !9
  %1051 = load ptr, ptr %4, align 8, !tbaa !5
  %1052 = getelementptr inbounds %struct.z_stream_s, ptr %1051, i32 0, i32 4
  store i32 %1050, ptr %1052, align 8, !tbaa !19
  %1053 = load ptr, ptr %7, align 8, !tbaa !5
  %1054 = load ptr, ptr %4, align 8, !tbaa !5
  %1055 = getelementptr inbounds %struct.z_stream_s, ptr %1054, i32 0, i32 0
  store ptr %1053, ptr %1055, align 8, !tbaa !15
  %1056 = load i32, ptr %9, align 4, !tbaa !9
  %1057 = load ptr, ptr %4, align 8, !tbaa !5
  %1058 = getelementptr inbounds %struct.z_stream_s, ptr %1057, i32 0, i32 1
  store i32 %1056, ptr %1058, align 8, !tbaa !16
  %1059 = load i64, ptr %11, align 8, !tbaa !21
  %1060 = load ptr, ptr %6, align 8, !tbaa !5
  %1061 = getelementptr inbounds %struct.inflate_state, ptr %1060, i32 0, i32 14
  store i64 %1059, ptr %1061, align 8, !tbaa !20
  %1062 = load i32, ptr %12, align 4, !tbaa !9
  %1063 = load ptr, ptr %6, align 8, !tbaa !5
  %1064 = getelementptr inbounds %struct.inflate_state, ptr %1063, i32 0, i32 15
  store i32 %1062, ptr %1064, align 8, !tbaa !22
  br label %1065

1065:                                             ; preds = %1046
  br label %1066

1066:                                             ; preds = %1065
  store i32 2, ptr %3, align 4
  store i32 1, ptr %22, align 4
  br label %2921

1067:                                             ; preds = %1040
  %1068 = call i64 @z_adler32(i64 noundef 0, ptr noundef null, i32 noundef 0)
  %1069 = load ptr, ptr %6, align 8, !tbaa !5
  %1070 = getelementptr inbounds %struct.inflate_state, ptr %1069, i32 0, i32 6
  store i64 %1068, ptr %1070, align 8, !tbaa !27
  %1071 = load ptr, ptr %4, align 8, !tbaa !5
  %1072 = getelementptr inbounds %struct.z_stream_s, ptr %1071, i32 0, i32 12
  store i64 %1068, ptr %1072, align 8, !tbaa !35
  %1073 = load ptr, ptr %6, align 8, !tbaa !5
  %1074 = getelementptr inbounds %struct.inflate_state, ptr %1073, i32 0, i32 0
  store i32 11, ptr %1074, align 8, !tbaa !17
  br label %1075

1075:                                             ; preds = %1067, %81
  %1076 = load i32, ptr %5, align 4, !tbaa !9
  %1077 = icmp eq i32 %1076, 5
  br i1 %1077, label %1078, label %1079

1078:                                             ; preds = %1075
  br label %2768

1079:                                             ; preds = %1075
  br label %1080

1080:                                             ; preds = %1079, %81
  %1081 = load ptr, ptr %6, align 8, !tbaa !5
  %1082 = getelementptr inbounds %struct.inflate_state, ptr %1081, i32 0, i32 1
  %1083 = load i32, ptr %1082, align 4, !tbaa !58
  %1084 = icmp ne i32 %1083, 0
  br i1 %1084, label %1085, label %1100

1085:                                             ; preds = %1080
  br label %1086

1086:                                             ; preds = %1085
  %1087 = load i32, ptr %12, align 4, !tbaa !9
  %1088 = and i32 %1087, 7
  %1089 = load i64, ptr %11, align 8, !tbaa !21
  %1090 = zext i32 %1088 to i64
  %1091 = lshr i64 %1089, %1090
  store i64 %1091, ptr %11, align 8, !tbaa !21
  %1092 = load i32, ptr %12, align 4, !tbaa !9
  %1093 = and i32 %1092, 7
  %1094 = load i32, ptr %12, align 4, !tbaa !9
  %1095 = sub i32 %1094, %1093
  store i32 %1095, ptr %12, align 4, !tbaa !9
  br label %1096

1096:                                             ; preds = %1086
  br label %1097

1097:                                             ; preds = %1096
  %1098 = load ptr, ptr %6, align 8, !tbaa !5
  %1099 = getelementptr inbounds %struct.inflate_state, ptr %1098, i32 0, i32 0
  store i32 24, ptr %1099, align 8, !tbaa !17
  br label %2767

1100:                                             ; preds = %1080
  br label %1101

1101:                                             ; preds = %1100
  br label %1102

1102:                                             ; preds = %1125, %1101
  %1103 = load i32, ptr %12, align 4, !tbaa !9
  %1104 = icmp ult i32 %1103, 3
  br i1 %1104, label %1105, label %1126

1105:                                             ; preds = %1102
  br label %1106

1106:                                             ; preds = %1105
  %1107 = load i32, ptr %9, align 4, !tbaa !9
  %1108 = icmp eq i32 %1107, 0
  br i1 %1108, label %1109, label %1110

1109:                                             ; preds = %1106
  br label %2768

1110:                                             ; preds = %1106
  %1111 = load i32, ptr %9, align 4, !tbaa !9
  %1112 = add i32 %1111, -1
  store i32 %1112, ptr %9, align 4, !tbaa !9
  %1113 = load ptr, ptr %7, align 8, !tbaa !5
  %1114 = getelementptr inbounds i8, ptr %1113, i32 1
  store ptr %1114, ptr %7, align 8, !tbaa !5
  %1115 = load i8, ptr %1113, align 1, !tbaa !24
  %1116 = zext i8 %1115 to i64
  %1117 = load i32, ptr %12, align 4, !tbaa !9
  %1118 = zext i32 %1117 to i64
  %1119 = shl i64 %1116, %1118
  %1120 = load i64, ptr %11, align 8, !tbaa !21
  %1121 = add i64 %1120, %1119
  store i64 %1121, ptr %11, align 8, !tbaa !21
  %1122 = load i32, ptr %12, align 4, !tbaa !9
  %1123 = add i32 %1122, 8
  store i32 %1123, ptr %12, align 4, !tbaa !9
  br label %1124

1124:                                             ; preds = %1110
  br label %1125

1125:                                             ; preds = %1124
  br label %1102, !llvm.loop !59

1126:                                             ; preds = %1102
  br label %1127

1127:                                             ; preds = %1126
  br label %1128

1128:                                             ; preds = %1127
  %1129 = load i64, ptr %11, align 8, !tbaa !21
  %1130 = trunc i64 %1129 to i32
  %1131 = and i32 %1130, 1
  %1132 = load ptr, ptr %6, align 8, !tbaa !5
  %1133 = getelementptr inbounds %struct.inflate_state, ptr %1132, i32 0, i32 1
  store i32 %1131, ptr %1133, align 4, !tbaa !58
  br label %1134

1134:                                             ; preds = %1128
  %1135 = load i64, ptr %11, align 8, !tbaa !21
  %1136 = lshr i64 %1135, 1
  store i64 %1136, ptr %11, align 8, !tbaa !21
  %1137 = load i32, ptr %12, align 4, !tbaa !9
  %1138 = sub i32 %1137, 1
  store i32 %1138, ptr %12, align 4, !tbaa !9
  br label %1139

1139:                                             ; preds = %1134
  br label %1140

1140:                                             ; preds = %1139
  %1141 = load i64, ptr %11, align 8, !tbaa !21
  %1142 = trunc i64 %1141 to i32
  %1143 = and i32 %1142, 3
  switch i32 %1143, label %1159 [
    i32 0, label %1144
    i32 1, label %1147
    i32 2, label %1151
    i32 3, label %1154
  ]

1144:                                             ; preds = %1140
  %1145 = load ptr, ptr %6, align 8, !tbaa !5
  %1146 = getelementptr inbounds %struct.inflate_state, ptr %1145, i32 0, i32 0
  store i32 13, ptr %1146, align 8, !tbaa !17
  br label %1159

1147:                                             ; preds = %1140
  %1148 = load ptr, ptr %6, align 8, !tbaa !5
  call void @fixedtables(ptr noundef %1148)
  %1149 = load ptr, ptr %6, align 8, !tbaa !5
  %1150 = getelementptr inbounds %struct.inflate_state, ptr %1149, i32 0, i32 0
  store i32 18, ptr %1150, align 8, !tbaa !17
  br label %1159

1151:                                             ; preds = %1140
  %1152 = load ptr, ptr %6, align 8, !tbaa !5
  %1153 = getelementptr inbounds %struct.inflate_state, ptr %1152, i32 0, i32 0
  store i32 15, ptr %1153, align 8, !tbaa !17
  br label %1159

1154:                                             ; preds = %1140
  %1155 = load ptr, ptr %4, align 8, !tbaa !5
  %1156 = getelementptr inbounds %struct.z_stream_s, ptr %1155, i32 0, i32 6
  store ptr @.str.6, ptr %1156, align 8, !tbaa !32
  %1157 = load ptr, ptr %6, align 8, !tbaa !5
  %1158 = getelementptr inbounds %struct.inflate_state, ptr %1157, i32 0, i32 0
  store i32 27, ptr %1158, align 8, !tbaa !17
  br label %1159

1159:                                             ; preds = %1154, %1151, %1147, %1144, %1140
  br label %1160

1160:                                             ; preds = %1159
  %1161 = load i64, ptr %11, align 8, !tbaa !21
  %1162 = lshr i64 %1161, 2
  store i64 %1162, ptr %11, align 8, !tbaa !21
  %1163 = load i32, ptr %12, align 4, !tbaa !9
  %1164 = sub i32 %1163, 2
  store i32 %1164, ptr %12, align 4, !tbaa !9
  br label %1165

1165:                                             ; preds = %1160
  br label %1166

1166:                                             ; preds = %1165
  br label %2767

1167:                                             ; preds = %81
  br label %1168

1168:                                             ; preds = %1167
  %1169 = load i32, ptr %12, align 4, !tbaa !9
  %1170 = and i32 %1169, 7
  %1171 = load i64, ptr %11, align 8, !tbaa !21
  %1172 = zext i32 %1170 to i64
  %1173 = lshr i64 %1171, %1172
  store i64 %1173, ptr %11, align 8, !tbaa !21
  %1174 = load i32, ptr %12, align 4, !tbaa !9
  %1175 = and i32 %1174, 7
  %1176 = load i32, ptr %12, align 4, !tbaa !9
  %1177 = sub i32 %1176, %1175
  store i32 %1177, ptr %12, align 4, !tbaa !9
  br label %1178

1178:                                             ; preds = %1168
  br label %1179

1179:                                             ; preds = %1178
  br label %1180

1180:                                             ; preds = %1179
  br label %1181

1181:                                             ; preds = %1204, %1180
  %1182 = load i32, ptr %12, align 4, !tbaa !9
  %1183 = icmp ult i32 %1182, 32
  br i1 %1183, label %1184, label %1205

1184:                                             ; preds = %1181
  br label %1185

1185:                                             ; preds = %1184
  %1186 = load i32, ptr %9, align 4, !tbaa !9
  %1187 = icmp eq i32 %1186, 0
  br i1 %1187, label %1188, label %1189

1188:                                             ; preds = %1185
  br label %2768

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

1203:                                             ; preds = %1189
  br label %1204

1204:                                             ; preds = %1203
  br label %1181, !llvm.loop !60

1205:                                             ; preds = %1181
  br label %1206

1206:                                             ; preds = %1205
  br label %1207

1207:                                             ; preds = %1206
  %1208 = load i64, ptr %11, align 8, !tbaa !21
  %1209 = and i64 %1208, 65535
  %1210 = load i64, ptr %11, align 8, !tbaa !21
  %1211 = lshr i64 %1210, 16
  %1212 = xor i64 %1211, 65535
  %1213 = icmp ne i64 %1209, %1212
  br i1 %1213, label %1214, label %1219

1214:                                             ; preds = %1207
  %1215 = load ptr, ptr %4, align 8, !tbaa !5
  %1216 = getelementptr inbounds %struct.z_stream_s, ptr %1215, i32 0, i32 6
  store ptr @.str.7, ptr %1216, align 8, !tbaa !32
  %1217 = load ptr, ptr %6, align 8, !tbaa !5
  %1218 = getelementptr inbounds %struct.inflate_state, ptr %1217, i32 0, i32 0
  store i32 27, ptr %1218, align 8, !tbaa !17
  br label %2767

1219:                                             ; preds = %1207
  %1220 = load i64, ptr %11, align 8, !tbaa !21
  %1221 = trunc i64 %1220 to i32
  %1222 = and i32 %1221, 65535
  %1223 = load ptr, ptr %6, align 8, !tbaa !5
  %1224 = getelementptr inbounds %struct.inflate_state, ptr %1223, i32 0, i32 16
  store i32 %1222, ptr %1224, align 4, !tbaa !44
  br label %1225

1225:                                             ; preds = %1219
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %1226

1226:                                             ; preds = %1225
  br label %1227

1227:                                             ; preds = %1226
  %1228 = load ptr, ptr %6, align 8, !tbaa !5
  %1229 = getelementptr inbounds %struct.inflate_state, ptr %1228, i32 0, i32 0
  store i32 14, ptr %1229, align 8, !tbaa !17
  br label %1230

1230:                                             ; preds = %1227, %81
  %1231 = load ptr, ptr %6, align 8, !tbaa !5
  %1232 = getelementptr inbounds %struct.inflate_state, ptr %1231, i32 0, i32 16
  %1233 = load i32, ptr %1232, align 4, !tbaa !44
  store i32 %1233, ptr %15, align 4, !tbaa !9
  %1234 = load i32, ptr %15, align 4, !tbaa !9
  %1235 = icmp ne i32 %1234, 0
  br i1 %1235, label %1236, label %1276

1236:                                             ; preds = %1230
  %1237 = load i32, ptr %15, align 4, !tbaa !9
  %1238 = load i32, ptr %9, align 4, !tbaa !9
  %1239 = icmp ugt i32 %1237, %1238
  br i1 %1239, label %1240, label %1242

1240:                                             ; preds = %1236
  %1241 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %1241, ptr %15, align 4, !tbaa !9
  br label %1242

1242:                                             ; preds = %1240, %1236
  %1243 = load i32, ptr %15, align 4, !tbaa !9
  %1244 = load i32, ptr %10, align 4, !tbaa !9
  %1245 = icmp ugt i32 %1243, %1244
  br i1 %1245, label %1246, label %1248

1246:                                             ; preds = %1242
  %1247 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1247, ptr %15, align 4, !tbaa !9
  br label %1248

1248:                                             ; preds = %1246, %1242
  %1249 = load i32, ptr %15, align 4, !tbaa !9
  %1250 = icmp eq i32 %1249, 0
  br i1 %1250, label %1251, label %1252

1251:                                             ; preds = %1248
  br label %2768

1252:                                             ; preds = %1248
  %1253 = load ptr, ptr %8, align 8, !tbaa !5
  %1254 = load ptr, ptr %7, align 8, !tbaa !5
  %1255 = load i32, ptr %15, align 4, !tbaa !9
  %1256 = zext i32 %1255 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %1253, ptr align 1 %1254, i64 %1256, i1 false)
  %1257 = load i32, ptr %15, align 4, !tbaa !9
  %1258 = load i32, ptr %9, align 4, !tbaa !9
  %1259 = sub i32 %1258, %1257
  store i32 %1259, ptr %9, align 4, !tbaa !9
  %1260 = load i32, ptr %15, align 4, !tbaa !9
  %1261 = load ptr, ptr %7, align 8, !tbaa !5
  %1262 = zext i32 %1260 to i64
  %1263 = getelementptr inbounds i8, ptr %1261, i64 %1262
  store ptr %1263, ptr %7, align 8, !tbaa !5
  %1264 = load i32, ptr %15, align 4, !tbaa !9
  %1265 = load i32, ptr %10, align 4, !tbaa !9
  %1266 = sub i32 %1265, %1264
  store i32 %1266, ptr %10, align 4, !tbaa !9
  %1267 = load i32, ptr %15, align 4, !tbaa !9
  %1268 = load ptr, ptr %8, align 8, !tbaa !5
  %1269 = zext i32 %1267 to i64
  %1270 = getelementptr inbounds i8, ptr %1268, i64 %1269
  store ptr %1270, ptr %8, align 8, !tbaa !5
  %1271 = load i32, ptr %15, align 4, !tbaa !9
  %1272 = load ptr, ptr %6, align 8, !tbaa !5
  %1273 = getelementptr inbounds %struct.inflate_state, ptr %1272, i32 0, i32 16
  %1274 = load i32, ptr %1273, align 4, !tbaa !44
  %1275 = sub i32 %1274, %1271
  store i32 %1275, ptr %1273, align 4, !tbaa !44
  br label %2767

1276:                                             ; preds = %1230
  %1277 = load ptr, ptr %6, align 8, !tbaa !5
  %1278 = getelementptr inbounds %struct.inflate_state, ptr %1277, i32 0, i32 0
  store i32 11, ptr %1278, align 8, !tbaa !17
  br label %2767

1279:                                             ; preds = %81
  br label %1280

1280:                                             ; preds = %1279
  br label %1281

1281:                                             ; preds = %1304, %1280
  %1282 = load i32, ptr %12, align 4, !tbaa !9
  %1283 = icmp ult i32 %1282, 14
  br i1 %1283, label %1284, label %1305

1284:                                             ; preds = %1281
  br label %1285

1285:                                             ; preds = %1284
  %1286 = load i32, ptr %9, align 4, !tbaa !9
  %1287 = icmp eq i32 %1286, 0
  br i1 %1287, label %1288, label %1289

1288:                                             ; preds = %1285
  br label %2768

1289:                                             ; preds = %1285
  %1290 = load i32, ptr %9, align 4, !tbaa !9
  %1291 = add i32 %1290, -1
  store i32 %1291, ptr %9, align 4, !tbaa !9
  %1292 = load ptr, ptr %7, align 8, !tbaa !5
  %1293 = getelementptr inbounds i8, ptr %1292, i32 1
  store ptr %1293, ptr %7, align 8, !tbaa !5
  %1294 = load i8, ptr %1292, align 1, !tbaa !24
  %1295 = zext i8 %1294 to i64
  %1296 = load i32, ptr %12, align 4, !tbaa !9
  %1297 = zext i32 %1296 to i64
  %1298 = shl i64 %1295, %1297
  %1299 = load i64, ptr %11, align 8, !tbaa !21
  %1300 = add i64 %1299, %1298
  store i64 %1300, ptr %11, align 8, !tbaa !21
  %1301 = load i32, ptr %12, align 4, !tbaa !9
  %1302 = add i32 %1301, 8
  store i32 %1302, ptr %12, align 4, !tbaa !9
  br label %1303

1303:                                             ; preds = %1289
  br label %1304

1304:                                             ; preds = %1303
  br label %1281, !llvm.loop !61

1305:                                             ; preds = %1281
  br label %1306

1306:                                             ; preds = %1305
  br label %1307

1307:                                             ; preds = %1306
  %1308 = load i64, ptr %11, align 8, !tbaa !21
  %1309 = trunc i64 %1308 to i32
  %1310 = and i32 %1309, 31
  %1311 = add i32 %1310, 257
  %1312 = load ptr, ptr %6, align 8, !tbaa !5
  %1313 = getelementptr inbounds %struct.inflate_state, ptr %1312, i32 0, i32 24
  store i32 %1311, ptr %1313, align 4, !tbaa !62
  br label %1314

1314:                                             ; preds = %1307
  %1315 = load i64, ptr %11, align 8, !tbaa !21
  %1316 = lshr i64 %1315, 5
  store i64 %1316, ptr %11, align 8, !tbaa !21
  %1317 = load i32, ptr %12, align 4, !tbaa !9
  %1318 = sub i32 %1317, 5
  store i32 %1318, ptr %12, align 4, !tbaa !9
  br label %1319

1319:                                             ; preds = %1314
  br label %1320

1320:                                             ; preds = %1319
  %1321 = load i64, ptr %11, align 8, !tbaa !21
  %1322 = trunc i64 %1321 to i32
  %1323 = and i32 %1322, 31
  %1324 = add i32 %1323, 1
  %1325 = load ptr, ptr %6, align 8, !tbaa !5
  %1326 = getelementptr inbounds %struct.inflate_state, ptr %1325, i32 0, i32 25
  store i32 %1324, ptr %1326, align 8, !tbaa !63
  br label %1327

1327:                                             ; preds = %1320
  %1328 = load i64, ptr %11, align 8, !tbaa !21
  %1329 = lshr i64 %1328, 5
  store i64 %1329, ptr %11, align 8, !tbaa !21
  %1330 = load i32, ptr %12, align 4, !tbaa !9
  %1331 = sub i32 %1330, 5
  store i32 %1331, ptr %12, align 4, !tbaa !9
  br label %1332

1332:                                             ; preds = %1327
  br label %1333

1333:                                             ; preds = %1332
  %1334 = load i64, ptr %11, align 8, !tbaa !21
  %1335 = trunc i64 %1334 to i32
  %1336 = and i32 %1335, 15
  %1337 = add i32 %1336, 4
  %1338 = load ptr, ptr %6, align 8, !tbaa !5
  %1339 = getelementptr inbounds %struct.inflate_state, ptr %1338, i32 0, i32 23
  store i32 %1337, ptr %1339, align 8, !tbaa !64
  br label %1340

1340:                                             ; preds = %1333
  %1341 = load i64, ptr %11, align 8, !tbaa !21
  %1342 = lshr i64 %1341, 4
  store i64 %1342, ptr %11, align 8, !tbaa !21
  %1343 = load i32, ptr %12, align 4, !tbaa !9
  %1344 = sub i32 %1343, 4
  store i32 %1344, ptr %12, align 4, !tbaa !9
  br label %1345

1345:                                             ; preds = %1340
  br label %1346

1346:                                             ; preds = %1345
  %1347 = load ptr, ptr %6, align 8, !tbaa !5
  %1348 = getelementptr inbounds %struct.inflate_state, ptr %1347, i32 0, i32 24
  %1349 = load i32, ptr %1348, align 4, !tbaa !62
  %1350 = icmp ugt i32 %1349, 286
  br i1 %1350, label %1356, label %1351

1351:                                             ; preds = %1346
  %1352 = load ptr, ptr %6, align 8, !tbaa !5
  %1353 = getelementptr inbounds %struct.inflate_state, ptr %1352, i32 0, i32 25
  %1354 = load i32, ptr %1353, align 8, !tbaa !63
  %1355 = icmp ugt i32 %1354, 30
  br i1 %1355, label %1356, label %1361

1356:                                             ; preds = %1351, %1346
  %1357 = load ptr, ptr %4, align 8, !tbaa !5
  %1358 = getelementptr inbounds %struct.z_stream_s, ptr %1357, i32 0, i32 6
  store ptr @.str.8, ptr %1358, align 8, !tbaa !32
  %1359 = load ptr, ptr %6, align 8, !tbaa !5
  %1360 = getelementptr inbounds %struct.inflate_state, ptr %1359, i32 0, i32 0
  store i32 27, ptr %1360, align 8, !tbaa !17
  br label %2767

1361:                                             ; preds = %1351
  %1362 = load ptr, ptr %6, align 8, !tbaa !5
  %1363 = getelementptr inbounds %struct.inflate_state, ptr %1362, i32 0, i32 26
  store i32 0, ptr %1363, align 4, !tbaa !65
  %1364 = load ptr, ptr %6, align 8, !tbaa !5
  %1365 = getelementptr inbounds %struct.inflate_state, ptr %1364, i32 0, i32 0
  store i32 16, ptr %1365, align 8, !tbaa !17
  br label %1366

1366:                                             ; preds = %1361, %81
  br label %1367

1367:                                             ; preds = %1425, %1366
  %1368 = load ptr, ptr %6, align 8, !tbaa !5
  %1369 = getelementptr inbounds %struct.inflate_state, ptr %1368, i32 0, i32 26
  %1370 = load i32, ptr %1369, align 4, !tbaa !65
  %1371 = load ptr, ptr %6, align 8, !tbaa !5
  %1372 = getelementptr inbounds %struct.inflate_state, ptr %1371, i32 0, i32 23
  %1373 = load i32, ptr %1372, align 8, !tbaa !64
  %1374 = icmp ult i32 %1370, %1373
  br i1 %1374, label %1375, label %1426

1375:                                             ; preds = %1367
  br label %1376

1376:                                             ; preds = %1375
  br label %1377

1377:                                             ; preds = %1400, %1376
  %1378 = load i32, ptr %12, align 4, !tbaa !9
  %1379 = icmp ult i32 %1378, 3
  br i1 %1379, label %1380, label %1401

1380:                                             ; preds = %1377
  br label %1381

1381:                                             ; preds = %1380
  %1382 = load i32, ptr %9, align 4, !tbaa !9
  %1383 = icmp eq i32 %1382, 0
  br i1 %1383, label %1384, label %1385

1384:                                             ; preds = %1381
  br label %2768

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

1399:                                             ; preds = %1385
  br label %1400

1400:                                             ; preds = %1399
  br label %1377, !llvm.loop !66

1401:                                             ; preds = %1377
  br label %1402

1402:                                             ; preds = %1401
  br label %1403

1403:                                             ; preds = %1402
  %1404 = load i64, ptr %11, align 8, !tbaa !21
  %1405 = trunc i64 %1404 to i32
  %1406 = and i32 %1405, 7
  %1407 = trunc i32 %1406 to i16
  %1408 = load ptr, ptr %6, align 8, !tbaa !5
  %1409 = getelementptr inbounds %struct.inflate_state, ptr %1408, i32 0, i32 28
  %1410 = load ptr, ptr %6, align 8, !tbaa !5
  %1411 = getelementptr inbounds %struct.inflate_state, ptr %1410, i32 0, i32 26
  %1412 = load i32, ptr %1411, align 4, !tbaa !65
  %1413 = add i32 %1412, 1
  store i32 %1413, ptr %1411, align 4, !tbaa !65
  %1414 = zext i32 %1412 to i64
  %1415 = getelementptr inbounds [19 x i16], ptr @z_inflate.order, i64 0, i64 %1414
  %1416 = load i16, ptr %1415, align 2, !tbaa !67
  %1417 = zext i16 %1416 to i64
  %1418 = getelementptr inbounds [320 x i16], ptr %1409, i64 0, i64 %1417
  store i16 %1407, ptr %1418, align 2, !tbaa !67
  br label %1419

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

1424:                                             ; preds = %1419
  br label %1425

1425:                                             ; preds = %1424
  br label %1367, !llvm.loop !69

1426:                                             ; preds = %1367
  br label %1427

1427:                                             ; preds = %1432, %1426
  %1428 = load ptr, ptr %6, align 8, !tbaa !5
  %1429 = getelementptr inbounds %struct.inflate_state, ptr %1428, i32 0, i32 26
  %1430 = load i32, ptr %1429, align 4, !tbaa !65
  %1431 = icmp ult i32 %1430, 19
  br i1 %1431, label %1432, label %1444

1432:                                             ; preds = %1427
  %1433 = load ptr, ptr %6, align 8, !tbaa !5
  %1434 = getelementptr inbounds %struct.inflate_state, ptr %1433, i32 0, i32 28
  %1435 = load ptr, ptr %6, align 8, !tbaa !5
  %1436 = getelementptr inbounds %struct.inflate_state, ptr %1435, i32 0, i32 26
  %1437 = load i32, ptr %1436, align 4, !tbaa !65
  %1438 = add i32 %1437, 1
  store i32 %1438, ptr %1436, align 4, !tbaa !65
  %1439 = zext i32 %1437 to i64
  %1440 = getelementptr inbounds [19 x i16], ptr @z_inflate.order, i64 0, i64 %1439
  %1441 = load i16, ptr %1440, align 2, !tbaa !67
  %1442 = zext i16 %1441 to i64
  %1443 = getelementptr inbounds [320 x i16], ptr %1434, i64 0, i64 %1442
  store i16 0, ptr %1443, align 2, !tbaa !67
  br label %1427, !llvm.loop !70

1444:                                             ; preds = %1427
  %1445 = load ptr, ptr %6, align 8, !tbaa !5
  %1446 = getelementptr inbounds %struct.inflate_state, ptr %1445, i32 0, i32 30
  %1447 = getelementptr inbounds [2048 x %struct.code], ptr %1446, i64 0, i64 0
  %1448 = load ptr, ptr %6, align 8, !tbaa !5
  %1449 = getelementptr inbounds %struct.inflate_state, ptr %1448, i32 0, i32 27
  store ptr %1447, ptr %1449, align 8, !tbaa !71
  %1450 = load ptr, ptr %6, align 8, !tbaa !5
  %1451 = getelementptr inbounds %struct.inflate_state, ptr %1450, i32 0, i32 27
  %1452 = load ptr, ptr %1451, align 8, !tbaa !71
  %1453 = load ptr, ptr %6, align 8, !tbaa !5
  %1454 = getelementptr inbounds %struct.inflate_state, ptr %1453, i32 0, i32 19
  store ptr %1452, ptr %1454, align 8, !tbaa !72
  %1455 = load ptr, ptr %6, align 8, !tbaa !5
  %1456 = getelementptr inbounds %struct.inflate_state, ptr %1455, i32 0, i32 21
  store i32 7, ptr %1456, align 8, !tbaa !73
  %1457 = load ptr, ptr %6, align 8, !tbaa !5
  %1458 = getelementptr inbounds %struct.inflate_state, ptr %1457, i32 0, i32 28
  %1459 = getelementptr inbounds [320 x i16], ptr %1458, i64 0, i64 0
  %1460 = load ptr, ptr %6, align 8, !tbaa !5
  %1461 = getelementptr inbounds %struct.inflate_state, ptr %1460, i32 0, i32 27
  %1462 = load ptr, ptr %6, align 8, !tbaa !5
  %1463 = getelementptr inbounds %struct.inflate_state, ptr %1462, i32 0, i32 21
  %1464 = load ptr, ptr %6, align 8, !tbaa !5
  %1465 = getelementptr inbounds %struct.inflate_state, ptr %1464, i32 0, i32 29
  %1466 = getelementptr inbounds [288 x i16], ptr %1465, i64 0, i64 0
  %1467 = call i32 @inflate_table(i32 noundef 0, ptr noundef %1459, i32 noundef 19, ptr noundef %1461, ptr noundef %1463, ptr noundef %1466)
  store i32 %1467, ptr %20, align 4, !tbaa !9
  %1468 = load i32, ptr %20, align 4, !tbaa !9
  %1469 = icmp ne i32 %1468, 0
  br i1 %1469, label %1470, label %1475

1470:                                             ; preds = %1444
  %1471 = load ptr, ptr %4, align 8, !tbaa !5
  %1472 = getelementptr inbounds %struct.z_stream_s, ptr %1471, i32 0, i32 6
  store ptr @.str.9, ptr %1472, align 8, !tbaa !32
  %1473 = load ptr, ptr %6, align 8, !tbaa !5
  %1474 = getelementptr inbounds %struct.inflate_state, ptr %1473, i32 0, i32 0
  store i32 27, ptr %1474, align 8, !tbaa !17
  br label %2767

1475:                                             ; preds = %1444
  %1476 = load ptr, ptr %6, align 8, !tbaa !5
  %1477 = getelementptr inbounds %struct.inflate_state, ptr %1476, i32 0, i32 26
  store i32 0, ptr %1477, align 4, !tbaa !65
  %1478 = load ptr, ptr %6, align 8, !tbaa !5
  %1479 = getelementptr inbounds %struct.inflate_state, ptr %1478, i32 0, i32 0
  store i32 17, ptr %1479, align 8, !tbaa !17
  br label %1480

1480:                                             ; preds = %1475, %81
  br label %1481

1481:                                             ; preds = %1837, %1480
  %1482 = load ptr, ptr %6, align 8, !tbaa !5
  %1483 = getelementptr inbounds %struct.inflate_state, ptr %1482, i32 0, i32 26
  %1484 = load i32, ptr %1483, align 4, !tbaa !65
  %1485 = load ptr, ptr %6, align 8, !tbaa !5
  %1486 = getelementptr inbounds %struct.inflate_state, ptr %1485, i32 0, i32 24
  %1487 = load i32, ptr %1486, align 4, !tbaa !62
  %1488 = load ptr, ptr %6, align 8, !tbaa !5
  %1489 = getelementptr inbounds %struct.inflate_state, ptr %1488, i32 0, i32 25
  %1490 = load i32, ptr %1489, align 8, !tbaa !63
  %1491 = add i32 %1487, %1490
  %1492 = icmp ult i32 %1484, %1491
  br i1 %1492, label %1493, label %1838

1493:                                             ; preds = %1481
  br label %1494

1494:                                             ; preds = %1534, %1493
  %1495 = load ptr, ptr %6, align 8, !tbaa !5
  %1496 = getelementptr inbounds %struct.inflate_state, ptr %1495, i32 0, i32 19
  %1497 = load ptr, ptr %1496, align 8, !tbaa !72
  %1498 = load i64, ptr %11, align 8, !tbaa !21
  %1499 = trunc i64 %1498 to i32
  %1500 = load ptr, ptr %6, align 8, !tbaa !5
  %1501 = getelementptr inbounds %struct.inflate_state, ptr %1500, i32 0, i32 21
  %1502 = load i32, ptr %1501, align 8, !tbaa !73
  %1503 = shl i32 1, %1502
  %1504 = sub i32 %1503, 1
  %1505 = and i32 %1499, %1504
  %1506 = zext i32 %1505 to i64
  %1507 = getelementptr inbounds %struct.code, ptr %1497, i64 %1506
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %17, ptr align 2 %1507, i64 4, i1 false), !tbaa.struct !74
  %1508 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1509 = load i8, ptr %1508, align 1, !tbaa !75
  %1510 = zext i8 %1509 to i32
  %1511 = load i32, ptr %12, align 4, !tbaa !9
  %1512 = icmp ule i32 %1510, %1511
  br i1 %1512, label %1513, label %1514

1513:                                             ; preds = %1494
  br label %1535

1514:                                             ; preds = %1494
  br label %1515

1515:                                             ; preds = %1514
  %1516 = load i32, ptr %9, align 4, !tbaa !9
  %1517 = icmp eq i32 %1516, 0
  br i1 %1517, label %1518, label %1519

1518:                                             ; preds = %1515
  br label %2768

1519:                                             ; preds = %1515
  %1520 = load i32, ptr %9, align 4, !tbaa !9
  %1521 = add i32 %1520, -1
  store i32 %1521, ptr %9, align 4, !tbaa !9
  %1522 = load ptr, ptr %7, align 8, !tbaa !5
  %1523 = getelementptr inbounds i8, ptr %1522, i32 1
  store ptr %1523, ptr %7, align 8, !tbaa !5
  %1524 = load i8, ptr %1522, align 1, !tbaa !24
  %1525 = zext i8 %1524 to i64
  %1526 = load i32, ptr %12, align 4, !tbaa !9
  %1527 = zext i32 %1526 to i64
  %1528 = shl i64 %1525, %1527
  %1529 = load i64, ptr %11, align 8, !tbaa !21
  %1530 = add i64 %1529, %1528
  store i64 %1530, ptr %11, align 8, !tbaa !21
  %1531 = load i32, ptr %12, align 4, !tbaa !9
  %1532 = add i32 %1531, 8
  store i32 %1532, ptr %12, align 4, !tbaa !9
  br label %1533

1533:                                             ; preds = %1519
  br label %1534

1534:                                             ; preds = %1533
  br label %1494

1535:                                             ; preds = %1513
  %1536 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 2
  %1537 = load i16, ptr %1536, align 2, !tbaa !77
  %1538 = zext i16 %1537 to i32
  %1539 = icmp slt i32 %1538, 16
  br i1 %1539, label %1540, label %1596

1540:                                             ; preds = %1535
  br label %1541

1541:                                             ; preds = %1540
  br label %1542

1542:                                             ; preds = %1568, %1541
  %1543 = load i32, ptr %12, align 4, !tbaa !9
  %1544 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1545 = load i8, ptr %1544, align 1, !tbaa !75
  %1546 = zext i8 %1545 to i32
  %1547 = icmp ult i32 %1543, %1546
  br i1 %1547, label %1548, label %1569

1548:                                             ; preds = %1542
  br label %1549

1549:                                             ; preds = %1548
  %1550 = load i32, ptr %9, align 4, !tbaa !9
  %1551 = icmp eq i32 %1550, 0
  br i1 %1551, label %1552, label %1553

1552:                                             ; preds = %1549
  br label %2768

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

1567:                                             ; preds = %1553
  br label %1568

1568:                                             ; preds = %1567
  br label %1542, !llvm.loop !78

1569:                                             ; preds = %1542
  br label %1570

1570:                                             ; preds = %1569
  br label %1571

1571:                                             ; preds = %1570
  br label %1572

1572:                                             ; preds = %1571
  %1573 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1574 = load i8, ptr %1573, align 1, !tbaa !75
  %1575 = zext i8 %1574 to i32
  %1576 = load i64, ptr %11, align 8, !tbaa !21
  %1577 = zext i32 %1575 to i64
  %1578 = lshr i64 %1576, %1577
  store i64 %1578, ptr %11, align 8, !tbaa !21
  %1579 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1580 = load i8, ptr %1579, align 1, !tbaa !75
  %1581 = zext i8 %1580 to i32
  %1582 = load i32, ptr %12, align 4, !tbaa !9
  %1583 = sub i32 %1582, %1581
  store i32 %1583, ptr %12, align 4, !tbaa !9
  br label %1584

1584:                                             ; preds = %1572
  br label %1585

1585:                                             ; preds = %1584
  %1586 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 2
  %1587 = load i16, ptr %1586, align 2, !tbaa !77
  %1588 = load ptr, ptr %6, align 8, !tbaa !5
  %1589 = getelementptr inbounds %struct.inflate_state, ptr %1588, i32 0, i32 28
  %1590 = load ptr, ptr %6, align 8, !tbaa !5
  %1591 = getelementptr inbounds %struct.inflate_state, ptr %1590, i32 0, i32 26
  %1592 = load i32, ptr %1591, align 4, !tbaa !65
  %1593 = add i32 %1592, 1
  store i32 %1593, ptr %1591, align 4, !tbaa !65
  %1594 = zext i32 %1592 to i64
  %1595 = getelementptr inbounds [320 x i16], ptr %1589, i64 0, i64 %1594
  store i16 %1587, ptr %1595, align 2, !tbaa !67
  br label %1837

1596:                                             ; preds = %1535
  %1597 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 2
  %1598 = load i16, ptr %1597, align 2, !tbaa !77
  %1599 = zext i16 %1598 to i32
  %1600 = icmp eq i32 %1599, 16
  br i1 %1600, label %1601, label %1679

1601:                                             ; preds = %1596
  br label %1602

1602:                                             ; preds = %1601
  br label %1603

1603:                                             ; preds = %1630, %1602
  %1604 = load i32, ptr %12, align 4, !tbaa !9
  %1605 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1606 = load i8, ptr %1605, align 1, !tbaa !75
  %1607 = zext i8 %1606 to i32
  %1608 = add nsw i32 %1607, 2
  %1609 = icmp ult i32 %1604, %1608
  br i1 %1609, label %1610, label %1631

1610:                                             ; preds = %1603
  br label %1611

1611:                                             ; preds = %1610
  %1612 = load i32, ptr %9, align 4, !tbaa !9
  %1613 = icmp eq i32 %1612, 0
  br i1 %1613, label %1614, label %1615

1614:                                             ; preds = %1611
  br label %2768

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

1629:                                             ; preds = %1615
  br label %1630

1630:                                             ; preds = %1629
  br label %1603, !llvm.loop !79

1631:                                             ; preds = %1603
  br label %1632

1632:                                             ; preds = %1631
  br label %1633

1633:                                             ; preds = %1632
  br label %1634

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

1646:                                             ; preds = %1634
  br label %1647

1647:                                             ; preds = %1646
  %1648 = load ptr, ptr %6, align 8, !tbaa !5
  %1649 = getelementptr inbounds %struct.inflate_state, ptr %1648, i32 0, i32 26
  %1650 = load i32, ptr %1649, align 4, !tbaa !65
  %1651 = icmp eq i32 %1650, 0
  br i1 %1651, label %1652, label %1657

1652:                                             ; preds = %1647
  %1653 = load ptr, ptr %4, align 8, !tbaa !5
  %1654 = getelementptr inbounds %struct.z_stream_s, ptr %1653, i32 0, i32 6
  store ptr @.str.10, ptr %1654, align 8, !tbaa !32
  %1655 = load ptr, ptr %6, align 8, !tbaa !5
  %1656 = getelementptr inbounds %struct.inflate_state, ptr %1655, i32 0, i32 0
  store i32 27, ptr %1656, align 8, !tbaa !17
  br label %1838

1657:                                             ; preds = %1647
  %1658 = load ptr, ptr %6, align 8, !tbaa !5
  %1659 = getelementptr inbounds %struct.inflate_state, ptr %1658, i32 0, i32 28
  %1660 = load ptr, ptr %6, align 8, !tbaa !5
  %1661 = getelementptr inbounds %struct.inflate_state, ptr %1660, i32 0, i32 26
  %1662 = load i32, ptr %1661, align 4, !tbaa !65
  %1663 = sub i32 %1662, 1
  %1664 = zext i32 %1663 to i64
  %1665 = getelementptr inbounds [320 x i16], ptr %1659, i64 0, i64 %1664
  %1666 = load i16, ptr %1665, align 2, !tbaa !67
  %1667 = zext i16 %1666 to i32
  store i32 %1667, ptr %19, align 4, !tbaa !9
  %1668 = load i64, ptr %11, align 8, !tbaa !21
  %1669 = trunc i64 %1668 to i32
  %1670 = and i32 %1669, 3
  %1671 = add i32 3, %1670
  store i32 %1671, ptr %15, align 4, !tbaa !9
  br label %1672

1672:                                             ; preds = %1657
  %1673 = load i64, ptr %11, align 8, !tbaa !21
  %1674 = lshr i64 %1673, 2
  store i64 %1674, ptr %11, align 8, !tbaa !21
  %1675 = load i32, ptr %12, align 4, !tbaa !9
  %1676 = sub i32 %1675, 2
  store i32 %1676, ptr %12, align 4, !tbaa !9
  br label %1677

1677:                                             ; preds = %1672
  br label %1678

1678:                                             ; preds = %1677
  br label %1801

1679:                                             ; preds = %1596
  %1680 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 2
  %1681 = load i16, ptr %1680, align 2, !tbaa !77
  %1682 = zext i16 %1681 to i32
  %1683 = icmp eq i32 %1682, 17
  br i1 %1683, label %1684, label %1742

1684:                                             ; preds = %1679
  br label %1685

1685:                                             ; preds = %1684
  br label %1686

1686:                                             ; preds = %1713, %1685
  %1687 = load i32, ptr %12, align 4, !tbaa !9
  %1688 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1689 = load i8, ptr %1688, align 1, !tbaa !75
  %1690 = zext i8 %1689 to i32
  %1691 = add nsw i32 %1690, 3
  %1692 = icmp ult i32 %1687, %1691
  br i1 %1692, label %1693, label %1714

1693:                                             ; preds = %1686
  br label %1694

1694:                                             ; preds = %1693
  %1695 = load i32, ptr %9, align 4, !tbaa !9
  %1696 = icmp eq i32 %1695, 0
  br i1 %1696, label %1697, label %1698

1697:                                             ; preds = %1694
  br label %2768

1698:                                             ; preds = %1694
  %1699 = load i32, ptr %9, align 4, !tbaa !9
  %1700 = add i32 %1699, -1
  store i32 %1700, ptr %9, align 4, !tbaa !9
  %1701 = load ptr, ptr %7, align 8, !tbaa !5
  %1702 = getelementptr inbounds i8, ptr %1701, i32 1
  store ptr %1702, ptr %7, align 8, !tbaa !5
  %1703 = load i8, ptr %1701, align 1, !tbaa !24
  %1704 = zext i8 %1703 to i64
  %1705 = load i32, ptr %12, align 4, !tbaa !9
  %1706 = zext i32 %1705 to i64
  %1707 = shl i64 %1704, %1706
  %1708 = load i64, ptr %11, align 8, !tbaa !21
  %1709 = add i64 %1708, %1707
  store i64 %1709, ptr %11, align 8, !tbaa !21
  %1710 = load i32, ptr %12, align 4, !tbaa !9
  %1711 = add i32 %1710, 8
  store i32 %1711, ptr %12, align 4, !tbaa !9
  br label %1712

1712:                                             ; preds = %1698
  br label %1713

1713:                                             ; preds = %1712
  br label %1686, !llvm.loop !80

1714:                                             ; preds = %1686
  br label %1715

1715:                                             ; preds = %1714
  br label %1716

1716:                                             ; preds = %1715
  br label %1717

1717:                                             ; preds = %1716
  %1718 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1719 = load i8, ptr %1718, align 1, !tbaa !75
  %1720 = zext i8 %1719 to i32
  %1721 = load i64, ptr %11, align 8, !tbaa !21
  %1722 = zext i32 %1720 to i64
  %1723 = lshr i64 %1721, %1722
  store i64 %1723, ptr %11, align 8, !tbaa !21
  %1724 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1725 = load i8, ptr %1724, align 1, !tbaa !75
  %1726 = zext i8 %1725 to i32
  %1727 = load i32, ptr %12, align 4, !tbaa !9
  %1728 = sub i32 %1727, %1726
  store i32 %1728, ptr %12, align 4, !tbaa !9
  br label %1729

1729:                                             ; preds = %1717
  br label %1730

1730:                                             ; preds = %1729
  store i32 0, ptr %19, align 4, !tbaa !9
  %1731 = load i64, ptr %11, align 8, !tbaa !21
  %1732 = trunc i64 %1731 to i32
  %1733 = and i32 %1732, 7
  %1734 = add i32 3, %1733
  store i32 %1734, ptr %15, align 4, !tbaa !9
  br label %1735

1735:                                             ; preds = %1730
  %1736 = load i64, ptr %11, align 8, !tbaa !21
  %1737 = lshr i64 %1736, 3
  store i64 %1737, ptr %11, align 8, !tbaa !21
  %1738 = load i32, ptr %12, align 4, !tbaa !9
  %1739 = sub i32 %1738, 3
  store i32 %1739, ptr %12, align 4, !tbaa !9
  br label %1740

1740:                                             ; preds = %1735
  br label %1741

1741:                                             ; preds = %1740
  br label %1800

1742:                                             ; preds = %1679
  br label %1743

1743:                                             ; preds = %1742
  br label %1744

1744:                                             ; preds = %1771, %1743
  %1745 = load i32, ptr %12, align 4, !tbaa !9
  %1746 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1747 = load i8, ptr %1746, align 1, !tbaa !75
  %1748 = zext i8 %1747 to i32
  %1749 = add nsw i32 %1748, 7
  %1750 = icmp ult i32 %1745, %1749
  br i1 %1750, label %1751, label %1772

1751:                                             ; preds = %1744
  br label %1752

1752:                                             ; preds = %1751
  %1753 = load i32, ptr %9, align 4, !tbaa !9
  %1754 = icmp eq i32 %1753, 0
  br i1 %1754, label %1755, label %1756

1755:                                             ; preds = %1752
  br label %2768

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

1770:                                             ; preds = %1756
  br label %1771

1771:                                             ; preds = %1770
  br label %1744, !llvm.loop !81

1772:                                             ; preds = %1744
  br label %1773

1773:                                             ; preds = %1772
  br label %1774

1774:                                             ; preds = %1773
  br label %1775

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

1787:                                             ; preds = %1775
  br label %1788

1788:                                             ; preds = %1787
  store i32 0, ptr %19, align 4, !tbaa !9
  %1789 = load i64, ptr %11, align 8, !tbaa !21
  %1790 = trunc i64 %1789 to i32
  %1791 = and i32 %1790, 127
  %1792 = add i32 11, %1791
  store i32 %1792, ptr %15, align 4, !tbaa !9
  br label %1793

1793:                                             ; preds = %1788
  %1794 = load i64, ptr %11, align 8, !tbaa !21
  %1795 = lshr i64 %1794, 7
  store i64 %1795, ptr %11, align 8, !tbaa !21
  %1796 = load i32, ptr %12, align 4, !tbaa !9
  %1797 = sub i32 %1796, 7
  store i32 %1797, ptr %12, align 4, !tbaa !9
  br label %1798

1798:                                             ; preds = %1793
  br label %1799

1799:                                             ; preds = %1798
  br label %1800

1800:                                             ; preds = %1799, %1741
  br label %1801

1801:                                             ; preds = %1800, %1678
  %1802 = load ptr, ptr %6, align 8, !tbaa !5
  %1803 = getelementptr inbounds %struct.inflate_state, ptr %1802, i32 0, i32 26
  %1804 = load i32, ptr %1803, align 4, !tbaa !65
  %1805 = load i32, ptr %15, align 4, !tbaa !9
  %1806 = add i32 %1804, %1805
  %1807 = load ptr, ptr %6, align 8, !tbaa !5
  %1808 = getelementptr inbounds %struct.inflate_state, ptr %1807, i32 0, i32 24
  %1809 = load i32, ptr %1808, align 4, !tbaa !62
  %1810 = load ptr, ptr %6, align 8, !tbaa !5
  %1811 = getelementptr inbounds %struct.inflate_state, ptr %1810, i32 0, i32 25
  %1812 = load i32, ptr %1811, align 8, !tbaa !63
  %1813 = add i32 %1809, %1812
  %1814 = icmp ugt i32 %1806, %1813
  br i1 %1814, label %1815, label %1820

1815:                                             ; preds = %1801
  %1816 = load ptr, ptr %4, align 8, !tbaa !5
  %1817 = getelementptr inbounds %struct.z_stream_s, ptr %1816, i32 0, i32 6
  store ptr @.str.10, ptr %1817, align 8, !tbaa !32
  %1818 = load ptr, ptr %6, align 8, !tbaa !5
  %1819 = getelementptr inbounds %struct.inflate_state, ptr %1818, i32 0, i32 0
  store i32 27, ptr %1819, align 8, !tbaa !17
  br label %1838

1820:                                             ; preds = %1801
  br label %1821

1821:                                             ; preds = %1825, %1820
  %1822 = load i32, ptr %15, align 4, !tbaa !9
  %1823 = add i32 %1822, -1
  store i32 %1823, ptr %15, align 4, !tbaa !9
  %1824 = icmp ne i32 %1822, 0
  br i1 %1824, label %1825, label %1836

1825:                                             ; preds = %1821
  %1826 = load i32, ptr %19, align 4, !tbaa !9
  %1827 = trunc i32 %1826 to i16
  %1828 = load ptr, ptr %6, align 8, !tbaa !5
  %1829 = getelementptr inbounds %struct.inflate_state, ptr %1828, i32 0, i32 28
  %1830 = load ptr, ptr %6, align 8, !tbaa !5
  %1831 = getelementptr inbounds %struct.inflate_state, ptr %1830, i32 0, i32 26
  %1832 = load i32, ptr %1831, align 4, !tbaa !65
  %1833 = add i32 %1832, 1
  store i32 %1833, ptr %1831, align 4, !tbaa !65
  %1834 = zext i32 %1832 to i64
  %1835 = getelementptr inbounds [320 x i16], ptr %1829, i64 0, i64 %1834
  store i16 %1827, ptr %1835, align 2, !tbaa !67
  br label %1821, !llvm.loop !82

1836:                                             ; preds = %1821
  br label %1837

1837:                                             ; preds = %1836, %1585
  br label %1481, !llvm.loop !83

1838:                                             ; preds = %1815, %1652, %1481
  %1839 = load ptr, ptr %6, align 8, !tbaa !5
  %1840 = getelementptr inbounds %struct.inflate_state, ptr %1839, i32 0, i32 0
  %1841 = load i32, ptr %1840, align 8, !tbaa !17
  %1842 = icmp eq i32 %1841, 27
  br i1 %1842, label %1843, label %1844

1843:                                             ; preds = %1838
  br label %2767

1844:                                             ; preds = %1838
  %1845 = load ptr, ptr %6, align 8, !tbaa !5
  %1846 = getelementptr inbounds %struct.inflate_state, ptr %1845, i32 0, i32 30
  %1847 = getelementptr inbounds [2048 x %struct.code], ptr %1846, i64 0, i64 0
  %1848 = load ptr, ptr %6, align 8, !tbaa !5
  %1849 = getelementptr inbounds %struct.inflate_state, ptr %1848, i32 0, i32 27
  store ptr %1847, ptr %1849, align 8, !tbaa !71
  %1850 = load ptr, ptr %6, align 8, !tbaa !5
  %1851 = getelementptr inbounds %struct.inflate_state, ptr %1850, i32 0, i32 27
  %1852 = load ptr, ptr %1851, align 8, !tbaa !71
  %1853 = load ptr, ptr %6, align 8, !tbaa !5
  %1854 = getelementptr inbounds %struct.inflate_state, ptr %1853, i32 0, i32 19
  store ptr %1852, ptr %1854, align 8, !tbaa !72
  %1855 = load ptr, ptr %6, align 8, !tbaa !5
  %1856 = getelementptr inbounds %struct.inflate_state, ptr %1855, i32 0, i32 21
  store i32 9, ptr %1856, align 8, !tbaa !73
  %1857 = load ptr, ptr %6, align 8, !tbaa !5
  %1858 = getelementptr inbounds %struct.inflate_state, ptr %1857, i32 0, i32 28
  %1859 = getelementptr inbounds [320 x i16], ptr %1858, i64 0, i64 0
  %1860 = load ptr, ptr %6, align 8, !tbaa !5
  %1861 = getelementptr inbounds %struct.inflate_state, ptr %1860, i32 0, i32 24
  %1862 = load i32, ptr %1861, align 4, !tbaa !62
  %1863 = load ptr, ptr %6, align 8, !tbaa !5
  %1864 = getelementptr inbounds %struct.inflate_state, ptr %1863, i32 0, i32 27
  %1865 = load ptr, ptr %6, align 8, !tbaa !5
  %1866 = getelementptr inbounds %struct.inflate_state, ptr %1865, i32 0, i32 21
  %1867 = load ptr, ptr %6, align 8, !tbaa !5
  %1868 = getelementptr inbounds %struct.inflate_state, ptr %1867, i32 0, i32 29
  %1869 = getelementptr inbounds [288 x i16], ptr %1868, i64 0, i64 0
  %1870 = call i32 @inflate_table(i32 noundef 1, ptr noundef %1859, i32 noundef %1862, ptr noundef %1864, ptr noundef %1866, ptr noundef %1869)
  store i32 %1870, ptr %20, align 4, !tbaa !9
  %1871 = load i32, ptr %20, align 4, !tbaa !9
  %1872 = icmp ne i32 %1871, 0
  br i1 %1872, label %1873, label %1878

1873:                                             ; preds = %1844
  %1874 = load ptr, ptr %4, align 8, !tbaa !5
  %1875 = getelementptr inbounds %struct.z_stream_s, ptr %1874, i32 0, i32 6
  store ptr @.str.11, ptr %1875, align 8, !tbaa !32
  %1876 = load ptr, ptr %6, align 8, !tbaa !5
  %1877 = getelementptr inbounds %struct.inflate_state, ptr %1876, i32 0, i32 0
  store i32 27, ptr %1877, align 8, !tbaa !17
  br label %2767

1878:                                             ; preds = %1844
  %1879 = load ptr, ptr %6, align 8, !tbaa !5
  %1880 = getelementptr inbounds %struct.inflate_state, ptr %1879, i32 0, i32 27
  %1881 = load ptr, ptr %1880, align 8, !tbaa !71
  %1882 = load ptr, ptr %6, align 8, !tbaa !5
  %1883 = getelementptr inbounds %struct.inflate_state, ptr %1882, i32 0, i32 20
  store ptr %1881, ptr %1883, align 8, !tbaa !84
  %1884 = load ptr, ptr %6, align 8, !tbaa !5
  %1885 = getelementptr inbounds %struct.inflate_state, ptr %1884, i32 0, i32 22
  store i32 6, ptr %1885, align 4, !tbaa !85
  %1886 = load ptr, ptr %6, align 8, !tbaa !5
  %1887 = getelementptr inbounds %struct.inflate_state, ptr %1886, i32 0, i32 28
  %1888 = getelementptr inbounds [320 x i16], ptr %1887, i64 0, i64 0
  %1889 = load ptr, ptr %6, align 8, !tbaa !5
  %1890 = getelementptr inbounds %struct.inflate_state, ptr %1889, i32 0, i32 24
  %1891 = load i32, ptr %1890, align 4, !tbaa !62
  %1892 = zext i32 %1891 to i64
  %1893 = getelementptr inbounds i16, ptr %1888, i64 %1892
  %1894 = load ptr, ptr %6, align 8, !tbaa !5
  %1895 = getelementptr inbounds %struct.inflate_state, ptr %1894, i32 0, i32 25
  %1896 = load i32, ptr %1895, align 8, !tbaa !63
  %1897 = load ptr, ptr %6, align 8, !tbaa !5
  %1898 = getelementptr inbounds %struct.inflate_state, ptr %1897, i32 0, i32 27
  %1899 = load ptr, ptr %6, align 8, !tbaa !5
  %1900 = getelementptr inbounds %struct.inflate_state, ptr %1899, i32 0, i32 22
  %1901 = load ptr, ptr %6, align 8, !tbaa !5
  %1902 = getelementptr inbounds %struct.inflate_state, ptr %1901, i32 0, i32 29
  %1903 = getelementptr inbounds [288 x i16], ptr %1902, i64 0, i64 0
  %1904 = call i32 @inflate_table(i32 noundef 2, ptr noundef %1893, i32 noundef %1896, ptr noundef %1898, ptr noundef %1900, ptr noundef %1903)
  store i32 %1904, ptr %20, align 4, !tbaa !9
  %1905 = load i32, ptr %20, align 4, !tbaa !9
  %1906 = icmp ne i32 %1905, 0
  br i1 %1906, label %1907, label %1912

1907:                                             ; preds = %1878
  %1908 = load ptr, ptr %4, align 8, !tbaa !5
  %1909 = getelementptr inbounds %struct.z_stream_s, ptr %1908, i32 0, i32 6
  store ptr @.str.12, ptr %1909, align 8, !tbaa !32
  %1910 = load ptr, ptr %6, align 8, !tbaa !5
  %1911 = getelementptr inbounds %struct.inflate_state, ptr %1910, i32 0, i32 0
  store i32 27, ptr %1911, align 8, !tbaa !17
  br label %2767

1912:                                             ; preds = %1878
  %1913 = load ptr, ptr %6, align 8, !tbaa !5
  %1914 = getelementptr inbounds %struct.inflate_state, ptr %1913, i32 0, i32 0
  store i32 18, ptr %1914, align 8, !tbaa !17
  br label %1915

1915:                                             ; preds = %1912, %81
  %1916 = load i32, ptr %9, align 4, !tbaa !9
  %1917 = icmp uge i32 %1916, 6
  br i1 %1917, label %1918, label %1966

1918:                                             ; preds = %1915
  %1919 = load i32, ptr %10, align 4, !tbaa !9
  %1920 = icmp uge i32 %1919, 258
  br i1 %1920, label %1921, label %1966

1921:                                             ; preds = %1918
  br label %1922

1922:                                             ; preds = %1921
  %1923 = load ptr, ptr %8, align 8, !tbaa !5
  %1924 = load ptr, ptr %4, align 8, !tbaa !5
  %1925 = getelementptr inbounds %struct.z_stream_s, ptr %1924, i32 0, i32 3
  store ptr %1923, ptr %1925, align 8, !tbaa !14
  %1926 = load i32, ptr %10, align 4, !tbaa !9
  %1927 = load ptr, ptr %4, align 8, !tbaa !5
  %1928 = getelementptr inbounds %struct.z_stream_s, ptr %1927, i32 0, i32 4
  store i32 %1926, ptr %1928, align 8, !tbaa !19
  %1929 = load ptr, ptr %7, align 8, !tbaa !5
  %1930 = load ptr, ptr %4, align 8, !tbaa !5
  %1931 = getelementptr inbounds %struct.z_stream_s, ptr %1930, i32 0, i32 0
  store ptr %1929, ptr %1931, align 8, !tbaa !15
  %1932 = load i32, ptr %9, align 4, !tbaa !9
  %1933 = load ptr, ptr %4, align 8, !tbaa !5
  %1934 = getelementptr inbounds %struct.z_stream_s, ptr %1933, i32 0, i32 1
  store i32 %1932, ptr %1934, align 8, !tbaa !16
  %1935 = load i64, ptr %11, align 8, !tbaa !21
  %1936 = load ptr, ptr %6, align 8, !tbaa !5
  %1937 = getelementptr inbounds %struct.inflate_state, ptr %1936, i32 0, i32 14
  store i64 %1935, ptr %1937, align 8, !tbaa !20
  %1938 = load i32, ptr %12, align 4, !tbaa !9
  %1939 = load ptr, ptr %6, align 8, !tbaa !5
  %1940 = getelementptr inbounds %struct.inflate_state, ptr %1939, i32 0, i32 15
  store i32 %1938, ptr %1940, align 8, !tbaa !22
  br label %1941

1941:                                             ; preds = %1922
  br label %1942

1942:                                             ; preds = %1941
  %1943 = load ptr, ptr %4, align 8, !tbaa !5
  %1944 = load i32, ptr %14, align 4, !tbaa !9
  call void @inflate_fast(ptr noundef %1943, i32 noundef %1944)
  br label %1945

1945:                                             ; preds = %1942
  %1946 = load ptr, ptr %4, align 8, !tbaa !5
  %1947 = getelementptr inbounds %struct.z_stream_s, ptr %1946, i32 0, i32 3
  %1948 = load ptr, ptr %1947, align 8, !tbaa !14
  store ptr %1948, ptr %8, align 8, !tbaa !5
  %1949 = load ptr, ptr %4, align 8, !tbaa !5
  %1950 = getelementptr inbounds %struct.z_stream_s, ptr %1949, i32 0, i32 4
  %1951 = load i32, ptr %1950, align 8, !tbaa !19
  store i32 %1951, ptr %10, align 4, !tbaa !9
  %1952 = load ptr, ptr %4, align 8, !tbaa !5
  %1953 = getelementptr inbounds %struct.z_stream_s, ptr %1952, i32 0, i32 0
  %1954 = load ptr, ptr %1953, align 8, !tbaa !15
  store ptr %1954, ptr %7, align 8, !tbaa !5
  %1955 = load ptr, ptr %4, align 8, !tbaa !5
  %1956 = getelementptr inbounds %struct.z_stream_s, ptr %1955, i32 0, i32 1
  %1957 = load i32, ptr %1956, align 8, !tbaa !16
  store i32 %1957, ptr %9, align 4, !tbaa !9
  %1958 = load ptr, ptr %6, align 8, !tbaa !5
  %1959 = getelementptr inbounds %struct.inflate_state, ptr %1958, i32 0, i32 14
  %1960 = load i64, ptr %1959, align 8, !tbaa !20
  store i64 %1960, ptr %11, align 8, !tbaa !21
  %1961 = load ptr, ptr %6, align 8, !tbaa !5
  %1962 = getelementptr inbounds %struct.inflate_state, ptr %1961, i32 0, i32 15
  %1963 = load i32, ptr %1962, align 8, !tbaa !22
  store i32 %1963, ptr %12, align 4, !tbaa !9
  br label %1964

1964:                                             ; preds = %1945
  br label %1965

1965:                                             ; preds = %1964
  br label %2767

1966:                                             ; preds = %1918, %1915
  br label %1967

1967:                                             ; preds = %2007, %1966
  %1968 = load ptr, ptr %6, align 8, !tbaa !5
  %1969 = getelementptr inbounds %struct.inflate_state, ptr %1968, i32 0, i32 19
  %1970 = load ptr, ptr %1969, align 8, !tbaa !72
  %1971 = load i64, ptr %11, align 8, !tbaa !21
  %1972 = trunc i64 %1971 to i32
  %1973 = load ptr, ptr %6, align 8, !tbaa !5
  %1974 = getelementptr inbounds %struct.inflate_state, ptr %1973, i32 0, i32 21
  %1975 = load i32, ptr %1974, align 8, !tbaa !73
  %1976 = shl i32 1, %1975
  %1977 = sub i32 %1976, 1
  %1978 = and i32 %1972, %1977
  %1979 = zext i32 %1978 to i64
  %1980 = getelementptr inbounds %struct.code, ptr %1970, i64 %1979
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %17, ptr align 2 %1980, i64 4, i1 false), !tbaa.struct !74
  %1981 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %1982 = load i8, ptr %1981, align 1, !tbaa !75
  %1983 = zext i8 %1982 to i32
  %1984 = load i32, ptr %12, align 4, !tbaa !9
  %1985 = icmp ule i32 %1983, %1984
  br i1 %1985, label %1986, label %1987

1986:                                             ; preds = %1967
  br label %2008

1987:                                             ; preds = %1967
  br label %1988

1988:                                             ; preds = %1987
  %1989 = load i32, ptr %9, align 4, !tbaa !9
  %1990 = icmp eq i32 %1989, 0
  br i1 %1990, label %1991, label %1992

1991:                                             ; preds = %1988
  br label %2768

1992:                                             ; preds = %1988
  %1993 = load i32, ptr %9, align 4, !tbaa !9
  %1994 = add i32 %1993, -1
  store i32 %1994, ptr %9, align 4, !tbaa !9
  %1995 = load ptr, ptr %7, align 8, !tbaa !5
  %1996 = getelementptr inbounds i8, ptr %1995, i32 1
  store ptr %1996, ptr %7, align 8, !tbaa !5
  %1997 = load i8, ptr %1995, align 1, !tbaa !24
  %1998 = zext i8 %1997 to i64
  %1999 = load i32, ptr %12, align 4, !tbaa !9
  %2000 = zext i32 %1999 to i64
  %2001 = shl i64 %1998, %2000
  %2002 = load i64, ptr %11, align 8, !tbaa !21
  %2003 = add i64 %2002, %2001
  store i64 %2003, ptr %11, align 8, !tbaa !21
  %2004 = load i32, ptr %12, align 4, !tbaa !9
  %2005 = add i32 %2004, 8
  store i32 %2005, ptr %12, align 4, !tbaa !9
  br label %2006

2006:                                             ; preds = %1992
  br label %2007

2007:                                             ; preds = %2006
  br label %1967

2008:                                             ; preds = %1986
  %2009 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2010 = load i8, ptr %2009, align 2, !tbaa !86
  %2011 = zext i8 %2010 to i32
  %2012 = icmp ne i32 %2011, 0
  br i1 %2012, label %2013, label %2092

2013:                                             ; preds = %2008
  %2014 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2015 = load i8, ptr %2014, align 2, !tbaa !86
  %2016 = zext i8 %2015 to i32
  %2017 = and i32 %2016, 240
  %2018 = icmp eq i32 %2017, 0
  br i1 %2018, label %2019, label %2092

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

2020:                                             ; preds = %2076, %2019
  %2021 = load ptr, ptr %6, align 8, !tbaa !5
  %2022 = getelementptr inbounds %struct.inflate_state, ptr %2021, i32 0, i32 19
  %2023 = load ptr, ptr %2022, align 8, !tbaa !72
  %2024 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 2
  %2025 = load i16, ptr %2024, align 2, !tbaa !77
  %2026 = zext i16 %2025 to i32
  %2027 = load i64, ptr %11, align 8, !tbaa !21
  %2028 = trunc i64 %2027 to i32
  %2029 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2030 = load i8, ptr %2029, align 1, !tbaa !75
  %2031 = zext i8 %2030 to i32
  %2032 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 0
  %2033 = load i8, ptr %2032, align 2, !tbaa !86
  %2034 = zext i8 %2033 to i32
  %2035 = add nsw i32 %2031, %2034
  %2036 = shl i32 1, %2035
  %2037 = sub i32 %2036, 1
  %2038 = and i32 %2028, %2037
  %2039 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2040 = load i8, ptr %2039, align 1, !tbaa !75
  %2041 = zext i8 %2040 to i32
  %2042 = lshr i32 %2038, %2041
  %2043 = add i32 %2026, %2042
  %2044 = zext i32 %2043 to i64
  %2045 = getelementptr inbounds %struct.code, ptr %2023, i64 %2044
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %17, ptr align 2 %2045, i64 4, i1 false), !tbaa.struct !74
  %2046 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2047 = load i8, ptr %2046, align 1, !tbaa !75
  %2048 = zext i8 %2047 to i32
  %2049 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2050 = load i8, ptr %2049, align 1, !tbaa !75
  %2051 = zext i8 %2050 to i32
  %2052 = add nsw i32 %2048, %2051
  %2053 = load i32, ptr %12, align 4, !tbaa !9
  %2054 = icmp ule i32 %2052, %2053
  br i1 %2054, label %2055, label %2056

2055:                                             ; preds = %2020
  br label %2077

2056:                                             ; preds = %2020
  br label %2057

2057:                                             ; preds = %2056
  %2058 = load i32, ptr %9, align 4, !tbaa !9
  %2059 = icmp eq i32 %2058, 0
  br i1 %2059, label %2060, label %2061

2060:                                             ; preds = %2057
  br label %2768

2061:                                             ; preds = %2057
  %2062 = load i32, ptr %9, align 4, !tbaa !9
  %2063 = add i32 %2062, -1
  store i32 %2063, ptr %9, align 4, !tbaa !9
  %2064 = load ptr, ptr %7, align 8, !tbaa !5
  %2065 = getelementptr inbounds i8, ptr %2064, i32 1
  store ptr %2065, ptr %7, align 8, !tbaa !5
  %2066 = load i8, ptr %2064, align 1, !tbaa !24
  %2067 = zext i8 %2066 to i64
  %2068 = load i32, ptr %12, align 4, !tbaa !9
  %2069 = zext i32 %2068 to i64
  %2070 = shl i64 %2067, %2069
  %2071 = load i64, ptr %11, align 8, !tbaa !21
  %2072 = add i64 %2071, %2070
  store i64 %2072, ptr %11, align 8, !tbaa !21
  %2073 = load i32, ptr %12, align 4, !tbaa !9
  %2074 = add i32 %2073, 8
  store i32 %2074, ptr %12, align 4, !tbaa !9
  br label %2075

2075:                                             ; preds = %2061
  br label %2076

2076:                                             ; preds = %2075
  br label %2020

2077:                                             ; preds = %2055
  br label %2078

2078:                                             ; preds = %2077
  %2079 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2080 = load i8, ptr %2079, align 1, !tbaa !75
  %2081 = zext i8 %2080 to i32
  %2082 = load i64, ptr %11, align 8, !tbaa !21
  %2083 = zext i32 %2081 to i64
  %2084 = lshr i64 %2082, %2083
  store i64 %2084, ptr %11, align 8, !tbaa !21
  %2085 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2086 = load i8, ptr %2085, align 1, !tbaa !75
  %2087 = zext i8 %2086 to i32
  %2088 = load i32, ptr %12, align 4, !tbaa !9
  %2089 = sub i32 %2088, %2087
  store i32 %2089, ptr %12, align 4, !tbaa !9
  br label %2090

2090:                                             ; preds = %2078
  br label %2091

2091:                                             ; preds = %2090
  br label %2092

2092:                                             ; preds = %2091, %2013, %2008
  br label %2093

2093:                                             ; preds = %2092
  %2094 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2095 = load i8, ptr %2094, align 1, !tbaa !75
  %2096 = zext i8 %2095 to i32
  %2097 = load i64, ptr %11, align 8, !tbaa !21
  %2098 = zext i32 %2096 to i64
  %2099 = lshr i64 %2097, %2098
  store i64 %2099, ptr %11, align 8, !tbaa !21
  %2100 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2101 = load i8, ptr %2100, align 1, !tbaa !75
  %2102 = zext i8 %2101 to i32
  %2103 = load i32, ptr %12, align 4, !tbaa !9
  %2104 = sub i32 %2103, %2102
  store i32 %2104, ptr %12, align 4, !tbaa !9
  br label %2105

2105:                                             ; preds = %2093
  br label %2106

2106:                                             ; preds = %2105
  %2107 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 2
  %2108 = load i16, ptr %2107, align 2, !tbaa !77
  %2109 = zext i16 %2108 to i32
  %2110 = load ptr, ptr %6, align 8, !tbaa !5
  %2111 = getelementptr inbounds %struct.inflate_state, ptr %2110, i32 0, i32 16
  store i32 %2109, ptr %2111, align 4, !tbaa !44
  %2112 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2113 = load i8, ptr %2112, align 2, !tbaa !86
  %2114 = zext i8 %2113 to i32
  %2115 = icmp eq i32 %2114, 0
  br i1 %2115, label %2116, label %2119

2116:                                             ; preds = %2106
  %2117 = load ptr, ptr %6, align 8, !tbaa !5
  %2118 = getelementptr inbounds %struct.inflate_state, ptr %2117, i32 0, i32 0
  store i32 23, ptr %2118, align 8, !tbaa !17
  br label %2767

2119:                                             ; preds = %2106
  %2120 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2121 = load i8, ptr %2120, align 2, !tbaa !86
  %2122 = zext i8 %2121 to i32
  %2123 = and i32 %2122, 32
  %2124 = icmp ne i32 %2123, 0
  br i1 %2124, label %2125, label %2128

2125:                                             ; preds = %2119
  %2126 = load ptr, ptr %6, align 8, !tbaa !5
  %2127 = getelementptr inbounds %struct.inflate_state, ptr %2126, i32 0, i32 0
  store i32 11, ptr %2127, align 8, !tbaa !17
  br label %2767

2128:                                             ; preds = %2119
  %2129 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2130 = load i8, ptr %2129, align 2, !tbaa !86
  %2131 = zext i8 %2130 to i32
  %2132 = and i32 %2131, 64
  %2133 = icmp ne i32 %2132, 0
  br i1 %2133, label %2134, label %2139

2134:                                             ; preds = %2128
  %2135 = load ptr, ptr %4, align 8, !tbaa !5
  %2136 = getelementptr inbounds %struct.z_stream_s, ptr %2135, i32 0, i32 6
  store ptr @.str.13, ptr %2136, align 8, !tbaa !32
  %2137 = load ptr, ptr %6, align 8, !tbaa !5
  %2138 = getelementptr inbounds %struct.inflate_state, ptr %2137, i32 0, i32 0
  store i32 27, ptr %2138, align 8, !tbaa !17
  br label %2767

2139:                                             ; preds = %2128
  %2140 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2141 = load i8, ptr %2140, align 2, !tbaa !86
  %2142 = zext i8 %2141 to i32
  %2143 = and i32 %2142, 15
  %2144 = load ptr, ptr %6, align 8, !tbaa !5
  %2145 = getelementptr inbounds %struct.inflate_state, ptr %2144, i32 0, i32 18
  store i32 %2143, ptr %2145, align 4, !tbaa !87
  %2146 = load ptr, ptr %6, align 8, !tbaa !5
  %2147 = getelementptr inbounds %struct.inflate_state, ptr %2146, i32 0, i32 0
  store i32 19, ptr %2147, align 8, !tbaa !17
  br label %2148

2148:                                             ; preds = %2139, %81
  %2149 = load ptr, ptr %6, align 8, !tbaa !5
  %2150 = getelementptr inbounds %struct.inflate_state, ptr %2149, i32 0, i32 18
  %2151 = load i32, ptr %2150, align 4, !tbaa !87
  %2152 = icmp ne i32 %2151, 0
  br i1 %2152, label %2153, label %2211

2153:                                             ; preds = %2148
  br label %2154

2154:                                             ; preds = %2153
  br label %2155

2155:                                             ; preds = %2181, %2154
  %2156 = load i32, ptr %12, align 4, !tbaa !9
  %2157 = load ptr, ptr %6, align 8, !tbaa !5
  %2158 = getelementptr inbounds %struct.inflate_state, ptr %2157, i32 0, i32 18
  %2159 = load i32, ptr %2158, align 4, !tbaa !87
  %2160 = icmp ult i32 %2156, %2159
  br i1 %2160, label %2161, label %2182

2161:                                             ; preds = %2155
  br label %2162

2162:                                             ; preds = %2161
  %2163 = load i32, ptr %9, align 4, !tbaa !9
  %2164 = icmp eq i32 %2163, 0
  br i1 %2164, label %2165, label %2166

2165:                                             ; preds = %2162
  br label %2768

2166:                                             ; preds = %2162
  %2167 = load i32, ptr %9, align 4, !tbaa !9
  %2168 = add i32 %2167, -1
  store i32 %2168, ptr %9, align 4, !tbaa !9
  %2169 = load ptr, ptr %7, align 8, !tbaa !5
  %2170 = getelementptr inbounds i8, ptr %2169, i32 1
  store ptr %2170, ptr %7, align 8, !tbaa !5
  %2171 = load i8, ptr %2169, align 1, !tbaa !24
  %2172 = zext i8 %2171 to i64
  %2173 = load i32, ptr %12, align 4, !tbaa !9
  %2174 = zext i32 %2173 to i64
  %2175 = shl i64 %2172, %2174
  %2176 = load i64, ptr %11, align 8, !tbaa !21
  %2177 = add i64 %2176, %2175
  store i64 %2177, ptr %11, align 8, !tbaa !21
  %2178 = load i32, ptr %12, align 4, !tbaa !9
  %2179 = add i32 %2178, 8
  store i32 %2179, ptr %12, align 4, !tbaa !9
  br label %2180

2180:                                             ; preds = %2166
  br label %2181

2181:                                             ; preds = %2180
  br label %2155, !llvm.loop !88

2182:                                             ; preds = %2155
  br label %2183

2183:                                             ; preds = %2182
  br label %2184

2184:                                             ; preds = %2183
  %2185 = load i64, ptr %11, align 8, !tbaa !21
  %2186 = trunc i64 %2185 to i32
  %2187 = load ptr, ptr %6, align 8, !tbaa !5
  %2188 = getelementptr inbounds %struct.inflate_state, ptr %2187, i32 0, i32 18
  %2189 = load i32, ptr %2188, align 4, !tbaa !87
  %2190 = shl i32 1, %2189
  %2191 = sub i32 %2190, 1
  %2192 = and i32 %2186, %2191
  %2193 = load ptr, ptr %6, align 8, !tbaa !5
  %2194 = getelementptr inbounds %struct.inflate_state, ptr %2193, i32 0, i32 16
  %2195 = load i32, ptr %2194, align 4, !tbaa !44
  %2196 = add i32 %2195, %2192
  store i32 %2196, ptr %2194, align 4, !tbaa !44
  br label %2197

2197:                                             ; preds = %2184
  %2198 = load ptr, ptr %6, align 8, !tbaa !5
  %2199 = getelementptr inbounds %struct.inflate_state, ptr %2198, i32 0, i32 18
  %2200 = load i32, ptr %2199, align 4, !tbaa !87
  %2201 = load i64, ptr %11, align 8, !tbaa !21
  %2202 = zext i32 %2200 to i64
  %2203 = lshr i64 %2201, %2202
  store i64 %2203, ptr %11, align 8, !tbaa !21
  %2204 = load ptr, ptr %6, align 8, !tbaa !5
  %2205 = getelementptr inbounds %struct.inflate_state, ptr %2204, i32 0, i32 18
  %2206 = load i32, ptr %2205, align 4, !tbaa !87
  %2207 = load i32, ptr %12, align 4, !tbaa !9
  %2208 = sub i32 %2207, %2206
  store i32 %2208, ptr %12, align 4, !tbaa !9
  br label %2209

2209:                                             ; preds = %2197
  br label %2210

2210:                                             ; preds = %2209
  br label %2211

2211:                                             ; preds = %2210, %2148
  %2212 = load ptr, ptr %6, align 8, !tbaa !5
  %2213 = getelementptr inbounds %struct.inflate_state, ptr %2212, i32 0, i32 0
  store i32 20, ptr %2213, align 8, !tbaa !17
  br label %2214

2214:                                             ; preds = %2211, %81
  br label %2215

2215:                                             ; preds = %2255, %2214
  %2216 = load ptr, ptr %6, align 8, !tbaa !5
  %2217 = getelementptr inbounds %struct.inflate_state, ptr %2216, i32 0, i32 20
  %2218 = load ptr, ptr %2217, align 8, !tbaa !84
  %2219 = load i64, ptr %11, align 8, !tbaa !21
  %2220 = trunc i64 %2219 to i32
  %2221 = load ptr, ptr %6, align 8, !tbaa !5
  %2222 = getelementptr inbounds %struct.inflate_state, ptr %2221, i32 0, i32 22
  %2223 = load i32, ptr %2222, align 4, !tbaa !85
  %2224 = shl i32 1, %2223
  %2225 = sub i32 %2224, 1
  %2226 = and i32 %2220, %2225
  %2227 = zext i32 %2226 to i64
  %2228 = getelementptr inbounds %struct.code, ptr %2218, i64 %2227
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %17, ptr align 2 %2228, i64 4, i1 false), !tbaa.struct !74
  %2229 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2230 = load i8, ptr %2229, align 1, !tbaa !75
  %2231 = zext i8 %2230 to i32
  %2232 = load i32, ptr %12, align 4, !tbaa !9
  %2233 = icmp ule i32 %2231, %2232
  br i1 %2233, label %2234, label %2235

2234:                                             ; preds = %2215
  br label %2256

2235:                                             ; preds = %2215
  br label %2236

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

2239:                                             ; preds = %2236
  br label %2768

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

2254:                                             ; preds = %2240
  br label %2255

2255:                                             ; preds = %2254
  br label %2215

2256:                                             ; preds = %2234
  %2257 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2258 = load i8, ptr %2257, align 2, !tbaa !86
  %2259 = zext i8 %2258 to i32
  %2260 = and i32 %2259, 240
  %2261 = icmp eq i32 %2260, 0
  br i1 %2261, label %2262, label %2335

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

2263:                                             ; preds = %2319, %2262
  %2264 = load ptr, ptr %6, align 8, !tbaa !5
  %2265 = getelementptr inbounds %struct.inflate_state, ptr %2264, i32 0, i32 20
  %2266 = load ptr, ptr %2265, align 8, !tbaa !84
  %2267 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 2
  %2268 = load i16, ptr %2267, align 2, !tbaa !77
  %2269 = zext i16 %2268 to i32
  %2270 = load i64, ptr %11, align 8, !tbaa !21
  %2271 = trunc i64 %2270 to i32
  %2272 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2273 = load i8, ptr %2272, align 1, !tbaa !75
  %2274 = zext i8 %2273 to i32
  %2275 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 0
  %2276 = load i8, ptr %2275, align 2, !tbaa !86
  %2277 = zext i8 %2276 to i32
  %2278 = add nsw i32 %2274, %2277
  %2279 = shl i32 1, %2278
  %2280 = sub i32 %2279, 1
  %2281 = and i32 %2271, %2280
  %2282 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2283 = load i8, ptr %2282, align 1, !tbaa !75
  %2284 = zext i8 %2283 to i32
  %2285 = lshr i32 %2281, %2284
  %2286 = add i32 %2269, %2285
  %2287 = zext i32 %2286 to i64
  %2288 = getelementptr inbounds %struct.code, ptr %2266, i64 %2287
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %17, ptr align 2 %2288, i64 4, i1 false), !tbaa.struct !74
  %2289 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2290 = load i8, ptr %2289, align 1, !tbaa !75
  %2291 = zext i8 %2290 to i32
  %2292 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2293 = load i8, ptr %2292, align 1, !tbaa !75
  %2294 = zext i8 %2293 to i32
  %2295 = add nsw i32 %2291, %2294
  %2296 = load i32, ptr %12, align 4, !tbaa !9
  %2297 = icmp ule i32 %2295, %2296
  br i1 %2297, label %2298, label %2299

2298:                                             ; preds = %2263
  br label %2320

2299:                                             ; preds = %2263
  br label %2300

2300:                                             ; preds = %2299
  %2301 = load i32, ptr %9, align 4, !tbaa !9
  %2302 = icmp eq i32 %2301, 0
  br i1 %2302, label %2303, label %2304

2303:                                             ; preds = %2300
  br label %2768

2304:                                             ; preds = %2300
  %2305 = load i32, ptr %9, align 4, !tbaa !9
  %2306 = add i32 %2305, -1
  store i32 %2306, ptr %9, align 4, !tbaa !9
  %2307 = load ptr, ptr %7, align 8, !tbaa !5
  %2308 = getelementptr inbounds i8, ptr %2307, i32 1
  store ptr %2308, ptr %7, align 8, !tbaa !5
  %2309 = load i8, ptr %2307, align 1, !tbaa !24
  %2310 = zext i8 %2309 to i64
  %2311 = load i32, ptr %12, align 4, !tbaa !9
  %2312 = zext i32 %2311 to i64
  %2313 = shl i64 %2310, %2312
  %2314 = load i64, ptr %11, align 8, !tbaa !21
  %2315 = add i64 %2314, %2313
  store i64 %2315, ptr %11, align 8, !tbaa !21
  %2316 = load i32, ptr %12, align 4, !tbaa !9
  %2317 = add i32 %2316, 8
  store i32 %2317, ptr %12, align 4, !tbaa !9
  br label %2318

2318:                                             ; preds = %2304
  br label %2319

2319:                                             ; preds = %2318
  br label %2263

2320:                                             ; preds = %2298
  br label %2321

2321:                                             ; preds = %2320
  %2322 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2323 = load i8, ptr %2322, align 1, !tbaa !75
  %2324 = zext i8 %2323 to i32
  %2325 = load i64, ptr %11, align 8, !tbaa !21
  %2326 = zext i32 %2324 to i64
  %2327 = lshr i64 %2325, %2326
  store i64 %2327, ptr %11, align 8, !tbaa !21
  %2328 = getelementptr inbounds %struct.code, ptr %18, i32 0, i32 1
  %2329 = load i8, ptr %2328, align 1, !tbaa !75
  %2330 = zext i8 %2329 to i32
  %2331 = load i32, ptr %12, align 4, !tbaa !9
  %2332 = sub i32 %2331, %2330
  store i32 %2332, ptr %12, align 4, !tbaa !9
  br label %2333

2333:                                             ; preds = %2321
  br label %2334

2334:                                             ; preds = %2333
  br label %2335

2335:                                             ; preds = %2334, %2256
  br label %2336

2336:                                             ; preds = %2335
  %2337 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2338 = load i8, ptr %2337, align 1, !tbaa !75
  %2339 = zext i8 %2338 to i32
  %2340 = load i64, ptr %11, align 8, !tbaa !21
  %2341 = zext i32 %2339 to i64
  %2342 = lshr i64 %2340, %2341
  store i64 %2342, ptr %11, align 8, !tbaa !21
  %2343 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 1
  %2344 = load i8, ptr %2343, align 1, !tbaa !75
  %2345 = zext i8 %2344 to i32
  %2346 = load i32, ptr %12, align 4, !tbaa !9
  %2347 = sub i32 %2346, %2345
  store i32 %2347, ptr %12, align 4, !tbaa !9
  br label %2348

2348:                                             ; preds = %2336
  br label %2349

2349:                                             ; preds = %2348
  %2350 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2351 = load i8, ptr %2350, align 2, !tbaa !86
  %2352 = zext i8 %2351 to i32
  %2353 = and i32 %2352, 64
  %2354 = icmp ne i32 %2353, 0
  br i1 %2354, label %2355, label %2360

2355:                                             ; preds = %2349
  %2356 = load ptr, ptr %4, align 8, !tbaa !5
  %2357 = getelementptr inbounds %struct.z_stream_s, ptr %2356, i32 0, i32 6
  store ptr @.str.14, ptr %2357, align 8, !tbaa !32
  %2358 = load ptr, ptr %6, align 8, !tbaa !5
  %2359 = getelementptr inbounds %struct.inflate_state, ptr %2358, i32 0, i32 0
  store i32 27, ptr %2359, align 8, !tbaa !17
  br label %2767

2360:                                             ; preds = %2349
  %2361 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 2
  %2362 = load i16, ptr %2361, align 2, !tbaa !77
  %2363 = zext i16 %2362 to i32
  %2364 = load ptr, ptr %6, align 8, !tbaa !5
  %2365 = getelementptr inbounds %struct.inflate_state, ptr %2364, i32 0, i32 17
  store i32 %2363, ptr %2365, align 8, !tbaa !89
  %2366 = getelementptr inbounds %struct.code, ptr %17, i32 0, i32 0
  %2367 = load i8, ptr %2366, align 2, !tbaa !86
  %2368 = zext i8 %2367 to i32
  %2369 = and i32 %2368, 15
  %2370 = load ptr, ptr %6, align 8, !tbaa !5
  %2371 = getelementptr inbounds %struct.inflate_state, ptr %2370, i32 0, i32 18
  store i32 %2369, ptr %2371, align 4, !tbaa !87
  %2372 = load ptr, ptr %6, align 8, !tbaa !5
  %2373 = getelementptr inbounds %struct.inflate_state, ptr %2372, i32 0, i32 0
  store i32 21, ptr %2373, align 8, !tbaa !17
  br label %2374

2374:                                             ; preds = %2360, %81
  %2375 = load ptr, ptr %6, align 8, !tbaa !5
  %2376 = getelementptr inbounds %struct.inflate_state, ptr %2375, i32 0, i32 18
  %2377 = load i32, ptr %2376, align 4, !tbaa !87
  %2378 = icmp ne i32 %2377, 0
  br i1 %2378, label %2379, label %2437

2379:                                             ; preds = %2374
  br label %2380

2380:                                             ; preds = %2379
  br label %2381

2381:                                             ; preds = %2407, %2380
  %2382 = load i32, ptr %12, align 4, !tbaa !9
  %2383 = load ptr, ptr %6, align 8, !tbaa !5
  %2384 = getelementptr inbounds %struct.inflate_state, ptr %2383, i32 0, i32 18
  %2385 = load i32, ptr %2384, align 4, !tbaa !87
  %2386 = icmp ult i32 %2382, %2385
  br i1 %2386, label %2387, label %2408

2387:                                             ; preds = %2381
  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 %2768

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 %2381, !llvm.loop !90

2408:                                             ; preds = %2381
  br label %2409

2409:                                             ; preds = %2408
  br label %2410

2410:                                             ; preds = %2409
  %2411 = load i64, ptr %11, align 8, !tbaa !21
  %2412 = trunc i64 %2411 to i32
  %2413 = load ptr, ptr %6, align 8, !tbaa !5
  %2414 = getelementptr inbounds %struct.inflate_state, ptr %2413, i32 0, i32 18
  %2415 = load i32, ptr %2414, align 4, !tbaa !87
  %2416 = shl i32 1, %2415
  %2417 = sub i32 %2416, 1
  %2418 = and i32 %2412, %2417
  %2419 = load ptr, ptr %6, align 8, !tbaa !5
  %2420 = getelementptr inbounds %struct.inflate_state, ptr %2419, i32 0, i32 17
  %2421 = load i32, ptr %2420, align 8, !tbaa !89
  %2422 = add i32 %2421, %2418
  store i32 %2422, ptr %2420, align 8, !tbaa !89
  br label %2423

2423:                                             ; preds = %2410
  %2424 = load ptr, ptr %6, align 8, !tbaa !5
  %2425 = getelementptr inbounds %struct.inflate_state, ptr %2424, i32 0, i32 18
  %2426 = load i32, ptr %2425, align 4, !tbaa !87
  %2427 = load i64, ptr %11, align 8, !tbaa !21
  %2428 = zext i32 %2426 to i64
  %2429 = lshr i64 %2427, %2428
  store i64 %2429, ptr %11, align 8, !tbaa !21
  %2430 = load ptr, ptr %6, align 8, !tbaa !5
  %2431 = getelementptr inbounds %struct.inflate_state, ptr %2430, i32 0, i32 18
  %2432 = load i32, ptr %2431, align 4, !tbaa !87
  %2433 = load i32, ptr %12, align 4, !tbaa !9
  %2434 = sub i32 %2433, %2432
  store i32 %2434, ptr %12, align 4, !tbaa !9
  br label %2435

2435:                                             ; preds = %2423
  br label %2436

2436:                                             ; preds = %2435
  br label %2437

2437:                                             ; preds = %2436, %2374
  %2438 = load ptr, ptr %6, align 8, !tbaa !5
  %2439 = getelementptr inbounds %struct.inflate_state, ptr %2438, i32 0, i32 17
  %2440 = load i32, ptr %2439, align 8, !tbaa !89
  %2441 = load ptr, ptr %6, align 8, !tbaa !5
  %2442 = getelementptr inbounds %struct.inflate_state, ptr %2441, i32 0, i32 11
  %2443 = load i32, ptr %2442, align 8, !tbaa !91
  %2444 = load i32, ptr %14, align 4, !tbaa !9
  %2445 = add i32 %2443, %2444
  %2446 = load i32, ptr %10, align 4, !tbaa !9
  %2447 = sub i32 %2445, %2446
  %2448 = icmp ugt i32 %2440, %2447
  br i1 %2448, label %2449, label %2454

2449:                                             ; preds = %2437
  %2450 = load ptr, ptr %4, align 8, !tbaa !5
  %2451 = getelementptr inbounds %struct.z_stream_s, ptr %2450, i32 0, i32 6
  store ptr @.str.15, ptr %2451, align 8, !tbaa !32
  %2452 = load ptr, ptr %6, align 8, !tbaa !5
  %2453 = getelementptr inbounds %struct.inflate_state, ptr %2452, i32 0, i32 0
  store i32 27, ptr %2453, align 8, !tbaa !17
  br label %2767

2454:                                             ; preds = %2437
  %2455 = load ptr, ptr %6, align 8, !tbaa !5
  %2456 = getelementptr inbounds %struct.inflate_state, ptr %2455, i32 0, i32 0
  store i32 22, ptr %2456, align 8, !tbaa !17
  br label %2457

2457:                                             ; preds = %2454, %81
  %2458 = load i32, ptr %10, align 4, !tbaa !9
  %2459 = icmp eq i32 %2458, 0
  br i1 %2459, label %2460, label %2461

2460:                                             ; preds = %2457
  br label %2768

2461:                                             ; preds = %2457
  %2462 = load i32, ptr %14, align 4, !tbaa !9
  %2463 = load i32, ptr %10, align 4, !tbaa !9
  %2464 = sub i32 %2462, %2463
  store i32 %2464, ptr %15, align 4, !tbaa !9
  %2465 = load ptr, ptr %6, align 8, !tbaa !5
  %2466 = getelementptr inbounds %struct.inflate_state, ptr %2465, i32 0, i32 17
  %2467 = load i32, ptr %2466, align 8, !tbaa !89
  %2468 = load i32, ptr %15, align 4, !tbaa !9
  %2469 = icmp ugt i32 %2467, %2468
  br i1 %2469, label %2470, label %2519

2470:                                             ; preds = %2461
  %2471 = load ptr, ptr %6, align 8, !tbaa !5
  %2472 = getelementptr inbounds %struct.inflate_state, ptr %2471, i32 0, i32 17
  %2473 = load i32, ptr %2472, align 8, !tbaa !89
  %2474 = load i32, ptr %15, align 4, !tbaa !9
  %2475 = sub i32 %2473, %2474
  store i32 %2475, ptr %15, align 4, !tbaa !9
  %2476 = load i32, ptr %15, align 4, !tbaa !9
  %2477 = load ptr, ptr %6, align 8, !tbaa !5
  %2478 = getelementptr inbounds %struct.inflate_state, ptr %2477, i32 0, i32 12
  %2479 = load i32, ptr %2478, align 4, !tbaa !92
  %2480 = icmp ugt i32 %2476, %2479
  br i1 %2480, label %2481, label %2497

2481:                                             ; preds = %2470
  %2482 = load ptr, ptr %6, align 8, !tbaa !5
  %2483 = getelementptr inbounds %struct.inflate_state, ptr %2482, i32 0, i32 12
  %2484 = load i32, ptr %2483, align 4, !tbaa !92
  %2485 = load i32, ptr %15, align 4, !tbaa !9
  %2486 = sub i32 %2485, %2484
  store i32 %2486, ptr %15, align 4, !tbaa !9
  %2487 = load ptr, ptr %6, align 8, !tbaa !5
  %2488 = getelementptr inbounds %struct.inflate_state, ptr %2487, i32 0, i32 13
  %2489 = load ptr, ptr %2488, align 8, !tbaa !93
  %2490 = load ptr, ptr %6, align 8, !tbaa !5
  %2491 = getelementptr inbounds %struct.inflate_state, ptr %2490, i32 0, i32 10
  %2492 = load i32, ptr %2491, align 4, !tbaa !94
  %2493 = load i32, ptr %15, align 4, !tbaa !9
  %2494 = sub i32 %2492, %2493
  %2495 = zext i32 %2494 to i64
  %2496 = getelementptr inbounds i8, ptr %2489, i64 %2495
  store ptr %2496, ptr %16, align 8, !tbaa !5
  br label %2508

2497:                                             ; preds = %2470
  %2498 = load ptr, ptr %6, align 8, !tbaa !5
  %2499 = getelementptr inbounds %struct.inflate_state, ptr %2498, i32 0, i32 13
  %2500 = load ptr, ptr %2499, align 8, !tbaa !93
  %2501 = load ptr, ptr %6, align 8, !tbaa !5
  %2502 = getelementptr inbounds %struct.inflate_state, ptr %2501, i32 0, i32 12
  %2503 = load i32, ptr %2502, align 4, !tbaa !92
  %2504 = load i32, ptr %15, align 4, !tbaa !9
  %2505 = sub i32 %2503, %2504
  %2506 = zext i32 %2505 to i64
  %2507 = getelementptr inbounds i8, ptr %2500, i64 %2506
  store ptr %2507, ptr %16, align 8, !tbaa !5
  br label %2508

2508:                                             ; preds = %2497, %2481
  %2509 = load i32, ptr %15, align 4, !tbaa !9
  %2510 = load ptr, ptr %6, align 8, !tbaa !5
  %2511 = getelementptr inbounds %struct.inflate_state, ptr %2510, i32 0, i32 16
  %2512 = load i32, ptr %2511, align 4, !tbaa !44
  %2513 = icmp ugt i32 %2509, %2512
  br i1 %2513, label %2514, label %2518

2514:                                             ; preds = %2508
  %2515 = load ptr, ptr %6, align 8, !tbaa !5
  %2516 = getelementptr inbounds %struct.inflate_state, ptr %2515, i32 0, i32 16
  %2517 = load i32, ptr %2516, align 4, !tbaa !44
  store i32 %2517, ptr %15, align 4, !tbaa !9
  br label %2518

2518:                                             ; preds = %2514, %2508
  br label %2530

2519:                                             ; preds = %2461
  %2520 = load ptr, ptr %8, align 8, !tbaa !5
  %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 !89
  %2524 = zext i32 %2523 to i64
  %2525 = sub i64 0, %2524
  %2526 = getelementptr inbounds i8, ptr %2520, i64 %2525
  store ptr %2526, ptr %16, align 8, !tbaa !5
  %2527 = load ptr, ptr %6, align 8, !tbaa !5
  %2528 = getelementptr inbounds %struct.inflate_state, ptr %2527, i32 0, i32 16
  %2529 = load i32, ptr %2528, align 4, !tbaa !44
  store i32 %2529, ptr %15, align 4, !tbaa !9
  br label %2530

2530:                                             ; preds = %2519, %2518
  %2531 = load i32, ptr %15, align 4, !tbaa !9
  %2532 = load i32, ptr %10, align 4, !tbaa !9
  %2533 = icmp ugt i32 %2531, %2532
  br i1 %2533, label %2534, label %2536

2534:                                             ; preds = %2530
  %2535 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %2535, ptr %15, align 4, !tbaa !9
  br label %2536

2536:                                             ; preds = %2534, %2530
  %2537 = load i32, ptr %15, align 4, !tbaa !9
  %2538 = load i32, ptr %10, align 4, !tbaa !9
  %2539 = sub i32 %2538, %2537
  store i32 %2539, ptr %10, align 4, !tbaa !9
  %2540 = load i32, ptr %15, align 4, !tbaa !9
  %2541 = load ptr, ptr %6, align 8, !tbaa !5
  %2542 = getelementptr inbounds %struct.inflate_state, ptr %2541, i32 0, i32 16
  %2543 = load i32, ptr %2542, align 4, !tbaa !44
  %2544 = sub i32 %2543, %2540
  store i32 %2544, ptr %2542, align 4, !tbaa !44
  br label %2545

2545:                                             ; preds = %2551, %2536
  %2546 = load ptr, ptr %16, align 8, !tbaa !5
  %2547 = getelementptr inbounds i8, ptr %2546, i32 1
  store ptr %2547, ptr %16, align 8, !tbaa !5
  %2548 = load i8, ptr %2546, align 1, !tbaa !24
  %2549 = load ptr, ptr %8, align 8, !tbaa !5
  %2550 = getelementptr inbounds i8, ptr %2549, i32 1
  store ptr %2550, ptr %8, align 8, !tbaa !5
  store i8 %2548, ptr %2549, align 1, !tbaa !24
  br label %2551

2551:                                             ; preds = %2545
  %2552 = load i32, ptr %15, align 4, !tbaa !9
  %2553 = add i32 %2552, -1
  store i32 %2553, ptr %15, align 4, !tbaa !9
  %2554 = icmp ne i32 %2553, 0
  br i1 %2554, label %2545, label %2555, !llvm.loop !95

2555:                                             ; preds = %2551
  %2556 = load ptr, ptr %6, align 8, !tbaa !5
  %2557 = getelementptr inbounds %struct.inflate_state, ptr %2556, i32 0, i32 16
  %2558 = load i32, ptr %2557, align 4, !tbaa !44
  %2559 = icmp eq i32 %2558, 0
  br i1 %2559, label %2560, label %2563

2560:                                             ; preds = %2555
  %2561 = load ptr, ptr %6, align 8, !tbaa !5
  %2562 = getelementptr inbounds %struct.inflate_state, ptr %2561, i32 0, i32 0
  store i32 18, ptr %2562, align 8, !tbaa !17
  br label %2563

2563:                                             ; preds = %2560, %2555
  br label %2767

2564:                                             ; preds = %81
  %2565 = load i32, ptr %10, align 4, !tbaa !9
  %2566 = icmp eq i32 %2565, 0
  br i1 %2566, label %2567, label %2568

2567:                                             ; preds = %2564
  br label %2768

2568:                                             ; preds = %2564
  %2569 = load ptr, ptr %6, align 8, !tbaa !5
  %2570 = getelementptr inbounds %struct.inflate_state, ptr %2569, i32 0, i32 16
  %2571 = load i32, ptr %2570, align 4, !tbaa !44
  %2572 = trunc i32 %2571 to i8
  %2573 = load ptr, ptr %8, align 8, !tbaa !5
  %2574 = getelementptr inbounds i8, ptr %2573, i32 1
  store ptr %2574, ptr %8, align 8, !tbaa !5
  store i8 %2572, ptr %2573, align 1, !tbaa !24
  %2575 = load i32, ptr %10, align 4, !tbaa !9
  %2576 = add i32 %2575, -1
  store i32 %2576, ptr %10, align 4, !tbaa !9
  %2577 = load ptr, ptr %6, align 8, !tbaa !5
  %2578 = getelementptr inbounds %struct.inflate_state, ptr %2577, i32 0, i32 0
  store i32 18, ptr %2578, align 8, !tbaa !17
  br label %2767

2579:                                             ; preds = %81
  %2580 = load ptr, ptr %6, align 8, !tbaa !5
  %2581 = getelementptr inbounds %struct.inflate_state, ptr %2580, i32 0, i32 2
  %2582 = load i32, ptr %2581, align 8, !tbaa !23
  %2583 = icmp ne i32 %2582, 0
  br i1 %2583, label %2584, label %2702

2584:                                             ; preds = %2579
  br label %2585

2585:                                             ; preds = %2584
  br label %2586

2586:                                             ; preds = %2609, %2585
  %2587 = load i32, ptr %12, align 4, !tbaa !9
  %2588 = icmp ult i32 %2587, 32
  br i1 %2588, label %2589, label %2610

2589:                                             ; preds = %2586
  br label %2590

2590:                                             ; preds = %2589
  %2591 = load i32, ptr %9, align 4, !tbaa !9
  %2592 = icmp eq i32 %2591, 0
  br i1 %2592, label %2593, label %2594

2593:                                             ; preds = %2590
  br label %2768

2594:                                             ; preds = %2590
  %2595 = load i32, ptr %9, align 4, !tbaa !9
  %2596 = add i32 %2595, -1
  store i32 %2596, ptr %9, align 4, !tbaa !9
  %2597 = load ptr, ptr %7, align 8, !tbaa !5
  %2598 = getelementptr inbounds i8, ptr %2597, i32 1
  store ptr %2598, ptr %7, align 8, !tbaa !5
  %2599 = load i8, ptr %2597, align 1, !tbaa !24
  %2600 = zext i8 %2599 to i64
  %2601 = load i32, ptr %12, align 4, !tbaa !9
  %2602 = zext i32 %2601 to i64
  %2603 = shl i64 %2600, %2602
  %2604 = load i64, ptr %11, align 8, !tbaa !21
  %2605 = add i64 %2604, %2603
  store i64 %2605, ptr %11, align 8, !tbaa !21
  %2606 = load i32, ptr %12, align 4, !tbaa !9
  %2607 = add i32 %2606, 8
  store i32 %2607, ptr %12, align 4, !tbaa !9
  br label %2608

2608:                                             ; preds = %2594
  br label %2609

2609:                                             ; preds = %2608
  br label %2586, !llvm.loop !96

2610:                                             ; preds = %2586
  br label %2611

2611:                                             ; preds = %2610
  br label %2612

2612:                                             ; preds = %2611
  %2613 = load i32, ptr %10, align 4, !tbaa !9
  %2614 = load i32, ptr %14, align 4, !tbaa !9
  %2615 = sub i32 %2614, %2613
  store i32 %2615, ptr %14, align 4, !tbaa !9
  %2616 = load i32, ptr %14, align 4, !tbaa !9
  %2617 = zext i32 %2616 to i64
  %2618 = load ptr, ptr %4, align 8, !tbaa !5
  %2619 = getelementptr inbounds %struct.z_stream_s, ptr %2618, i32 0, i32 5
  %2620 = load i64, ptr %2619, align 8, !tbaa !97
  %2621 = add i64 %2620, %2617
  store i64 %2621, ptr %2619, align 8, !tbaa !97
  %2622 = load i32, ptr %14, align 4, !tbaa !9
  %2623 = zext i32 %2622 to i64
  %2624 = load ptr, ptr %6, align 8, !tbaa !5
  %2625 = getelementptr inbounds %struct.inflate_state, ptr %2624, i32 0, i32 7
  %2626 = load i64, ptr %2625, align 8, !tbaa !98
  %2627 = add i64 %2626, %2623
  store i64 %2627, ptr %2625, align 8, !tbaa !98
  %2628 = load i32, ptr %14, align 4, !tbaa !9
  %2629 = icmp ne i32 %2628, 0
  br i1 %2629, label %2630, label %2663

2630:                                             ; preds = %2612
  %2631 = load ptr, ptr %6, align 8, !tbaa !5
  %2632 = getelementptr inbounds %struct.inflate_state, ptr %2631, i32 0, i32 4
  %2633 = load i32, ptr %2632, align 8, !tbaa !28
  %2634 = icmp ne i32 %2633, 0
  br i1 %2634, label %2635, label %2646

2635:                                             ; preds = %2630
  %2636 = load ptr, ptr %6, align 8, !tbaa !5
  %2637 = getelementptr inbounds %struct.inflate_state, ptr %2636, i32 0, i32 6
  %2638 = load i64, ptr %2637, align 8, !tbaa !27
  %2639 = load ptr, ptr %8, align 8, !tbaa !5
  %2640 = load i32, ptr %14, align 4, !tbaa !9
  %2641 = zext i32 %2640 to i64
  %2642 = sub i64 0, %2641
  %2643 = getelementptr inbounds i8, ptr %2639, i64 %2642
  %2644 = load i32, ptr %14, align 4, !tbaa !9
  %2645 = call i64 @z_crc32(i64 noundef %2638, ptr noundef %2643, i32 noundef %2644)
  br label %2657

2646:                                             ; preds = %2630
  %2647 = load ptr, ptr %6, align 8, !tbaa !5
  %2648 = getelementptr inbounds %struct.inflate_state, ptr %2647, i32 0, i32 6
  %2649 = load i64, ptr %2648, align 8, !tbaa !27
  %2650 = load ptr, ptr %8, align 8, !tbaa !5
  %2651 = load i32, ptr %14, align 4, !tbaa !9
  %2652 = zext i32 %2651 to i64
  %2653 = sub i64 0, %2652
  %2654 = getelementptr inbounds i8, ptr %2650, i64 %2653
  %2655 = load i32, ptr %14, align 4, !tbaa !9
  %2656 = call i64 @z_adler32(i64 noundef %2649, ptr noundef %2654, i32 noundef %2655)
  br label %2657

2657:                                             ; preds = %2646, %2635
  %2658 = phi i64 [ %2645, %2635 ], [ %2656, %2646 ]
  %2659 = load ptr, ptr %6, align 8, !tbaa !5
  %2660 = getelementptr inbounds %struct.inflate_state, ptr %2659, i32 0, i32 6
  store i64 %2658, ptr %2660, align 8, !tbaa !27
  %2661 = load ptr, ptr %4, align 8, !tbaa !5
  %2662 = getelementptr inbounds %struct.z_stream_s, ptr %2661, i32 0, i32 12
  store i64 %2658, ptr %2662, align 8, !tbaa !35
  br label %2663

2663:                                             ; preds = %2657, %2612
  %2664 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %2664, ptr %14, align 4, !tbaa !9
  %2665 = load ptr, ptr %6, align 8, !tbaa !5
  %2666 = getelementptr inbounds %struct.inflate_state, ptr %2665, i32 0, i32 4
  %2667 = load i32, ptr %2666, align 8, !tbaa !28
  %2668 = icmp ne i32 %2667, 0
  br i1 %2668, label %2669, label %2671

2669:                                             ; preds = %2663
  %2670 = load i64, ptr %11, align 8, !tbaa !21
  br label %2687

2671:                                             ; preds = %2663
  %2672 = load i64, ptr %11, align 8, !tbaa !21
  %2673 = lshr i64 %2672, 24
  %2674 = and i64 %2673, 255
  %2675 = load i64, ptr %11, align 8, !tbaa !21
  %2676 = lshr i64 %2675, 8
  %2677 = and i64 %2676, 65280
  %2678 = add i64 %2674, %2677
  %2679 = load i64, ptr %11, align 8, !tbaa !21
  %2680 = and i64 %2679, 65280
  %2681 = shl i64 %2680, 8
  %2682 = add i64 %2678, %2681
  %2683 = load i64, ptr %11, align 8, !tbaa !21
  %2684 = and i64 %2683, 255
  %2685 = shl i64 %2684, 24
  %2686 = add i64 %2682, %2685
  br label %2687

2687:                                             ; preds = %2671, %2669
  %2688 = phi i64 [ %2670, %2669 ], [ %2686, %2671 ]
  %2689 = load ptr, ptr %6, align 8, !tbaa !5
  %2690 = getelementptr inbounds %struct.inflate_state, ptr %2689, i32 0, i32 6
  %2691 = load i64, ptr %2690, align 8, !tbaa !27
  %2692 = icmp ne i64 %2688, %2691
  br i1 %2692, label %2693, label %2698

2693:                                             ; preds = %2687
  %2694 = load ptr, ptr %4, align 8, !tbaa !5
  %2695 = getelementptr inbounds %struct.z_stream_s, ptr %2694, i32 0, i32 6
  store ptr @.str.16, ptr %2695, align 8, !tbaa !32
  %2696 = load ptr, ptr %6, align 8, !tbaa !5
  %2697 = getelementptr inbounds %struct.inflate_state, ptr %2696, i32 0, i32 0
  store i32 27, ptr %2697, align 8, !tbaa !17
  br label %2767

2698:                                             ; preds = %2687
  br label %2699

2699:                                             ; preds = %2698
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %2700

2700:                                             ; preds = %2699
  br label %2701

2701:                                             ; preds = %2700
  br label %2702

2702:                                             ; preds = %2701, %2579
  %2703 = load ptr, ptr %6, align 8, !tbaa !5
  %2704 = getelementptr inbounds %struct.inflate_state, ptr %2703, i32 0, i32 0
  store i32 25, ptr %2704, align 8, !tbaa !17
  br label %2705

2705:                                             ; preds = %2702, %81
  %2706 = load ptr, ptr %6, align 8, !tbaa !5
  %2707 = getelementptr inbounds %struct.inflate_state, ptr %2706, i32 0, i32 2
  %2708 = load i32, ptr %2707, align 8, !tbaa !23
  %2709 = icmp ne i32 %2708, 0
  br i1 %2709, label %2710, label %2759

2710:                                             ; preds = %2705
  %2711 = load ptr, ptr %6, align 8, !tbaa !5
  %2712 = getelementptr inbounds %struct.inflate_state, ptr %2711, i32 0, i32 4
  %2713 = load i32, ptr %2712, align 8, !tbaa !28
  %2714 = icmp ne i32 %2713, 0
  br i1 %2714, label %2715, label %2759

2715:                                             ; preds = %2710
  br label %2716

2716:                                             ; preds = %2715
  br label %2717

2717:                                             ; preds = %2740, %2716
  %2718 = load i32, ptr %12, align 4, !tbaa !9
  %2719 = icmp ult i32 %2718, 32
  br i1 %2719, label %2720, label %2741

2720:                                             ; preds = %2717
  br label %2721

2721:                                             ; preds = %2720
  %2722 = load i32, ptr %9, align 4, !tbaa !9
  %2723 = icmp eq i32 %2722, 0
  br i1 %2723, label %2724, label %2725

2724:                                             ; preds = %2721
  br label %2768

2725:                                             ; preds = %2721
  %2726 = load i32, ptr %9, align 4, !tbaa !9
  %2727 = add i32 %2726, -1
  store i32 %2727, ptr %9, align 4, !tbaa !9
  %2728 = load ptr, ptr %7, align 8, !tbaa !5
  %2729 = getelementptr inbounds i8, ptr %2728, i32 1
  store ptr %2729, ptr %7, align 8, !tbaa !5
  %2730 = load i8, ptr %2728, align 1, !tbaa !24
  %2731 = zext i8 %2730 to i64
  %2732 = load i32, ptr %12, align 4, !tbaa !9
  %2733 = zext i32 %2732 to i64
  %2734 = shl i64 %2731, %2733
  %2735 = load i64, ptr %11, align 8, !tbaa !21
  %2736 = add i64 %2735, %2734
  store i64 %2736, ptr %11, align 8, !tbaa !21
  %2737 = load i32, ptr %12, align 4, !tbaa !9
  %2738 = add i32 %2737, 8
  store i32 %2738, ptr %12, align 4, !tbaa !9
  br label %2739

2739:                                             ; preds = %2725
  br label %2740

2740:                                             ; preds = %2739
  br label %2717, !llvm.loop !99

2741:                                             ; preds = %2717
  br label %2742

2742:                                             ; preds = %2741
  br label %2743

2743:                                             ; preds = %2742
  %2744 = load i64, ptr %11, align 8, !tbaa !21
  %2745 = load ptr, ptr %6, align 8, !tbaa !5
  %2746 = getelementptr inbounds %struct.inflate_state, ptr %2745, i32 0, i32 7
  %2747 = load i64, ptr %2746, align 8, !tbaa !98
  %2748 = and i64 %2747, 4294967295
  %2749 = icmp ne i64 %2744, %2748
  br i1 %2749, label %2750, label %2755

2750:                                             ; preds = %2743
  %2751 = load ptr, ptr %4, align 8, !tbaa !5
  %2752 = getelementptr inbounds %struct.z_stream_s, ptr %2751, i32 0, i32 6
  store ptr @.str.17, ptr %2752, align 8, !tbaa !32
  %2753 = load ptr, ptr %6, align 8, !tbaa !5
  %2754 = getelementptr inbounds %struct.inflate_state, ptr %2753, i32 0, i32 0
  store i32 27, ptr %2754, align 8, !tbaa !17
  br label %2767

2755:                                             ; preds = %2743
  br label %2756

2756:                                             ; preds = %2755
  store i64 0, ptr %11, align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %2757

2757:                                             ; preds = %2756
  br label %2758

2758:                                             ; preds = %2757
  br label %2759

2759:                                             ; preds = %2758, %2710, %2705
  %2760 = load ptr, ptr %6, align 8, !tbaa !5
  %2761 = getelementptr inbounds %struct.inflate_state, ptr %2760, i32 0, i32 0
  store i32 26, ptr %2761, align 8, !tbaa !17
  br label %2762

2762:                                             ; preds = %2759, %81
  store i32 1, ptr %20, align 4, !tbaa !9
  br label %2768

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

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

2765:                                             ; preds = %81
  br label %2766

2766:                                             ; preds = %2765, %81
  store i32 -2, ptr %3, align 4
  store i32 1, ptr %22, align 4
  br label %2921

2767:                                             ; preds = %2750, %2693, %2568, %2563, %2449, %2355, %2134, %2125, %2116, %1965, %1907, %1873, %1843, %1470, %1356, %1276, %1252, %1214, %1166, %1097, %979, %951, %291, %280, %241, %217, %195, %185, %153, %90
  br label %81

2768:                                             ; preds = %2763, %2762, %2724, %2593, %2567, %2460, %2391, %2303, %2239, %2165, %2060, %1991, %1755, %1697, %1614, %1552, %1518, %1384, %1288, %1251, %1188, %1109, %1078, %996, %925, %894, %814, %787, %707, %691, %510, %426, %349, %251, %102
  br label %2769

2769:                                             ; preds = %2768
  %2770 = load ptr, ptr %8, align 8, !tbaa !5
  %2771 = load ptr, ptr %4, align 8, !tbaa !5
  %2772 = getelementptr inbounds %struct.z_stream_s, ptr %2771, i32 0, i32 3
  store ptr %2770, ptr %2772, align 8, !tbaa !14
  %2773 = load i32, ptr %10, align 4, !tbaa !9
  %2774 = load ptr, ptr %4, align 8, !tbaa !5
  %2775 = getelementptr inbounds %struct.z_stream_s, ptr %2774, i32 0, i32 4
  store i32 %2773, ptr %2775, align 8, !tbaa !19
  %2776 = load ptr, ptr %7, align 8, !tbaa !5
  %2777 = load ptr, ptr %4, align 8, !tbaa !5
  %2778 = getelementptr inbounds %struct.z_stream_s, ptr %2777, i32 0, i32 0
  store ptr %2776, ptr %2778, align 8, !tbaa !15
  %2779 = load i32, ptr %9, align 4, !tbaa !9
  %2780 = load ptr, ptr %4, align 8, !tbaa !5
  %2781 = getelementptr inbounds %struct.z_stream_s, ptr %2780, i32 0, i32 1
  store i32 %2779, ptr %2781, align 8, !tbaa !16
  %2782 = load i64, ptr %11, align 8, !tbaa !21
  %2783 = load ptr, ptr %6, align 8, !tbaa !5
  %2784 = getelementptr inbounds %struct.inflate_state, ptr %2783, i32 0, i32 14
  store i64 %2782, ptr %2784, align 8, !tbaa !20
  %2785 = load i32, ptr %12, align 4, !tbaa !9
  %2786 = load ptr, ptr %6, align 8, !tbaa !5
  %2787 = getelementptr inbounds %struct.inflate_state, ptr %2786, i32 0, i32 15
  store i32 %2785, ptr %2787, align 8, !tbaa !22
  br label %2788

2788:                                             ; preds = %2769
  br label %2789

2789:                                             ; preds = %2788
  %2790 = load ptr, ptr %6, align 8, !tbaa !5
  %2791 = getelementptr inbounds %struct.inflate_state, ptr %2790, i32 0, i32 10
  %2792 = load i32, ptr %2791, align 4, !tbaa !94
  %2793 = icmp ne i32 %2792, 0
  br i1 %2793, label %2805, label %2794

2794:                                             ; preds = %2789
  %2795 = load ptr, ptr %6, align 8, !tbaa !5
  %2796 = getelementptr inbounds %struct.inflate_state, ptr %2795, i32 0, i32 0
  %2797 = load i32, ptr %2796, align 8, !tbaa !17
  %2798 = icmp ult i32 %2797, 24
  br i1 %2798, label %2799, label %2814

2799:                                             ; preds = %2794
  %2800 = load i32, ptr %14, align 4, !tbaa !9
  %2801 = load ptr, ptr %4, align 8, !tbaa !5
  %2802 = getelementptr inbounds %struct.z_stream_s, ptr %2801, i32 0, i32 4
  %2803 = load i32, ptr %2802, align 8, !tbaa !19
  %2804 = icmp ne i32 %2800, %2803
  br i1 %2804, label %2805, label %2814

2805:                                             ; preds = %2799, %2789
  %2806 = load ptr, ptr %4, align 8, !tbaa !5
  %2807 = load i32, ptr %14, align 4, !tbaa !9
  %2808 = call i32 @updatewindow(ptr noundef %2806, i32 noundef %2807)
  %2809 = icmp ne i32 %2808, 0
  br i1 %2809, label %2810, label %2813

2810:                                             ; preds = %2805
  %2811 = load ptr, ptr %6, align 8, !tbaa !5
  %2812 = getelementptr inbounds %struct.inflate_state, ptr %2811, i32 0, i32 0
  store i32 28, ptr %2812, align 8, !tbaa !17
  store i32 -4, ptr %3, align 4
  store i32 1, ptr %22, align 4
  br label %2921

2813:                                             ; preds = %2805
  br label %2814

2814:                                             ; preds = %2813, %2799, %2794
  %2815 = load ptr, ptr %4, align 8, !tbaa !5
  %2816 = getelementptr inbounds %struct.z_stream_s, ptr %2815, i32 0, i32 1
  %2817 = load i32, ptr %2816, align 8, !tbaa !16
  %2818 = load i32, ptr %13, align 4, !tbaa !9
  %2819 = sub i32 %2818, %2817
  store i32 %2819, ptr %13, align 4, !tbaa !9
  %2820 = load ptr, ptr %4, align 8, !tbaa !5
  %2821 = getelementptr inbounds %struct.z_stream_s, ptr %2820, i32 0, i32 4
  %2822 = load i32, ptr %2821, align 8, !tbaa !19
  %2823 = load i32, ptr %14, align 4, !tbaa !9
  %2824 = sub i32 %2823, %2822
  store i32 %2824, ptr %14, align 4, !tbaa !9
  %2825 = load i32, ptr %13, align 4, !tbaa !9
  %2826 = zext i32 %2825 to i64
  %2827 = load ptr, ptr %4, align 8, !tbaa !5
  %2828 = getelementptr inbounds %struct.z_stream_s, ptr %2827, i32 0, i32 2
  %2829 = load i64, ptr %2828, align 8, !tbaa !100
  %2830 = add i64 %2829, %2826
  store i64 %2830, ptr %2828, align 8, !tbaa !100
  %2831 = load i32, ptr %14, align 4, !tbaa !9
  %2832 = zext i32 %2831 to i64
  %2833 = load ptr, ptr %4, align 8, !tbaa !5
  %2834 = getelementptr inbounds %struct.z_stream_s, ptr %2833, i32 0, i32 5
  %2835 = load i64, ptr %2834, align 8, !tbaa !97
  %2836 = add i64 %2835, %2832
  store i64 %2836, ptr %2834, align 8, !tbaa !97
  %2837 = load i32, ptr %14, align 4, !tbaa !9
  %2838 = zext i32 %2837 to i64
  %2839 = load ptr, ptr %6, align 8, !tbaa !5
  %2840 = getelementptr inbounds %struct.inflate_state, ptr %2839, i32 0, i32 7
  %2841 = load i64, ptr %2840, align 8, !tbaa !98
  %2842 = add i64 %2841, %2838
  store i64 %2842, ptr %2840, align 8, !tbaa !98
  %2843 = load ptr, ptr %6, align 8, !tbaa !5
  %2844 = getelementptr inbounds %struct.inflate_state, ptr %2843, i32 0, i32 2
  %2845 = load i32, ptr %2844, align 8, !tbaa !23
  %2846 = icmp ne i32 %2845, 0
  br i1 %2846, label %2847, label %2887

2847:                                             ; preds = %2814
  %2848 = load i32, ptr %14, align 4, !tbaa !9
  %2849 = icmp ne i32 %2848, 0
  br i1 %2849, label %2850, label %2887

2850:                                             ; preds = %2847
  %2851 = load ptr, ptr %6, align 8, !tbaa !5
  %2852 = getelementptr inbounds %struct.inflate_state, ptr %2851, i32 0, i32 4
  %2853 = load i32, ptr %2852, align 8, !tbaa !28
  %2854 = icmp ne i32 %2853, 0
  br i1 %2854, label %2855, label %2868

2855:                                             ; preds = %2850
  %2856 = load ptr, ptr %6, align 8, !tbaa !5
  %2857 = getelementptr inbounds %struct.inflate_state, ptr %2856, i32 0, i32 6
  %2858 = load i64, ptr %2857, align 8, !tbaa !27
  %2859 = load ptr, ptr %4, align 8, !tbaa !5
  %2860 = getelementptr inbounds %struct.z_stream_s, ptr %2859, i32 0, i32 3
  %2861 = load ptr, ptr %2860, align 8, !tbaa !14
  %2862 = load i32, ptr %14, align 4, !tbaa !9
  %2863 = zext i32 %2862 to i64
  %2864 = sub i64 0, %2863
  %2865 = getelementptr inbounds i8, ptr %2861, i64 %2864
  %2866 = load i32, ptr %14, align 4, !tbaa !9
  %2867 = call i64 @z_crc32(i64 noundef %2858, ptr noundef %2865, i32 noundef %2866)
  br label %2881

2868:                                             ; preds = %2850
  %2869 = load ptr, ptr %6, align 8, !tbaa !5
  %2870 = getelementptr inbounds %struct.inflate_state, ptr %2869, i32 0, i32 6
  %2871 = load i64, ptr %2870, align 8, !tbaa !27
  %2872 = load ptr, ptr %4, align 8, !tbaa !5
  %2873 = getelementptr inbounds %struct.z_stream_s, ptr %2872, i32 0, i32 3
  %2874 = load ptr, ptr %2873, align 8, !tbaa !14
  %2875 = load i32, ptr %14, align 4, !tbaa !9
  %2876 = zext i32 %2875 to i64
  %2877 = sub i64 0, %2876
  %2878 = getelementptr inbounds i8, ptr %2874, i64 %2877
  %2879 = load i32, ptr %14, align 4, !tbaa !9
  %2880 = call i64 @z_adler32(i64 noundef %2871, ptr noundef %2878, i32 noundef %2879)
  br label %2881

2881:                                             ; preds = %2868, %2855
  %2882 = phi i64 [ %2867, %2855 ], [ %2880, %2868 ]
  %2883 = load ptr, ptr %6, align 8, !tbaa !5
  %2884 = getelementptr inbounds %struct.inflate_state, ptr %2883, i32 0, i32 6
  store i64 %2882, ptr %2884, align 8, !tbaa !27
  %2885 = load ptr, ptr %4, align 8, !tbaa !5
  %2886 = getelementptr inbounds %struct.z_stream_s, ptr %2885, i32 0, i32 12
  store i64 %2882, ptr %2886, align 8, !tbaa !35
  br label %2887

2887:                                             ; preds = %2881, %2847, %2814
  %2888 = load ptr, ptr %6, align 8, !tbaa !5
  %2889 = getelementptr inbounds %struct.inflate_state, ptr %2888, i32 0, i32 15
  %2890 = load i32, ptr %2889, align 8, !tbaa !22
  %2891 = load ptr, ptr %6, align 8, !tbaa !5
  %2892 = getelementptr inbounds %struct.inflate_state, ptr %2891, i32 0, i32 1
  %2893 = load i32, ptr %2892, align 4, !tbaa !58
  %2894 = icmp ne i32 %2893, 0
  %2895 = zext i1 %2894 to i64
  %2896 = select i1 %2894, i32 64, i32 0
  %2897 = add i32 %2890, %2896
  %2898 = load ptr, ptr %6, align 8, !tbaa !5
  %2899 = getelementptr inbounds %struct.inflate_state, ptr %2898, i32 0, i32 0
  %2900 = load i32, ptr %2899, align 8, !tbaa !17
  %2901 = icmp eq i32 %2900, 11
  %2902 = zext i1 %2901 to i64
  %2903 = select i1 %2901, i32 128, i32 0
  %2904 = add i32 %2897, %2903
  %2905 = load ptr, ptr %4, align 8, !tbaa !5
  %2906 = getelementptr inbounds %struct.z_stream_s, ptr %2905, i32 0, i32 11
  store i32 %2904, ptr %2906, align 8, !tbaa !101
  %2907 = load i32, ptr %13, align 4, !tbaa !9
  %2908 = icmp eq i32 %2907, 0
  br i1 %2908, label %2909, label %2912

2909:                                             ; preds = %2887
  %2910 = load i32, ptr %14, align 4, !tbaa !9
  %2911 = icmp eq i32 %2910, 0
  br i1 %2911, label %2915, label %2912

2912:                                             ; preds = %2909, %2887
  %2913 = load i32, ptr %5, align 4, !tbaa !9
  %2914 = icmp eq i32 %2913, 4
  br i1 %2914, label %2915, label %2919

2915:                                             ; preds = %2912, %2909
  %2916 = load i32, ptr %20, align 4, !tbaa !9
  %2917 = icmp eq i32 %2916, 0
  br i1 %2917, label %2918, label %2919

2918:                                             ; preds = %2915
  store i32 -5, ptr %20, align 4, !tbaa !9
  br label %2919

2919:                                             ; preds = %2918, %2915, %2912
  %2920 = load i32, ptr %20, align 4, !tbaa !9
  store i32 %2920, ptr %3, align 4
  store i32 1, ptr %22, align 4
  br label %2921

2921:                                             ; preds = %2919, %2810, %2766, %2764, %1066, %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
  %2922 = load i32, ptr %3, align 4
  ret i32 %2922
}

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

declare i64 @z_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}
!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 = !{!76, !7, i64 0}
!87 = !{!18, !10, i64 92}
!88 = distinct !{!88, !26}
!89 = !{!18, !10, i64 88}
!90 = distinct !{!90, !26}
!91 = !{!18, !10, i64 56}
!92 = !{!18, !10, i64 60}
!93 = !{!18, !6, i64 64}
!94 = !{!18, !10, i64 52}
!95 = distinct !{!95, !26}
!96 = distinct !{!96, !26}
!97 = !{!12, !13, i64 40}
!98 = !{!18, !13, i64 32}
!99 = distinct !{!99, !26}
!100 = !{!12, !13, i64 16}
!101 = !{!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 }

@z_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 [28 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.17 = 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 @z_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 %.loopexit1251, 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 %.loopexit1251, 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 %.loopexit1251, 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 %.loopexit1251

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 %.split2283

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

.split2283:                                       ; 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 104
  %51 = getelementptr inbounds i8, ptr %7, i64 116
  %52 = getelementptr inbounds i8, ptr %7, i64 92
  %53 = getelementptr inbounds i8, ptr %7, i64 88
  %54 = getelementptr inbounds i8, ptr %7, i64 56
  %55 = getelementptr inbounds i8, ptr %7, i64 60
  %56 = getelementptr inbounds i8, ptr %7, i64 64
  %57 = getelementptr inbounds i8, ptr %7, i64 52
  %58 = getelementptr inbounds i8, ptr %7, i64 12
  %59 = icmp eq i32 %1, 5
  %60 = getelementptr inbounds i8, ptr %7, i64 4
  %61 = getelementptr inbounds i8, ptr %7, i64 40
  %62 = getelementptr inbounds i8, ptr %3, i64 1
  %63 = getelementptr inbounds i8, ptr %3, i64 2
  %64 = getelementptr inbounds i8, ptr %3, i64 3
  %65 = getelementptr inbounds i8, ptr %7, i64 48
  %66 = getelementptr inbounds i8, ptr %7, i64 20
  br label %67

67:                                               ; preds = %.thread, %.split2283
  %68 = phi i32 [ %23, %.split2283 ], [ %.pre, %.thread ]
  %.01002 = phi ptr [ %14, %.split2283 ], [ %.621064, %.thread ]
  %.0999 = phi ptr [ %11, %.split2283 ], [ %.21001, %.thread ]
  %.0939 = phi i32 [ %27, %.split2283 ], [ %.62, %.thread ]
  %.0937 = phi i32 [ %25, %.split2283 ], [ %.1938, %.thread ]
  %.0877 = phi i64 [ %29, %.split2283 ], [ %.58935, %.thread ]
  %.0866 = phi i32 [ %31, %.split2283 ], [ %.58, %.thread ]
  %.0860 = phi i32 [ %25, %.split2283 ], [ %.4864, %.thread ]
  %.0 = phi i32 [ 0, %.split2283 ], [ %.7, %.thread ]
  %.09993707 = ptrtoint ptr %.0999 to i64
  switch i32 %68, label %.loopexit1251 [
    i32 0, label %78
    i32 1, label %.preheader1225
    i32 2, label %174
    i32 3, label %228
    i32 4, label %265
    i32 5, label %308
    i32 6, label %346
    i32 7, label %387
    i32 8, label %428
    i32 9, label %.preheader1229
    i32 10, label %498
    i32 11, label %504
    i32 12, label %505
    i32 13, label %533
    i32 14, label %._crit_edge2818
    i32 15, label %.preheader1244
    i32 16, label %.split
    i32 17, label %._crit_edge2809
    i32 18, label %852
    i32 19, label %._crit_edge2812
    i32 20, label %961
    i32 21, label %._crit_edge2814
    i32 22, label %1062
    i32 23, label %1132
    i32 24, label %1139
    i32 25, label %1202
    i32 26, label %.loopexit.loopexit3737
    i32 27, label %.loopexit
    i32 28, label %.loopexit1251.loopexit
  ]

._crit_edge2818:                                  ; preds = %67
  %.pre2819 = load i32, ptr %39, align 4, !tbaa !20
  br label %583

._crit_edge2814:                                  ; preds = %67
  %.pre2815 = load i32, ptr %52, align 4, !tbaa !21
  br label %1032

._crit_edge2812:                                  ; preds = %67
  %.pre2813 = load i32, ptr %52, align 4, !tbaa !21
  br label %938

._crit_edge2809:                                  ; preds = %67
  %.promoted1946.pre = load i32, ptr %43, align 4, !tbaa !22
  br label %661

.preheader1244:                                   ; preds = %67
  %69 = icmp ult i32 %.0866, 14
  br i1 %69, label %.lr.ph1711.preheader, label %._crit_edge1712

.lr.ph1711.preheader:                             ; preds = %.preheader1244
  %70 = zext nneg i32 %.0866 to i64
  %71 = icmp eq i32 %.0939, 0
  br i1 %71, label %.loopexit.loopexit2304, label %596

.preheader1229:                                   ; preds = %67
  %72 = icmp ult i32 %.0866, 32
  br i1 %72, label %.lr.ph2064.preheader, label %._crit_edge2065

.lr.ph2064.preheader:                             ; preds = %.preheader1229
  %73 = zext nneg i32 %.0866 to i64
  %74 = icmp eq i32 %.0939, 0
  br i1 %74, label %.loopexit.loopexit2295, label %463

.preheader1225:                                   ; preds = %67
  %75 = icmp ult i32 %.0866, 16
  br i1 %75, label %.lr.ph2228.preheader, label %._crit_edge2229

.lr.ph2228.preheader:                             ; preds = %.preheader1225
  %76 = zext nneg i32 %.0866 to i64
  %77 = icmp eq i32 %.0939, 0
  br i1 %77, label %.loopexit.loopexit2294, label %138

78:                                               ; preds = %67
  %79 = load i32, ptr %32, align 8, !tbaa !23
  %80 = icmp eq i32 %79, 0
  br i1 %80, label %84, label %.preheader1215

.preheader1215:                                   ; preds = %78
  %81 = icmp ult i32 %.0866, 16
  br i1 %81, label %.lr.ph2277.preheader, label %._crit_edge2278

.lr.ph2277.preheader:                             ; preds = %.preheader1215
  %82 = zext nneg i32 %.0866 to i64
  %83 = icmp eq i32 %.0939, 0
  br i1 %83, label %.loopexit.loopexit2289, label %85

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

85:                                               ; preds = %.lr.ph2277.preheader
  %86 = add i32 %.0939, -1
  %87 = getelementptr inbounds i8, ptr %.01002, i64 1
  %88 = load i8, ptr %.01002, align 1, !tbaa !24
  %89 = zext i8 %88 to i64
  %90 = shl nuw nsw i64 %89, %82
  %91 = add i64 %90, %.0877
  %indvars.iv.next2802 = add nuw nsw i64 %82, 8
  %92 = icmp ult i32 %.0866, 8
  br i1 %92, label %.lr.ph2277.1, label %._crit_edge2278.loopexit, !llvm.loop !25

.lr.ph2277.1:                                     ; preds = %85
  %93 = icmp eq i32 %86, 0
  br i1 %93, label %.loopexit.loopexit2289, label %94

94:                                               ; preds = %.lr.ph2277.1
  %95 = add i32 %.0939, -2
  %96 = getelementptr inbounds i8, ptr %.01002, i64 2
  %97 = load i8, ptr %87, align 1, !tbaa !24
  %98 = zext i8 %97 to i64
  %99 = shl nuw nsw i64 %98, %indvars.iv.next2802
  %100 = add i64 %99, %91
  %indvars.iv.next2802.1 = or disjoint i64 %82, 16
  br label %._crit_edge2278.loopexit

._crit_edge2278.loopexit:                         ; preds = %94, %85
  %.lcssa3899 = phi i32 [ %86, %85 ], [ %95, %94 ]
  %.lcssa3898 = phi ptr [ %87, %85 ], [ %96, %94 ]
  %.lcssa3897 = phi i64 [ %91, %85 ], [ %100, %94 ]
  %indvars.iv.next2802.lcssa = phi i64 [ %indvars.iv.next2802, %85 ], [ %indvars.iv.next2802.1, %94 ]
  %101 = trunc nuw nsw i64 %indvars.iv.next2802.lcssa to i32
  br label %._crit_edge2278

._crit_edge2278:                                  ; preds = %._crit_edge2278.loopexit, %.preheader1215
  %.11003.lcssa = phi ptr [ %.01002, %.preheader1215 ], [ %.lcssa3898, %._crit_edge2278.loopexit ]
  %.1940.lcssa = phi i32 [ %.0939, %.preheader1215 ], [ %.lcssa3899, %._crit_edge2278.loopexit ]
  %.1878.lcssa = phi i64 [ %.0877, %.preheader1215 ], [ %.lcssa3897, %._crit_edge2278.loopexit ]
  %.1867.lcssa = phi i32 [ %.0866, %.preheader1215 ], [ %101, %._crit_edge2278.loopexit ]
  %102 = and i32 %79, 2
  %103 = icmp ne i32 %102, 0
  %104 = icmp eq i64 %.1878.lcssa, 35615
  %or.cond = select i1 %103, i1 %104, i1 false
  br i1 %or.cond, label %105, label %108

105:                                              ; preds = %._crit_edge2278
  %106 = call i64 @z_crc32(i64 noundef 0, ptr noundef null, i32 noundef 0) #5
  store i64 %106, ptr %36, align 8, !tbaa !27
  store i8 31, ptr %3, align 1, !tbaa !24
  store i8 -117, ptr %62, align 1, !tbaa !24
  %107 = call i64 @z_crc32(i64 noundef %106, ptr noundef nonnull %3, i32 noundef 2) #5
  store i64 %107, ptr %36, align 8, !tbaa !27
  store i32 1, ptr %7, align 8, !tbaa !15
  br label %.thread

108:                                              ; preds = %._crit_edge2278
  store i32 0, ptr %35, align 8, !tbaa !28
  %109 = load ptr, ptr %61, align 8, !tbaa !29
  %.not1182 = icmp eq ptr %109, null
  br i1 %.not1182, label %112, label %110

110:                                              ; preds = %108
  %111 = getelementptr inbounds i8, ptr %109, i64 72
  store i32 -1, ptr %111, align 8, !tbaa !30
  br label %112

112:                                              ; preds = %110, %108
  %113 = and i32 %79, 1
  %.not1183 = icmp eq i32 %113, 0
  br i1 %.not1183, label %120, label %114

114:                                              ; preds = %112
  %115 = shl i64 %.1878.lcssa, 8
  %116 = and i64 %115, 65280
  %117 = lshr i64 %.1878.lcssa, 8
  %118 = add nuw nsw i64 %116, %117
  %119 = urem i64 %118, 31
  %.not1184 = icmp eq i64 %119, 0
  br i1 %.not1184, label %121, label %120

120:                                              ; preds = %114, %112
  store ptr @.str.1, ptr %38, align 8, !tbaa !32
  store i32 27, ptr %7, align 8, !tbaa !15
  br label %.thread

121:                                              ; preds = %114
  %122 = and i64 %.1878.lcssa, 15
  %.not1185 = icmp eq i64 %122, 8
  br i1 %.not1185, label %124, label %123

123:                                              ; preds = %121
  store ptr @.str.2, ptr %38, align 8, !tbaa !32
  store i32 27, ptr %7, align 8, !tbaa !15
  br label %.thread

124:                                              ; preds = %121
  %125 = lshr i64 %.1878.lcssa, 4
  %126 = trunc i64 %125 to i32
  %127 = and i32 %126, 15
  %128 = add nuw nsw i32 %127, 8
  %129 = load i32, ptr %65, align 8, !tbaa !33
  %130 = icmp ugt i32 %128, %129
  br i1 %130, label %131, label %133

131:                                              ; preds = %124
  %132 = add i32 %.1867.lcssa, -4
  store ptr @.str.3, ptr %38, align 8, !tbaa !32
  store i32 27, ptr %7, align 8, !tbaa !15
  br label %.thread

133:                                              ; preds = %124
  %134 = shl nuw nsw i32 256, %127
  store i32 %134, ptr %66, align 4, !tbaa !34
  %135 = call i64 @z_adler32(i64 noundef 0, ptr noundef null, i32 noundef 0) #5
  store i64 %135, ptr %36, align 8, !tbaa !27
  store i64 %135, ptr %37, align 8, !tbaa !35
  %136 = and i64 %.1878.lcssa, 8192
  %.not1186 = icmp eq i64 %136, 0
  %137 = select i1 %.not1186, i32 11, i32 9
  store i32 %137, ptr %7, align 8, !tbaa !15
  br label %.thread

138:                                              ; preds = %.lr.ph2228.preheader
  %139 = add i32 %.0939, -1
  %140 = getelementptr inbounds i8, ptr %.01002, i64 1
  %141 = load i8, ptr %.01002, align 1, !tbaa !24
  %142 = zext i8 %141 to i64
  %143 = shl nuw nsw i64 %142, %76
  %144 = add i64 %143, %.0877
  %indvars.iv.next2781 = add nuw nsw i64 %76, 8
  %145 = icmp ult i32 %.0866, 8
  br i1 %145, label %.lr.ph2228.1, label %._crit_edge2229.loopexit, !llvm.loop !36

.lr.ph2228.1:                                     ; preds = %138
  %146 = icmp eq i32 %139, 0
  br i1 %146, label %.loopexit.loopexit2294, label %147

147:                                              ; preds = %.lr.ph2228.1
  %148 = add i32 %.0939, -2
  %149 = getelementptr inbounds i8, ptr %.01002, i64 2
  %150 = load i8, ptr %140, align 1, !tbaa !24
  %151 = zext i8 %150 to i64
  %152 = shl nuw nsw i64 %151, %indvars.iv.next2781
  %153 = add i64 %152, %144
  %indvars.iv.next2781.1 = or disjoint i64 %76, 16
  br label %._crit_edge2229.loopexit

._crit_edge2229.loopexit:                         ; preds = %147, %138
  %.lcssa3867 = phi i32 [ %139, %138 ], [ %148, %147 ]
  %.lcssa3866 = phi ptr [ %140, %138 ], [ %149, %147 ]
  %.lcssa3865 = phi i64 [ %144, %138 ], [ %153, %147 ]
  %indvars.iv.next2781.lcssa = phi i64 [ %indvars.iv.next2781, %138 ], [ %indvars.iv.next2781.1, %147 ]
  %154 = trunc nuw nsw i64 %indvars.iv.next2781.lcssa to i32
  br label %._crit_edge2229

._crit_edge2229:                                  ; preds = %._crit_edge2229.loopexit, %.preheader1225
  %.21004.lcssa = phi ptr [ %.01002, %.preheader1225 ], [ %.lcssa3866, %._crit_edge2229.loopexit ]
  %.2941.lcssa = phi i32 [ %.0939, %.preheader1225 ], [ %.lcssa3867, %._crit_edge2229.loopexit ]
  %.2879.lcssa = phi i64 [ %.0877, %.preheader1225 ], [ %.lcssa3865, %._crit_edge2229.loopexit ]
  %.2868.lcssa = phi i32 [ %.0866, %.preheader1225 ], [ %154, %._crit_edge2229.loopexit ]
  %155 = trunc i64 %.2879.lcssa to i32
  store i32 %155, ptr %35, align 8, !tbaa !28
  %156 = and i32 %155, 255
  %.not1151 = icmp eq i32 %156, 8
  br i1 %.not1151, label %158, label %157

157:                                              ; preds = %._crit_edge2229
  store ptr @.str.2, ptr %38, align 8, !tbaa !32
  store i32 27, ptr %7, align 8, !tbaa !15
  br label %.thread

158:                                              ; preds = %._crit_edge2229
  %159 = and i32 %155, 57344
  %.not1152 = icmp eq i32 %159, 0
  br i1 %.not1152, label %161, label %160

160:                                              ; preds = %158
  store ptr @.str.4, ptr %38, align 8, !tbaa !32
  store i32 27, ptr %7, align 8, !tbaa !15
  br label %.thread

161:                                              ; preds = %158
  %162 = load ptr, ptr %61, align 8, !tbaa !29
  %.not1153 = icmp eq ptr %162, null
  br i1 %.not1153, label %166, label %163

163:                                              ; preds = %161
  %164 = lshr i32 %155, 8
  %165 = and i32 %164, 1
  store i32 %165, ptr %162, align 8, !tbaa !37
  br label %166

166:                                              ; preds = %163, %161
  %167 = and i32 %155, 512
  %.not1154 = icmp eq i32 %167, 0
  br i1 %.not1154, label %.thread2825, label %168

168:                                              ; preds = %166
  %169 = trunc i64 %.2879.lcssa to i8
  store i8 %169, ptr %3, align 1, !tbaa !24
  %170 = lshr i64 %.2879.lcssa, 8
  %171 = trunc i64 %170 to i8
  store i8 %171, ptr %62, align 1, !tbaa !24
  %172 = load i64, ptr %36, align 8, !tbaa !27
  %173 = call i64 @z_crc32(i64 noundef %172, ptr noundef nonnull %3, i32 noundef 2) #5
  store i64 %173, ptr %36, align 8, !tbaa !27
  br label %.thread2825

.thread2825:                                      ; preds = %168, %166
  store i32 2, ptr %7, align 8, !tbaa !15
  br label %.lr.ph2239.preheader

174:                                              ; preds = %67
  %175 = icmp ult i32 %.0866, 32
  br i1 %175, label %.lr.ph2239.preheader, label %._crit_edge2240

.lr.ph2239.preheader:                             ; preds = %.thread2825, %174
  %.38692833 = phi i32 [ 0, %.thread2825 ], [ %.0866, %174 ]
  %.38802832 = phi i64 [ 0, %.thread2825 ], [ %.0877, %174 ]
  %.39422831 = phi i32 [ %.2941.lcssa, %.thread2825 ], [ %.0939, %174 ]
  %.310052830 = phi ptr [ %.21004.lcssa, %.thread2825 ], [ %.01002, %174 ]
  %176 = zext nneg i32 %.38692833 to i64
  %177 = icmp eq i32 %.39422831, 0
  br i1 %177, label %.loopexit.loopexit2293, label %178

178:                                              ; preds = %.lr.ph2239.preheader
  %179 = add i32 %.39422831, -1
  %180 = getelementptr inbounds i8, ptr %.310052830, i64 1
  %181 = load i8, ptr %.310052830, align 1, !tbaa !24
  %182 = zext i8 %181 to i64
  %183 = shl nuw nsw i64 %182, %176
  %184 = add i64 %183, %.38802832
  %indvars.iv.next2784 = add nuw nsw i64 %176, 8
  %185 = icmp ult i32 %.38692833, 24
  br i1 %185, label %.lr.ph2239.1, label %._crit_edge2240, !llvm.loop !38

.lr.ph2239.1:                                     ; preds = %178
  %186 = icmp eq i32 %179, 0
  br i1 %186, label %.loopexit.loopexit2293, label %187

187:                                              ; preds = %.lr.ph2239.1
  %188 = add i32 %.39422831, -2
  %189 = getelementptr inbounds i8, ptr %.310052830, i64 2
  %190 = load i8, ptr %180, align 1, !tbaa !24
  %191 = zext i8 %190 to i64
  %192 = shl nuw nsw i64 %191, %indvars.iv.next2784
  %193 = add i64 %192, %184
  %indvars.iv.next2784.1 = add nuw nsw i64 %176, 16
  %194 = icmp ult i32 %.38692833, 16
  br i1 %194, label %.lr.ph2239.2, label %._crit_edge2240, !llvm.loop !38

.lr.ph2239.2:                                     ; preds = %187
  %195 = icmp eq i32 %188, 0
  br i1 %195, label %.loopexit.loopexit2293, label %196

196:                                              ; preds = %.lr.ph2239.2
  %197 = add i32 %.39422831, -3
  %198 = getelementptr inbounds i8, ptr %.310052830, i64 3
  %199 = load i8, ptr %189, align 1, !tbaa !24
  %200 = zext i8 %199 to i64
  %201 = shl nuw nsw i64 %200, %indvars.iv.next2784.1
  %202 = add i64 %201, %193
  %indvars.iv.next2784.2 = add nuw nsw i64 %176, 24
  %203 = icmp ult i32 %.38692833, 8
  br i1 %203, label %.lr.ph2239.3, label %._crit_edge2240, !llvm.loop !38

.lr.ph2239.3:                                     ; preds = %196
  %204 = icmp eq i32 %197, 0
  br i1 %204, label %.loopexit.loopexit2293, label %205

205:                                              ; preds = %.lr.ph2239.3
  %206 = add i32 %.39422831, -4
  %207 = getelementptr inbounds i8, ptr %.310052830, i64 4
  %208 = load i8, ptr %198, align 1, !tbaa !24
  %209 = zext i8 %208 to i64
  %210 = shl nuw nsw i64 %209, %indvars.iv.next2784.2
  %211 = add i64 %210, %202
  br label %._crit_edge2240

._crit_edge2240:                                  ; preds = %178, %187, %196, %205, %174
  %.41006.lcssa = phi ptr [ %.01002, %174 ], [ %180, %178 ], [ %189, %187 ], [ %198, %196 ], [ %207, %205 ]
  %.4943.lcssa = phi i32 [ %.0939, %174 ], [ %179, %178 ], [ %188, %187 ], [ %197, %196 ], [ %206, %205 ]
  %.4881.lcssa = phi i64 [ %.0877, %174 ], [ %184, %178 ], [ %193, %187 ], [ %202, %196 ], [ %211, %205 ]
  %212 = load ptr, ptr %61, align 8, !tbaa !29
  %.not1155 = icmp eq ptr %212, null
  br i1 %.not1155, label %215, label %213

213:                                              ; preds = %._crit_edge2240
  %214 = getelementptr inbounds i8, ptr %212, i64 8
  store i64 %.4881.lcssa, ptr %214, align 8, !tbaa !39
  br label %215

215:                                              ; preds = %213, %._crit_edge2240
  %216 = load i32, ptr %35, align 8, !tbaa !28
  %217 = and i32 %216, 512
  %.not1156 = icmp eq i32 %217, 0
  br i1 %.not1156, label %.thread2834, label %218

218:                                              ; preds = %215
  %219 = trunc i64 %.4881.lcssa to i8
  store i8 %219, ptr %3, align 1, !tbaa !24
  %220 = lshr i64 %.4881.lcssa, 8
  %221 = trunc i64 %220 to i8
  store i8 %221, ptr %62, align 1, !tbaa !24
  %222 = lshr i64 %.4881.lcssa, 16
  %223 = trunc i64 %222 to i8
  store i8 %223, ptr %63, align 1, !tbaa !24
  %224 = lshr i64 %.4881.lcssa, 24
  %225 = trunc i64 %224 to i8
  store i8 %225, ptr %64, align 1, !tbaa !24
  %226 = load i64, ptr %36, align 8, !tbaa !27
  %227 = call i64 @z_crc32(i64 noundef %226, ptr noundef nonnull %3, i32 noundef 4) #5
  store i64 %227, ptr %36, align 8, !tbaa !27
  br label %.thread2834

.thread2834:                                      ; preds = %218, %215
  store i32 3, ptr %7, align 8, !tbaa !15
  br label %.lr.ph2249.preheader

228:                                              ; preds = %67
  %229 = icmp ult i32 %.0866, 16
  br i1 %229, label %.lr.ph2249.preheader, label %._crit_edge2250

.lr.ph2249.preheader:                             ; preds = %.thread2834, %228
  %.58712842 = phi i32 [ 0, %.thread2834 ], [ %.0866, %228 ]
  %.58822841 = phi i64 [ 0, %.thread2834 ], [ %.0877, %228 ]
  %.59442840 = phi i32 [ %.4943.lcssa, %.thread2834 ], [ %.0939, %228 ]
  %.510072839 = phi ptr [ %.41006.lcssa, %.thread2834 ], [ %.01002, %228 ]
  %230 = zext nneg i32 %.58712842 to i64
  %231 = icmp eq i32 %.59442840, 0
  br i1 %231, label %.loopexit.loopexit2292, label %232

232:                                              ; preds = %.lr.ph2249.preheader
  %233 = add i32 %.59442840, -1
  %234 = getelementptr inbounds i8, ptr %.510072839, i64 1
  %235 = load i8, ptr %.510072839, align 1, !tbaa !24
  %236 = zext i8 %235 to i64
  %237 = shl nuw nsw i64 %236, %230
  %238 = add i64 %237, %.58822841
  %indvars.iv.next2787 = add nuw nsw i64 %230, 8
  %239 = icmp ult i32 %.58712842, 8
  br i1 %239, label %.lr.ph2249.1, label %._crit_edge2250, !llvm.loop !40

.lr.ph2249.1:                                     ; preds = %232
  %240 = icmp eq i32 %233, 0
  br i1 %240, label %.loopexit.loopexit2292, label %241

241:                                              ; preds = %.lr.ph2249.1
  %242 = add i32 %.59442840, -2
  %243 = getelementptr inbounds i8, ptr %.510072839, i64 2
  %244 = load i8, ptr %234, align 1, !tbaa !24
  %245 = zext i8 %244 to i64
  %246 = shl nuw nsw i64 %245, %indvars.iv.next2787
  %247 = add i64 %246, %238
  br label %._crit_edge2250

._crit_edge2250:                                  ; preds = %232, %241, %228
  %.61008.lcssa = phi ptr [ %.01002, %228 ], [ %234, %232 ], [ %243, %241 ]
  %.6945.lcssa = phi i32 [ %.0939, %228 ], [ %233, %232 ], [ %242, %241 ]
  %.6883.lcssa = phi i64 [ %.0877, %228 ], [ %238, %232 ], [ %247, %241 ]
  %248 = load ptr, ptr %61, align 8, !tbaa !29
  %.not1157 = icmp eq ptr %248, null
  br i1 %.not1157, label %256, label %249

249:                                              ; preds = %._crit_edge2250
  %250 = trunc i64 %.6883.lcssa to i32
  %251 = and i32 %250, 255
  %252 = getelementptr inbounds i8, ptr %248, i64 16
  store i32 %251, ptr %252, align 8, !tbaa !41
  %253 = lshr i64 %.6883.lcssa, 8
  %254 = trunc i64 %253 to i32
  %255 = getelementptr inbounds i8, ptr %248, i64 20
  store i32 %254, ptr %255, align 4, !tbaa !42
  br label %256

256:                                              ; preds = %249, %._crit_edge2250
  %257 = load i32, ptr %35, align 8, !tbaa !28
  %258 = and i32 %257, 512
  %.not1158 = icmp eq i32 %258, 0
  br i1 %.not1158, label %.thread2843, label %259

259:                                              ; preds = %256
  %260 = trunc i64 %.6883.lcssa to i8
  store i8 %260, ptr %3, align 1, !tbaa !24
  %261 = lshr i64 %.6883.lcssa, 8
  %262 = trunc i64 %261 to i8
  store i8 %262, ptr %62, align 1, !tbaa !24
  %263 = load i64, ptr %36, align 8, !tbaa !27
  %264 = call i64 @z_crc32(i64 noundef %263, ptr noundef nonnull %3, i32 noundef 2) #5
  store i64 %264, ptr %36, align 8, !tbaa !27
  br label %.thread2843

265:                                              ; preds = %67
  %266 = load i32, ptr %35, align 8, !tbaa !28
  %267 = and i32 %266, 1024
  %.not1159 = icmp eq i32 %267, 0
  br i1 %.not1159, label %303, label %.preheader1221

.thread2843:                                      ; preds = %259, %256
  store i32 4, ptr %7, align 8, !tbaa !15
  %268 = load i32, ptr %35, align 8, !tbaa !28
  %269 = and i32 %268, 1024
  %.not11592848 = icmp eq i32 %269, 0
  br i1 %.not11592848, label %303, label %.lr.ph2258.preheader

.preheader1221:                                   ; preds = %265
  %270 = icmp ult i32 %.0866, 16
  br i1 %270, label %.lr.ph2258.preheader, label %._crit_edge2259

.lr.ph2258.preheader:                             ; preds = %.thread2843, %.preheader1221
  %.7100928502864 = phi ptr [ %.01002, %.preheader1221 ], [ %.61008.lcssa, %.thread2843 ]
  %.794628522863 = phi i32 [ %.0939, %.preheader1221 ], [ %.6945.lcssa, %.thread2843 ]
  %.788428542862 = phi i64 [ %.0877, %.preheader1221 ], [ 0, %.thread2843 ]
  %.787328562861 = phi i32 [ %.0866, %.preheader1221 ], [ 0, %.thread2843 ]
  %271 = phi i32 [ %266, %.preheader1221 ], [ %268, %.thread2843 ]
  %272 = zext nneg i32 %.787328562861 to i64
  %273 = icmp eq i32 %.794628522863, 0
  br i1 %273, label %.loopexit.loopexit2291, label %274

274:                                              ; preds = %.lr.ph2258.preheader
  %275 = add i32 %.794628522863, -1
  %276 = getelementptr inbounds i8, ptr %.7100928502864, i64 1
  %277 = load i8, ptr %.7100928502864, align 1, !tbaa !24
  %278 = zext i8 %277 to i64
  %279 = shl nuw nsw i64 %278, %272
  %280 = add i64 %279, %.788428542862
  %indvars.iv.next2790 = add nuw nsw i64 %272, 8
  %281 = icmp ult i32 %.787328562861, 8
  br i1 %281, label %.lr.ph2258.1, label %._crit_edge2259, !llvm.loop !43

.lr.ph2258.1:                                     ; preds = %274
  %282 = icmp eq i32 %275, 0
  br i1 %282, label %.loopexit.loopexit2291, label %283

283:                                              ; preds = %.lr.ph2258.1
  %284 = add i32 %.794628522863, -2
  %285 = getelementptr inbounds i8, ptr %.7100928502864, i64 2
  %286 = load i8, ptr %276, align 1, !tbaa !24
  %287 = zext i8 %286 to i64
  %288 = shl nuw nsw i64 %287, %indvars.iv.next2790
  %289 = add i64 %288, %280
  br label %._crit_edge2259

._crit_edge2259:                                  ; preds = %274, %283, %.preheader1221
  %290 = phi i32 [ %266, %.preheader1221 ], [ %271, %283 ], [ %271, %274 ]
  %.81010.lcssa = phi ptr [ %.01002, %.preheader1221 ], [ %276, %274 ], [ %285, %283 ]
  %.8947.lcssa = phi i32 [ %.0939, %.preheader1221 ], [ %275, %274 ], [ %284, %283 ]
  %.8885.lcssa = phi i64 [ %.0877, %.preheader1221 ], [ %280, %274 ], [ %289, %283 ]
  %291 = trunc i64 %.8885.lcssa to i32
  store i32 %291, ptr %39, align 4, !tbaa !20
  %292 = load ptr, ptr %61, align 8, !tbaa !29
  %.not1161 = icmp eq ptr %292, null
  br i1 %.not1161, label %295, label %293

293:                                              ; preds = %._crit_edge2259
  %294 = getelementptr inbounds i8, ptr %292, i64 32
  store i32 %291, ptr %294, align 8, !tbaa !44
  br label %295

295:                                              ; preds = %293, %._crit_edge2259
  %296 = and i32 %290, 512
  %.not1162 = icmp eq i32 %296, 0
  br i1 %.not1162, label %307, label %297

297:                                              ; preds = %295
  %298 = trunc i64 %.8885.lcssa to i8
  store i8 %298, ptr %3, align 1, !tbaa !24
  %299 = lshr i64 %.8885.lcssa, 8
  %300 = trunc i64 %299 to i8
  store i8 %300, ptr %62, align 1, !tbaa !24
  %301 = load i64, ptr %36, align 8, !tbaa !27
  %302 = call i64 @z_crc32(i64 noundef %301, ptr noundef nonnull %3, i32 noundef 2) #5
  store i64 %302, ptr %36, align 8, !tbaa !27
  br label %307

303:                                              ; preds = %.thread2843, %265
  %.78732855 = phi i32 [ 0, %.thread2843 ], [ %.0866, %265 ]
  %.78842853 = phi i64 [ 0, %.thread2843 ], [ %.0877, %265 ]
  %.79462851 = phi i32 [ %.6945.lcssa, %.thread2843 ], [ %.0939, %265 ]
  %.710092849 = phi ptr [ %.61008.lcssa, %.thread2843 ], [ %.01002, %265 ]
  %304 = load ptr, ptr %61, align 8, !tbaa !29
  %.not1160 = icmp eq ptr %304, null
  br i1 %.not1160, label %307, label %305

305:                                              ; preds = %303
  %306 = getelementptr inbounds i8, ptr %304, i64 24
  store ptr null, ptr %306, align 8, !tbaa !45
  br label %307

307:                                              ; preds = %297, %295, %303, %305
  %.91011 = phi ptr [ %.710092849, %305 ], [ %.710092849, %303 ], [ %.81010.lcssa, %295 ], [ %.81010.lcssa, %297 ]
  %.9948 = phi i32 [ %.79462851, %305 ], [ %.79462851, %303 ], [ %.8947.lcssa, %295 ], [ %.8947.lcssa, %297 ]
  %.9886 = phi i64 [ %.78842853, %305 ], [ %.78842853, %303 ], [ 0, %295 ], [ 0, %297 ]
  %.9875 = phi i32 [ %.78732855, %305 ], [ %.78732855, %303 ], [ 0, %295 ], [ 0, %297 ]
  store i32 5, ptr %7, align 8, !tbaa !15
  br label %308

308:                                              ; preds = %307, %67
  %.101012 = phi ptr [ %.01002, %67 ], [ %.91011, %307 ]
  %.10949 = phi i32 [ %.0939, %67 ], [ %.9948, %307 ]
  %.10887 = phi i64 [ %.0877, %67 ], [ %.9886, %307 ]
  %.10876 = phi i32 [ %.0866, %67 ], [ %.9875, %307 ]
  %309 = load i32, ptr %35, align 8, !tbaa !28
  %310 = and i32 %309, 1024
  %.not1163 = icmp eq i32 %310, 0
  br i1 %.not1163, label %345, label %311

311:                                              ; preds = %308
  %312 = load i32, ptr %39, align 4, !tbaa !20
  %spec.select = call i32 @llvm.umin.i32(i32 %312, i32 %.10949)
  %.not1164 = icmp eq i32 %spec.select, 0
  br i1 %.not1164, label %343, label %313

313:                                              ; preds = %311
  %314 = load ptr, ptr %61, align 8, !tbaa !29
  %.not1165 = icmp eq ptr %314, null
  br i1 %.not1165, label %331, label %315

315:                                              ; preds = %313
  %316 = getelementptr inbounds i8, ptr %314, i64 24
  %317 = load ptr, ptr %316, align 8, !tbaa !45
  %.not1166 = icmp eq ptr %317, null
  br i1 %.not1166, label %331, label %318

318:                                              ; preds = %315
  %319 = getelementptr inbounds i8, ptr %314, i64 32
  %320 = load i32, ptr %319, align 8, !tbaa !44
  %321 = sub i32 %320, %312
  %322 = zext i32 %321 to i64
  %323 = getelementptr inbounds i8, ptr %317, i64 %322
  %324 = add i32 %321, %spec.select
  %325 = getelementptr inbounds i8, ptr %314, i64 36
  %326 = load i32, ptr %325, align 4, !tbaa !46
  %327 = icmp ugt i32 %324, %326
  %328 = sub i32 %326, %321
  %329 = select i1 %327, i32 %328, i32 %spec.select
  %330 = zext i32 %329 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %323, ptr align 1 %.101012, i64 %330, i1 false)
  %.pre2820 = load i32, ptr %35, align 8, !tbaa !28
  br label %331

331:                                              ; preds = %318, %315, %313
  %332 = phi i32 [ %.pre2820, %318 ], [ %309, %315 ], [ %309, %313 ]
  %333 = and i32 %332, 512
  %.not1167 = icmp eq i32 %333, 0
  br i1 %.not1167, label %337, label %334

334:                                              ; preds = %331
  %335 = load i64, ptr %36, align 8, !tbaa !27
  %336 = call i64 @z_crc32(i64 noundef %335, ptr noundef %.101012, i32 noundef %spec.select) #5
  store i64 %336, ptr %36, align 8, !tbaa !27
  br label %337

337:                                              ; preds = %334, %331
  %338 = sub i32 %.10949, %spec.select
  %339 = zext i32 %spec.select to i64
  %340 = getelementptr inbounds i8, ptr %.101012, i64 %339
  %341 = load i32, ptr %39, align 4, !tbaa !20
  %342 = sub i32 %341, %spec.select
  store i32 %342, ptr %39, align 4, !tbaa !20
  br label %343

343:                                              ; preds = %337, %311
  %344 = phi i32 [ %342, %337 ], [ %312, %311 ]
  %.111013 = phi ptr [ %340, %337 ], [ %.101012, %311 ]
  %.11950 = phi i32 [ %338, %337 ], [ %.10949, %311 ]
  %.not1168 = icmp eq i32 %344, 0
  br i1 %.not1168, label %345, label %.loopexit

345:                                              ; preds = %343, %308
  %.121014 = phi ptr [ %.111013, %343 ], [ %.101012, %308 ]
  %.12951 = phi i32 [ %.11950, %343 ], [ %.10949, %308 ]
  store i32 0, ptr %39, align 4, !tbaa !20
  store i32 6, ptr %7, align 8, !tbaa !15
  br label %346

346:                                              ; preds = %345, %67
  %.131015 = phi ptr [ %.01002, %67 ], [ %.121014, %345 ]
  %.13952 = phi i32 [ %.0939, %67 ], [ %.12951, %345 ]
  %.11888 = phi i64 [ %.0877, %67 ], [ %.10887, %345 ]
  %.11 = phi i32 [ %.0866, %67 ], [ %.10876, %345 ]
  %347 = load i32, ptr %35, align 8, !tbaa !28
  %348 = and i32 %347, 2048
  %.not1169 = icmp eq i32 %348, 0
  br i1 %.not1169, label %382, label %349

349:                                              ; preds = %346
  %350 = icmp eq i32 %.13952, 0
  br i1 %350, label %.loopexit, label %.preheader1220.preheader

.preheader1220.preheader:                         ; preds = %349
  %351 = zext i32 %.13952 to i64
  br label %.preheader1220

.preheader1220:                                   ; preds = %.preheader1220.preheader, %367
  %indvars.iv2792 = phi i64 [ 0, %.preheader1220.preheader ], [ %indvars.iv.next2793, %367 ]
  %indvars.iv.next2793 = add nuw nsw i64 %indvars.iv2792, 1
  %352 = getelementptr inbounds i8, ptr %.131015, i64 %indvars.iv2792
  %353 = load i8, ptr %352, align 1, !tbaa !24
  %354 = load ptr, ptr %61, align 8, !tbaa !29
  %.not1171 = icmp eq ptr %354, null
  br i1 %.not1171, label %367, label %355

355:                                              ; preds = %.preheader1220
  %356 = getelementptr inbounds i8, ptr %354, i64 40
  %357 = load ptr, ptr %356, align 8, !tbaa !47
  %.not1172 = icmp eq ptr %357, null
  br i1 %.not1172, label %367, label %358

358:                                              ; preds = %355
  %359 = load i32, ptr %39, align 4, !tbaa !20
  %360 = getelementptr inbounds i8, ptr %354, i64 48
  %361 = load i32, ptr %360, align 8, !tbaa !48
  %362 = icmp ult i32 %359, %361
  br i1 %362, label %363, label %367

363:                                              ; preds = %358
  %364 = add nuw i32 %359, 1
  store i32 %364, ptr %39, align 4, !tbaa !20
  %365 = zext i32 %359 to i64
  %366 = getelementptr inbounds i8, ptr %357, i64 %365
  store i8 %353, ptr %366, align 1, !tbaa !24
  br label %367

367:                                              ; preds = %.preheader1220, %355, %358, %363
  %368 = icmp ne i8 %353, 0
  %369 = icmp ult i64 %indvars.iv.next2793, %351
  %370 = select i1 %368, i1 %369, i1 false
  br i1 %370, label %.preheader1220, label %371, !llvm.loop !49

371:                                              ; preds = %367
  %372 = trunc nuw i64 %indvars.iv.next2793 to i32
  %373 = load i32, ptr %35, align 8, !tbaa !28
  %374 = and i32 %373, 512
  %.not1173 = icmp eq i32 %374, 0
  br i1 %.not1173, label %378, label %375

375:                                              ; preds = %371
  %376 = load i64, ptr %36, align 8, !tbaa !27
  %377 = call i64 @z_crc32(i64 noundef %376, ptr noundef nonnull %.131015, i32 noundef %372) #5
  store i64 %377, ptr %36, align 8, !tbaa !27
  br label %378

378:                                              ; preds = %375, %371
  %379 = sub i32 %.13952, %372
  %380 = and i64 %indvars.iv.next2793, 4294967295
  %381 = getelementptr inbounds i8, ptr %.131015, i64 %380
  br i1 %368, label %.loopexit, label %386

382:                                              ; preds = %346
  %383 = load ptr, ptr %61, align 8, !tbaa !29
  %.not1170 = icmp eq ptr %383, null
  br i1 %.not1170, label %386, label %384

384:                                              ; preds = %382
  %385 = getelementptr inbounds i8, ptr %383, i64 40
  store ptr null, ptr %385, align 8, !tbaa !47
  br label %386

386:                                              ; preds = %382, %384, %378
  %.141016 = phi ptr [ %381, %378 ], [ %.131015, %384 ], [ %.131015, %382 ]
  %.14953 = phi i32 [ %379, %378 ], [ %.13952, %384 ], [ %.13952, %382 ]
  store i32 0, ptr %39, align 4, !tbaa !20
  store i32 7, ptr %7, align 8, !tbaa !15
  br label %387

387:                                              ; preds = %386, %67
  %.151017 = phi ptr [ %.01002, %67 ], [ %.141016, %386 ]
  %.15954 = phi i32 [ %.0939, %67 ], [ %.14953, %386 ]
  %.12889 = phi i64 [ %.0877, %67 ], [ %.11888, %386 ]
  %.12 = phi i32 [ %.0866, %67 ], [ %.11, %386 ]
  %388 = load i32, ptr %35, align 8, !tbaa !28
  %389 = and i32 %388, 4096
  %.not1174 = icmp eq i32 %389, 0
  br i1 %.not1174, label %423, label %390

390:                                              ; preds = %387
  %391 = icmp eq i32 %.15954, 0
  br i1 %391, label %.loopexit, label %.preheader1219.preheader

.preheader1219.preheader:                         ; preds = %390
  %392 = zext i32 %.15954 to i64
  br label %.preheader1219

.preheader1219:                                   ; preds = %.preheader1219.preheader, %408
  %indvars.iv2795 = phi i64 [ 0, %.preheader1219.preheader ], [ %indvars.iv.next2796, %408 ]
  %indvars.iv.next2796 = add nuw nsw i64 %indvars.iv2795, 1
  %393 = getelementptr inbounds i8, ptr %.151017, i64 %indvars.iv2795
  %394 = load i8, ptr %393, align 1, !tbaa !24
  %395 = load ptr, ptr %61, align 8, !tbaa !29
  %.not1176 = icmp eq ptr %395, null
  br i1 %.not1176, label %408, label %396

396:                                              ; preds = %.preheader1219
  %397 = getelementptr inbounds i8, ptr %395, i64 56
  %398 = load ptr, ptr %397, align 8, !tbaa !50
  %.not1177 = icmp eq ptr %398, null
  br i1 %.not1177, label %408, label %399

399:                                              ; preds = %396
  %400 = load i32, ptr %39, align 4, !tbaa !20
  %401 = getelementptr inbounds i8, ptr %395, i64 64
  %402 = load i32, ptr %401, align 8, !tbaa !51
  %403 = icmp ult i32 %400, %402
  br i1 %403, label %404, label %408

404:                                              ; preds = %399
  %405 = add nuw i32 %400, 1
  store i32 %405, ptr %39, align 4, !tbaa !20
  %406 = zext i32 %400 to i64
  %407 = getelementptr inbounds i8, ptr %398, i64 %406
  store i8 %394, ptr %407, align 1, !tbaa !24
  br label %408

408:                                              ; preds = %.preheader1219, %396, %399, %404
  %409 = icmp ne i8 %394, 0
  %410 = icmp ult i64 %indvars.iv.next2796, %392
  %411 = select i1 %409, i1 %410, i1 false
  br i1 %411, label %.preheader1219, label %412, !llvm.loop !52

412:                                              ; preds = %408
  %413 = trunc nuw i64 %indvars.iv.next2796 to i32
  %414 = load i32, ptr %35, align 8, !tbaa !28
  %415 = and i32 %414, 512
  %.not1178 = icmp eq i32 %415, 0
  br i1 %.not1178, label %419, label %416

416:                                              ; preds = %412
  %417 = load i64, ptr %36, align 8, !tbaa !27
  %418 = call i64 @z_crc32(i64 noundef %417, ptr noundef nonnull %.151017, i32 noundef %413) #5
  store i64 %418, ptr %36, align 8, !tbaa !27
  br label %419

419:                                              ; preds = %416, %412
  %420 = sub i32 %.15954, %413
  %421 = and i64 %indvars.iv.next2796, 4294967295
  %422 = getelementptr inbounds i8, ptr %.151017, i64 %421
  br i1 %409, label %.loopexit, label %427

423:                                              ; preds = %387
  %424 = load ptr, ptr %61, align 8, !tbaa !29
  %.not1175 = icmp eq ptr %424, null
  br i1 %.not1175, label %427, label %425

425:                                              ; preds = %423
  %426 = getelementptr inbounds i8, ptr %424, i64 56
  store ptr null, ptr %426, align 8, !tbaa !50
  br label %427

427:                                              ; preds = %423, %425, %419
  %.161018 = phi ptr [ %422, %419 ], [ %.151017, %425 ], [ %.151017, %423 ]
  %.16955 = phi i32 [ %420, %419 ], [ %.15954, %425 ], [ %.15954, %423 ]
  store i32 8, ptr %7, align 8, !tbaa !15
  br label %428

428:                                              ; preds = %427, %67
  %.171019 = phi ptr [ %.01002, %67 ], [ %.161018, %427 ]
  %.17956 = phi i32 [ %.0939, %67 ], [ %.16955, %427 ]
  %.13890 = phi i64 [ %.0877, %67 ], [ %.12889, %427 ]
  %.13 = phi i32 [ %.0866, %67 ], [ %.12, %427 ]
  %429 = load i32, ptr %35, align 8, !tbaa !28
  %430 = and i32 %429, 512
  %.not1179 = icmp eq i32 %430, 0
  br i1 %.not1179, label %454, label %.preheader1217

.preheader1217:                                   ; preds = %428
  %431 = icmp ult i32 %.13, 16
  br i1 %431, label %.lr.ph2267.preheader, label %._crit_edge2268

.lr.ph2267.preheader:                             ; preds = %.preheader1217
  %432 = zext nneg i32 %.13 to i64
  %433 = icmp eq i32 %.17956, 0
  br i1 %433, label %.loopexit.loopexit2290, label %434

434:                                              ; preds = %.lr.ph2267.preheader
  %435 = add i32 %.17956, -1
  %436 = getelementptr inbounds i8, ptr %.171019, i64 1
  %437 = load i8, ptr %.171019, align 1, !tbaa !24
  %438 = zext i8 %437 to i64
  %439 = shl nuw nsw i64 %438, %432
  %440 = add i64 %439, %.13890
  %indvars.iv.next2799 = add nuw nsw i64 %432, 8
  %441 = icmp ult i32 %.13, 8
  br i1 %441, label %.lr.ph2267.1, label %._crit_edge2268.loopexit, !llvm.loop !53

.lr.ph2267.1:                                     ; preds = %434
  %442 = icmp eq i32 %435, 0
  br i1 %442, label %.loopexit.loopexit2290, label %443

443:                                              ; preds = %.lr.ph2267.1
  %444 = add i32 %.17956, -2
  %445 = getelementptr inbounds i8, ptr %.171019, i64 2
  %446 = load i8, ptr %436, align 1, !tbaa !24
  %447 = zext i8 %446 to i64
  %448 = shl nuw nsw i64 %447, %indvars.iv.next2799
  %449 = add i64 %448, %440
  %indvars.iv.next2799.1 = or disjoint i64 %432, 16
  br label %._crit_edge2268.loopexit

._crit_edge2268.loopexit:                         ; preds = %443, %434
  %.lcssa3893 = phi i32 [ %435, %434 ], [ %444, %443 ]
  %.lcssa3892 = phi ptr [ %436, %434 ], [ %445, %443 ]
  %.lcssa3891 = phi i64 [ %440, %434 ], [ %449, %443 ]
  %indvars.iv.next2799.lcssa = phi i64 [ %indvars.iv.next2799, %434 ], [ %indvars.iv.next2799.1, %443 ]
  %450 = trunc nuw nsw i64 %indvars.iv.next2799.lcssa to i32
  br label %._crit_edge2268

._crit_edge2268:                                  ; preds = %._crit_edge2268.loopexit, %.preheader1217
  %.181020.lcssa = phi ptr [ %.171019, %.preheader1217 ], [ %.lcssa3892, %._crit_edge2268.loopexit ]
  %.18957.lcssa = phi i32 [ %.17956, %.preheader1217 ], [ %.lcssa3893, %._crit_edge2268.loopexit ]
  %.14891.lcssa = phi i64 [ %.13890, %.preheader1217 ], [ %.lcssa3891, %._crit_edge2268.loopexit ]
  %.14.lcssa = phi i32 [ %.13, %.preheader1217 ], [ %450, %._crit_edge2268.loopexit ]
  %451 = load i64, ptr %36, align 8, !tbaa !27
  %452 = and i64 %451, 65535
  %.not1180 = icmp eq i64 %.14891.lcssa, %452
  br i1 %.not1180, label %454, label %453

453:                                              ; preds = %._crit_edge2268
  store ptr @.str.5, ptr %38, align 8, !tbaa !32
  store i32 27, ptr %7, align 8, !tbaa !15
  br label %.thread

454:                                              ; preds = %._crit_edge2268, %428
  %.191021 = phi ptr [ %.171019, %428 ], [ %.181020.lcssa, %._crit_edge2268 ]
  %.19958 = phi i32 [ %.17956, %428 ], [ %.18957.lcssa, %._crit_edge2268 ]
  %.15892 = phi i64 [ %.13890, %428 ], [ 0, %._crit_edge2268 ]
  %.15 = phi i32 [ %.13, %428 ], [ 0, %._crit_edge2268 ]
  %455 = load ptr, ptr %61, align 8, !tbaa !29
  %.not1181 = icmp eq ptr %455, null
  br i1 %.not1181, label %461, label %456

456:                                              ; preds = %454
  %457 = lshr i32 %429, 9
  %458 = and i32 %457, 1
  %459 = getelementptr inbounds i8, ptr %455, i64 68
  store i32 %458, ptr %459, align 4, !tbaa !54
  %460 = getelementptr inbounds i8, ptr %455, i64 72
  store i32 1, ptr %460, align 8, !tbaa !30
  br label %461

461:                                              ; preds = %456, %454
  %462 = call i64 @z_crc32(i64 noundef 0, ptr noundef null, i32 noundef 0) #5
  store i64 %462, ptr %36, align 8, !tbaa !27
  store i64 %462, ptr %37, align 8, !tbaa !35
  store i32 11, ptr %7, align 8, !tbaa !15
  br label %.thread

463:                                              ; preds = %.lr.ph2064.preheader
  %464 = add i32 %.0939, -1
  %465 = getelementptr inbounds i8, ptr %.01002, i64 1
  %466 = load i8, ptr %.01002, align 1, !tbaa !24
  %467 = zext i8 %466 to i64
  %468 = shl nuw nsw i64 %467, %73
  %469 = add i64 %468, %.0877
  %indvars.iv.next2778 = add nuw nsw i64 %73, 8
  %470 = icmp ult i32 %.0866, 24
  br i1 %470, label %.lr.ph2064.1, label %._crit_edge2065, !llvm.loop !55

.lr.ph2064.1:                                     ; preds = %463
  %471 = icmp eq i32 %464, 0
  br i1 %471, label %.loopexit.loopexit2295, label %472

472:                                              ; preds = %.lr.ph2064.1
  %473 = add i32 %.0939, -2
  %474 = getelementptr inbounds i8, ptr %.01002, i64 2
  %475 = load i8, ptr %465, align 1, !tbaa !24
  %476 = zext i8 %475 to i64
  %477 = shl nuw nsw i64 %476, %indvars.iv.next2778
  %478 = add i64 %477, %469
  %indvars.iv.next2778.1 = add nuw nsw i64 %73, 16
  %479 = icmp ult i32 %.0866, 16
  br i1 %479, label %.lr.ph2064.2, label %._crit_edge2065, !llvm.loop !55

.lr.ph2064.2:                                     ; preds = %472
  %480 = icmp eq i32 %473, 0
  br i1 %480, label %.loopexit.loopexit2295, label %481

481:                                              ; preds = %.lr.ph2064.2
  %482 = add i32 %.0939, -3
  %483 = getelementptr inbounds i8, ptr %.01002, i64 3
  %484 = load i8, ptr %474, align 1, !tbaa !24
  %485 = zext i8 %484 to i64
  %486 = shl nuw nsw i64 %485, %indvars.iv.next2778.1
  %487 = add i64 %486, %478
  %indvars.iv.next2778.2 = add nuw nsw i64 %73, 24
  %488 = icmp ult i32 %.0866, 8
  br i1 %488, label %.lr.ph2064.3, label %._crit_edge2065, !llvm.loop !55

.lr.ph2064.3:                                     ; preds = %481
  %489 = icmp eq i32 %482, 0
  br i1 %489, label %.loopexit.loopexit2295, label %490

490:                                              ; preds = %.lr.ph2064.3
  %491 = add i32 %.0939, -4
  %492 = getelementptr inbounds i8, ptr %.01002, i64 4
  %493 = load i8, ptr %483, align 1, !tbaa !24
  %494 = zext i8 %493 to i64
  %495 = shl nuw nsw i64 %494, %indvars.iv.next2778.2
  %496 = add i64 %495, %487
  br label %._crit_edge2065

._crit_edge2065:                                  ; preds = %463, %472, %481, %490, %.preheader1229
  %.201022.lcssa = phi ptr [ %.01002, %.preheader1229 ], [ %465, %463 ], [ %474, %472 ], [ %483, %481 ], [ %492, %490 ]
  %.20959.lcssa = phi i32 [ %.0939, %.preheader1229 ], [ %464, %463 ], [ %473, %472 ], [ %482, %481 ], [ %491, %490 ]
  %.16893.lcssa = phi i64 [ %.0877, %.preheader1229 ], [ %469, %463 ], [ %478, %472 ], [ %487, %481 ], [ %496, %490 ]
  %trunc1148 = trunc i64 %.16893.lcssa to i32
  %rev1149 = call i32 @llvm.bswap.i32(i32 %trunc1148)
  %497 = zext i32 %rev1149 to i64
  store i64 %497, ptr %36, align 8, !tbaa !27
  store i64 %497, ptr %37, align 8, !tbaa !35
  store i32 10, ptr %7, align 8, !tbaa !15
  br label %498

498:                                              ; preds = %._crit_edge2065, %67
  %.211023 = phi ptr [ %.01002, %67 ], [ %.201022.lcssa, %._crit_edge2065 ]
  %.21960 = phi i32 [ %.0939, %67 ], [ %.20959.lcssa, %._crit_edge2065 ]
  %.17894 = phi i64 [ %.0877, %67 ], [ 0, %._crit_edge2065 ]
  %.17 = phi i32 [ %.0866, %67 ], [ 0, %._crit_edge2065 ]
  %499 = load i32, ptr %58, align 4, !tbaa !56
  %500 = icmp eq i32 %499, 0
  br i1 %500, label %501, label %502

501:                                              ; preds = %498
  store ptr %.0999, ptr %10, align 8, !tbaa !12
  store i32 %.0937, ptr %24, align 8, !tbaa !17
  store ptr %.211023, ptr %0, align 8, !tbaa !13
  store i32 %.21960, ptr %26, align 8, !tbaa !14
  store i64 %.17894, ptr %28, align 8, !tbaa !18
  store i32 %.17, ptr %30, align 8, !tbaa !19
  br label %.loopexit1251

502:                                              ; preds = %498
  %503 = call i64 @z_adler32(i64 noundef 0, ptr noundef null, i32 noundef 0) #5
  store i64 %503, ptr %36, align 8, !tbaa !27
  store i64 %503, ptr %37, align 8, !tbaa !35
  store i32 11, ptr %7, align 8, !tbaa !15
  br label %504

504:                                              ; preds = %502, %67
  %.221024 = phi ptr [ %.01002, %67 ], [ %.211023, %502 ]
  %.22961 = phi i32 [ %.0939, %67 ], [ %.21960, %502 ]
  %.18895 = phi i64 [ %.0877, %67 ], [ %.17894, %502 ]
  %.18 = phi i32 [ %.0866, %67 ], [ %.17, %502 ]
  br i1 %59, label %.loopexit, label %505

505:                                              ; preds = %504, %67
  %.231025 = phi ptr [ %.01002, %67 ], [ %.221024, %504 ]
  %.23962 = phi i32 [ %.0939, %67 ], [ %.22961, %504 ]
  %.19896 = phi i64 [ %.0877, %67 ], [ %.18895, %504 ]
  %.19 = phi i32 [ %.0866, %67 ], [ %.18, %504 ]
  %506 = load i32, ptr %60, align 4, !tbaa !57
  %.not1150 = icmp eq i32 %506, 0
  br i1 %.not1150, label %.preheader1227, label %509

.preheader1227:                                   ; preds = %505
  %507 = icmp ult i32 %.19, 3
  br i1 %507, label %.lr.ph2073, label %522

.lr.ph2073:                                       ; preds = %.preheader1227
  %508 = icmp eq i32 %.23962, 0
  br i1 %508, label %.loopexit, label %._crit_edge2074

509:                                              ; preds = %505
  %510 = and i32 %.19, 7
  %511 = zext nneg i32 %510 to i64
  %512 = lshr i64 %.19896, %511
  %513 = and i32 %.19, -8
  store i32 24, ptr %7, align 8, !tbaa !15
  br label %.thread

._crit_edge2074:                                  ; preds = %.lr.ph2073
  %514 = or disjoint i32 %.19, 8
  %515 = add i32 %.23962, -1
  %516 = getelementptr inbounds i8, ptr %.231025, i64 1
  %517 = load i8, ptr %.231025, align 1, !tbaa !24
  %518 = zext i8 %517 to i64
  %519 = zext nneg i32 %.19 to i64
  %520 = shl nuw nsw i64 %518, %519
  %521 = add i64 %520, %.19896
  br label %522

522:                                              ; preds = %._crit_edge2074, %.preheader1227
  %.241026.lcssa = phi ptr [ %516, %._crit_edge2074 ], [ %.231025, %.preheader1227 ]
  %.24963.lcssa = phi i32 [ %515, %._crit_edge2074 ], [ %.23962, %.preheader1227 ]
  %.20897.lcssa = phi i64 [ %521, %._crit_edge2074 ], [ %.19896, %.preheader1227 ]
  %.20.lcssa = phi i32 [ %514, %._crit_edge2074 ], [ %.19, %.preheader1227 ]
  %523 = trunc i64 %.20897.lcssa to i32
  %524 = and i32 %523, 1
  store i32 %524, ptr %60, align 4, !tbaa !57
  %525 = lshr i32 %523, 1
  %526 = and i32 %525, 3
  switch i32 %526, label %default.unreachable2824 [
    i32 0, label %530
    i32 1, label %527
    i32 2, label %528
    i32 3, label %529
  ]

527:                                              ; preds = %522
  call void @fixedtables(ptr noundef nonnull %7)
  br label %530

528:                                              ; preds = %522
  br label %530

529:                                              ; preds = %522
  store ptr @.str.6, ptr %38, align 8, !tbaa !32
  br label %530

default.unreachable2824:                          ; preds = %522
  unreachable

530:                                              ; preds = %522, %527, %528, %529
  %.sink = phi i32 [ 18, %527 ], [ 15, %528 ], [ 27, %529 ], [ 13, %522 ]
  store i32 %.sink, ptr %7, align 8, !tbaa !15
  %531 = lshr i64 %.20897.lcssa, 3
  %532 = add i32 %.20.lcssa, -3
  br label %.thread

533:                                              ; preds = %67
  %534 = and i32 %.0866, 7
  %535 = zext nneg i32 %534 to i64
  %536 = lshr i64 %.0877, %535
  %537 = and i32 %.0866, -8
  %538 = icmp ult i32 %.0866, 32
  br i1 %538, label %.lr.ph2054.preheader, label %._crit_edge2055

.lr.ph2054.preheader:                             ; preds = %533
  %539 = and i32 %.0866, 24
  %540 = zext nneg i32 %539 to i64
  %541 = icmp eq i32 %.0939, 0
  br i1 %541, label %.loopexit.loopexit2296, label %542

542:                                              ; preds = %.lr.ph2054.preheader
  %543 = add i32 %.0939, -1
  %544 = getelementptr inbounds i8, ptr %.01002, i64 1
  %545 = load i8, ptr %.01002, align 1, !tbaa !24
  %546 = zext i8 %545 to i64
  %547 = shl nuw nsw i64 %546, %540
  %548 = add i64 %547, %536
  %indvars.iv.next2776 = add nuw nsw i64 %540, 8
  %.not4149 = icmp eq i32 %539, 24
  br i1 %.not4149, label %._crit_edge2055.loopexit, label %.lr.ph2054.1, !llvm.loop !58

.lr.ph2054.1:                                     ; preds = %542
  %549 = icmp eq i32 %543, 0
  br i1 %549, label %.loopexit.loopexit2296, label %550

550:                                              ; preds = %.lr.ph2054.1
  %551 = add i32 %.0939, -2
  %552 = getelementptr inbounds i8, ptr %.01002, i64 2
  %553 = load i8, ptr %544, align 1, !tbaa !24
  %554 = zext i8 %553 to i64
  %555 = shl nuw nsw i64 %554, %indvars.iv.next2776
  %556 = add i64 %555, %548
  %indvars.iv.next2776.1 = add nuw nsw i64 %540, 16
  %557 = icmp ult i32 %539, 16
  br i1 %557, label %.lr.ph2054.2, label %._crit_edge2055.loopexit, !llvm.loop !58

.lr.ph2054.2:                                     ; preds = %550
  %558 = icmp eq i32 %551, 0
  br i1 %558, label %.loopexit.loopexit2296, label %559

559:                                              ; preds = %.lr.ph2054.2
  %560 = add i32 %.0939, -3
  %561 = getelementptr inbounds i8, ptr %.01002, i64 3
  %562 = load i8, ptr %552, align 1, !tbaa !24
  %563 = zext i8 %562 to i64
  %564 = shl nuw nsw i64 %563, %indvars.iv.next2776.1
  %565 = add i64 %564, %556
  %indvars.iv.next2776.2 = add nuw nsw i64 %540, 24
  %566 = icmp eq i32 %539, 0
  br i1 %566, label %.lr.ph2054.3, label %._crit_edge2055.loopexit, !llvm.loop !58

.lr.ph2054.3:                                     ; preds = %559
  %567 = icmp eq i32 %560, 0
  br i1 %567, label %.loopexit.loopexit2296, label %568

568:                                              ; preds = %.lr.ph2054.3
  %569 = add i32 %.0939, -4
  %570 = getelementptr inbounds i8, ptr %.01002, i64 4
  %571 = load i8, ptr %561, align 1, !tbaa !24
  %572 = zext i8 %571 to i64
  %573 = shl nuw nsw i64 %572, %indvars.iv.next2776.2
  %574 = add i64 %573, %565
  br label %._crit_edge2055.loopexit

._crit_edge2055.loopexit:                         ; preds = %568, %559, %550, %542
  %.lcssa3855 = phi i32 [ %543, %542 ], [ %551, %550 ], [ %560, %559 ], [ %569, %568 ]
  %.lcssa3854 = phi ptr [ %544, %542 ], [ %552, %550 ], [ %561, %559 ], [ %570, %568 ]
  %.lcssa3853 = phi i64 [ %548, %542 ], [ %556, %550 ], [ %565, %559 ], [ %574, %568 ]
  %indvars.iv.next2776.lcssa = phi i64 [ %indvars.iv.next2776, %542 ], [ %indvars.iv.next2776.1, %550 ], [ %indvars.iv.next2776.2, %559 ], [ 32, %568 ]
  %575 = trunc nuw nsw i64 %indvars.iv.next2776.lcssa to i32
  br label %._crit_edge2055

._crit_edge2055:                                  ; preds = %._crit_edge2055.loopexit, %533
  %.251027.lcssa = phi ptr [ %.01002, %533 ], [ %.lcssa3854, %._crit_edge2055.loopexit ]
  %.25964.lcssa = phi i32 [ %.0939, %533 ], [ %.lcssa3855, %._crit_edge2055.loopexit ]
  %.21898.lcssa = phi i64 [ %536, %533 ], [ %.lcssa3853, %._crit_edge2055.loopexit ]
  %.21.lcssa = phi i32 [ %537, %533 ], [ %575, %._crit_edge2055.loopexit ]
  %576 = and i64 %.21898.lcssa, 65535
  %577 = lshr i64 %.21898.lcssa, 16
  %578 = xor i64 %577, %576
  %.not1146 = icmp eq i64 %578, 65535
  br i1 %.not1146, label %580, label %579

579:                                              ; preds = %._crit_edge2055
  store ptr @.str.7, ptr %38, align 8, !tbaa !32
  store i32 27, ptr %7, align 8, !tbaa !15
  br label %.thread

580:                                              ; preds = %._crit_edge2055
  %581 = trunc i64 %.21898.lcssa to i32
  %582 = and i32 %581, 65535
  store i32 %582, ptr %39, align 4, !tbaa !20
  store i32 14, ptr %7, align 8, !tbaa !15
  br label %583

583:                                              ; preds = %._crit_edge2818, %580
  %584 = phi i32 [ %.pre2819, %._crit_edge2818 ], [ %582, %580 ]
  %.261028 = phi ptr [ %.01002, %._crit_edge2818 ], [ %.251027.lcssa, %580 ]
  %.26965 = phi i32 [ %.0939, %._crit_edge2818 ], [ %.25964.lcssa, %580 ]
  %.22899 = phi i64 [ %.0877, %._crit_edge2818 ], [ 0, %580 ]
  %.22 = phi i32 [ %.0866, %._crit_edge2818 ], [ 0, %580 ]
  %.not1147 = icmp eq i32 %584, 0
  br i1 %.not1147, label %595, label %585

585:                                              ; preds = %583
  %spec.select1192 = call i32 @llvm.umin.i32(i32 %584, i32 %.26965)
  %.4855 = call i32 @llvm.umin.i32(i32 %spec.select1192, i32 %.0937)
  %586 = icmp eq i32 %.4855, 0
  br i1 %586, label %.loopexit, label %587

587:                                              ; preds = %585
  %588 = zext i32 %.4855 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.0999, ptr align 1 %.261028, i64 %588, i1 false)
  %589 = sub i32 %.26965, %.4855
  %590 = getelementptr inbounds i8, ptr %.261028, i64 %588
  %591 = sub i32 %.0937, %.4855
  %592 = getelementptr inbounds i8, ptr %.0999, i64 %588
  %593 = load i32, ptr %39, align 4, !tbaa !20
  %594 = sub i32 %593, %.4855
  store i32 %594, ptr %39, align 4, !tbaa !20
  br label %.thread

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

596:                                              ; preds = %.lr.ph1711.preheader
  %597 = add i32 %.0939, -1
  %598 = getelementptr inbounds i8, ptr %.01002, i64 1
  %599 = load i8, ptr %.01002, align 1, !tbaa !24
  %600 = zext i8 %599 to i64
  %601 = shl nuw nsw i64 %600, %70
  %602 = add i64 %601, %.0877
  %indvars.iv.next2733 = add nuw nsw i64 %70, 8
  %603 = icmp ult i32 %.0866, 6
  br i1 %603, label %.lr.ph1711.1, label %._crit_edge1712.loopexit, !llvm.loop !59

.lr.ph1711.1:                                     ; preds = %596
  %604 = icmp eq i32 %597, 0
  br i1 %604, label %.loopexit.loopexit2304, label %605

605:                                              ; preds = %.lr.ph1711.1
  %606 = add i32 %.0939, -2
  %607 = getelementptr inbounds i8, ptr %.01002, i64 2
  %608 = load i8, ptr %598, align 1, !tbaa !24
  %609 = zext i8 %608 to i64
  %610 = shl nuw nsw i64 %609, %indvars.iv.next2733
  %611 = add i64 %610, %602
  %indvars.iv.next2733.1 = or disjoint i64 %70, 16
  br label %._crit_edge1712.loopexit

._crit_edge1712.loopexit:                         ; preds = %605, %596
  %.lcssa3755 = phi i32 [ %597, %596 ], [ %606, %605 ]
  %.lcssa3754 = phi ptr [ %598, %596 ], [ %607, %605 ]
  %.lcssa3753 = phi i64 [ %602, %596 ], [ %611, %605 ]
  %indvars.iv.next2733.lcssa = phi i64 [ %indvars.iv.next2733, %596 ], [ %indvars.iv.next2733.1, %605 ]
  %612 = trunc nuw nsw i64 %indvars.iv.next2733.lcssa to i32
  br label %._crit_edge1712

._crit_edge1712:                                  ; preds = %._crit_edge1712.loopexit, %.preheader1244
  %.271029.lcssa = phi ptr [ %.01002, %.preheader1244 ], [ %.lcssa3754, %._crit_edge1712.loopexit ]
  %.27966.lcssa = phi i32 [ %.0939, %.preheader1244 ], [ %.lcssa3755, %._crit_edge1712.loopexit ]
  %.23900.lcssa = phi i64 [ %.0877, %.preheader1244 ], [ %.lcssa3753, %._crit_edge1712.loopexit ]
  %.23.lcssa = phi i32 [ %.0866, %.preheader1244 ], [ %612, %._crit_edge1712.loopexit ]
  %613 = trunc i64 %.23900.lcssa to i32
  %614 = and i32 %613, 31
  %615 = add nuw nsw i32 %614, 257
  store i32 %615, ptr %40, align 4, !tbaa !60
  %616 = lshr i32 %613, 5
  %617 = and i32 %616, 31
  %618 = add nuw nsw i32 %617, 1
  store i32 %618, ptr %41, align 8, !tbaa !61
  %619 = lshr i32 %613, 10
  %620 = and i32 %619, 15
  %621 = add nuw nsw i32 %620, 4
  store i32 %621, ptr %42, align 8, !tbaa !62
  %622 = lshr i64 %.23900.lcssa, 14
  %623 = add i32 %.23.lcssa, -14
  %624 = icmp ugt i32 %614, 29
  %625 = icmp ugt i32 %617, 29
  %or.cond1201 = or i1 %624, %625
  br i1 %or.cond1201, label %626, label %.split.thread

626:                                              ; preds = %._crit_edge1712
  store ptr @.str.8, ptr %38, align 8, !tbaa !32
  store i32 27, ptr %7, align 8, !tbaa !15
  br label %.thread

.split.thread:                                    ; preds = %._crit_edge1712
  store i32 0, ptr %43, align 4, !tbaa !22
  store i32 16, ptr %7, align 8, !tbaa !15
  br label %.preheader1213.preheader

.split:                                           ; preds = %67
  %.pre2807 = load i32, ptr %42, align 8, !tbaa !62
  %.promoted.pre = load i32, ptr %43, align 4, !tbaa !22
  %627 = icmp ult i32 %.promoted.pre, %.pre2807
  br i1 %627, label %.preheader1213.preheader, label %.preheader1243

.preheader1213.preheader:                         ; preds = %.split.thread, %.split
  %.242874 = phi i32 [ %623, %.split.thread ], [ %.0866, %.split ]
  %.249012873 = phi i64 [ %622, %.split.thread ], [ %.0877, %.split ]
  %.289672872 = phi i32 [ %.27966.lcssa, %.split.thread ], [ %.0939, %.split ]
  %.2810302871 = phi ptr [ %.271029.lcssa, %.split.thread ], [ %.01002, %.split ]
  %628 = phi i32 [ %621, %.split.thread ], [ %.pre2807, %.split ]
  %.promoted2870 = phi i32 [ 0, %.split.thread ], [ %.promoted.pre, %.split ]
  %629 = zext i32 %.promoted2870 to i64
  %wide.trip.count = zext i32 %628 to i64
  br label %.preheader1213

.preheader1243:                                   ; preds = %642, %.split
  %.291031.lcssa = phi ptr [ %.01002, %.split ], [ %.301032.lcssa, %642 ]
  %.29968.lcssa = phi i32 [ %.0939, %.split ], [ %.30969.lcssa, %642 ]
  %.25902.lcssa = phi i64 [ %.0877, %.split ], [ %650, %642 ]
  %.25.lcssa = phi i32 [ %.0866, %.split ], [ %651, %642 ]
  %.lcssa = phi i32 [ %.promoted.pre, %.split ], [ %628, %642 ]
  %630 = icmp ult i32 %.lcssa, 19
  br i1 %630, label %.lr.ph1881.preheader, label %657

.lr.ph1881.preheader:                             ; preds = %.preheader1243
  %631 = zext nneg i32 %.lcssa to i64
  br label %.lr.ph1881

.preheader1213:                                   ; preds = %.preheader1213.preheader, %642
  %indvars.iv2735 = phi i64 [ %629, %.preheader1213.preheader ], [ %indvars.iv.next2736, %642 ]
  %.251874 = phi i32 [ %.242874, %.preheader1213.preheader ], [ %651, %642 ]
  %.259021873 = phi i64 [ %.249012873, %.preheader1213.preheader ], [ %650, %642 ]
  %.299681872 = phi i32 [ %.289672872, %.preheader1213.preheader ], [ %.30969.lcssa, %642 ]
  %.2910311871 = phi ptr [ %.2810302871, %.preheader1213.preheader ], [ %.301032.lcssa, %642 ]
  %632 = icmp ult i32 %.251874, 3
  br i1 %632, label %.lr.ph1721, label %642

.lr.ph1721:                                       ; preds = %.preheader1213
  %633 = icmp eq i32 %.299681872, 0
  br i1 %633, label %.loopexit, label %._crit_edge1722

._crit_edge1722:                                  ; preds = %.lr.ph1721
  %634 = or disjoint i32 %.251874, 8
  %635 = add i32 %.299681872, -1
  %636 = getelementptr inbounds i8, ptr %.2910311871, i64 1
  %637 = load i8, ptr %.2910311871, align 1, !tbaa !24
  %638 = zext i8 %637 to i64
  %639 = zext nneg i32 %.251874 to i64
  %640 = shl nuw nsw i64 %638, %639
  %641 = add i64 %640, %.259021873
  br label %642

642:                                              ; preds = %._crit_edge1722, %.preheader1213
  %.301032.lcssa = phi ptr [ %636, %._crit_edge1722 ], [ %.2910311871, %.preheader1213 ]
  %.30969.lcssa = phi i32 [ %635, %._crit_edge1722 ], [ %.299681872, %.preheader1213 ]
  %.26903.lcssa = phi i64 [ %641, %._crit_edge1722 ], [ %.259021873, %.preheader1213 ]
  %.26.lcssa = phi i32 [ %634, %._crit_edge1722 ], [ %.251874, %.preheader1213 ]
  %643 = trunc i64 %.26903.lcssa to i16
  %644 = and i16 %643, 7
  %indvars.iv.next2736 = add nuw nsw i64 %indvars.iv2735, 1
  %645 = trunc nuw i64 %indvars.iv.next2736 to i32
  store i32 %645, ptr %43, align 4, !tbaa !22
  %646 = getelementptr inbounds [19 x i16], ptr @z_inflate.order, i64 0, i64 %indvars.iv2735
  %647 = load i16, ptr %646, align 2, !tbaa !63
  %648 = zext i16 %647 to i64
  %649 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %648
  store i16 %644, ptr %649, align 2, !tbaa !63
  %650 = lshr i64 %.26903.lcssa, 3
  %651 = add i32 %.26.lcssa, -3
  %exitcond.not = icmp eq i64 %indvars.iv.next2736, %wide.trip.count
  br i1 %exitcond.not, label %.preheader1243, label %.preheader1213, !llvm.loop !65

.lr.ph1881:                                       ; preds = %.lr.ph1881.preheader, %.lr.ph1881
  %indvars.iv2738 = phi i64 [ %631, %.lr.ph1881.preheader ], [ %indvars.iv.next2739, %.lr.ph1881 ]
  %indvars.iv.next2739 = add nuw nsw i64 %indvars.iv2738, 1
  %652 = getelementptr inbounds [19 x i16], ptr @z_inflate.order, i64 0, i64 %indvars.iv2738
  %653 = load i16, ptr %652, align 2, !tbaa !63
  %654 = zext i16 %653 to i64
  %655 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %654
  store i16 0, ptr %655, align 2, !tbaa !63
  %656 = and i64 %indvars.iv.next2739, 4294967295
  %exitcond2741.not = icmp eq i64 %656, 19
  br i1 %exitcond2741.not, label %._crit_edge1882, label %.lr.ph1881, !llvm.loop !66

._crit_edge1882:                                  ; preds = %.lr.ph1881
  store i32 19, ptr %43, align 4, !tbaa !22
  br label %657

657:                                              ; preds = %._crit_edge1882, %.preheader1243
  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
  %658 = 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
  %.not1124 = icmp eq i32 %658, 0
  br i1 %.not1124, label %660, label %659

659:                                              ; preds = %657
  store ptr @.str.9, ptr %38, align 8, !tbaa !32
  store i32 27, ptr %7, align 8, !tbaa !15
  br label %.thread

660:                                              ; preds = %657
  store i32 0, ptr %43, align 4, !tbaa !22
  store i32 17, ptr %7, align 8, !tbaa !15
  br label %661

661:                                              ; preds = %._crit_edge2809, %660
  %.promoted1946 = phi i32 [ %.promoted1946.pre, %._crit_edge2809 ], [ 0, %660 ]
  %.311033 = phi ptr [ %.01002, %._crit_edge2809 ], [ %.291031.lcssa, %660 ]
  %.31970 = phi i32 [ %.0939, %._crit_edge2809 ], [ %.29968.lcssa, %660 ]
  %.27904 = phi i64 [ %.0877, %._crit_edge2809 ], [ %.25902.lcssa, %660 ]
  %.27 = phi i32 [ %.0866, %._crit_edge2809 ], [ %.25.lcssa, %660 ]
  %.1 = phi i32 [ %.0, %._crit_edge2809 ], [ 0, %660 ]
  %662 = load i32, ptr %40, align 4, !tbaa !60
  %663 = load i32, ptr %41, align 8, !tbaa !61
  %664 = add i32 %663, %662
  %665 = icmp ult i32 %.promoted1946, %664
  br i1 %665, label %.preheader1211.lr.ph, label %._crit_edge1954

.preheader1211.lr.ph:                             ; preds = %661
  %666 = load ptr, ptr %47, align 8, !tbaa !68
  %667 = load i32, ptr %48, align 8, !tbaa !69
  %notmask = shl nsw i32 -1, %667
  %668 = xor i32 %notmask, -1
  br label %.preheader1211

.preheader1211:                                   ; preds = %.preheader1211.lr.ph, %839
  %.281953 = phi i32 [ %.27, %.preheader1211.lr.ph ], [ %.35, %839 ]
  %.289051952 = phi i64 [ %.27904, %.preheader1211.lr.ph ], [ %.35912, %839 ]
  %.329711951 = phi i32 [ %.31970, %.preheader1211.lr.ph ], [ %.39978, %839 ]
  %.3210341950 = phi ptr [ %.311033, %.preheader1211.lr.ph ], [ %.391041, %839 ]
  %.lcssa193419471949 = phi i32 [ %.promoted1946, %.preheader1211.lr.ph ], [ %.lcssa19341948, %839 ]
  %669 = trunc i64 %.289051952 to i32
  %670 = and i32 %668, %669
  %671 = zext nneg i32 %670 to i64
  %.sroa.18.0..sroa_idx1886 = getelementptr inbounds %struct.code, ptr %666, i64 %671, i32 1
  %.sroa.18.0.copyload1887 = load i8, ptr %.sroa.18.0..sroa_idx1886, align 1, !tbaa !24
  %672 = zext i8 %.sroa.18.0.copyload1887 to i32
  %.not11251888 = icmp ult i32 %.281953, %672
  br i1 %.not11251888, label %.lr.ph1893.preheader, label %._crit_edge1894

.lr.ph1893.preheader:                             ; preds = %.preheader1211
  %673 = zext nneg i32 %.281953 to i64
  br label %.lr.ph1893

.lr.ph1893:                                       ; preds = %.lr.ph1893.preheader, %675
  %indvars.iv2742 = phi i64 [ %673, %.lr.ph1893.preheader ], [ %indvars.iv.next2743, %675 ]
  %.299061891 = phi i64 [ %.289051952, %.lr.ph1893.preheader ], [ %681, %675 ]
  %.339721890 = phi i32 [ %.329711951, %.lr.ph1893.preheader ], [ %676, %675 ]
  %.3310351889 = phi ptr [ %.3210341950, %.lr.ph1893.preheader ], [ %677, %675 ]
  %674 = icmp eq i32 %.339721890, 0
  br i1 %674, label %.loopexit.loopexit2875, label %675

675:                                              ; preds = %.lr.ph1893
  %676 = add i32 %.339721890, -1
  %677 = getelementptr inbounds i8, ptr %.3310351889, i64 1
  %678 = load i8, ptr %.3310351889, align 1, !tbaa !24
  %679 = zext i8 %678 to i64
  %680 = shl i64 %679, %indvars.iv2742
  %681 = add i64 %680, %.299061891
  %indvars.iv.next2743 = add nuw nsw i64 %indvars.iv2742, 8
  %682 = trunc i64 %681 to i32
  %683 = and i32 %668, %682
  %684 = zext nneg i32 %683 to i64
  %.sroa.18.0..sroa_idx = getelementptr inbounds %struct.code, ptr %666, i64 %684, i32 1
  %.sroa.18.0.copyload = load i8, ptr %.sroa.18.0..sroa_idx, align 1, !tbaa !24
  %685 = zext i8 %.sroa.18.0.copyload to i64
  %.not1125 = icmp ult i64 %indvars.iv.next2743, %685
  br i1 %.not1125, label %.lr.ph1893, label %._crit_edge1894.loopexit

._crit_edge1894.loopexit:                         ; preds = %675
  %686 = zext i8 %.sroa.18.0.copyload to i32
  %687 = trunc nuw i64 %indvars.iv.next2743 to i32
  br label %._crit_edge1894

._crit_edge1894:                                  ; preds = %._crit_edge1894.loopexit, %.preheader1211
  %688 = phi i64 [ %671, %.preheader1211 ], [ %684, %._crit_edge1894.loopexit ]
  %.lcssa1884 = phi i32 [ %672, %.preheader1211 ], [ %686, %._crit_edge1894.loopexit ]
  %.331035.lcssa = phi ptr [ %.3210341950, %.preheader1211 ], [ %677, %._crit_edge1894.loopexit ]
  %.33972.lcssa = phi i32 [ %.329711951, %.preheader1211 ], [ %676, %._crit_edge1894.loopexit ]
  %.29906.lcssa = phi i64 [ %.289051952, %.preheader1211 ], [ %681, %._crit_edge1894.loopexit ]
  %.29.lcssa = phi i32 [ %.281953, %.preheader1211 ], [ %687, %._crit_edge1894.loopexit ]
  %.sroa.18.0.copyload.lcssa = phi i8 [ %.sroa.18.0.copyload1887, %.preheader1211 ], [ %.sroa.18.0.copyload, %._crit_edge1894.loopexit ]
  %.sroa.41.0..sroa_idx.le = getelementptr inbounds %struct.code, ptr %666, i64 %688, i32 2
  %.sroa.41.0.copyload.le = load i16, ptr %.sroa.41.0..sroa_idx.le, align 2, !tbaa !63
  %689 = icmp ult i16 %.sroa.41.0.copyload.le, 16
  br i1 %689, label %.preheader, label %709

.preheader:                                       ; preds = %._crit_edge1894
  %690 = icmp ult i32 %.29.lcssa, %.lcssa1884
  br i1 %690, label %.lr.ph1940.preheader, label %._crit_edge1941

.lr.ph1940.preheader:                             ; preds = %.preheader
  %691 = zext nneg i32 %.29.lcssa to i64
  %692 = zext nneg i32 %.lcssa1884 to i64
  br label %.lr.ph1940

.lr.ph1940:                                       ; preds = %.lr.ph1940.preheader, %694
  %indvars.iv2754 = phi i64 [ %691, %.lr.ph1940.preheader ], [ %indvars.iv.next2755, %694 ]
  %.309071938 = phi i64 [ %.29906.lcssa, %.lr.ph1940.preheader ], [ %700, %694 ]
  %.349731937 = phi i32 [ %.33972.lcssa, %.lr.ph1940.preheader ], [ %695, %694 ]
  %.3410361936 = phi ptr [ %.331035.lcssa, %.lr.ph1940.preheader ], [ %696, %694 ]
  %693 = icmp eq i32 %.349731937, 0
  br i1 %693, label %.loopexit.loopexit, label %694

694:                                              ; preds = %.lr.ph1940
  %695 = add i32 %.349731937, -1
  %696 = getelementptr inbounds i8, ptr %.3410361936, i64 1
  %697 = load i8, ptr %.3410361936, align 1, !tbaa !24
  %698 = zext i8 %697 to i64
  %699 = shl i64 %698, %indvars.iv2754
  %700 = add i64 %699, %.309071938
  %indvars.iv.next2755 = add nuw nsw i64 %indvars.iv2754, 8
  %701 = icmp ult i64 %indvars.iv.next2755, %692
  br i1 %701, label %.lr.ph1940, label %._crit_edge1941.loopexit, !llvm.loop !70

._crit_edge1941.loopexit:                         ; preds = %694
  %702 = trunc nuw i64 %indvars.iv.next2755 to i32
  br label %._crit_edge1941

._crit_edge1941:                                  ; preds = %._crit_edge1941.loopexit, %.preheader
  %.341036.lcssa = phi ptr [ %.331035.lcssa, %.preheader ], [ %696, %._crit_edge1941.loopexit ]
  %.34973.lcssa = phi i32 [ %.33972.lcssa, %.preheader ], [ %695, %._crit_edge1941.loopexit ]
  %.30907.lcssa = phi i64 [ %.29906.lcssa, %.preheader ], [ %700, %._crit_edge1941.loopexit ]
  %.30.lcssa = phi i32 [ %.29.lcssa, %.preheader ], [ %702, %._crit_edge1941.loopexit ]
  %703 = zext nneg i8 %.sroa.18.0.copyload.lcssa to i64
  %704 = lshr i64 %.30907.lcssa, %703
  %705 = sub i32 %.30.lcssa, %.lcssa1884
  %706 = add i32 %.lcssa193419471949, 1
  store i32 %706, ptr %43, align 4, !tbaa !22
  %707 = zext i32 %.lcssa193419471949 to i64
  %708 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %707
  store i16 %.sroa.41.0.copyload.le, ptr %708, align 2, !tbaa !63
  br label %839

709:                                              ; preds = %._crit_edge1894
  switch i16 %.sroa.41.0.copyload.le, label %.preheader1205 [
    i16 16, label %.preheader1207
    i16 17, label %.preheader1209
  ]

.preheader1209:                                   ; preds = %709
  %710 = add nuw nsw i32 %.lcssa1884, 3
  %711 = icmp ult i32 %.29.lcssa, %710
  br i1 %711, label %.lr.ph1907.preheader, label %._crit_edge1908

.lr.ph1907.preheader:                             ; preds = %.preheader1209
  %712 = zext nneg i32 %.29.lcssa to i64
  %713 = zext nneg i32 %710 to i64
  br label %.lr.ph1907

.preheader1207:                                   ; preds = %709
  %714 = add nuw nsw i32 %.lcssa1884, 2
  %715 = icmp ult i32 %.29.lcssa, %714
  br i1 %715, label %.lr.ph1917.preheader, label %._crit_edge1918

.lr.ph1917.preheader:                             ; preds = %.preheader1207
  %716 = zext nneg i32 %.29.lcssa to i64
  %717 = zext nneg i32 %714 to i64
  br label %.lr.ph1917

.preheader1205:                                   ; preds = %709
  %718 = add nuw nsw i32 %.lcssa1884, 7
  %719 = icmp ult i32 %.29.lcssa, %718
  br i1 %719, label %.lr.ph1927.preheader, label %._crit_edge1928

.lr.ph1927.preheader:                             ; preds = %.preheader1205
  %720 = zext nneg i32 %.29.lcssa to i64
  %721 = zext nneg i32 %718 to i64
  br label %.lr.ph1927

.lr.ph1917:                                       ; preds = %.lr.ph1917.preheader, %723
  %indvars.iv2748 = phi i64 [ %716, %.lr.ph1917.preheader ], [ %indvars.iv.next2749, %723 ]
  %.319081915 = phi i64 [ %.29906.lcssa, %.lr.ph1917.preheader ], [ %729, %723 ]
  %.359741914 = phi i32 [ %.33972.lcssa, %.lr.ph1917.preheader ], [ %724, %723 ]
  %.3510371913 = phi ptr [ %.331035.lcssa, %.lr.ph1917.preheader ], [ %725, %723 ]
  %722 = icmp eq i32 %.359741914, 0
  br i1 %722, label %.loopexit.loopexit2286, label %723

723:                                              ; preds = %.lr.ph1917
  %724 = add i32 %.359741914, -1
  %725 = getelementptr inbounds i8, ptr %.3510371913, i64 1
  %726 = load i8, ptr %.3510371913, align 1, !tbaa !24
  %727 = zext i8 %726 to i64
  %728 = shl i64 %727, %indvars.iv2748
  %729 = add i64 %728, %.319081915
  %indvars.iv.next2749 = add nuw nsw i64 %indvars.iv2748, 8
  %730 = icmp ult i64 %indvars.iv.next2749, %717
  br i1 %730, label %.lr.ph1917, label %._crit_edge1918.loopexit, !llvm.loop !71

._crit_edge1918.loopexit:                         ; preds = %723
  %731 = trunc nuw i64 %indvars.iv.next2749 to i32
  br label %._crit_edge1918

._crit_edge1918:                                  ; preds = %._crit_edge1918.loopexit, %.preheader1207
  %.351037.lcssa = phi ptr [ %.331035.lcssa, %.preheader1207 ], [ %725, %._crit_edge1918.loopexit ]
  %.35974.lcssa = phi i32 [ %.33972.lcssa, %.preheader1207 ], [ %724, %._crit_edge1918.loopexit ]
  %.31908.lcssa = phi i64 [ %.29906.lcssa, %.preheader1207 ], [ %729, %._crit_edge1918.loopexit ]
  %.31.lcssa = phi i32 [ %.29.lcssa, %.preheader1207 ], [ %731, %._crit_edge1918.loopexit ]
  %732 = zext nneg i8 %.sroa.18.0.copyload.lcssa to i64
  %733 = lshr i64 %.31908.lcssa, %732
  %734 = sub i32 %.31.lcssa, %.lcssa1884
  %735 = icmp eq i32 %.lcssa193419471949, 0
  br i1 %735, label %736, label %737

736:                                              ; preds = %._crit_edge1918
  store ptr @.str.10, ptr %38, align 8, !tbaa !32
  store i32 27, ptr %7, align 8, !tbaa !15
  br label %.thread

737:                                              ; preds = %._crit_edge1918
  %738 = add i32 %.lcssa193419471949, -1
  %739 = zext i32 %738 to i64
  %740 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %739
  %741 = load i16, ptr %740, align 2, !tbaa !63
  %742 = trunc i64 %733 to i32
  %743 = and i32 %742, 3
  %744 = add nuw nsw i32 %743, 3
  %745 = lshr i64 %733, 2
  %746 = add i32 %734, -2
  br label %781

.lr.ph1907:                                       ; preds = %.lr.ph1907.preheader, %748
  %indvars.iv2745 = phi i64 [ %712, %.lr.ph1907.preheader ], [ %indvars.iv.next2746, %748 ]
  %.329091905 = phi i64 [ %.29906.lcssa, %.lr.ph1907.preheader ], [ %754, %748 ]
  %.369751904 = phi i32 [ %.33972.lcssa, %.lr.ph1907.preheader ], [ %749, %748 ]
  %.3610381903 = phi ptr [ %.331035.lcssa, %.lr.ph1907.preheader ], [ %750, %748 ]
  %747 = icmp eq i32 %.369751904, 0
  br i1 %747, label %.loopexit.loopexit2287, label %748

748:                                              ; preds = %.lr.ph1907
  %749 = add i32 %.369751904, -1
  %750 = getelementptr inbounds i8, ptr %.3610381903, i64 1
  %751 = load i8, ptr %.3610381903, align 1, !tbaa !24
  %752 = zext i8 %751 to i64
  %753 = shl i64 %752, %indvars.iv2745
  %754 = add i64 %753, %.329091905
  %indvars.iv.next2746 = add nuw nsw i64 %indvars.iv2745, 8
  %755 = icmp ult i64 %indvars.iv.next2746, %713
  br i1 %755, label %.lr.ph1907, label %._crit_edge1908.loopexit, !llvm.loop !72

._crit_edge1908.loopexit:                         ; preds = %748
  %756 = trunc nuw i64 %indvars.iv.next2746 to i32
  br label %._crit_edge1908

._crit_edge1908:                                  ; preds = %._crit_edge1908.loopexit, %.preheader1209
  %.361038.lcssa = phi ptr [ %.331035.lcssa, %.preheader1209 ], [ %750, %._crit_edge1908.loopexit ]
  %.36975.lcssa = phi i32 [ %.33972.lcssa, %.preheader1209 ], [ %749, %._crit_edge1908.loopexit ]
  %.32909.lcssa = phi i64 [ %.29906.lcssa, %.preheader1209 ], [ %754, %._crit_edge1908.loopexit ]
  %.32.lcssa = phi i32 [ %.29.lcssa, %.preheader1209 ], [ %756, %._crit_edge1908.loopexit ]
  %757 = zext nneg i8 %.sroa.18.0.copyload.lcssa to i64
  %758 = lshr i64 %.32909.lcssa, %757
  %759 = trunc i64 %758 to i32
  %760 = and i32 %759, 7
  %761 = add nuw nsw i32 %760, 3
  %762 = lshr i64 %758, 3
  %reass.sub = sub i32 %.32.lcssa, %.lcssa1884
  %763 = add i32 %reass.sub, -3
  br label %781

.lr.ph1927:                                       ; preds = %.lr.ph1927.preheader, %765
  %indvars.iv2751 = phi i64 [ %720, %.lr.ph1927.preheader ], [ %indvars.iv.next2752, %765 ]
  %.339101925 = phi i64 [ %.29906.lcssa, %.lr.ph1927.preheader ], [ %771, %765 ]
  %.379761924 = phi i32 [ %.33972.lcssa, %.lr.ph1927.preheader ], [ %766, %765 ]
  %.3710391923 = phi ptr [ %.331035.lcssa, %.lr.ph1927.preheader ], [ %767, %765 ]
  %764 = icmp eq i32 %.379761924, 0
  br i1 %764, label %.loopexit.loopexit2285, label %765

765:                                              ; preds = %.lr.ph1927
  %766 = add i32 %.379761924, -1
  %767 = getelementptr inbounds i8, ptr %.3710391923, i64 1
  %768 = load i8, ptr %.3710391923, align 1, !tbaa !24
  %769 = zext i8 %768 to i64
  %770 = shl i64 %769, %indvars.iv2751
  %771 = add i64 %770, %.339101925
  %indvars.iv.next2752 = add nuw nsw i64 %indvars.iv2751, 8
  %772 = icmp ult i64 %indvars.iv.next2752, %721
  br i1 %772, label %.lr.ph1927, label %._crit_edge1928.loopexit, !llvm.loop !73

._crit_edge1928.loopexit:                         ; preds = %765
  %773 = trunc nuw i64 %indvars.iv.next2752 to i32
  br label %._crit_edge1928

._crit_edge1928:                                  ; preds = %._crit_edge1928.loopexit, %.preheader1205
  %.371039.lcssa = phi ptr [ %.331035.lcssa, %.preheader1205 ], [ %767, %._crit_edge1928.loopexit ]
  %.37976.lcssa = phi i32 [ %.33972.lcssa, %.preheader1205 ], [ %766, %._crit_edge1928.loopexit ]
  %.33910.lcssa = phi i64 [ %.29906.lcssa, %.preheader1205 ], [ %771, %._crit_edge1928.loopexit ]
  %.33.lcssa = phi i32 [ %.29.lcssa, %.preheader1205 ], [ %773, %._crit_edge1928.loopexit ]
  %774 = zext nneg i8 %.sroa.18.0.copyload.lcssa to i64
  %775 = lshr i64 %.33910.lcssa, %774
  %776 = trunc i64 %775 to i32
  %777 = and i32 %776, 127
  %778 = add nuw nsw i32 %777, 11
  %779 = lshr i64 %775, 7
  %reass.sub2284 = sub i32 %.33.lcssa, %.lcssa1884
  %780 = add i32 %reass.sub2284, -7
  br label %781

781:                                              ; preds = %._crit_edge1908, %._crit_edge1928, %737
  %.381040 = phi ptr [ %.351037.lcssa, %737 ], [ %.361038.lcssa, %._crit_edge1908 ], [ %.371039.lcssa, %._crit_edge1928 ]
  %.38977 = phi i32 [ %.35974.lcssa, %737 ], [ %.36975.lcssa, %._crit_edge1908 ], [ %.37976.lcssa, %._crit_edge1928 ]
  %.34911 = phi i64 [ %745, %737 ], [ %762, %._crit_edge1908 ], [ %779, %._crit_edge1928 ]
  %.34 = phi i32 [ %746, %737 ], [ %763, %._crit_edge1908 ], [ %780, %._crit_edge1928 ]
  %.5856 = phi i32 [ %744, %737 ], [ %761, %._crit_edge1908 ], [ %778, %._crit_edge1928 ]
  %.0847 = phi i16 [ %741, %737 ], [ 0, %._crit_edge1908 ], [ 0, %._crit_edge1928 ]
  %782 = add i32 %.5856, %.lcssa193419471949
  %783 = icmp ugt i32 %782, %664
  br i1 %783, label %824, label %.preheader1203.preheader

.preheader1203.preheader:                         ; preds = %781
  %min.iters.check3719 = icmp ult i32 %.5856, 16
  %784 = sub nsw i32 0, %.5856
  %785 = icmp ugt i32 %.lcssa193419471949, %784
  %or.cond3733 = select i1 %min.iters.check3719, i1 true, i1 %785
  br i1 %or.cond3733, label %.preheader1203.preheader3735, label %vector.ph3720

.preheader1203.preheader3735:                     ; preds = %middle.block3717, %.preheader1203.preheader
  %.68571935.ph = phi i32 [ %.5856, %.preheader1203.preheader ], [ %ind.end3723, %middle.block3717 ]
  %.ph = phi i32 [ %.lcssa193419471949, %.preheader1203.preheader ], [ %ind.end3725, %middle.block3717 ]
  %786 = add nsw i32 %.68571935.ph, -1
  %xtraiter = and i32 %.68571935.ph, 3
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader1203.prol.loopexit, label %.preheader1203.prol

.preheader1203.prol:                              ; preds = %.preheader1203.preheader3735, %.preheader1203.prol
  %.68571935.prol = phi i32 [ %788, %.preheader1203.prol ], [ %.68571935.ph, %.preheader1203.preheader3735 ]
  %787 = phi i32 [ %789, %.preheader1203.prol ], [ %.ph, %.preheader1203.preheader3735 ]
  %prol.iter = phi i32 [ %prol.iter.next, %.preheader1203.prol ], [ 0, %.preheader1203.preheader3735 ]
  %788 = add nsw i32 %.68571935.prol, -1
  %789 = add i32 %787, 1
  %790 = zext i32 %787 to i64
  %791 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %790
  store i16 %.0847, ptr %791, 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 %.preheader1203.prol.loopexit, label %.preheader1203.prol, !llvm.loop !74

.preheader1203.prol.loopexit:                     ; preds = %.preheader1203.prol, %.preheader1203.preheader3735
  %.lcssa3785.unr = phi i32 [ poison, %.preheader1203.preheader3735 ], [ %789, %.preheader1203.prol ]
  %.68571935.unr = phi i32 [ %.68571935.ph, %.preheader1203.preheader3735 ], [ %788, %.preheader1203.prol ]
  %.unr = phi i32 [ %.ph, %.preheader1203.preheader3735 ], [ %789, %.preheader1203.prol ]
  %792 = icmp ult i32 %786, 3
  br i1 %792, label %.loopexit1204, label %.preheader1203

vector.ph3720:                                    ; preds = %.preheader1203.preheader
  %n.vec3722 = and i32 %.5856, -16
  %ind.end3723 = and i32 %.5856, 15
  %ind.end3725 = add i32 %.lcssa193419471949, %n.vec3722
  %broadcast.splatinsert = insertelement <8 x i16> poison, i16 %.0847, i64 0
  %broadcast.splat = shufflevector <8 x i16> %broadcast.splatinsert, <8 x i16> poison, <8 x i32> zeroinitializer
  %793 = zext i32 %.lcssa193419471949 to i64
  %794 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %793
  %795 = getelementptr inbounds i8, ptr %794, i64 16
  store <8 x i16> %broadcast.splat, ptr %794, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat, ptr %795, align 2, !tbaa !63
  %796 = icmp eq i32 %n.vec3722, 16
  br i1 %796, label %middle.block3717, label %vector.body3727.1, !llvm.loop !76

vector.body3727.1:                                ; preds = %vector.ph3720
  %offset.idx.1 = add i32 %.lcssa193419471949, 16
  %797 = zext i32 %offset.idx.1 to i64
  %798 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %797
  %799 = getelementptr inbounds i8, ptr %798, i64 16
  store <8 x i16> %broadcast.splat, ptr %798, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat, ptr %799, align 2, !tbaa !63
  %800 = icmp eq i32 %n.vec3722, 32
  br i1 %800, label %middle.block3717, label %vector.body3727.2, !llvm.loop !76

vector.body3727.2:                                ; preds = %vector.body3727.1
  %offset.idx.2 = add i32 %.lcssa193419471949, 32
  %801 = zext i32 %offset.idx.2 to i64
  %802 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %801
  %803 = getelementptr inbounds i8, ptr %802, i64 16
  store <8 x i16> %broadcast.splat, ptr %802, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat, ptr %803, align 2, !tbaa !63
  %804 = icmp eq i32 %n.vec3722, 48
  br i1 %804, label %middle.block3717, label %vector.body3727.3, !llvm.loop !76

vector.body3727.3:                                ; preds = %vector.body3727.2
  %offset.idx.3 = add i32 %.lcssa193419471949, 48
  %805 = zext i32 %offset.idx.3 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.vec3722, 64
  br i1 %808, label %middle.block3717, label %vector.body3727.4, !llvm.loop !76

vector.body3727.4:                                ; preds = %vector.body3727.3
  %offset.idx.4 = add i32 %.lcssa193419471949, 64
  %809 = zext i32 %offset.idx.4 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.vec3722, 80
  br i1 %812, label %middle.block3717, label %vector.body3727.5, !llvm.loop !76

vector.body3727.5:                                ; preds = %vector.body3727.4
  %offset.idx.5 = add i32 %.lcssa193419471949, 80
  %813 = zext i32 %offset.idx.5 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.vec3722, 96
  br i1 %816, label %middle.block3717, label %vector.body3727.6, !llvm.loop !76

vector.body3727.6:                                ; preds = %vector.body3727.5
  %offset.idx.6 = add i32 %.lcssa193419471949, 96
  %817 = zext i32 %offset.idx.6 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.vec3722, 112
  br i1 %820, label %middle.block3717, label %vector.body3727.7, !llvm.loop !76

vector.body3727.7:                                ; preds = %vector.body3727.6
  %offset.idx.7 = add i32 %.lcssa193419471949, 112
  %821 = zext i32 %offset.idx.7 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
  br label %middle.block3717

middle.block3717:                                 ; preds = %vector.body3727.7, %vector.body3727.6, %vector.body3727.5, %vector.body3727.4, %vector.body3727.3, %vector.body3727.2, %vector.body3727.1, %vector.ph3720
  %cmp.n3730 = icmp eq i32 %.5856, %n.vec3722
  br i1 %cmp.n3730, label %.loopexit1204, label %.preheader1203.preheader3735

824:                                              ; preds = %781
  store ptr @.str.10, ptr %38, align 8, !tbaa !32
  store i32 27, ptr %7, align 8, !tbaa !15
  br label %.thread

.preheader1203:                                   ; preds = %.preheader1203.prol.loopexit, %.preheader1203
  %.68571935 = phi i32 [ %835, %.preheader1203 ], [ %.68571935.unr, %.preheader1203.prol.loopexit ]
  %825 = phi i32 [ %836, %.preheader1203 ], [ %.unr, %.preheader1203.prol.loopexit ]
  %826 = add i32 %825, 1
  %827 = zext i32 %825 to i64
  %828 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %827
  store i16 %.0847, ptr %828, align 2, !tbaa !63
  %829 = add i32 %825, 2
  %830 = zext i32 %826 to i64
  %831 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %830
  store i16 %.0847, ptr %831, align 2, !tbaa !63
  %832 = add i32 %825, 3
  %833 = zext i32 %829 to i64
  %834 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %833
  store i16 %.0847, ptr %834, align 2, !tbaa !63
  %835 = add nsw i32 %.68571935, -4
  %836 = add i32 %825, 4
  %837 = zext i32 %832 to i64
  %838 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %837
  store i16 %.0847, ptr %838, align 2, !tbaa !63
  %.not1126.3 = icmp eq i32 %835, 0
  br i1 %.not1126.3, label %.loopexit1204, label %.preheader1203, !llvm.loop !79

.loopexit1204:                                    ; preds = %.preheader1203.prol.loopexit, %.preheader1203, %middle.block3717
  %.lcssa3346 = phi i32 [ %ind.end3725, %middle.block3717 ], [ %.lcssa3785.unr, %.preheader1203.prol.loopexit ], [ %836, %.preheader1203 ]
  store i32 %.lcssa3346, ptr %43, align 4, !tbaa !22
  br label %839

839:                                              ; preds = %.loopexit1204, %._crit_edge1941
  %.lcssa19341948 = phi i32 [ %706, %._crit_edge1941 ], [ %.lcssa3346, %.loopexit1204 ]
  %.391041 = phi ptr [ %.341036.lcssa, %._crit_edge1941 ], [ %.381040, %.loopexit1204 ]
  %.39978 = phi i32 [ %.34973.lcssa, %._crit_edge1941 ], [ %.38977, %.loopexit1204 ]
  %.35912 = phi i64 [ %704, %._crit_edge1941 ], [ %.34911, %.loopexit1204 ]
  %.35 = phi i32 [ %705, %._crit_edge1941 ], [ %.34, %.loopexit1204 ]
  %840 = icmp ult i32 %.lcssa19341948, %664
  br i1 %840, label %.preheader1211, label %._crit_edge1954, !llvm.loop !80

._crit_edge1954:                                  ; preds = %839, %661
  %.321034.lcssa = phi ptr [ %.311033, %661 ], [ %.391041, %839 ]
  %.32971.lcssa = phi i32 [ %.31970, %661 ], [ %.39978, %839 ]
  %.28905.lcssa = phi i64 [ %.27904, %661 ], [ %.35912, %839 ]
  %.28.lcssa = phi i32 [ %.27, %661 ], [ %.35, %839 ]
  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
  %841 = call i32 @inflate_table(i32 noundef 1, ptr noundef nonnull %44, i32 noundef %662, ptr noundef nonnull %46, ptr noundef nonnull %48, ptr noundef nonnull %49) #5
  %.not1127 = icmp eq i32 %841, 0
  br i1 %.not1127, label %843, label %842

842:                                              ; preds = %._crit_edge1954
  store ptr @.str.11, ptr %38, align 8, !tbaa !32
  store i32 27, ptr %7, align 8, !tbaa !15
  br label %.thread

843:                                              ; preds = %._crit_edge1954
  %844 = load ptr, ptr %46, align 8, !tbaa !67
  store ptr %844, ptr %50, align 8, !tbaa !81
  store i32 6, ptr %51, align 4, !tbaa !82
  %845 = load i32, ptr %40, align 4, !tbaa !60
  %846 = zext i32 %845 to i64
  %847 = getelementptr inbounds i16, ptr %44, i64 %846
  %848 = load i32, ptr %41, align 8, !tbaa !61
  %849 = call i32 @inflate_table(i32 noundef 2, ptr noundef nonnull %847, i32 noundef %848, ptr noundef nonnull %46, ptr noundef nonnull %51, ptr noundef nonnull %49) #5
  %.not1128 = icmp eq i32 %849, 0
  br i1 %.not1128, label %851, label %850

850:                                              ; preds = %843
  store ptr @.str.12, ptr %38, align 8, !tbaa !32
  store i32 27, ptr %7, align 8, !tbaa !15
  br label %.thread

851:                                              ; preds = %843
  store i32 18, ptr %7, align 8, !tbaa !15
  br label %852

852:                                              ; preds = %851, %67
  %.411043 = phi ptr [ %.01002, %67 ], [ %.321034.lcssa, %851 ]
  %.41980 = phi i32 [ %.0939, %67 ], [ %.32971.lcssa, %851 ]
  %.37914 = phi i64 [ %.0877, %67 ], [ %.28905.lcssa, %851 ]
  %.37 = phi i32 [ %.0866, %67 ], [ %.28.lcssa, %851 ]
  %.2 = phi i32 [ %.0, %67 ], [ 0, %851 ]
  %853 = icmp ugt i32 %.41980, 5
  %854 = icmp ugt i32 %.0937, 257
  %or.cond3 = select i1 %853, i1 %854, i1 false
  br i1 %or.cond3, label %864, label %.preheader1241

.preheader1241:                                   ; preds = %852
  %855 = load ptr, ptr %47, align 8, !tbaa !68
  %856 = load i32, ptr %48, align 8, !tbaa !69
  %notmask1129 = shl nsw i32 -1, %856
  %857 = xor i32 %notmask1129, -1
  %858 = trunc i64 %.37914 to i32
  %859 = and i32 %857, %858
  %860 = zext nneg i32 %859 to i64
  %861 = getelementptr inbounds %struct.code, ptr %855, i64 %860
  %.sroa.18.0..sroa_idx571961 = getelementptr inbounds i8, ptr %861, i64 1
  %.sroa.18.0.copyload581962 = load i8, ptr %.sroa.18.0..sroa_idx571961, align 1, !tbaa !24
  %862 = zext i8 %.sroa.18.0.copyload581962 to i32
  %.not11301963 = icmp ult i32 %.37, %862
  br i1 %.not11301963, label %.lr.ph1968.preheader, label %._crit_edge1969

.lr.ph1968.preheader:                             ; preds = %.preheader1241
  %863 = zext nneg i32 %.37 to i64
  br label %.lr.ph1968

864:                                              ; preds = %852
  store ptr %.0999, ptr %10, align 8, !tbaa !12
  store i32 %.0937, ptr %24, align 8, !tbaa !17
  store ptr %.411043, ptr %0, align 8, !tbaa !13
  store i32 %.41980, ptr %26, align 8, !tbaa !14
  store i64 %.37914, ptr %28, align 8, !tbaa !18
  store i32 %.37, ptr %30, align 8, !tbaa !19
  call void @inflate_fast(ptr noundef nonnull %0, i32 noundef %.0860) #5
  %865 = load ptr, ptr %10, align 8, !tbaa !12
  %866 = load i32, ptr %24, align 8, !tbaa !17
  %867 = load ptr, ptr %0, align 8, !tbaa !13
  %868 = load i32, ptr %26, align 8, !tbaa !14
  %869 = load i64, ptr %28, align 8, !tbaa !18
  %870 = load i32, ptr %30, align 8, !tbaa !19
  br label %.thread

.lr.ph1968:                                       ; preds = %.lr.ph1968.preheader, %872
  %indvars.iv2757 = phi i64 [ %863, %.lr.ph1968.preheader ], [ %indvars.iv.next2758, %872 ]
  %.389151966 = phi i64 [ %.37914, %.lr.ph1968.preheader ], [ %878, %872 ]
  %.429811965 = phi i32 [ %.41980, %.lr.ph1968.preheader ], [ %873, %872 ]
  %.4210441964 = phi ptr [ %.411043, %.lr.ph1968.preheader ], [ %874, %872 ]
  %871 = icmp eq i32 %.429811965, 0
  br i1 %871, label %.loopexit.loopexit2881, label %872

872:                                              ; preds = %.lr.ph1968
  %873 = add i32 %.429811965, -1
  %874 = getelementptr inbounds i8, ptr %.4210441964, i64 1
  %875 = load i8, ptr %.4210441964, align 1, !tbaa !24
  %876 = zext i8 %875 to i64
  %877 = shl i64 %876, %indvars.iv2757
  %878 = add i64 %877, %.389151966
  %indvars.iv.next2758 = add nuw nsw i64 %indvars.iv2757, 8
  %879 = trunc i64 %878 to i32
  %880 = and i32 %857, %879
  %881 = zext nneg i32 %880 to i64
  %882 = getelementptr inbounds %struct.code, ptr %855, i64 %881
  %.sroa.18.0..sroa_idx57 = getelementptr inbounds i8, ptr %882, i64 1
  %.sroa.18.0.copyload58 = load i8, ptr %.sroa.18.0..sroa_idx57, align 1, !tbaa !24
  %883 = zext i8 %.sroa.18.0.copyload58 to i64
  %.not1130 = icmp ult i64 %indvars.iv.next2758, %883
  br i1 %.not1130, label %.lr.ph1968, label %._crit_edge1969.loopexit

._crit_edge1969.loopexit:                         ; preds = %872
  %884 = zext i8 %.sroa.18.0.copyload58 to i32
  %885 = trunc nuw i64 %indvars.iv.next2758 to i32
  br label %._crit_edge1969

._crit_edge1969:                                  ; preds = %._crit_edge1969.loopexit, %.preheader1241
  %.lcssa1960 = phi ptr [ %861, %.preheader1241 ], [ %882, %._crit_edge1969.loopexit ]
  %.421044.lcssa = phi ptr [ %.411043, %.preheader1241 ], [ %874, %._crit_edge1969.loopexit ]
  %.42981.lcssa = phi i32 [ %.41980, %.preheader1241 ], [ %873, %._crit_edge1969.loopexit ]
  %.38915.lcssa = phi i64 [ %.37914, %.preheader1241 ], [ %878, %._crit_edge1969.loopexit ]
  %.38.lcssa = phi i32 [ %.37, %.preheader1241 ], [ %885, %._crit_edge1969.loopexit ]
  %.sroa.18.0.copyload58.lcssa = phi i8 [ %.sroa.18.0.copyload581962, %.preheader1241 ], [ %.sroa.18.0.copyload58, %._crit_edge1969.loopexit ]
  %.lcssa1354 = phi i32 [ %862, %.preheader1241 ], [ %884, %._crit_edge1969.loopexit ]
  %.sroa.41.0..sroa_idx85.le = getelementptr inbounds i8, ptr %.lcssa1960, i64 2
  %.sroa.41.0.copyload86.le = load i16, ptr %.sroa.41.0..sroa_idx85.le, align 2, !tbaa !63
  %.sroa.044.0.copyload53 = load i8, ptr %.lcssa1960, align 2, !tbaa !24
  %886 = add i8 %.sroa.044.0.copyload53, -1
  %or.cond1193 = icmp ult i8 %886, 15
  br i1 %or.cond1193, label %.preheader1239, label %921

.preheader1239:                                   ; preds = %._crit_edge1969
  %887 = zext nneg i8 %.sroa.044.0.copyload53 to i32
  %888 = zext i16 %.sroa.41.0.copyload86.le to i32
  %889 = add nuw nsw i32 %.lcssa1354, %887
  %notmask1132 = shl nsw i32 -1, %889
  %890 = xor i32 %notmask1132, -1
  %891 = trunc i64 %.38915.lcssa to i32
  %892 = and i32 %891, %890
  %893 = lshr i32 %892, %.lcssa1354
  %894 = add nuw i32 %893, %888
  %895 = zext i32 %894 to i64
  %896 = getelementptr inbounds %struct.code, ptr %855, i64 %895
  %.sroa.18.0..sroa_idx591979 = getelementptr inbounds i8, ptr %896, i64 1
  %.sroa.18.0.copyload601980 = load i8, ptr %.sroa.18.0..sroa_idx591979, align 1, !tbaa !24
  %897 = zext i8 %.sroa.18.0.copyload601980 to i32
  %898 = add nuw nsw i32 %.lcssa1354, %897
  %.not11331981 = icmp ugt i32 %898, %.38.lcssa
  br i1 %.not11331981, label %.lr.ph1986.preheader, label %._crit_edge1987

.lr.ph1986.preheader:                             ; preds = %.preheader1239
  %899 = zext nneg i32 %.38.lcssa to i64
  br label %.lr.ph1986

.lr.ph1986:                                       ; preds = %.lr.ph1986.preheader, %901
  %indvars.iv2761 = phi i64 [ %899, %.lr.ph1986.preheader ], [ %indvars.iv.next2762, %901 ]
  %.399161984 = phi i64 [ %.38915.lcssa, %.lr.ph1986.preheader ], [ %907, %901 ]
  %.439821983 = phi i32 [ %.42981.lcssa, %.lr.ph1986.preheader ], [ %902, %901 ]
  %.4310451982 = phi ptr [ %.421044.lcssa, %.lr.ph1986.preheader ], [ %903, %901 ]
  %900 = icmp eq i32 %.439821983, 0
  br i1 %900, label %.loopexit.loopexit2880, label %901

901:                                              ; preds = %.lr.ph1986
  %902 = add i32 %.439821983, -1
  %903 = getelementptr inbounds i8, ptr %.4310451982, i64 1
  %904 = load i8, ptr %.4310451982, align 1, !tbaa !24
  %905 = zext i8 %904 to i64
  %906 = shl i64 %905, %indvars.iv2761
  %907 = add i64 %906, %.399161984
  %indvars.iv.next2762 = add nuw nsw i64 %indvars.iv2761, 8
  %908 = trunc i64 %907 to i32
  %909 = and i32 %908, %890
  %910 = lshr i32 %909, %.lcssa1354
  %911 = add nuw i32 %910, %888
  %912 = zext i32 %911 to i64
  %913 = getelementptr inbounds %struct.code, ptr %855, i64 %912
  %.sroa.18.0..sroa_idx59 = getelementptr inbounds i8, ptr %913, i64 1
  %.sroa.18.0.copyload60 = load i8, ptr %.sroa.18.0..sroa_idx59, align 1, !tbaa !24
  %914 = zext i8 %.sroa.18.0.copyload60 to i32
  %915 = add nuw nsw i32 %.lcssa1354, %914
  %916 = zext nneg i32 %915 to i64
  %.not1133 = icmp ult i64 %indvars.iv.next2762, %916
  br i1 %.not1133, label %.lr.ph1986, label %._crit_edge1987.loopexit

._crit_edge1987.loopexit:                         ; preds = %901
  %917 = trunc nuw i64 %indvars.iv.next2762 to i32
  br label %._crit_edge1987

._crit_edge1987:                                  ; preds = %._crit_edge1987.loopexit, %.preheader1239
  %.431045.lcssa = phi ptr [ %.421044.lcssa, %.preheader1239 ], [ %903, %._crit_edge1987.loopexit ]
  %.43982.lcssa = phi i32 [ %.42981.lcssa, %.preheader1239 ], [ %902, %._crit_edge1987.loopexit ]
  %.39916.lcssa = phi i64 [ %.38915.lcssa, %.preheader1239 ], [ %907, %._crit_edge1987.loopexit ]
  %.39.lcssa = phi i32 [ %.38.lcssa, %.preheader1239 ], [ %917, %._crit_edge1987.loopexit ]
  %.lcssa1367 = phi ptr [ %896, %.preheader1239 ], [ %913, %._crit_edge1987.loopexit ]
  %.sroa.18.0.copyload60.lcssa = phi i8 [ %.sroa.18.0.copyload601980, %.preheader1239 ], [ %.sroa.18.0.copyload60, %._crit_edge1987.loopexit ]
  %.sroa.41.0..sroa_idx87 = getelementptr inbounds i8, ptr %.lcssa1367, i64 2
  %.sroa.41.0.copyload88 = load i16, ptr %.sroa.41.0..sroa_idx87, align 2, !tbaa !63
  %.sroa.044.0.copyload54 = load i8, ptr %.lcssa1367, align 2, !tbaa !24
  %918 = zext nneg i8 %.sroa.18.0.copyload58.lcssa to i64
  %919 = lshr i64 %.39916.lcssa, %918
  %920 = sub i32 %.39.lcssa, %.lcssa1354
  br label %921

921:                                              ; preds = %._crit_edge1969, %._crit_edge1987
  %.441046 = phi ptr [ %.431045.lcssa, %._crit_edge1987 ], [ %.421044.lcssa, %._crit_edge1969 ]
  %.44983 = phi i32 [ %.43982.lcssa, %._crit_edge1987 ], [ %.42981.lcssa, %._crit_edge1969 ]
  %.40917 = phi i64 [ %919, %._crit_edge1987 ], [ %.38915.lcssa, %._crit_edge1969 ]
  %.40 = phi i32 [ %920, %._crit_edge1987 ], [ %.38.lcssa, %._crit_edge1969 ]
  %.sroa.41.0 = phi i16 [ %.sroa.41.0.copyload88, %._crit_edge1987 ], [ %.sroa.41.0.copyload86.le, %._crit_edge1969 ]
  %.sroa.18.0 = phi i8 [ %.sroa.18.0.copyload60.lcssa, %._crit_edge1987 ], [ %.sroa.18.0.copyload58.lcssa, %._crit_edge1969 ]
  %.sroa.044.0 = phi i8 [ %.sroa.044.0.copyload54, %._crit_edge1987 ], [ %.sroa.044.0.copyload53, %._crit_edge1969 ]
  %922 = zext i8 %.sroa.18.0 to i32
  %923 = zext nneg i8 %.sroa.18.0 to i64
  %924 = lshr i64 %.40917, %923
  %925 = sub i32 %.40, %922
  %926 = zext i16 %.sroa.41.0 to i32
  store i32 %926, ptr %39, align 4, !tbaa !20
  %927 = zext i8 %.sroa.044.0 to i32
  %928 = icmp eq i8 %.sroa.044.0, 0
  br i1 %928, label %929, label %930

929:                                              ; preds = %921
  store i32 23, ptr %7, align 8, !tbaa !15
  br label %.thread

930:                                              ; preds = %921
  %931 = and i32 %927, 32
  %.not1134 = icmp eq i32 %931, 0
  br i1 %.not1134, label %933, label %932

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

933:                                              ; preds = %930
  %934 = and i32 %927, 64
  %.not1135 = icmp eq i32 %934, 0
  br i1 %.not1135, label %936, label %935

935:                                              ; preds = %933
  store ptr @.str.13, ptr %38, align 8, !tbaa !32
  store i32 27, ptr %7, align 8, !tbaa !15
  br label %.thread

936:                                              ; preds = %933
  %937 = and i32 %927, 15
  store i32 %937, ptr %52, align 4, !tbaa !21
  store i32 19, ptr %7, align 8, !tbaa !15
  br label %938

938:                                              ; preds = %._crit_edge2812, %936
  %939 = phi i32 [ %.pre2813, %._crit_edge2812 ], [ %937, %936 ]
  %.451047 = phi ptr [ %.01002, %._crit_edge2812 ], [ %.441046, %936 ]
  %.45984 = phi i32 [ %.0939, %._crit_edge2812 ], [ %.44983, %936 ]
  %.41918 = phi i64 [ %.0877, %._crit_edge2812 ], [ %924, %936 ]
  %.41 = phi i32 [ %.0866, %._crit_edge2812 ], [ %925, %936 ]
  %.3 = phi i32 [ %.0, %._crit_edge2812 ], [ %.2, %936 ]
  %.not1136 = icmp eq i32 %939, 0
  br i1 %.not1136, label %960, label %.preheader1237

.preheader1237:                                   ; preds = %938
  %940 = icmp ult i32 %.41, %939
  br i1 %940, label %.lr.ph1998, label %._crit_edge1999

.lr.ph1998:                                       ; preds = %.preheader1237, %942
  %.421997 = phi i32 [ %950, %942 ], [ %.41, %.preheader1237 ]
  %.429191996 = phi i64 [ %949, %942 ], [ %.41918, %.preheader1237 ]
  %.469851995 = phi i32 [ %943, %942 ], [ %.45984, %.preheader1237 ]
  %.4610481994 = phi ptr [ %944, %942 ], [ %.451047, %.preheader1237 ]
  %941 = icmp eq i32 %.469851995, 0
  br i1 %941, label %.loopexit.loopexit2879, label %942

942:                                              ; preds = %.lr.ph1998
  %943 = add i32 %.469851995, -1
  %944 = getelementptr inbounds i8, ptr %.4610481994, i64 1
  %945 = load i8, ptr %.4610481994, align 1, !tbaa !24
  %946 = zext i8 %945 to i64
  %947 = zext nneg i32 %.421997 to i64
  %948 = shl i64 %946, %947
  %949 = add i64 %948, %.429191996
  %950 = add i32 %.421997, 8
  %951 = icmp ult i32 %950, %939
  br i1 %951, label %.lr.ph1998, label %._crit_edge1999, !llvm.loop !83

._crit_edge1999:                                  ; preds = %942, %.preheader1237
  %.461048.lcssa = phi ptr [ %.451047, %.preheader1237 ], [ %944, %942 ]
  %.46985.lcssa = phi i32 [ %.45984, %.preheader1237 ], [ %943, %942 ]
  %.42919.lcssa = phi i64 [ %.41918, %.preheader1237 ], [ %949, %942 ]
  %.42.lcssa = phi i32 [ %.41, %.preheader1237 ], [ %950, %942 ]
  %952 = trunc i64 %.42919.lcssa to i32
  %notmask1137 = shl nsw i32 -1, %939
  %953 = xor i32 %notmask1137, -1
  %954 = and i32 %952, %953
  %955 = load i32, ptr %39, align 4, !tbaa !20
  %956 = add i32 %955, %954
  store i32 %956, ptr %39, align 4, !tbaa !20
  %957 = zext nneg i32 %939 to i64
  %958 = lshr i64 %.42919.lcssa, %957
  %959 = sub i32 %.42.lcssa, %939
  br label %960

960:                                              ; preds = %._crit_edge1999, %938
  %.471049 = phi ptr [ %.461048.lcssa, %._crit_edge1999 ], [ %.451047, %938 ]
  %.47986 = phi i32 [ %.46985.lcssa, %._crit_edge1999 ], [ %.45984, %938 ]
  %.43920 = phi i64 [ %958, %._crit_edge1999 ], [ %.41918, %938 ]
  %.43 = phi i32 [ %959, %._crit_edge1999 ], [ %.41, %938 ]
  store i32 20, ptr %7, align 8, !tbaa !15
  br label %961

961:                                              ; preds = %960, %67
  %.481050 = phi ptr [ %.01002, %67 ], [ %.471049, %960 ]
  %.48987 = phi i32 [ %.0939, %67 ], [ %.47986, %960 ]
  %.44921 = phi i64 [ %.0877, %67 ], [ %.43920, %960 ]
  %.44 = phi i32 [ %.0866, %67 ], [ %.43, %960 ]
  %.4 = phi i32 [ %.0, %67 ], [ %.3, %960 ]
  %962 = load ptr, ptr %50, align 8, !tbaa !81
  %963 = load i32, ptr %51, align 4, !tbaa !82
  %notmask1138 = shl nsw i32 -1, %963
  %964 = xor i32 %notmask1138, -1
  %965 = trunc i64 %.44921 to i32
  %966 = and i32 %964, %965
  %967 = zext nneg i32 %966 to i64
  %968 = getelementptr inbounds %struct.code, ptr %962, i64 %967
  %.sroa.18.0..sroa_idx612005 = getelementptr inbounds i8, ptr %968, i64 1
  %.sroa.18.0.copyload622006 = load i8, ptr %.sroa.18.0..sroa_idx612005, align 1, !tbaa !24
  %969 = zext i8 %.sroa.18.0.copyload622006 to i32
  %.not11392007 = icmp ult i32 %.44, %969
  br i1 %.not11392007, label %.lr.ph2013.preheader, label %._crit_edge2014

.lr.ph2013.preheader:                             ; preds = %961
  %970 = zext nneg i32 %.44 to i64
  br label %.lr.ph2013

.lr.ph2013:                                       ; preds = %.lr.ph2013.preheader, %972
  %indvars.iv2766 = phi i64 [ %970, %.lr.ph2013.preheader ], [ %indvars.iv.next2767, %972 ]
  %.459222010 = phi i64 [ %.44921, %.lr.ph2013.preheader ], [ %978, %972 ]
  %.499882009 = phi i32 [ %.48987, %.lr.ph2013.preheader ], [ %973, %972 ]
  %.4910512008 = phi ptr [ %.481050, %.lr.ph2013.preheader ], [ %974, %972 ]
  %971 = icmp eq i32 %.499882009, 0
  br i1 %971, label %.loopexit.loopexit2878, label %972

972:                                              ; preds = %.lr.ph2013
  %973 = add i32 %.499882009, -1
  %974 = getelementptr inbounds i8, ptr %.4910512008, i64 1
  %975 = load i8, ptr %.4910512008, align 1, !tbaa !24
  %976 = zext i8 %975 to i64
  %977 = shl i64 %976, %indvars.iv2766
  %978 = add i64 %977, %.459222010
  %indvars.iv.next2767 = add nuw nsw i64 %indvars.iv2766, 8
  %979 = trunc i64 %978 to i32
  %980 = and i32 %964, %979
  %981 = zext nneg i32 %980 to i64
  %982 = getelementptr inbounds %struct.code, ptr %962, i64 %981
  %.sroa.18.0..sroa_idx61 = getelementptr inbounds i8, ptr %982, i64 1
  %.sroa.18.0.copyload62 = load i8, ptr %.sroa.18.0..sroa_idx61, align 1, !tbaa !24
  %983 = zext i8 %.sroa.18.0.copyload62 to i64
  %.not1139 = icmp ult i64 %indvars.iv.next2767, %983
  br i1 %.not1139, label %.lr.ph2013, label %._crit_edge2014.loopexit

._crit_edge2014.loopexit:                         ; preds = %972
  %984 = zext i8 %.sroa.18.0.copyload62 to i32
  %985 = trunc nuw i64 %indvars.iv.next2767 to i32
  br label %._crit_edge2014

._crit_edge2014:                                  ; preds = %._crit_edge2014.loopexit, %961
  %.lcssa2004 = phi ptr [ %968, %961 ], [ %982, %._crit_edge2014.loopexit ]
  %.491051.lcssa = phi ptr [ %.481050, %961 ], [ %974, %._crit_edge2014.loopexit ]
  %.49988.lcssa = phi i32 [ %.48987, %961 ], [ %973, %._crit_edge2014.loopexit ]
  %.45922.lcssa = phi i64 [ %.44921, %961 ], [ %978, %._crit_edge2014.loopexit ]
  %.45.lcssa = phi i32 [ %.44, %961 ], [ %985, %._crit_edge2014.loopexit ]
  %.sroa.18.0.copyload62.lcssa = phi i8 [ %.sroa.18.0.copyload622006, %961 ], [ %.sroa.18.0.copyload62, %._crit_edge2014.loopexit ]
  %.lcssa1377 = phi i32 [ %969, %961 ], [ %984, %._crit_edge2014.loopexit ]
  %.sroa.41.0..sroa_idx89.le = getelementptr inbounds i8, ptr %.lcssa2004, i64 2
  %.sroa.41.0.copyload90.le = load i16, ptr %.sroa.41.0..sroa_idx89.le, align 2, !tbaa !63
  %.sroa.044.0.copyload55 = load i8, ptr %.lcssa2004, align 2, !tbaa !24
  %986 = icmp ult i8 %.sroa.044.0.copyload55, 16
  br i1 %986, label %.preheader1234, label %1021

.preheader1234:                                   ; preds = %._crit_edge2014
  %987 = zext nneg i8 %.sroa.044.0.copyload55 to i32
  %988 = zext i16 %.sroa.41.0.copyload90.le to i32
  %989 = add nuw nsw i32 %.lcssa1377, %987
  %notmask1140 = shl nsw i32 -1, %989
  %990 = xor i32 %notmask1140, -1
  %991 = trunc i64 %.45922.lcssa to i32
  %992 = and i32 %991, %990
  %993 = lshr i32 %992, %.lcssa1377
  %994 = add nuw i32 %993, %988
  %995 = zext i32 %994 to i64
  %996 = getelementptr inbounds %struct.code, ptr %962, i64 %995
  %.sroa.18.0..sroa_idx632024 = getelementptr inbounds i8, ptr %996, i64 1
  %.sroa.18.0.copyload642025 = load i8, ptr %.sroa.18.0..sroa_idx632024, align 1, !tbaa !24
  %997 = zext i8 %.sroa.18.0.copyload642025 to i32
  %998 = add nuw nsw i32 %.lcssa1377, %997
  %.not11412026 = icmp ugt i32 %998, %.45.lcssa
  br i1 %.not11412026, label %.lr.ph2031.preheader, label %._crit_edge2032

.lr.ph2031.preheader:                             ; preds = %.preheader1234
  %999 = zext nneg i32 %.45.lcssa to i64
  br label %.lr.ph2031

.lr.ph2031:                                       ; preds = %.lr.ph2031.preheader, %1001
  %indvars.iv2770 = phi i64 [ %999, %.lr.ph2031.preheader ], [ %indvars.iv.next2771, %1001 ]
  %.469232029 = phi i64 [ %.45922.lcssa, %.lr.ph2031.preheader ], [ %1007, %1001 ]
  %.509892028 = phi i32 [ %.49988.lcssa, %.lr.ph2031.preheader ], [ %1002, %1001 ]
  %.5010522027 = phi ptr [ %.491051.lcssa, %.lr.ph2031.preheader ], [ %1003, %1001 ]
  %1000 = icmp eq i32 %.509892028, 0
  br i1 %1000, label %.loopexit.loopexit2877, label %1001

1001:                                             ; preds = %.lr.ph2031
  %1002 = add i32 %.509892028, -1
  %1003 = getelementptr inbounds i8, ptr %.5010522027, i64 1
  %1004 = load i8, ptr %.5010522027, align 1, !tbaa !24
  %1005 = zext i8 %1004 to i64
  %1006 = shl i64 %1005, %indvars.iv2770
  %1007 = add i64 %1006, %.469232029
  %indvars.iv.next2771 = add nuw nsw i64 %indvars.iv2770, 8
  %1008 = trunc i64 %1007 to i32
  %1009 = and i32 %1008, %990
  %1010 = lshr i32 %1009, %.lcssa1377
  %1011 = add nuw i32 %1010, %988
  %1012 = zext i32 %1011 to i64
  %1013 = getelementptr inbounds %struct.code, ptr %962, i64 %1012
  %.sroa.18.0..sroa_idx63 = getelementptr inbounds i8, ptr %1013, i64 1
  %.sroa.18.0.copyload64 = load i8, ptr %.sroa.18.0..sroa_idx63, align 1, !tbaa !24
  %1014 = zext i8 %.sroa.18.0.copyload64 to i32
  %1015 = add nuw nsw i32 %.lcssa1377, %1014
  %1016 = zext nneg i32 %1015 to i64
  %.not1141 = icmp ult i64 %indvars.iv.next2771, %1016
  br i1 %.not1141, label %.lr.ph2031, label %._crit_edge2032.loopexit

._crit_edge2032.loopexit:                         ; preds = %1001
  %1017 = trunc nuw i64 %indvars.iv.next2771 to i32
  br label %._crit_edge2032

._crit_edge2032:                                  ; preds = %._crit_edge2032.loopexit, %.preheader1234
  %.501052.lcssa = phi ptr [ %.491051.lcssa, %.preheader1234 ], [ %1003, %._crit_edge2032.loopexit ]
  %.50989.lcssa = phi i32 [ %.49988.lcssa, %.preheader1234 ], [ %1002, %._crit_edge2032.loopexit ]
  %.46923.lcssa = phi i64 [ %.45922.lcssa, %.preheader1234 ], [ %1007, %._crit_edge2032.loopexit ]
  %.46.lcssa = phi i32 [ %.45.lcssa, %.preheader1234 ], [ %1017, %._crit_edge2032.loopexit ]
  %.lcssa1390 = phi ptr [ %996, %.preheader1234 ], [ %1013, %._crit_edge2032.loopexit ]
  %.sroa.18.0.copyload64.lcssa = phi i8 [ %.sroa.18.0.copyload642025, %.preheader1234 ], [ %.sroa.18.0.copyload64, %._crit_edge2032.loopexit ]
  %.sroa.41.0..sroa_idx91 = getelementptr inbounds i8, ptr %.lcssa1390, i64 2
  %.sroa.41.0.copyload92 = load i16, ptr %.sroa.41.0..sroa_idx91, align 2, !tbaa !63
  %.sroa.044.0.copyload56 = load i8, ptr %.lcssa1390, align 2, !tbaa !24
  %1018 = zext nneg i8 %.sroa.18.0.copyload62.lcssa to i64
  %1019 = lshr i64 %.46923.lcssa, %1018
  %1020 = sub i32 %.46.lcssa, %.lcssa1377
  br label %1021

1021:                                             ; preds = %._crit_edge2014, %._crit_edge2032
  %.511053 = phi ptr [ %.501052.lcssa, %._crit_edge2032 ], [ %.491051.lcssa, %._crit_edge2014 ]
  %.51990 = phi i32 [ %.50989.lcssa, %._crit_edge2032 ], [ %.49988.lcssa, %._crit_edge2014 ]
  %.47924 = phi i64 [ %1019, %._crit_edge2032 ], [ %.45922.lcssa, %._crit_edge2014 ]
  %.47 = phi i32 [ %1020, %._crit_edge2032 ], [ %.45.lcssa, %._crit_edge2014 ]
  %.sroa.41.1 = phi i16 [ %.sroa.41.0.copyload92, %._crit_edge2032 ], [ %.sroa.41.0.copyload90.le, %._crit_edge2014 ]
  %.sroa.18.1 = phi i8 [ %.sroa.18.0.copyload64.lcssa, %._crit_edge2032 ], [ %.sroa.18.0.copyload62.lcssa, %._crit_edge2014 ]
  %.sroa.044.1 = phi i8 [ %.sroa.044.0.copyload56, %._crit_edge2032 ], [ %.sroa.044.0.copyload55, %._crit_edge2014 ]
  %1022 = zext i8 %.sroa.18.1 to i32
  %1023 = zext nneg i8 %.sroa.18.1 to i64
  %1024 = lshr i64 %.47924, %1023
  %1025 = sub i32 %.47, %1022
  %1026 = zext i8 %.sroa.044.1 to i32
  %1027 = and i32 %1026, 64
  %.not1142 = icmp eq i32 %1027, 0
  br i1 %.not1142, label %1029, label %1028

1028:                                             ; preds = %1021
  store ptr @.str.14, ptr %38, align 8, !tbaa !32
  store i32 27, ptr %7, align 8, !tbaa !15
  br label %.thread

1029:                                             ; preds = %1021
  %1030 = zext i16 %.sroa.41.1 to i32
  store i32 %1030, ptr %53, align 8, !tbaa !84
  %1031 = and i32 %1026, 15
  store i32 %1031, ptr %52, align 4, !tbaa !21
  store i32 21, ptr %7, align 8, !tbaa !15
  br label %1032

1032:                                             ; preds = %._crit_edge2814, %1029
  %1033 = phi i32 [ %.pre2815, %._crit_edge2814 ], [ %1031, %1029 ]
  %.521054 = phi ptr [ %.01002, %._crit_edge2814 ], [ %.511053, %1029 ]
  %.52991 = phi i32 [ %.0939, %._crit_edge2814 ], [ %.51990, %1029 ]
  %.48925 = phi i64 [ %.0877, %._crit_edge2814 ], [ %1024, %1029 ]
  %.48 = phi i32 [ %.0866, %._crit_edge2814 ], [ %1025, %1029 ]
  %.5 = phi i32 [ %.0, %._crit_edge2814 ], [ %.4, %1029 ]
  %.not1143 = icmp eq i32 %1033, 0
  br i1 %.not1143, label %._crit_edge2816, label %.preheader1232

._crit_edge2816:                                  ; preds = %1032
  %.pre2817 = load i32, ptr %53, align 8, !tbaa !84
  br label %1054

.preheader1232:                                   ; preds = %1032
  %1034 = icmp ult i32 %.48, %1033
  br i1 %1034, label %.lr.ph2043, label %._crit_edge2044

.lr.ph2043:                                       ; preds = %.preheader1232, %1036
  %.492042 = phi i32 [ %1044, %1036 ], [ %.48, %.preheader1232 ]
  %.499262041 = phi i64 [ %1043, %1036 ], [ %.48925, %.preheader1232 ]
  %.539922040 = phi i32 [ %1037, %1036 ], [ %.52991, %.preheader1232 ]
  %.5310552039 = phi ptr [ %1038, %1036 ], [ %.521054, %.preheader1232 ]
  %1035 = icmp eq i32 %.539922040, 0
  br i1 %1035, label %.loopexit.loopexit2876, label %1036

1036:                                             ; preds = %.lr.ph2043
  %1037 = add i32 %.539922040, -1
  %1038 = getelementptr inbounds i8, ptr %.5310552039, i64 1
  %1039 = load i8, ptr %.5310552039, align 1, !tbaa !24
  %1040 = zext i8 %1039 to i64
  %1041 = zext nneg i32 %.492042 to i64
  %1042 = shl i64 %1040, %1041
  %1043 = add i64 %1042, %.499262041
  %1044 = add i32 %.492042, 8
  %1045 = icmp ult i32 %1044, %1033
  br i1 %1045, label %.lr.ph2043, label %._crit_edge2044, !llvm.loop !85

._crit_edge2044:                                  ; preds = %1036, %.preheader1232
  %.531055.lcssa = phi ptr [ %.521054, %.preheader1232 ], [ %1038, %1036 ]
  %.53992.lcssa = phi i32 [ %.52991, %.preheader1232 ], [ %1037, %1036 ]
  %.49926.lcssa = phi i64 [ %.48925, %.preheader1232 ], [ %1043, %1036 ]
  %.49.lcssa = phi i32 [ %.48, %.preheader1232 ], [ %1044, %1036 ]
  %1046 = trunc i64 %.49926.lcssa to i32
  %notmask1144 = shl nsw i32 -1, %1033
  %1047 = xor i32 %notmask1144, -1
  %1048 = and i32 %1046, %1047
  %1049 = load i32, ptr %53, align 8, !tbaa !84
  %1050 = add i32 %1049, %1048
  store i32 %1050, ptr %53, align 8, !tbaa !84
  %1051 = zext nneg i32 %1033 to i64
  %1052 = lshr i64 %.49926.lcssa, %1051
  %1053 = sub i32 %.49.lcssa, %1033
  br label %1054

1054:                                             ; preds = %._crit_edge2816, %._crit_edge2044
  %1055 = phi i32 [ %1050, %._crit_edge2044 ], [ %.pre2817, %._crit_edge2816 ]
  %.541056 = phi ptr [ %.531055.lcssa, %._crit_edge2044 ], [ %.521054, %._crit_edge2816 ]
  %.54993 = phi i32 [ %.53992.lcssa, %._crit_edge2044 ], [ %.52991, %._crit_edge2816 ]
  %.50927 = phi i64 [ %1052, %._crit_edge2044 ], [ %.48925, %._crit_edge2816 ]
  %.50 = phi i32 [ %1053, %._crit_edge2044 ], [ %.48, %._crit_edge2816 ]
  %1056 = load i32, ptr %54, align 8, !tbaa !86
  %1057 = sub i32 %.0860, %.0937
  %1058 = add i32 %1057, %1056
  %1059 = icmp ugt i32 %1055, %1058
  br i1 %1059, label %1060, label %1061

1060:                                             ; preds = %1054
  store ptr @.str.15, ptr %38, align 8, !tbaa !32
  store i32 27, ptr %7, align 8, !tbaa !15
  br label %.thread

1061:                                             ; preds = %1054
  store i32 22, ptr %7, align 8, !tbaa !15
  br label %1062

1062:                                             ; preds = %1061, %67
  %.551057 = phi ptr [ %.01002, %67 ], [ %.541056, %1061 ]
  %.55994 = phi i32 [ %.0939, %67 ], [ %.54993, %1061 ]
  %.51928 = phi i64 [ %.0877, %67 ], [ %.50927, %1061 ]
  %.51 = phi i32 [ %.0866, %67 ], [ %.50, %1061 ]
  %.6 = phi i32 [ %.0, %67 ], [ %.5, %1061 ]
  %1063 = icmp eq i32 %.0937, 0
  br i1 %1063, label %.loopexit, label %1064

1064:                                             ; preds = %1062
  %1065 = sub i32 %.0860, %.0937
  %1066 = load i32, ptr %53, align 8, !tbaa !84
  %1067 = icmp ugt i32 %1066, %1065
  br i1 %1067, label %1068, label %1082

1068:                                             ; preds = %1064
  %1069 = sub i32 %1066, %1065
  %1070 = load i32, ptr %55, align 4, !tbaa !87
  %1071 = icmp ugt i32 %1069, %1070
  br i1 %1071, label %1072, label %1076

1072:                                             ; preds = %1068
  %1073 = sub i32 %1069, %1070
  %1074 = load i32, ptr %57, align 4, !tbaa !88
  %1075 = sub i32 %1074, %1073
  br label %1078

1076:                                             ; preds = %1068
  %1077 = sub i32 %1070, %1069
  br label %1078

1078:                                             ; preds = %1076, %1072
  %.sink3295 = phi i32 [ %1077, %1076 ], [ %1075, %1072 ]
  %.7858 = phi i32 [ %1069, %1076 ], [ %1073, %1072 ]
  %.sink3293 = load ptr, ptr %56, align 8, !tbaa !89
  %1079 = zext i32 %.sink3295 to i64
  %1080 = getelementptr inbounds i8, ptr %.sink3293, i64 %1079
  %1081 = load i32, ptr %39, align 4, !tbaa !20
  %spec.select1194 = call i32 @llvm.umin.i32(i32 %.7858, i32 %1081)
  br label %1087

1082:                                             ; preds = %1064
  %1083 = zext i32 %1066 to i64
  %1084 = sub nsw i64 0, %1083
  %1085 = getelementptr inbounds i8, ptr %.0999, i64 %1084
  %1086 = load i32, ptr %39, align 4, !tbaa !20
  br label %1087

1087:                                             ; preds = %1078, %1082
  %1088 = phi i32 [ %1086, %1082 ], [ %1081, %1078 ]
  %.8859 = phi i32 [ %1086, %1082 ], [ %spec.select1194, %1078 ]
  %.1849 = phi ptr [ %1085, %1082 ], [ %1080, %1078 ]
  %spec.select1195 = call i32 @llvm.umin.i32(i32 %.8859, i32 %.0937)
  %1089 = sub i32 %1088, %spec.select1195
  store i32 %1089, ptr %39, align 4, !tbaa !20
  %1090 = add i32 %spec.select1195, -1
  %1091 = zext i32 %1090 to i64
  %1092 = add nuw nsw i64 %1091, 1
  %min.iters.check = icmp ult i32 %1090, 31
  %.18493708 = ptrtoint ptr %.1849 to i64
  %1093 = sub i64 %.09993707, %.18493708
  %diff.check = icmp ult i64 %1093, 32
  %or.cond3734 = select i1 %min.iters.check, i1 true, i1 %diff.check
  br i1 %or.cond3734, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %1087
  %n.vec = and i64 %1092, 8589934560
  %ind.end = getelementptr i8, ptr %.0999, i64 %n.vec
  %.cast = trunc i64 %n.vec to i32
  %ind.end3709 = sub i32 %spec.select1195, %.cast
  %ind.end3711 = getelementptr i8, ptr %.1849, 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 %.0999, i64 %index
  %next.gep3714 = getelementptr i8, ptr %.1849, i64 %index
  %1094 = getelementptr i8, ptr %next.gep3714, i64 16
  %wide.load = load <16 x i8>, ptr %next.gep3714, align 1, !tbaa !24
  %wide.load3716 = load <16 x i8>, ptr %1094, align 1, !tbaa !24
  %1095 = getelementptr i8, ptr %next.gep, i64 16
  store <16 x i8> %wide.load, ptr %next.gep, align 1, !tbaa !24
  store <16 x i8> %wide.load3716, ptr %1095, align 1, !tbaa !24
  %index.next = add nuw i64 %index, 32
  %1096 = icmp eq i64 %index.next, %n.vec
  br i1 %1096, label %middle.block, label %vector.body, !llvm.loop !90

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

scalar.ph.preheader:                              ; preds = %middle.block, %1087
  %.11000.ph = phi ptr [ %.0999, %1087 ], [ %ind.end, %middle.block ]
  %.10.ph = phi i32 [ %spec.select1195, %1087 ], [ %ind.end3709, %middle.block ]
  %.2850.ph = phi ptr [ %.1849, %1087 ], [ %ind.end3711, %middle.block ]
  %1097 = add i32 %.10.ph, -1
  %xtraiter4146 = and i32 %.10.ph, 7
  %lcmp.mod4147.not = icmp eq i32 %xtraiter4146, 0
  br i1 %lcmp.mod4147.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %.11000.prol = phi ptr [ %1100, %scalar.ph.prol ], [ %.11000.ph, %scalar.ph.preheader ]
  %.10.prol = phi i32 [ %1101, %scalar.ph.prol ], [ %.10.ph, %scalar.ph.preheader ]
  %.2850.prol = phi ptr [ %1098, %scalar.ph.prol ], [ %.2850.ph, %scalar.ph.preheader ]
  %prol.iter4148 = phi i32 [ %prol.iter4148.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %1098 = getelementptr inbounds i8, ptr %.2850.prol, i64 1
  %1099 = load i8, ptr %.2850.prol, align 1, !tbaa !24
  %1100 = getelementptr inbounds i8, ptr %.11000.prol, i64 1
  store i8 %1099, ptr %.11000.prol, align 1, !tbaa !24
  %1101 = add i32 %.10.prol, -1
  %prol.iter4148.next = add i32 %prol.iter4148, 1
  %prol.iter4148.cmp.not = icmp eq i32 %prol.iter4148.next, %xtraiter4146
  br i1 %prol.iter4148.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !91

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.lcssa3849.unr = phi ptr [ poison, %scalar.ph.preheader ], [ %1100, %scalar.ph.prol ]
  %.11000.unr = phi ptr [ %.11000.ph, %scalar.ph.preheader ], [ %1100, %scalar.ph.prol ]
  %.10.unr = phi i32 [ %.10.ph, %scalar.ph.preheader ], [ %1101, %scalar.ph.prol ]
  %.2850.unr = phi ptr [ %.2850.ph, %scalar.ph.preheader ], [ %1098, %scalar.ph.prol ]
  %1102 = icmp ult i32 %1097, 7
  br i1 %1102, label %.loopexit3731, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %.11000 = phi ptr [ %1126, %scalar.ph ], [ %.11000.unr, %scalar.ph.prol.loopexit ]
  %.10 = phi i32 [ %1127, %scalar.ph ], [ %.10.unr, %scalar.ph.prol.loopexit ]
  %.2850 = phi ptr [ %1124, %scalar.ph ], [ %.2850.unr, %scalar.ph.prol.loopexit ]
  %1103 = getelementptr inbounds i8, ptr %.2850, i64 1
  %1104 = load i8, ptr %.2850, align 1, !tbaa !24
  %1105 = getelementptr inbounds i8, ptr %.11000, i64 1
  store i8 %1104, ptr %.11000, align 1, !tbaa !24
  %1106 = getelementptr inbounds i8, ptr %.2850, i64 2
  %1107 = load i8, ptr %1103, align 1, !tbaa !24
  %1108 = getelementptr inbounds i8, ptr %.11000, i64 2
  store i8 %1107, ptr %1105, align 1, !tbaa !24
  %1109 = getelementptr inbounds i8, ptr %.2850, i64 3
  %1110 = load i8, ptr %1106, align 1, !tbaa !24
  %1111 = getelementptr inbounds i8, ptr %.11000, i64 3
  store i8 %1110, ptr %1108, align 1, !tbaa !24
  %1112 = getelementptr inbounds i8, ptr %.2850, i64 4
  %1113 = load i8, ptr %1109, align 1, !tbaa !24
  %1114 = getelementptr inbounds i8, ptr %.11000, i64 4
  store i8 %1113, ptr %1111, align 1, !tbaa !24
  %1115 = getelementptr inbounds i8, ptr %.2850, i64 5
  %1116 = load i8, ptr %1112, align 1, !tbaa !24
  %1117 = getelementptr inbounds i8, ptr %.11000, i64 5
  store i8 %1116, ptr %1114, align 1, !tbaa !24
  %1118 = getelementptr inbounds i8, ptr %.2850, i64 6
  %1119 = load i8, ptr %1115, align 1, !tbaa !24
  %1120 = getelementptr inbounds i8, ptr %.11000, i64 6
  store i8 %1119, ptr %1117, align 1, !tbaa !24
  %1121 = getelementptr inbounds i8, ptr %.2850, i64 7
  %1122 = load i8, ptr %1118, align 1, !tbaa !24
  %1123 = getelementptr inbounds i8, ptr %.11000, i64 7
  store i8 %1122, ptr %1120, align 1, !tbaa !24
  %1124 = getelementptr inbounds i8, ptr %.2850, i64 8
  %1125 = load i8, ptr %1121, align 1, !tbaa !24
  %1126 = getelementptr inbounds i8, ptr %.11000, i64 8
  store i8 %1125, ptr %1123, align 1, !tbaa !24
  %1127 = add i32 %.10, -8
  %.not1145.7 = icmp eq i32 %1127, 0
  br i1 %.not1145.7, label %.loopexit3731, label %scalar.ph, !llvm.loop !92

.loopexit3731:                                    ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %.lcssa3410 = phi ptr [ %ind.end, %middle.block ], [ %.lcssa3849.unr, %scalar.ph.prol.loopexit ], [ %1126, %scalar.ph ]
  %1128 = sub i32 %.0937, %spec.select1195
  %1129 = load i32, ptr %39, align 4, !tbaa !20
  %1130 = icmp eq i32 %1129, 0
  br i1 %1130, label %1131, label %.thread

1131:                                             ; preds = %.loopexit3731
  store i32 18, ptr %7, align 8, !tbaa !15
  br label %.thread

1132:                                             ; preds = %67
  %1133 = icmp eq i32 %.0937, 0
  br i1 %1133, label %.loopexit, label %1134

1134:                                             ; preds = %1132
  %1135 = load i32, ptr %39, align 4, !tbaa !20
  %1136 = trunc i32 %1135 to i8
  %1137 = getelementptr inbounds i8, ptr %.0999, i64 1
  store i8 %1136, ptr %.0999, align 1, !tbaa !24
  %1138 = add i32 %.0937, -1
  store i32 18, ptr %7, align 8, !tbaa !15
  br label %.thread

1139:                                             ; preds = %67
  %1140 = load i32, ptr %32, align 8, !tbaa !23
  %.not1116 = icmp eq i32 %1140, 0
  br i1 %.not1116, label %1201, label %.preheader1248

.preheader1248:                                   ; preds = %1139
  %1141 = icmp ult i32 %.0866, 32
  br i1 %1141, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.preheader1248
  %1142 = zext nneg i32 %.0866 to i64
  %1143 = icmp eq i32 %.0939, 0
  br i1 %1143, label %.loopexit.loopexit2306, label %1144

1144:                                             ; preds = %.lr.ph.preheader
  %1145 = add i32 %.0939, -1
  %1146 = getelementptr inbounds i8, ptr %.01002, i64 1
  %1147 = load i8, ptr %.01002, align 1, !tbaa !24
  %1148 = zext i8 %1147 to i64
  %1149 = shl nuw nsw i64 %1148, %1142
  %1150 = add i64 %1149, %.0877
  %indvars.iv.next = add nuw nsw i64 %1142, 8
  %1151 = icmp ult i32 %.0866, 24
  br i1 %1151, label %.lr.ph.1, label %._crit_edge.loopexit, !llvm.loop !93

.lr.ph.1:                                         ; preds = %1144
  %1152 = icmp eq i32 %1145, 0
  br i1 %1152, label %.loopexit.loopexit2306, label %1153

1153:                                             ; preds = %.lr.ph.1
  %1154 = add i32 %.0939, -2
  %1155 = getelementptr inbounds i8, ptr %.01002, i64 2
  %1156 = load i8, ptr %1146, align 1, !tbaa !24
  %1157 = zext i8 %1156 to i64
  %1158 = shl nuw nsw i64 %1157, %indvars.iv.next
  %1159 = add i64 %1158, %1150
  %indvars.iv.next.1 = add nuw nsw i64 %1142, 16
  %1160 = icmp ult i32 %.0866, 16
  br i1 %1160, label %.lr.ph.2, label %._crit_edge.loopexit, !llvm.loop !93

.lr.ph.2:                                         ; preds = %1153
  %1161 = icmp eq i32 %1154, 0
  br i1 %1161, label %.loopexit.loopexit2306, label %1162

1162:                                             ; preds = %.lr.ph.2
  %1163 = add i32 %.0939, -3
  %1164 = getelementptr inbounds i8, ptr %.01002, i64 3
  %1165 = load i8, ptr %1155, align 1, !tbaa !24
  %1166 = zext i8 %1165 to i64
  %1167 = shl nuw nsw i64 %1166, %indvars.iv.next.1
  %1168 = add i64 %1167, %1159
  %indvars.iv.next.2 = add nuw nsw i64 %1142, 24
  %1169 = icmp ult i32 %.0866, 8
  br i1 %1169, label %.lr.ph.3, label %._crit_edge.loopexit, !llvm.loop !93

.lr.ph.3:                                         ; preds = %1162
  %1170 = icmp eq i32 %1163, 0
  br i1 %1170, label %.loopexit.loopexit2306, label %1171

1171:                                             ; preds = %.lr.ph.3
  %1172 = add i32 %.0939, -4
  %1173 = getelementptr inbounds i8, ptr %.01002, i64 4
  %1174 = load i8, ptr %1164, align 1, !tbaa !24
  %1175 = zext i8 %1174 to i64
  %1176 = shl nuw nsw i64 %1175, %indvars.iv.next.2
  %1177 = add i64 %1176, %1168
  %indvars.iv.next.3 = or disjoint i64 %1142, 32
  br label %._crit_edge.loopexit

._crit_edge.loopexit:                             ; preds = %1171, %1162, %1153, %1144
  %.lcssa3743 = phi i32 [ %1145, %1144 ], [ %1154, %1153 ], [ %1163, %1162 ], [ %1172, %1171 ]
  %.lcssa3742 = phi ptr [ %1146, %1144 ], [ %1155, %1153 ], [ %1164, %1162 ], [ %1173, %1171 ]
  %.lcssa3741 = phi i64 [ %1150, %1144 ], [ %1159, %1153 ], [ %1168, %1162 ], [ %1177, %1171 ]
  %indvars.iv.next.lcssa = phi i64 [ %indvars.iv.next, %1144 ], [ %indvars.iv.next.1, %1153 ], [ %indvars.iv.next.2, %1162 ], [ %indvars.iv.next.3, %1171 ]
  %1178 = trunc nuw nsw i64 %indvars.iv.next.lcssa to i32
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.preheader1248
  %.561058.lcssa = phi ptr [ %.01002, %.preheader1248 ], [ %.lcssa3742, %._crit_edge.loopexit ]
  %.56995.lcssa = phi i32 [ %.0939, %.preheader1248 ], [ %.lcssa3743, %._crit_edge.loopexit ]
  %.52929.lcssa = phi i64 [ %.0877, %.preheader1248 ], [ %.lcssa3741, %._crit_edge.loopexit ]
  %.52.lcssa = phi i32 [ %.0866, %.preheader1248 ], [ %1178, %._crit_edge.loopexit ]
  %1179 = sub i32 %.0860, %.0937
  %1180 = zext i32 %1179 to i64
  %1181 = load i64, ptr %33, align 8, !tbaa !94
  %1182 = add i64 %1181, %1180
  store i64 %1182, ptr %33, align 8, !tbaa !94
  %1183 = load i64, ptr %34, align 8, !tbaa !95
  %1184 = add i64 %1183, %1180
  store i64 %1184, ptr %34, align 8, !tbaa !95
  %.not1117 = icmp eq i32 %.0860, %.0937
  %.pre2805 = load i32, ptr %35, align 8, !tbaa !28
  br i1 %.not1117, label %._crit_edge._crit_edge, label %1185

._crit_edge._crit_edge:                           ; preds = %._crit_edge
  %.pre2806 = load i64, ptr %36, align 8, !tbaa !27
  br label %1195

1185:                                             ; preds = %._crit_edge
  %.not1118 = icmp eq i32 %.pre2805, 0
  %1186 = load i64, ptr %36, align 8, !tbaa !27
  %1187 = sub nsw i64 0, %1180
  %1188 = getelementptr inbounds i8, ptr %.0999, i64 %1187
  br i1 %.not1118, label %1191, label %1189

1189:                                             ; preds = %1185
  %1190 = call i64 @z_crc32(i64 noundef %1186, ptr noundef %1188, i32 noundef %1179) #5
  br label %1193

1191:                                             ; preds = %1185
  %1192 = call i64 @z_adler32(i64 noundef %1186, ptr noundef %1188, i32 noundef %1179) #5
  br label %1193

1193:                                             ; preds = %1191, %1189
  %1194 = phi i64 [ %1190, %1189 ], [ %1192, %1191 ]
  store i64 %1194, ptr %36, align 8, !tbaa !27
  store i64 %1194, ptr %37, align 8, !tbaa !35
  %.pre2804 = load i32, ptr %35, align 8, !tbaa !28
  br label %1195

1195:                                             ; preds = %._crit_edge._crit_edge, %1193
  %1196 = phi i64 [ %1194, %1193 ], [ %.pre2806, %._crit_edge._crit_edge ]
  %1197 = phi i32 [ %.pre2804, %1193 ], [ %.pre2805, %._crit_edge._crit_edge ]
  %.not1119 = icmp eq i32 %1197, 0
  %trunc = trunc i64 %.52929.lcssa to i32
  %rev = call i32 @llvm.bswap.i32(i32 %trunc)
  %1198 = zext i32 %rev to i64
  %1199 = select i1 %.not1119, i64 %1198, i64 %.52929.lcssa
  %.not1120 = icmp eq i64 %1199, %1196
  br i1 %.not1120, label %1201, label %1200

1200:                                             ; preds = %1195
  store ptr @.str.16, ptr %38, align 8, !tbaa !32
  store i32 27, ptr %7, align 8, !tbaa !15
  br label %.thread

1201:                                             ; preds = %1195, %1139
  %.571059 = phi ptr [ %.01002, %1139 ], [ %.561058.lcssa, %1195 ]
  %.57996 = phi i32 [ %.0939, %1139 ], [ %.56995.lcssa, %1195 ]
  %.53930 = phi i64 [ %.0877, %1139 ], [ 0, %1195 ]
  %.53 = phi i32 [ %.0866, %1139 ], [ 0, %1195 ]
  %.1861 = phi i32 [ %.0860, %1139 ], [ %.0937, %1195 ]
  store i32 25, ptr %7, align 8, !tbaa !15
  br label %1202

1202:                                             ; preds = %1201, %67
  %.581060 = phi ptr [ %.01002, %67 ], [ %.571059, %1201 ]
  %.58997 = phi i32 [ %.0939, %67 ], [ %.57996, %1201 ]
  %.54931 = phi i64 [ %.0877, %67 ], [ %.53930, %1201 ]
  %.54 = phi i32 [ %.0866, %67 ], [ %.53, %1201 ]
  %.2862 = phi i32 [ %.0860, %67 ], [ %.1861, %1201 ]
  %1203 = load i32, ptr %32, align 8, !tbaa !23
  %.not1121 = icmp eq i32 %1203, 0
  br i1 %.not1121, label %1247, label %1204

1204:                                             ; preds = %1202
  %1205 = load i32, ptr %35, align 8, !tbaa !28
  %.not1122 = icmp eq i32 %1205, 0
  br i1 %.not1122, label %1247, label %.preheader1246

.preheader1246:                                   ; preds = %1204
  %1206 = icmp ult i32 %.54, 32
  br i1 %1206, label %.lr.ph1701.preheader, label %._crit_edge1702

.lr.ph1701.preheader:                             ; preds = %.preheader1246
  %1207 = zext nneg i32 %.54 to i64
  %1208 = icmp eq i32 %.58997, 0
  br i1 %1208, label %.loopexit.loopexit2305, label %1209

1209:                                             ; preds = %.lr.ph1701.preheader
  %1210 = add i32 %.58997, -1
  %1211 = getelementptr inbounds i8, ptr %.581060, i64 1
  %1212 = load i8, ptr %.581060, align 1, !tbaa !24
  %1213 = zext i8 %1212 to i64
  %1214 = shl nuw nsw i64 %1213, %1207
  %1215 = add i64 %1214, %.54931
  %indvars.iv.next2730 = add nuw nsw i64 %1207, 8
  %1216 = icmp ult i32 %.54, 24
  br i1 %1216, label %.lr.ph1701.1, label %._crit_edge1702.loopexit, !llvm.loop !96

.lr.ph1701.1:                                     ; preds = %1209
  %1217 = icmp eq i32 %1210, 0
  br i1 %1217, label %.loopexit.loopexit2305, label %1218

1218:                                             ; preds = %.lr.ph1701.1
  %1219 = add i32 %.58997, -2
  %1220 = getelementptr inbounds i8, ptr %.581060, i64 2
  %1221 = load i8, ptr %1211, align 1, !tbaa !24
  %1222 = zext i8 %1221 to i64
  %1223 = shl nuw nsw i64 %1222, %indvars.iv.next2730
  %1224 = add i64 %1223, %1215
  %indvars.iv.next2730.1 = add nuw nsw i64 %1207, 16
  %1225 = icmp ult i32 %.54, 16
  br i1 %1225, label %.lr.ph1701.2, label %._crit_edge1702.loopexit, !llvm.loop !96

.lr.ph1701.2:                                     ; preds = %1218
  %1226 = icmp eq i32 %1219, 0
  br i1 %1226, label %.loopexit.loopexit2305, label %1227

1227:                                             ; preds = %.lr.ph1701.2
  %1228 = add i32 %.58997, -3
  %1229 = getelementptr inbounds i8, ptr %.581060, i64 3
  %1230 = load i8, ptr %1220, align 1, !tbaa !24
  %1231 = zext i8 %1230 to i64
  %1232 = shl nuw nsw i64 %1231, %indvars.iv.next2730.1
  %1233 = add i64 %1232, %1224
  %indvars.iv.next2730.2 = add nuw nsw i64 %1207, 24
  %1234 = icmp ult i32 %.54, 8
  br i1 %1234, label %.lr.ph1701.3, label %._crit_edge1702.loopexit, !llvm.loop !96

.lr.ph1701.3:                                     ; preds = %1227
  %1235 = icmp eq i32 %1228, 0
  br i1 %1235, label %.loopexit.loopexit2305, label %1236

1236:                                             ; preds = %.lr.ph1701.3
  %1237 = add i32 %.58997, -4
  %1238 = getelementptr inbounds i8, ptr %.581060, i64 4
  %1239 = load i8, ptr %1229, align 1, !tbaa !24
  %1240 = zext i8 %1239 to i64
  %1241 = shl nuw nsw i64 %1240, %indvars.iv.next2730.2
  %1242 = add i64 %1241, %1233
  %indvars.iv.next2730.3 = or disjoint i64 %1207, 32
  br label %._crit_edge1702.loopexit

._crit_edge1702.loopexit:                         ; preds = %1236, %1227, %1218, %1209
  %.lcssa3749 = phi i32 [ %1210, %1209 ], [ %1219, %1218 ], [ %1228, %1227 ], [ %1237, %1236 ]
  %.lcssa3748 = phi ptr [ %1211, %1209 ], [ %1220, %1218 ], [ %1229, %1227 ], [ %1238, %1236 ]
  %.lcssa3747 = phi i64 [ %1215, %1209 ], [ %1224, %1218 ], [ %1233, %1227 ], [ %1242, %1236 ]
  %indvars.iv.next2730.lcssa = phi i64 [ %indvars.iv.next2730, %1209 ], [ %indvars.iv.next2730.1, %1218 ], [ %indvars.iv.next2730.2, %1227 ], [ %indvars.iv.next2730.3, %1236 ]
  %1243 = trunc nuw nsw i64 %indvars.iv.next2730.lcssa to i32
  br label %._crit_edge1702

._crit_edge1702:                                  ; preds = %._crit_edge1702.loopexit, %.preheader1246
  %.591061.lcssa = phi ptr [ %.581060, %.preheader1246 ], [ %.lcssa3748, %._crit_edge1702.loopexit ]
  %.59998.lcssa = phi i32 [ %.58997, %.preheader1246 ], [ %.lcssa3749, %._crit_edge1702.loopexit ]
  %.55932.lcssa = phi i64 [ %.54931, %.preheader1246 ], [ %.lcssa3747, %._crit_edge1702.loopexit ]
  %.55.lcssa = phi i32 [ %.54, %.preheader1246 ], [ %1243, %._crit_edge1702.loopexit ]
  %1244 = load i64, ptr %34, align 8, !tbaa !95
  %1245 = and i64 %1244, 4294967295
  %.not1123 = icmp eq i64 %.55932.lcssa, %1245
  br i1 %.not1123, label %1247, label %1246

1246:                                             ; preds = %._crit_edge1702
  store ptr @.str.17, ptr %38, align 8, !tbaa !32
  store i32 27, ptr %7, align 8, !tbaa !15
  br label %.thread

1247:                                             ; preds = %._crit_edge1702, %1204, %1202
  %.601062 = phi ptr [ %.581060, %1204 ], [ %.581060, %1202 ], [ %.591061.lcssa, %._crit_edge1702 ]
  %.60 = phi i32 [ %.58997, %1204 ], [ %.58997, %1202 ], [ %.59998.lcssa, %._crit_edge1702 ]
  %.56933 = phi i64 [ %.54931, %1204 ], [ %.54931, %1202 ], [ 0, %._crit_edge1702 ]
  %.56 = phi i32 [ %.54, %1204 ], [ %.54, %1202 ], [ 0, %._crit_edge1702 ]
  store i32 26, ptr %7, align 8, !tbaa !15
  br label %.loopexit

.thread:                                          ; preds = %736, %824, %.loopexit3731, %1131, %1246, %1200, %1134, %1060, %1028, %935, %932, %929, %864, %850, %842, %659, %626, %595, %587, %579, %530, %509, %461, %453, %160, %157, %133, %131, %123, %120, %105, %84
  %.621064 = phi ptr [ %.591061.lcssa, %1246 ], [ %.561058.lcssa, %1200 ], [ %.01002, %1134 ], [ %.551057, %1131 ], [ %.551057, %.loopexit3731 ], [ %.541056, %1060 ], [ %.511053, %1028 ], [ %867, %864 ], [ %.441046, %929 ], [ %.441046, %932 ], [ %.441046, %935 ], [ %.321034.lcssa, %842 ], [ %.321034.lcssa, %850 ], [ %.291031.lcssa, %659 ], [ %.271029.lcssa, %626 ], [ %590, %587 ], [ %.261028, %595 ], [ %.251027.lcssa, %579 ], [ %.231025, %509 ], [ %.241026.lcssa, %530 ], [ %.181020.lcssa, %453 ], [ %.191021, %461 ], [ %.21004.lcssa, %157 ], [ %.21004.lcssa, %160 ], [ %.01002, %84 ], [ %.11003.lcssa, %105 ], [ %.11003.lcssa, %120 ], [ %.11003.lcssa, %123 ], [ %.11003.lcssa, %131 ], [ %.11003.lcssa, %133 ], [ %.381040, %824 ], [ %.351037.lcssa, %736 ]
  %.21001 = phi ptr [ %.0999, %1246 ], [ %.0999, %1200 ], [ %1137, %1134 ], [ %.lcssa3410, %1131 ], [ %.lcssa3410, %.loopexit3731 ], [ %.0999, %1060 ], [ %.0999, %1028 ], [ %865, %864 ], [ %.0999, %929 ], [ %.0999, %932 ], [ %.0999, %935 ], [ %.0999, %842 ], [ %.0999, %850 ], [ %.0999, %659 ], [ %.0999, %626 ], [ %592, %587 ], [ %.0999, %595 ], [ %.0999, %579 ], [ %.0999, %509 ], [ %.0999, %530 ], [ %.0999, %453 ], [ %.0999, %461 ], [ %.0999, %157 ], [ %.0999, %160 ], [ %.0999, %84 ], [ %.0999, %105 ], [ %.0999, %120 ], [ %.0999, %123 ], [ %.0999, %131 ], [ %.0999, %133 ], [ %.0999, %824 ], [ %.0999, %736 ]
  %.62 = phi i32 [ %.59998.lcssa, %1246 ], [ %.56995.lcssa, %1200 ], [ %.0939, %1134 ], [ %.55994, %1131 ], [ %.55994, %.loopexit3731 ], [ %.54993, %1060 ], [ %.51990, %1028 ], [ %868, %864 ], [ %.44983, %929 ], [ %.44983, %932 ], [ %.44983, %935 ], [ %.32971.lcssa, %842 ], [ %.32971.lcssa, %850 ], [ %.29968.lcssa, %659 ], [ %.27966.lcssa, %626 ], [ %589, %587 ], [ %.26965, %595 ], [ %.25964.lcssa, %579 ], [ %.23962, %509 ], [ %.24963.lcssa, %530 ], [ %.18957.lcssa, %453 ], [ %.19958, %461 ], [ %.2941.lcssa, %157 ], [ %.2941.lcssa, %160 ], [ %.0939, %84 ], [ %.1940.lcssa, %105 ], [ %.1940.lcssa, %120 ], [ %.1940.lcssa, %123 ], [ %.1940.lcssa, %131 ], [ %.1940.lcssa, %133 ], [ %.38977, %824 ], [ %.35974.lcssa, %736 ]
  %.1938 = phi i32 [ %.0937, %1246 ], [ %.0937, %1200 ], [ %1138, %1134 ], [ %1128, %1131 ], [ %1128, %.loopexit3731 ], [ %.0937, %1060 ], [ %.0937, %1028 ], [ %866, %864 ], [ %.0937, %929 ], [ %.0937, %932 ], [ %.0937, %935 ], [ %.0937, %842 ], [ %.0937, %850 ], [ %.0937, %659 ], [ %.0937, %626 ], [ %591, %587 ], [ %.0937, %595 ], [ %.0937, %579 ], [ %.0937, %509 ], [ %.0937, %530 ], [ %.0937, %453 ], [ %.0937, %461 ], [ %.0937, %157 ], [ %.0937, %160 ], [ %.0937, %84 ], [ %.0937, %105 ], [ %.0937, %120 ], [ %.0937, %123 ], [ %.0937, %131 ], [ %.0937, %133 ], [ %.0937, %824 ], [ %.0937, %736 ]
  %.58935 = phi i64 [ %.55932.lcssa, %1246 ], [ %.52929.lcssa, %1200 ], [ %.0877, %1134 ], [ %.51928, %1131 ], [ %.51928, %.loopexit3731 ], [ %.50927, %1060 ], [ %1024, %1028 ], [ %869, %864 ], [ %924, %929 ], [ %924, %932 ], [ %924, %935 ], [ %.28905.lcssa, %842 ], [ %.28905.lcssa, %850 ], [ %.25902.lcssa, %659 ], [ %622, %626 ], [ %.22899, %587 ], [ %.22899, %595 ], [ %.21898.lcssa, %579 ], [ %512, %509 ], [ %531, %530 ], [ %.14891.lcssa, %453 ], [ %.15892, %461 ], [ %.2879.lcssa, %157 ], [ %.2879.lcssa, %160 ], [ %.0877, %84 ], [ 0, %105 ], [ %.1878.lcssa, %120 ], [ %.1878.lcssa, %123 ], [ %125, %131 ], [ 0, %133 ], [ %.34911, %824 ], [ %733, %736 ]
  %.58 = phi i32 [ %.55.lcssa, %1246 ], [ %.52.lcssa, %1200 ], [ %.0866, %1134 ], [ %.51, %1131 ], [ %.51, %.loopexit3731 ], [ %.50, %1060 ], [ %1025, %1028 ], [ %870, %864 ], [ %925, %929 ], [ %925, %932 ], [ %925, %935 ], [ %.28.lcssa, %842 ], [ %.28.lcssa, %850 ], [ %.25.lcssa, %659 ], [ %623, %626 ], [ %.22, %587 ], [ %.22, %595 ], [ %.21.lcssa, %579 ], [ %513, %509 ], [ %532, %530 ], [ %.14.lcssa, %453 ], [ %.15, %461 ], [ %.2868.lcssa, %157 ], [ %.2868.lcssa, %160 ], [ %.0866, %84 ], [ 0, %105 ], [ %.1867.lcssa, %120 ], [ %.1867.lcssa, %123 ], [ %132, %131 ], [ 0, %133 ], [ %.34, %824 ], [ %734, %736 ]
  %.4864 = phi i32 [ %.2862, %1246 ], [ %.0937, %1200 ], [ %.0860, %1134 ], [ %.0860, %1131 ], [ %.0860, %.loopexit3731 ], [ %.0860, %1060 ], [ %.0860, %1028 ], [ %.0860, %864 ], [ %.0860, %929 ], [ %.0860, %932 ], [ %.0860, %935 ], [ %.0860, %842 ], [ %.0860, %850 ], [ %.0860, %659 ], [ %.0860, %626 ], [ %.0860, %587 ], [ %.0860, %595 ], [ %.0860, %579 ], [ %.0860, %509 ], [ %.0860, %530 ], [ %.0860, %453 ], [ %.0860, %461 ], [ %.0860, %157 ], [ %.0860, %160 ], [ %.0860, %84 ], [ %.0860, %105 ], [ %.0860, %120 ], [ %.0860, %123 ], [ %.0860, %131 ], [ %.0860, %133 ], [ %.0860, %824 ], [ %.0860, %736 ]
  %.7 = phi i32 [ %.0, %1246 ], [ %.0, %1200 ], [ %.0, %1134 ], [ %.6, %1131 ], [ %.6, %.loopexit3731 ], [ %.5, %1060 ], [ %.4, %1028 ], [ %.2, %864 ], [ %.2, %929 ], [ %.2, %932 ], [ %.2, %935 ], [ %841, %842 ], [ %849, %850 ], [ %658, %659 ], [ %.0, %626 ], [ %.0, %587 ], [ %.0, %595 ], [ %.0, %579 ], [ %.0, %509 ], [ %.0, %530 ], [ %.0, %453 ], [ %.0, %461 ], [ %.0, %157 ], [ %.0, %160 ], [ %.0, %84 ], [ %.0, %105 ], [ %.0, %120 ], [ %.0, %123 ], [ %.0, %131 ], [ %.0, %133 ], [ %.1, %824 ], [ %.1, %736 ]
  %.pre = load i32, ptr %7, align 8, !tbaa !15
  br label %67

.loopexit.loopexit:                               ; preds = %.lr.ph1940
  %1248 = trunc nuw i64 %indvars.iv2754 to i32
  br label %.loopexit

.loopexit.loopexit2285:                           ; preds = %.lr.ph1927
  %1249 = trunc nuw i64 %indvars.iv2751 to i32
  br label %.loopexit

.loopexit.loopexit2286:                           ; preds = %.lr.ph1917
  %1250 = trunc nuw i64 %indvars.iv2748 to i32
  br label %.loopexit

.loopexit.loopexit2287:                           ; preds = %.lr.ph1907
  %1251 = trunc nuw i64 %indvars.iv2745 to i32
  br label %.loopexit

.loopexit.loopexit2289:                           ; preds = %.lr.ph2277.1, %.lr.ph2277.preheader
  %indvars.iv2801.lcssa = phi i64 [ %82, %.lr.ph2277.preheader ], [ %indvars.iv.next2802, %.lr.ph2277.1 ]
  %.18782275.lcssa = phi i64 [ %.0877, %.lr.ph2277.preheader ], [ %91, %.lr.ph2277.1 ]
  %.110032273.lcssa = phi ptr [ %.01002, %.lr.ph2277.preheader ], [ %87, %.lr.ph2277.1 ]
  %1252 = trunc nuw nsw i64 %indvars.iv2801.lcssa to i32
  br label %.loopexit

.loopexit.loopexit2290:                           ; preds = %.lr.ph2267.1, %.lr.ph2267.preheader
  %indvars.iv2798.lcssa = phi i64 [ %432, %.lr.ph2267.preheader ], [ %indvars.iv.next2799, %.lr.ph2267.1 ]
  %.148912265.lcssa = phi i64 [ %.13890, %.lr.ph2267.preheader ], [ %440, %.lr.ph2267.1 ]
  %.1810202263.lcssa = phi ptr [ %.171019, %.lr.ph2267.preheader ], [ %436, %.lr.ph2267.1 ]
  %1253 = trunc nuw nsw i64 %indvars.iv2798.lcssa to i32
  br label %.loopexit

.loopexit.loopexit2291:                           ; preds = %.lr.ph2258.1, %.lr.ph2258.preheader
  %indvars.iv2789.lcssa = phi i64 [ %272, %.lr.ph2258.preheader ], [ %indvars.iv.next2790, %.lr.ph2258.1 ]
  %.88852256.lcssa = phi i64 [ %.788428542862, %.lr.ph2258.preheader ], [ %280, %.lr.ph2258.1 ]
  %.810102254.lcssa = phi ptr [ %.7100928502864, %.lr.ph2258.preheader ], [ %276, %.lr.ph2258.1 ]
  %1254 = trunc nuw nsw i64 %indvars.iv2789.lcssa to i32
  br label %.loopexit

.loopexit.loopexit2292:                           ; preds = %.lr.ph2249.1, %.lr.ph2249.preheader
  %indvars.iv2786.lcssa = phi i64 [ %230, %.lr.ph2249.preheader ], [ %indvars.iv.next2787, %.lr.ph2249.1 ]
  %.68832246.lcssa = phi i64 [ %.58822841, %.lr.ph2249.preheader ], [ %238, %.lr.ph2249.1 ]
  %.610082244.lcssa = phi ptr [ %.510072839, %.lr.ph2249.preheader ], [ %234, %.lr.ph2249.1 ]
  %1255 = trunc nuw nsw i64 %indvars.iv2786.lcssa to i32
  br label %.loopexit

.loopexit.loopexit2293:                           ; preds = %.lr.ph2239.3, %.lr.ph2239.2, %.lr.ph2239.1, %.lr.ph2239.preheader
  %indvars.iv2783.lcssa = phi i64 [ %176, %.lr.ph2239.preheader ], [ %indvars.iv.next2784, %.lr.ph2239.1 ], [ %indvars.iv.next2784.1, %.lr.ph2239.2 ], [ %indvars.iv.next2784.2, %.lr.ph2239.3 ]
  %.48812236.lcssa = phi i64 [ %.38802832, %.lr.ph2239.preheader ], [ %184, %.lr.ph2239.1 ], [ %193, %.lr.ph2239.2 ], [ %202, %.lr.ph2239.3 ]
  %.410062234.lcssa = phi ptr [ %.310052830, %.lr.ph2239.preheader ], [ %180, %.lr.ph2239.1 ], [ %189, %.lr.ph2239.2 ], [ %198, %.lr.ph2239.3 ]
  %1256 = trunc nuw nsw i64 %indvars.iv2783.lcssa to i32
  br label %.loopexit

.loopexit.loopexit2294:                           ; preds = %.lr.ph2228.1, %.lr.ph2228.preheader
  %indvars.iv2780.lcssa = phi i64 [ %76, %.lr.ph2228.preheader ], [ %indvars.iv.next2781, %.lr.ph2228.1 ]
  %.28792226.lcssa = phi i64 [ %.0877, %.lr.ph2228.preheader ], [ %144, %.lr.ph2228.1 ]
  %.210042224.lcssa = phi ptr [ %.01002, %.lr.ph2228.preheader ], [ %140, %.lr.ph2228.1 ]
  %1257 = trunc nuw nsw i64 %indvars.iv2780.lcssa to i32
  br label %.loopexit

.loopexit.loopexit2295:                           ; preds = %.lr.ph2064.3, %.lr.ph2064.2, %.lr.ph2064.1, %.lr.ph2064.preheader
  %indvars.iv2777.lcssa = phi i64 [ %73, %.lr.ph2064.preheader ], [ %indvars.iv.next2778, %.lr.ph2064.1 ], [ %indvars.iv.next2778.1, %.lr.ph2064.2 ], [ %indvars.iv.next2778.2, %.lr.ph2064.3 ]
  %.168932062.lcssa = phi i64 [ %.0877, %.lr.ph2064.preheader ], [ %469, %.lr.ph2064.1 ], [ %478, %.lr.ph2064.2 ], [ %487, %.lr.ph2064.3 ]
  %.2010222060.lcssa = phi ptr [ %.01002, %.lr.ph2064.preheader ], [ %465, %.lr.ph2064.1 ], [ %474, %.lr.ph2064.2 ], [ %483, %.lr.ph2064.3 ]
  %1258 = trunc nuw nsw i64 %indvars.iv2777.lcssa to i32
  br label %.loopexit

.loopexit.loopexit2296:                           ; preds = %.lr.ph2054.3, %.lr.ph2054.2, %.lr.ph2054.1, %.lr.ph2054.preheader
  %indvars.iv2775.lcssa = phi i64 [ %540, %.lr.ph2054.preheader ], [ %indvars.iv.next2776, %.lr.ph2054.1 ], [ %indvars.iv.next2776.1, %.lr.ph2054.2 ], [ %indvars.iv.next2776.2, %.lr.ph2054.3 ]
  %.218982051.lcssa = phi i64 [ %536, %.lr.ph2054.preheader ], [ %548, %.lr.ph2054.1 ], [ %556, %.lr.ph2054.2 ], [ %565, %.lr.ph2054.3 ]
  %.2510272049.lcssa = phi ptr [ %.01002, %.lr.ph2054.preheader ], [ %544, %.lr.ph2054.1 ], [ %552, %.lr.ph2054.2 ], [ %561, %.lr.ph2054.3 ]
  %1259 = trunc nuw nsw i64 %indvars.iv2775.lcssa to i32
  br label %.loopexit

.loopexit.loopexit2304:                           ; preds = %.lr.ph1711.1, %.lr.ph1711.preheader
  %indvars.iv2732.lcssa = phi i64 [ %70, %.lr.ph1711.preheader ], [ %indvars.iv.next2733, %.lr.ph1711.1 ]
  %.239001709.lcssa = phi i64 [ %.0877, %.lr.ph1711.preheader ], [ %602, %.lr.ph1711.1 ]
  %.2710291707.lcssa = phi ptr [ %.01002, %.lr.ph1711.preheader ], [ %598, %.lr.ph1711.1 ]
  %1260 = trunc nuw nsw i64 %indvars.iv2732.lcssa to i32
  br label %.loopexit

.loopexit.loopexit2305:                           ; preds = %.lr.ph1701.3, %.lr.ph1701.2, %.lr.ph1701.1, %.lr.ph1701.preheader
  %indvars.iv2729.lcssa = phi i64 [ %1207, %.lr.ph1701.preheader ], [ %indvars.iv.next2730, %.lr.ph1701.1 ], [ %indvars.iv.next2730.1, %.lr.ph1701.2 ], [ %indvars.iv.next2730.2, %.lr.ph1701.3 ]
  %.559321699.lcssa = phi i64 [ %.54931, %.lr.ph1701.preheader ], [ %1215, %.lr.ph1701.1 ], [ %1224, %.lr.ph1701.2 ], [ %1233, %.lr.ph1701.3 ]
  %.5910611697.lcssa = phi ptr [ %.581060, %.lr.ph1701.preheader ], [ %1211, %.lr.ph1701.1 ], [ %1220, %.lr.ph1701.2 ], [ %1229, %.lr.ph1701.3 ]
  %1261 = trunc nuw nsw i64 %indvars.iv2729.lcssa to i32
  br label %.loopexit

.loopexit.loopexit2306:                           ; preds = %.lr.ph.3, %.lr.ph.2, %.lr.ph.1, %.lr.ph.preheader
  %indvars.iv.lcssa = phi i64 [ %1142, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph.1 ], [ %indvars.iv.next.1, %.lr.ph.2 ], [ %indvars.iv.next.2, %.lr.ph.3 ]
  %.529291692.lcssa = phi i64 [ %.0877, %.lr.ph.preheader ], [ %1150, %.lr.ph.1 ], [ %1159, %.lr.ph.2 ], [ %1168, %.lr.ph.3 ]
  %.5610581690.lcssa = phi ptr [ %.01002, %.lr.ph.preheader ], [ %1146, %.lr.ph.1 ], [ %1155, %.lr.ph.2 ], [ %1164, %.lr.ph.3 ]
  %1262 = trunc nuw nsw i64 %indvars.iv.lcssa to i32
  br label %.loopexit

.loopexit.loopexit2875:                           ; preds = %.lr.ph1893
  %1263 = zext i32 %.329711951 to i64
  %1264 = shl i32 %.329711951, 3
  %1265 = add i32 %1264, %.281953
  %scevgep.le = getelementptr i8, ptr %.3210341950, i64 %1263
  br label %.loopexit

.loopexit.loopexit2876:                           ; preds = %.lr.ph2043
  %1266 = shl i32 %.52991, 3
  %1267 = add i32 %.48, %1266
  %1268 = zext i32 %.52991 to i64
  %scevgep2774.le = getelementptr i8, ptr %.521054, i64 %1268
  br label %.loopexit

.loopexit.loopexit2877:                           ; preds = %.lr.ph2031
  %1269 = zext i32 %.49988.lcssa to i64
  %1270 = shl i32 %.49988.lcssa, 3
  %1271 = add i32 %1270, %.45.lcssa
  %scevgep2772.le = getelementptr i8, ptr %.491051.lcssa, i64 %1269
  br label %.loopexit

.loopexit.loopexit2878:                           ; preds = %.lr.ph2013
  %1272 = zext i32 %.48987 to i64
  %1273 = shl i32 %.48987, 3
  %1274 = add i32 %1273, %.44
  %scevgep2768.le = getelementptr i8, ptr %.481050, i64 %1272
  br label %.loopexit

.loopexit.loopexit2879:                           ; preds = %.lr.ph1998
  %1275 = shl i32 %.45984, 3
  %1276 = add i32 %.41, %1275
  %1277 = zext i32 %.45984 to i64
  %scevgep2765.le = getelementptr i8, ptr %.451047, i64 %1277
  br label %.loopexit

.loopexit.loopexit2880:                           ; preds = %.lr.ph1986
  %1278 = zext i32 %.42981.lcssa to i64
  %1279 = shl i32 %.42981.lcssa, 3
  %1280 = add i32 %1279, %.38.lcssa
  %scevgep2763.le = getelementptr i8, ptr %.421044.lcssa, i64 %1278
  br label %.loopexit

.loopexit.loopexit2881:                           ; preds = %.lr.ph1968
  %1281 = zext i32 %.41980 to i64
  %1282 = shl i32 %.41980, 3
  %1283 = add i32 %1282, %.37
  %scevgep2759.le = getelementptr i8, ptr %.411043, i64 %1281
  br label %.loopexit

.loopexit.loopexit3737:                           ; preds = %67
  br label %.loopexit

.loopexit:                                        ; preds = %343, %349, %378, %390, %419, %504, %585, %1062, %1132, %.lr.ph2073, %.lr.ph1721, %67, %.loopexit.loopexit3737, %.loopexit.loopexit2881, %.loopexit.loopexit2880, %.loopexit.loopexit2879, %.loopexit.loopexit2878, %.loopexit.loopexit2877, %.loopexit.loopexit2876, %.loopexit.loopexit2875, %.loopexit.loopexit2306, %.loopexit.loopexit2305, %.loopexit.loopexit2304, %.loopexit.loopexit2296, %.loopexit.loopexit2295, %.loopexit.loopexit2294, %.loopexit.loopexit2293, %.loopexit.loopexit2292, %.loopexit.loopexit2291, %.loopexit.loopexit2290, %.loopexit.loopexit2289, %.loopexit.loopexit2287, %.loopexit.loopexit2286, %.loopexit.loopexit2285, %.loopexit.loopexit, %1247
  %.09372639 = phi i32 [ %.0937, %1247 ], [ %.0937, %.loopexit.loopexit ], [ %.0937, %.loopexit.loopexit2285 ], [ %.0937, %.loopexit.loopexit2286 ], [ %.0937, %.loopexit.loopexit2287 ], [ %.0937, %.loopexit.loopexit2289 ], [ %.0937, %.loopexit.loopexit2290 ], [ %.0937, %.loopexit.loopexit2291 ], [ %.0937, %.loopexit.loopexit2292 ], [ %.0937, %.loopexit.loopexit2293 ], [ %.0937, %.loopexit.loopexit2294 ], [ %.0937, %.loopexit.loopexit2295 ], [ %.0937, %.loopexit.loopexit2296 ], [ %.0937, %.loopexit.loopexit2304 ], [ %.0937, %.loopexit.loopexit2305 ], [ %.0937, %.loopexit.loopexit2306 ], [ %.0937, %.loopexit.loopexit2875 ], [ %.0937, %.loopexit.loopexit2876 ], [ %.0937, %.loopexit.loopexit2877 ], [ %.0937, %.loopexit.loopexit2878 ], [ %.0937, %.loopexit.loopexit2879 ], [ %.0937, %.loopexit.loopexit2880 ], [ %.0937, %.loopexit.loopexit2881 ], [ %.0937, %67 ], [ %.0937, %.lr.ph1721 ], [ %.0937, %343 ], [ %.0937, %349 ], [ %.0937, %378 ], [ %.0937, %390 ], [ %.0937, %419 ], [ %.0937, %504 ], [ %.0937, %585 ], [ 0, %1062 ], [ 0, %1132 ], [ %.0937, %.lr.ph2073 ], [ %.0937, %.loopexit.loopexit3737 ]
  %.631065 = phi ptr [ %.601062, %1247 ], [ %.3410361936, %.loopexit.loopexit ], [ %.3710391923, %.loopexit.loopexit2285 ], [ %.3510371913, %.loopexit.loopexit2286 ], [ %.3610381903, %.loopexit.loopexit2287 ], [ %.110032273.lcssa, %.loopexit.loopexit2289 ], [ %.1810202263.lcssa, %.loopexit.loopexit2290 ], [ %.810102254.lcssa, %.loopexit.loopexit2291 ], [ %.610082244.lcssa, %.loopexit.loopexit2292 ], [ %.410062234.lcssa, %.loopexit.loopexit2293 ], [ %.210042224.lcssa, %.loopexit.loopexit2294 ], [ %.2010222060.lcssa, %.loopexit.loopexit2295 ], [ %.2510272049.lcssa, %.loopexit.loopexit2296 ], [ %.2710291707.lcssa, %.loopexit.loopexit2304 ], [ %.5910611697.lcssa, %.loopexit.loopexit2305 ], [ %.5610581690.lcssa, %.loopexit.loopexit2306 ], [ %scevgep.le, %.loopexit.loopexit2875 ], [ %scevgep2774.le, %.loopexit.loopexit2876 ], [ %scevgep2772.le, %.loopexit.loopexit2877 ], [ %scevgep2768.le, %.loopexit.loopexit2878 ], [ %scevgep2765.le, %.loopexit.loopexit2879 ], [ %scevgep2763.le, %.loopexit.loopexit2880 ], [ %scevgep2759.le, %.loopexit.loopexit2881 ], [ %.01002, %67 ], [ %.2910311871, %.lr.ph1721 ], [ %.111013, %343 ], [ %.131015, %349 ], [ %381, %378 ], [ %.151017, %390 ], [ %422, %419 ], [ %.221024, %504 ], [ %.261028, %585 ], [ %.551057, %1062 ], [ %.01002, %1132 ], [ %.231025, %.lr.ph2073 ], [ %.01002, %.loopexit.loopexit3737 ]
  %.63 = phi i32 [ %.60, %1247 ], [ 0, %.loopexit.loopexit ], [ 0, %.loopexit.loopexit2285 ], [ 0, %.loopexit.loopexit2286 ], [ 0, %.loopexit.loopexit2287 ], [ 0, %.loopexit.loopexit2289 ], [ 0, %.loopexit.loopexit2290 ], [ 0, %.loopexit.loopexit2291 ], [ 0, %.loopexit.loopexit2292 ], [ 0, %.loopexit.loopexit2293 ], [ 0, %.loopexit.loopexit2294 ], [ 0, %.loopexit.loopexit2295 ], [ 0, %.loopexit.loopexit2296 ], [ 0, %.loopexit.loopexit2304 ], [ 0, %.loopexit.loopexit2305 ], [ 0, %.loopexit.loopexit2306 ], [ 0, %.loopexit.loopexit2875 ], [ 0, %.loopexit.loopexit2876 ], [ 0, %.loopexit.loopexit2877 ], [ 0, %.loopexit.loopexit2878 ], [ 0, %.loopexit.loopexit2879 ], [ 0, %.loopexit.loopexit2880 ], [ 0, %.loopexit.loopexit2881 ], [ %.0939, %67 ], [ 0, %.lr.ph1721 ], [ %.11950, %343 ], [ 0, %349 ], [ %379, %378 ], [ 0, %390 ], [ %420, %419 ], [ %.22961, %504 ], [ %.26965, %585 ], [ %.55994, %1062 ], [ %.0939, %1132 ], [ 0, %.lr.ph2073 ], [ %.0939, %.loopexit.loopexit3737 ]
  %.59936 = phi i64 [ %.56933, %1247 ], [ %.309071938, %.loopexit.loopexit ], [ %.339101925, %.loopexit.loopexit2285 ], [ %.319081915, %.loopexit.loopexit2286 ], [ %.329091905, %.loopexit.loopexit2287 ], [ %.18782275.lcssa, %.loopexit.loopexit2289 ], [ %.148912265.lcssa, %.loopexit.loopexit2290 ], [ %.88852256.lcssa, %.loopexit.loopexit2291 ], [ %.68832246.lcssa, %.loopexit.loopexit2292 ], [ %.48812236.lcssa, %.loopexit.loopexit2293 ], [ %.28792226.lcssa, %.loopexit.loopexit2294 ], [ %.168932062.lcssa, %.loopexit.loopexit2295 ], [ %.218982051.lcssa, %.loopexit.loopexit2296 ], [ %.239001709.lcssa, %.loopexit.loopexit2304 ], [ %.559321699.lcssa, %.loopexit.loopexit2305 ], [ %.529291692.lcssa, %.loopexit.loopexit2306 ], [ %.299061891, %.loopexit.loopexit2875 ], [ %.499262041, %.loopexit.loopexit2876 ], [ %.469232029, %.loopexit.loopexit2877 ], [ %.459222010, %.loopexit.loopexit2878 ], [ %.429191996, %.loopexit.loopexit2879 ], [ %.399161984, %.loopexit.loopexit2880 ], [ %.389151966, %.loopexit.loopexit2881 ], [ %.0877, %67 ], [ %.259021873, %.lr.ph1721 ], [ %.10887, %343 ], [ %.11888, %349 ], [ %.11888, %378 ], [ %.12889, %390 ], [ %.12889, %419 ], [ %.18895, %504 ], [ %.22899, %585 ], [ %.51928, %1062 ], [ %.0877, %1132 ], [ %.19896, %.lr.ph2073 ], [ %.0877, %.loopexit.loopexit3737 ]
  %.59 = phi i32 [ %.56, %1247 ], [ %1248, %.loopexit.loopexit ], [ %1249, %.loopexit.loopexit2285 ], [ %1250, %.loopexit.loopexit2286 ], [ %1251, %.loopexit.loopexit2287 ], [ %1252, %.loopexit.loopexit2289 ], [ %1253, %.loopexit.loopexit2290 ], [ %1254, %.loopexit.loopexit2291 ], [ %1255, %.loopexit.loopexit2292 ], [ %1256, %.loopexit.loopexit2293 ], [ %1257, %.loopexit.loopexit2294 ], [ %1258, %.loopexit.loopexit2295 ], [ %1259, %.loopexit.loopexit2296 ], [ %1260, %.loopexit.loopexit2304 ], [ %1261, %.loopexit.loopexit2305 ], [ %1262, %.loopexit.loopexit2306 ], [ %1265, %.loopexit.loopexit2875 ], [ %1267, %.loopexit.loopexit2876 ], [ %1271, %.loopexit.loopexit2877 ], [ %1274, %.loopexit.loopexit2878 ], [ %1276, %.loopexit.loopexit2879 ], [ %1280, %.loopexit.loopexit2880 ], [ %1283, %.loopexit.loopexit2881 ], [ %.0866, %67 ], [ %.251874, %.lr.ph1721 ], [ %.10876, %343 ], [ %.11, %349 ], [ %.11, %378 ], [ %.12, %390 ], [ %.12, %419 ], [ %.18, %504 ], [ %.22, %585 ], [ %.51, %1062 ], [ %.0866, %1132 ], [ %.19, %.lr.ph2073 ], [ %.0866, %.loopexit.loopexit3737 ]
  %.5865 = phi i32 [ %.2862, %1247 ], [ %.0860, %.loopexit.loopexit ], [ %.0860, %.loopexit.loopexit2285 ], [ %.0860, %.loopexit.loopexit2286 ], [ %.0860, %.loopexit.loopexit2287 ], [ %.0860, %.loopexit.loopexit2289 ], [ %.0860, %.loopexit.loopexit2290 ], [ %.0860, %.loopexit.loopexit2291 ], [ %.0860, %.loopexit.loopexit2292 ], [ %.0860, %.loopexit.loopexit2293 ], [ %.0860, %.loopexit.loopexit2294 ], [ %.0860, %.loopexit.loopexit2295 ], [ %.0860, %.loopexit.loopexit2296 ], [ %.0860, %.loopexit.loopexit2304 ], [ %.2862, %.loopexit.loopexit2305 ], [ %.0860, %.loopexit.loopexit2306 ], [ %.0860, %.loopexit.loopexit2875 ], [ %.0860, %.loopexit.loopexit2876 ], [ %.0860, %.loopexit.loopexit2877 ], [ %.0860, %.loopexit.loopexit2878 ], [ %.0860, %.loopexit.loopexit2879 ], [ %.0860, %.loopexit.loopexit2880 ], [ %.0860, %.loopexit.loopexit2881 ], [ %.0860, %67 ], [ %.0860, %.lr.ph1721 ], [ %.0860, %.lr.ph2073 ], [ %.0860, %1132 ], [ %.0860, %1062 ], [ %.0860, %585 ], [ %.0860, %504 ], [ %.0860, %419 ], [ %.0860, %390 ], [ %.0860, %378 ], [ %.0860, %349 ], [ %.0860, %343 ], [ %.0860, %.loopexit.loopexit3737 ]
  %.8 = phi i32 [ 1, %1247 ], [ %.1, %.loopexit.loopexit ], [ %.1, %.loopexit.loopexit2285 ], [ %.1, %.loopexit.loopexit2286 ], [ %.1, %.loopexit.loopexit2287 ], [ %.0, %.loopexit.loopexit2289 ], [ %.0, %.loopexit.loopexit2290 ], [ %.0, %.loopexit.loopexit2291 ], [ %.0, %.loopexit.loopexit2292 ], [ %.0, %.loopexit.loopexit2293 ], [ %.0, %.loopexit.loopexit2294 ], [ %.0, %.loopexit.loopexit2295 ], [ %.0, %.loopexit.loopexit2296 ], [ %.0, %.loopexit.loopexit2304 ], [ %.0, %.loopexit.loopexit2305 ], [ %.0, %.loopexit.loopexit2306 ], [ %.1, %.loopexit.loopexit2875 ], [ %.5, %.loopexit.loopexit2876 ], [ %.4, %.loopexit.loopexit2877 ], [ %.4, %.loopexit.loopexit2878 ], [ %.3, %.loopexit.loopexit2879 ], [ %.2, %.loopexit.loopexit2880 ], [ %.2, %.loopexit.loopexit2881 ], [ -3, %67 ], [ %.0, %.lr.ph1721 ], [ %.0, %343 ], [ %.0, %349 ], [ %.0, %378 ], [ %.0, %390 ], [ %.0, %419 ], [ %.0, %504 ], [ %.0, %585 ], [ %.6, %1062 ], [ %.0, %1132 ], [ %.0, %.lr.ph2073 ], [ 1, %.loopexit.loopexit3737 ]
  store ptr %.0999, ptr %10, align 8, !tbaa !12
  store i32 %.09372639, ptr %24, align 8, !tbaa !17
  store ptr %.631065, ptr %0, align 8, !tbaa !13
  store i32 %.63, ptr %26, align 8, !tbaa !14
  store i64 %.59936, ptr %28, align 8, !tbaa !18
  store i32 %.59, ptr %30, align 8, !tbaa !19
  %1284 = load i32, ptr %57, align 4, !tbaa !88
  %.not1187 = icmp eq i32 %1284, 0
  br i1 %.not1187, label %1285, label %1288

1285:                                             ; preds = %.loopexit
  %1286 = load i32, ptr %7, align 8, !tbaa !15
  %1287 = icmp ugt i32 %1286, 23
  %.not1188 = icmp eq i32 %.5865, %.09372639
  %or.cond1202 = select i1 %1287, i1 true, i1 %.not1188
  br i1 %or.cond1202, label %1291, label %1288

1288:                                             ; preds = %1285, %.loopexit
  %1289 = call i32 @updatewindow(ptr noundef nonnull %0, i32 noundef %.5865)
  %.not1189 = icmp eq i32 %1289, 0
  br i1 %.not1189, label %._crit_edge2821, label %1290

._crit_edge2821:                                  ; preds = %1288
  %.pre2822 = load i32, ptr %26, align 8, !tbaa !14
  %.pre2823 = load i32, ptr %24, align 8, !tbaa !17
  br label %1291

1290:                                             ; preds = %1288
  store i32 28, ptr %7, align 8, !tbaa !15
  br label %.loopexit1251

1291:                                             ; preds = %._crit_edge2821, %1285
  %1292 = phi i32 [ %.pre2823, %._crit_edge2821 ], [ %.09372639, %1285 ]
  %1293 = phi i32 [ %.pre2822, %._crit_edge2821 ], [ %.63, %1285 ]
  %1294 = sub i32 %27, %1293
  %1295 = sub i32 %.5865, %1292
  %1296 = zext i32 %1294 to i64
  %1297 = getelementptr inbounds i8, ptr %0, i64 16
  %1298 = load i64, ptr %1297, align 8, !tbaa !97
  %1299 = add i64 %1298, %1296
  store i64 %1299, ptr %1297, align 8, !tbaa !97
  %1300 = zext i32 %1295 to i64
  %1301 = load i64, ptr %33, align 8, !tbaa !94
  %1302 = add i64 %1301, %1300
  store i64 %1302, ptr %33, align 8, !tbaa !94
  %1303 = load i64, ptr %34, align 8, !tbaa !95
  %1304 = add i64 %1303, %1300
  store i64 %1304, ptr %34, align 8, !tbaa !95
  %1305 = load i32, ptr %32, align 8, !tbaa !23
  %1306 = icmp ne i32 %1305, 0
  %1307 = icmp ne i32 %.5865, %1292
  %or.cond5 = select i1 %1306, i1 %1307, i1 false
  br i1 %or.cond5, label %1308, label %1320

1308:                                             ; preds = %1291
  %1309 = load i32, ptr %35, align 8, !tbaa !28
  %.not1190 = icmp eq i32 %1309, 0
  %1310 = load i64, ptr %36, align 8, !tbaa !27
  %1311 = load ptr, ptr %10, align 8, !tbaa !12
  %1312 = sub nsw i64 0, %1300
  %1313 = getelementptr inbounds i8, ptr %1311, i64 %1312
  br i1 %.not1190, label %1316, label %1314

1314:                                             ; preds = %1308
  %1315 = call i64 @z_crc32(i64 noundef %1310, ptr noundef %1313, i32 noundef %1295) #5
  br label %1318

1316:                                             ; preds = %1308
  %1317 = call i64 @z_adler32(i64 noundef %1310, ptr noundef %1313, i32 noundef %1295) #5
  br label %1318

1318:                                             ; preds = %1316, %1314
  %1319 = phi i64 [ %1315, %1314 ], [ %1317, %1316 ]
  store i64 %1319, ptr %36, align 8, !tbaa !27
  store i64 %1319, ptr %37, align 8, !tbaa !35
  br label %1320

1320:                                             ; preds = %1318, %1291
  %1321 = load i32, ptr %30, align 8, !tbaa !19
  %1322 = load i32, ptr %60, align 4, !tbaa !57
  %.not1191 = icmp eq i32 %1322, 0
  %1323 = select i1 %.not1191, i32 0, i32 64
  %1324 = add i32 %1323, %1321
  %1325 = load i32, ptr %7, align 8, !tbaa !15
  %1326 = icmp eq i32 %1325, 11
  %1327 = select i1 %1326, i32 128, i32 0
  %1328 = add i32 %1324, %1327
  %1329 = getelementptr inbounds i8, ptr %0, i64 88
  store i32 %1328, ptr %1329, align 8, !tbaa !98
  %1330 = icmp eq i32 %27, %1293
  %1331 = icmp eq i32 %.5865, %1292
  %or.cond7 = select i1 %1330, i1 %1331, i1 false
  %1332 = icmp eq i32 %1, 4
  %or.cond9 = or i1 %1332, %or.cond7
  %1333 = icmp eq i32 %.8, 0
  %or.cond11 = select i1 %or.cond9, i1 %1333, i1 false
  %spec.store.select = select i1 %or.cond11, i32 -5, i32 %.8
  br label %.loopexit1251

.loopexit1251.loopexit:                           ; preds = %67
  br label %.loopexit1251

.loopexit1251:                                    ; preds = %67, %.loopexit1251.loopexit, %2, %5, %9, %16, %1320, %1290, %501
  %.01066 = phi i32 [ -4, %1290 ], [ %spec.store.select, %1320 ], [ 2, %501 ], [ -2, %16 ], [ -2, %9 ], [ -2, %5 ], [ -2, %2 ], [ -4, %.loopexit1251.loopexit ], [ -2, %67 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #5
  ret i32 %.01066
}

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

declare i64 @z_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}
!17 = !{!6, !10, i64 32}
!18 = !{!16, !11, i64 72}
!19 = !{!16, !10, i64 80}
!20 = !{!16, !10, i64 84}
!21 = !{!16, !10, i64 92}
!22 = !{!16, !10, i64 132}
!23 = !{!16, !10, i64 8}
!24 = !{!8, !8, i64 0}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = !{!16, !11, i64 24}
!28 = !{!16, !10, i64 16}
!29 = !{!16, !7, i64 40}
!30 = !{!31, !10, i64 72}
!31 = !{!"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}
!32 = !{!6, !7, i64 48}
!33 = !{!16, !10, i64 48}
!34 = !{!16, !10, i64 20}
!35 = !{!6, !11, i64 96}
!36 = distinct !{!36, !26}
!37 = !{!31, !10, i64 0}
!38 = distinct !{!38, !26}
!39 = !{!31, !11, i64 8}
!40 = distinct !{!40, !26}
!41 = !{!31, !10, i64 16}
!42 = !{!31, !10, i64 20}
!43 = distinct !{!43, !26}
!44 = !{!31, !10, i64 32}
!45 = !{!31, !7, i64 24}
!46 = !{!31, !10, i64 36}
!47 = !{!31, !7, i64 40}
!48 = !{!31, !10, i64 48}
!49 = distinct !{!49, !26}
!50 = !{!31, !7, i64 56}
!51 = !{!31, !10, i64 64}
!52 = distinct !{!52, !26}
!53 = distinct !{!53, !26}
!54 = !{!31, !10, i64 68}
!55 = distinct !{!55, !26}
!56 = !{!16, !10, i64 12}
!57 = !{!16, !10, i64 4}
!58 = distinct !{!58, !26}
!59 = distinct !{!59, !26}
!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, !26}
!66 = distinct !{!66, !26}
!67 = !{!16, !7, i64 136}
!68 = !{!16, !7, i64 96}
!69 = !{!16, !10, i64 112}
!70 = distinct !{!70, !26}
!71 = distinct !{!71, !26}
!72 = distinct !{!72, !26}
!73 = distinct !{!73, !26}
!74 = distinct !{!74, !75}
!75 = !{!"llvm.loop.unroll.disable"}
!76 = distinct !{!76, !26, !77, !78}
!77 = !{!"llvm.loop.isvectorized", i32 1}
!78 = !{!"llvm.loop.unroll.runtime.disable"}
!79 = distinct !{!79, !26, !77}
!80 = distinct !{!80, !26}
!81 = !{!16, !7, i64 104}
!82 = !{!16, !10, i64 116}
!83 = distinct !{!83, !26}
!84 = !{!16, !10, i64 88}
!85 = distinct !{!85, !26}
!86 = !{!16, !10, i64 56}
!87 = !{!16, !10, i64 60}
!88 = !{!16, !10, i64 52}
!89 = !{!16, !7, i64 64}
!90 = distinct !{!90, !26, !77, !78}
!91 = distinct !{!91, !75}
!92 = distinct !{!92, !26, !77}
!93 = distinct !{!93, !26}
!94 = !{!6, !11, i64 40}
!95 = !{!16, !11, i64 32}
!96 = distinct !{!96, !26}
!97 = !{!6, !11, i64 16}
!98 = !{!6, !10, i64 88}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass