; LLVM IR from mncoppola/rpef :: utilities_src/squashfs2.1/lzma/C/7zip/Compress/LZMA_C (LzmaStateDecode)

; 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._CLzmaDecoderState = type { %struct._CLzmaProperties, ptr, ptr, [64 x i8], i32, i32, i32, i32, i32, i32, [4 x i32], i32, i32, [4 x i8] }
%struct._CLzmaProperties = type { i32, i32, i32, i32 }

; 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 @LzmaDecode(ptr noundef %0, ptr noundef %1, i32 noundef %2, ptr noundef %3, ptr noundef %4, i32 noundef %5, ptr noundef %6, i32 noundef %7) #1 {
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  %24 = alloca i8, align 1
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca ptr, align 8
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca [4 x i8], align 1
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca ptr, align 8
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca ptr, align 8
  %55 = alloca ptr, align 8
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca ptr, align 8
  %61 = alloca i32, align 4
  %62 = alloca ptr, align 8
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca ptr, align 8
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca ptr, align 8
  %70 = alloca i32, align 4
  %71 = alloca i32, align 4
  store ptr %0, ptr %10, align 8, !tbaa !5
  store ptr %1, ptr %11, align 8, !tbaa !5
  store i32 %2, ptr %12, align 4, !tbaa !9
  store ptr %3, ptr %13, align 8, !tbaa !5
  store ptr %4, ptr %14, align 8, !tbaa !5
  store i32 %5, ptr %15, align 4, !tbaa !9
  store ptr %6, ptr %16, align 8, !tbaa !5
  store i32 %7, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #2
  %72 = load ptr, ptr %10, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %72, i32 0, i32 5
  %74 = load i32, ptr %73, align 4, !tbaa !11
  store i32 %74, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #2
  %75 = load ptr, ptr %10, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %75, i32 0, i32 6
  %77 = load i32, ptr %76, align 8, !tbaa !14
  store i32 %77, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #2
  %78 = load ptr, ptr %10, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %78, i32 0, i32 3
  %80 = getelementptr inbounds [64 x i8], ptr %79, i64 0, i64 0
  store ptr %80, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #2
  %81 = load ptr, ptr %10, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %81, i32 0, i32 4
  %83 = load i32, ptr %82, align 8, !tbaa !15
  store i32 %83, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #2
  %84 = load ptr, ptr %10, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %84, i32 0, i32 1
  %86 = load ptr, ptr %85, align 8, !tbaa !16
  store ptr %86, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #2
  %87 = load ptr, ptr %10, align 8, !tbaa !5
  %88 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %87, i32 0, i32 11
  %89 = load i32, ptr %88, align 8, !tbaa !17
  store i32 %89, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #2
  %90 = load ptr, ptr %10, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %90, i32 0, i32 10
  %92 = getelementptr inbounds [4 x i32], ptr %91, i64 0, i64 0
  %93 = load i32, ptr %92, align 8, !tbaa !9
  store i32 %93, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #2
  %94 = load ptr, ptr %10, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %94, i32 0, i32 10
  %96 = getelementptr inbounds [4 x i32], ptr %95, i64 0, i64 1
  %97 = load i32, ptr %96, align 4, !tbaa !9
  store i32 %97, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #2
  %98 = load ptr, ptr %10, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %98, i32 0, i32 10
  %100 = getelementptr inbounds [4 x i32], ptr %99, i64 0, i64 2
  %101 = load i32, ptr %100, align 8, !tbaa !9
  store i32 %101, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #2
  %102 = load ptr, ptr %10, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %102, i32 0, i32 10
  %104 = getelementptr inbounds [4 x i32], ptr %103, i64 0, i64 3
  %105 = load i32, ptr %104, align 4, !tbaa !9
  store i32 %105, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #2
  store i32 0, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #2
  %106 = load ptr, ptr %10, align 8, !tbaa !5
  %107 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %106, i32 0, i32 0
  %108 = getelementptr inbounds %struct._CLzmaProperties, ptr %107, i32 0, i32 2
  %109 = load i32, ptr %108, align 8, !tbaa !18
  %110 = shl i32 1, %109
  %111 = sub nsw i32 %110, 1
  store i32 %111, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #2
  %112 = load ptr, ptr %10, align 8, !tbaa !5
  %113 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %112, i32 0, i32 0
  %114 = getelementptr inbounds %struct._CLzmaProperties, ptr %113, i32 0, i32 1
  %115 = load i32, ptr %114, align 4, !tbaa !19
  %116 = shl i32 1, %115
  %117 = sub nsw i32 %116, 1
  store i32 %117, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #2
  %118 = load ptr, ptr %10, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %118, i32 0, i32 0
  %120 = getelementptr inbounds %struct._CLzmaProperties, ptr %119, i32 0, i32 0
  %121 = load i32, ptr %120, align 8, !tbaa !20
  store i32 %121, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #2
  %122 = load ptr, ptr %10, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %122, i32 0, i32 12
  %124 = load i32, ptr %123, align 4, !tbaa !21
  store i32 %124, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #2
  %125 = load ptr, ptr %10, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %125, i32 0, i32 8
  %127 = load i32, ptr %126, align 8, !tbaa !22
  store i32 %127, ptr %34, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #2
  %128 = load ptr, ptr %10, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %128, i32 0, i32 9
  %130 = load i32, ptr %129, align 4, !tbaa !23
  store i32 %130, ptr %35, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #2
  %131 = load ptr, ptr %10, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %131, i32 0, i32 2
  %133 = load ptr, ptr %132, align 8, !tbaa !24
  store ptr %133, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #2
  %134 = load ptr, ptr %10, align 8, !tbaa !5
  %135 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %134, i32 0, i32 0
  %136 = getelementptr inbounds %struct._CLzmaProperties, ptr %135, i32 0, i32 3
  %137 = load i32, ptr %136, align 4, !tbaa !25
  store i32 %137, ptr %37, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #2
  %138 = load ptr, ptr %10, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %138, i32 0, i32 7
  %140 = load i32, ptr %139, align 4, !tbaa !26
  store i32 %140, ptr %38, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #2
  %141 = load ptr, ptr %13, align 8, !tbaa !5
  store i32 0, ptr %141, align 4, !tbaa !9
  %142 = load ptr, ptr %16, align 8, !tbaa !5
  store i32 0, ptr %142, align 4, !tbaa !9
  %143 = load i32, ptr %33, align 4, !tbaa !9
  %144 = icmp eq i32 %143, -1
  br i1 %144, label %145, label %146

145:                                              ; preds = %8
  store i32 0, ptr %9, align 4
  store i32 1, ptr %40, align 4
  br label %1628

146:                                              ; preds = %8
  %147 = load i32, ptr %37, align 4, !tbaa !9
  %148 = icmp eq i32 %147, 0
  br i1 %148, label %149, label %156

149:                                              ; preds = %146
  %150 = getelementptr inbounds [4 x i8], ptr %39, i64 0, i64 0
  store ptr %150, ptr %36, align 8, !tbaa !5
  store i32 1, ptr %37, align 4, !tbaa !9
  %151 = load ptr, ptr %10, align 8, !tbaa !5
  %152 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %151, i32 0, i32 13
  %153 = getelementptr inbounds [4 x i8], ptr %152, i64 0, i64 0
  %154 = load i8, ptr %153, align 8, !tbaa !27
  %155 = getelementptr inbounds [4 x i8], ptr %39, i64 0, i64 0
  store i8 %154, ptr %155, align 1, !tbaa !27
  br label %156

156:                                              ; preds = %149, %146
  %157 = load i32, ptr %33, align 4, !tbaa !9
  %158 = icmp eq i32 %157, -2
  br i1 %158, label %159, label %235

159:                                              ; preds = %156
  br label %160

160:                                              ; preds = %168, %159
  %161 = load i32, ptr %12, align 4, !tbaa !9
  %162 = icmp ugt i32 %161, 0
  br i1 %162, label %163, label %166

163:                                              ; preds = %160
  %164 = load i32, ptr %21, align 4, !tbaa !9
  %165 = icmp slt i32 %164, 64
  br label %166

166:                                              ; preds = %163, %160
  %167 = phi i1 [ false, %160 ], [ %165, %163 ]
  br i1 %167, label %168, label %182

168:                                              ; preds = %166
  %169 = load ptr, ptr %11, align 8, !tbaa !5
  %170 = getelementptr inbounds i8, ptr %169, i32 1
  store ptr %170, ptr %11, align 8, !tbaa !5
  %171 = load i8, ptr %169, align 1, !tbaa !27
  %172 = load ptr, ptr %20, align 8, !tbaa !5
  %173 = load i32, ptr %21, align 4, !tbaa !9
  %174 = add nsw i32 %173, 1
  store i32 %174, ptr %21, align 4, !tbaa !9
  %175 = sext i32 %173 to i64
  %176 = getelementptr inbounds i8, ptr %172, i64 %175
  store i8 %171, ptr %176, align 1, !tbaa !27
  %177 = load ptr, ptr %13, align 8, !tbaa !5
  %178 = load i32, ptr %177, align 4, !tbaa !9
  %179 = add i32 %178, 1
  store i32 %179, ptr %177, align 4, !tbaa !9
  %180 = load i32, ptr %12, align 4, !tbaa !9
  %181 = add i32 %180, -1
  store i32 %181, ptr %12, align 4, !tbaa !9
  br label %160, !llvm.loop !28

182:                                              ; preds = %166
  %183 = load i32, ptr %21, align 4, !tbaa !9
  %184 = icmp slt i32 %183, 5
  br i1 %184, label %185, label %193

185:                                              ; preds = %182
  %186 = load i32, ptr %21, align 4, !tbaa !9
  %187 = load ptr, ptr %10, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %187, i32 0, i32 4
  store i32 %186, ptr %188, align 8, !tbaa !15
  %189 = load i32, ptr %17, align 4, !tbaa !9
  %190 = icmp ne i32 %189, 0
  %191 = zext i1 %190 to i64
  %192 = select i1 %190, i32 1, i32 0
  store i32 %192, ptr %9, align 4
  store i32 1, ptr %40, align 4
  br label %1628

193:                                              ; preds = %182
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #2
  %194 = load i32, ptr %32, align 4, !tbaa !9
  %195 = load ptr, ptr %10, align 8, !tbaa !5
  %196 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %195, i32 0, i32 0
  %197 = getelementptr inbounds %struct._CLzmaProperties, ptr %196, i32 0, i32 1
  %198 = load i32, ptr %197, align 4, !tbaa !19
  %199 = add nsw i32 %194, %198
  %200 = shl i32 768, %199
  %201 = add i32 1846, %200
  store i32 %201, ptr %41, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #2
  store i32 0, ptr %42, align 4, !tbaa !9
  br label %202

202:                                              ; preds = %211, %193
  %203 = load i32, ptr %42, align 4, !tbaa !9
  %204 = load i32, ptr %41, align 4, !tbaa !9
  %205 = icmp ult i32 %203, %204
  br i1 %205, label %206, label %214

206:                                              ; preds = %202
  %207 = load ptr, ptr %22, align 8, !tbaa !5
  %208 = load i32, ptr %42, align 4, !tbaa !9
  %209 = zext i32 %208 to i64
  %210 = getelementptr inbounds i16, ptr %207, i64 %209
  store i16 1024, ptr %210, align 2, !tbaa !30
  br label %211

211:                                              ; preds = %206
  %212 = load i32, ptr %42, align 4, !tbaa !9
  %213 = add i32 %212, 1
  store i32 %213, ptr %42, align 4, !tbaa !9
  br label %202, !llvm.loop !32

214:                                              ; preds = %202
  store i32 1, ptr %28, align 4, !tbaa !9
  store i32 1, ptr %27, align 4, !tbaa !9
  store i32 1, ptr %26, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  store i32 0, ptr %23, align 4, !tbaa !9
  store i32 0, ptr %34, align 4, !tbaa !9
  store i32 0, ptr %35, align 4, !tbaa !9
  store i32 0, ptr %38, align 4, !tbaa !9
  %215 = load ptr, ptr %36, align 8, !tbaa !5
  %216 = load i32, ptr %37, align 4, !tbaa !9
  %217 = sub i32 %216, 1
  %218 = zext i32 %217 to i64
  %219 = getelementptr inbounds i8, ptr %215, i64 %218
  store i8 0, ptr %219, align 1, !tbaa !27
  store i32 0, ptr %19, align 4, !tbaa !9
  store i32 -1, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #2
  store i32 0, ptr %43, align 4, !tbaa !9
  br label %220

220:                                              ; preds = %231, %214
  %221 = load i32, ptr %43, align 4, !tbaa !9
  %222 = icmp slt i32 %221, 5
  br i1 %222, label %223, label %234

223:                                              ; preds = %220
  %224 = load i32, ptr %19, align 4, !tbaa !9
  %225 = shl i32 %224, 8
  %226 = load ptr, ptr %20, align 8, !tbaa !5
  %227 = getelementptr inbounds i8, ptr %226, i32 1
  store ptr %227, ptr %20, align 8, !tbaa !5
  %228 = load i8, ptr %226, align 1, !tbaa !27
  %229 = zext i8 %228 to i32
  %230 = or i32 %225, %229
  store i32 %230, ptr %19, align 4, !tbaa !9
  br label %231

231:                                              ; preds = %223
  %232 = load i32, ptr %43, align 4, !tbaa !9
  %233 = add nsw i32 %232, 1
  store i32 %233, ptr %43, align 4, !tbaa !9
  br label %220, !llvm.loop !33

234:                                              ; preds = %220
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #2
  store i32 0, ptr %33, align 4, !tbaa !9
  br label %235

235:                                              ; preds = %234, %156
  br label %236

236:                                              ; preds = %276, %235
  %237 = load i32, ptr %33, align 4, !tbaa !9
  %238 = icmp ne i32 %237, 0
  br i1 %238, label %239, label %243

239:                                              ; preds = %236
  %240 = load i32, ptr %29, align 4, !tbaa !9
  %241 = load i32, ptr %15, align 4, !tbaa !9
  %242 = icmp ult i32 %240, %241
  br label %243

243:                                              ; preds = %239, %236
  %244 = phi i1 [ false, %236 ], [ %242, %239 ]
  br i1 %244, label %245, label %279

245:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #2
  %246 = load i32, ptr %38, align 4, !tbaa !9
  %247 = load i32, ptr %25, align 4, !tbaa !9
  %248 = sub i32 %246, %247
  store i32 %248, ptr %44, align 4, !tbaa !9
  %249 = load i32, ptr %44, align 4, !tbaa !9
  %250 = load i32, ptr %37, align 4, !tbaa !9
  %251 = icmp uge i32 %249, %250
  br i1 %251, label %252, label %256

252:                                              ; preds = %245
  %253 = load i32, ptr %37, align 4, !tbaa !9
  %254 = load i32, ptr %44, align 4, !tbaa !9
  %255 = add i32 %254, %253
  store i32 %255, ptr %44, align 4, !tbaa !9
  br label %256

256:                                              ; preds = %252, %245
  %257 = load ptr, ptr %36, align 8, !tbaa !5
  %258 = load i32, ptr %44, align 4, !tbaa !9
  %259 = zext i32 %258 to i64
  %260 = getelementptr inbounds i8, ptr %257, i64 %259
  %261 = load i8, ptr %260, align 1, !tbaa !27
  %262 = load ptr, ptr %36, align 8, !tbaa !5
  %263 = load i32, ptr %38, align 4, !tbaa !9
  %264 = zext i32 %263 to i64
  %265 = getelementptr inbounds i8, ptr %262, i64 %264
  store i8 %261, ptr %265, align 1, !tbaa !27
  %266 = load ptr, ptr %14, align 8, !tbaa !5
  %267 = load i32, ptr %29, align 4, !tbaa !9
  %268 = add i32 %267, 1
  store i32 %268, ptr %29, align 4, !tbaa !9
  %269 = zext i32 %267 to i64
  %270 = getelementptr inbounds i8, ptr %266, i64 %269
  store i8 %261, ptr %270, align 1, !tbaa !27
  %271 = load i32, ptr %38, align 4, !tbaa !9
  %272 = add i32 %271, 1
  store i32 %272, ptr %38, align 4, !tbaa !9
  %273 = load i32, ptr %37, align 4, !tbaa !9
  %274 = icmp eq i32 %272, %273
  br i1 %274, label %275, label %276

275:                                              ; preds = %256
  store i32 0, ptr %38, align 4, !tbaa !9
  br label %276

276:                                              ; preds = %275, %256
  %277 = load i32, ptr %33, align 4, !tbaa !9
  %278 = add nsw i32 %277, -1
  store i32 %278, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #2
  br label %236, !llvm.loop !34

279:                                              ; preds = %243
  %280 = load i32, ptr %38, align 4, !tbaa !9
  %281 = icmp eq i32 %280, 0
  br i1 %281, label %282, label %289

282:                                              ; preds = %279
  %283 = load ptr, ptr %36, align 8, !tbaa !5
  %284 = load i32, ptr %37, align 4, !tbaa !9
  %285 = sub i32 %284, 1
  %286 = zext i32 %285 to i64
  %287 = getelementptr inbounds i8, ptr %283, i64 %286
  %288 = load i8, ptr %287, align 1, !tbaa !27
  store i8 %288, ptr %24, align 1, !tbaa !27
  br label %296

289:                                              ; preds = %279
  %290 = load ptr, ptr %36, align 8, !tbaa !5
  %291 = load i32, ptr %38, align 4, !tbaa !9
  %292 = sub i32 %291, 1
  %293 = zext i32 %292 to i64
  %294 = getelementptr inbounds i8, ptr %290, i64 %293
  %295 = load i8, ptr %294, align 1, !tbaa !27
  store i8 %295, ptr %24, align 1, !tbaa !27
  br label %296

296:                                              ; preds = %289, %282
  br label %297

297:                                              ; preds = %1531, %1529, %296
  br label %298

298:                                              ; preds = %297
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #2
  %299 = load ptr, ptr %20, align 8, !tbaa !5
  %300 = load ptr, ptr %10, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %300, i32 0, i32 3
  %302 = getelementptr inbounds [64 x i8], ptr %301, i64 0, i64 0
  %303 = ptrtoint ptr %299 to i64
  %304 = ptrtoint ptr %302 to i64
  %305 = sub i64 %303, %304
  %306 = trunc i64 %305 to i32
  store i32 %306, ptr %45, align 4, !tbaa !9
  %307 = load i32, ptr %21, align 4, !tbaa !9
  %308 = load i32, ptr %45, align 4, !tbaa !9
  %309 = sub nsw i32 %307, %308
  %310 = icmp slt i32 %309, 24
  br i1 %310, label %311, label %374

311:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #2
  %312 = load i32, ptr %45, align 4, !tbaa !9
  %313 = load i32, ptr %21, align 4, !tbaa !9
  %314 = sub nsw i32 %313, %312
  store i32 %314, ptr %21, align 4, !tbaa !9
  %315 = load i32, ptr %21, align 4, !tbaa !9
  %316 = icmp slt i32 %315, 0
  br i1 %316, label %317, label %318

317:                                              ; preds = %311
  store i32 1, ptr %9, align 4
  store i32 1, ptr %40, align 4
  br label %371

318:                                              ; preds = %311
  store i32 0, ptr %46, align 4, !tbaa !9
  br label %319

319:                                              ; preds = %334, %318
  %320 = load i32, ptr %46, align 4, !tbaa !9
  %321 = load i32, ptr %21, align 4, !tbaa !9
  %322 = icmp slt i32 %320, %321
  br i1 %322, label %323, label %337

323:                                              ; preds = %319
  %324 = load ptr, ptr %20, align 8, !tbaa !5
  %325 = load i32, ptr %46, align 4, !tbaa !9
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds i8, ptr %324, i64 %326
  %328 = load i8, ptr %327, align 1, !tbaa !27
  %329 = load ptr, ptr %10, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %329, i32 0, i32 3
  %331 = load i32, ptr %46, align 4, !tbaa !9
  %332 = sext i32 %331 to i64
  %333 = getelementptr inbounds [64 x i8], ptr %330, i64 0, i64 %332
  store i8 %328, ptr %333, align 1, !tbaa !27
  br label %334

334:                                              ; preds = %323
  %335 = load i32, ptr %46, align 4, !tbaa !9
  %336 = add nsw i32 %335, 1
  store i32 %336, ptr %46, align 4, !tbaa !9
  br label %319, !llvm.loop !35

337:                                              ; preds = %319
  %338 = load ptr, ptr %10, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %338, i32 0, i32 3
  %340 = getelementptr inbounds [64 x i8], ptr %339, i64 0, i64 0
  store ptr %340, ptr %20, align 8, !tbaa !5
  br label %341

341:                                              ; preds = %349, %337
  %342 = load i32, ptr %12, align 4, !tbaa !9
  %343 = icmp ugt i32 %342, 0
  br i1 %343, label %344, label %347

344:                                              ; preds = %341
  %345 = load i32, ptr %21, align 4, !tbaa !9
  %346 = icmp slt i32 %345, 64
  br label %347

347:                                              ; preds = %344, %341
  %348 = phi i1 [ false, %341 ], [ %346, %344 ]
  br i1 %348, label %349, label %363

349:                                              ; preds = %347
  %350 = load ptr, ptr %11, align 8, !tbaa !5
  %351 = getelementptr inbounds i8, ptr %350, i32 1
  store ptr %351, ptr %11, align 8, !tbaa !5
  %352 = load i8, ptr %350, align 1, !tbaa !27
  %353 = load ptr, ptr %20, align 8, !tbaa !5
  %354 = load i32, ptr %21, align 4, !tbaa !9
  %355 = add nsw i32 %354, 1
  store i32 %355, ptr %21, align 4, !tbaa !9
  %356 = sext i32 %354 to i64
  %357 = getelementptr inbounds i8, ptr %353, i64 %356
  store i8 %352, ptr %357, align 1, !tbaa !27
  %358 = load ptr, ptr %13, align 8, !tbaa !5
  %359 = load i32, ptr %358, align 4, !tbaa !9
  %360 = add i32 %359, 1
  store i32 %360, ptr %358, align 4, !tbaa !9
  %361 = load i32, ptr %12, align 4, !tbaa !9
  %362 = add i32 %361, -1
  store i32 %362, ptr %12, align 4, !tbaa !9
  br label %341, !llvm.loop !36

363:                                              ; preds = %347
  %364 = load i32, ptr %21, align 4, !tbaa !9
  %365 = icmp slt i32 %364, 24
  br i1 %365, label %366, label %370

366:                                              ; preds = %363
  %367 = load i32, ptr %17, align 4, !tbaa !9
  %368 = icmp ne i32 %367, 0
  br i1 %368, label %370, label %369

369:                                              ; preds = %366
  store i32 13, ptr %40, align 4
  br label %371

370:                                              ; preds = %366, %363
  store i32 0, ptr %40, align 4
  br label %371

371:                                              ; preds = %370, %369, %317
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #2
  %372 = load i32, ptr %40, align 4
  switch i32 %372, label %1529 [
    i32 0, label %373
  ]

373:                                              ; preds = %371
  br label %374

374:                                              ; preds = %373, %298
  %375 = load i32, ptr %29, align 4, !tbaa !9
  %376 = load i32, ptr %15, align 4, !tbaa !9
  %377 = icmp uge i32 %375, %376
  br i1 %377, label %378, label %379

378:                                              ; preds = %374
  store i32 13, ptr %40, align 4
  br label %1529

379:                                              ; preds = %374
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #2
  %380 = load i32, ptr %29, align 4, !tbaa !9
  %381 = load i32, ptr %34, align 4, !tbaa !9
  %382 = add i32 %380, %381
  %383 = load i32, ptr %30, align 4, !tbaa !9
  %384 = and i32 %382, %383
  store i32 %384, ptr %49, align 4, !tbaa !9
  %385 = load ptr, ptr %22, align 8, !tbaa !5
  %386 = getelementptr inbounds i16, ptr %385, i64 0
  %387 = load i32, ptr %23, align 4, !tbaa !9
  %388 = shl i32 %387, 4
  %389 = sext i32 %388 to i64
  %390 = getelementptr inbounds i16, ptr %386, i64 %389
  %391 = load i32, ptr %49, align 4, !tbaa !9
  %392 = sext i32 %391 to i64
  %393 = getelementptr inbounds i16, ptr %390, i64 %392
  store ptr %393, ptr %47, align 8, !tbaa !5
  %394 = load i32, ptr %18, align 4, !tbaa !9
  %395 = icmp ult i32 %394, 16777216
  br i1 %395, label %396, label %406

396:                                              ; preds = %379
  %397 = load i32, ptr %18, align 4, !tbaa !9
  %398 = shl i32 %397, 8
  store i32 %398, ptr %18, align 4, !tbaa !9
  %399 = load i32, ptr %19, align 4, !tbaa !9
  %400 = shl i32 %399, 8
  %401 = load ptr, ptr %20, align 8, !tbaa !5
  %402 = getelementptr inbounds i8, ptr %401, i32 1
  store ptr %402, ptr %20, align 8, !tbaa !5
  %403 = load i8, ptr %401, align 1, !tbaa !27
  %404 = zext i8 %403 to i32
  %405 = or i32 %400, %404
  store i32 %405, ptr %19, align 4, !tbaa !9
  br label %406

406:                                              ; preds = %396, %379
  %407 = load i32, ptr %18, align 4, !tbaa !9
  %408 = lshr i32 %407, 11
  %409 = load ptr, ptr %47, align 8, !tbaa !5
  %410 = load i16, ptr %409, align 2, !tbaa !30
  %411 = zext i16 %410 to i32
  %412 = mul i32 %408, %411
  store i32 %412, ptr %48, align 4, !tbaa !9
  %413 = load i32, ptr %19, align 4, !tbaa !9
  %414 = load i32, ptr %48, align 4, !tbaa !9
  %415 = icmp ult i32 %413, %414
  br i1 %415, label %416, label %658

416:                                              ; preds = %406
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #2
  store i32 1, ptr %50, align 4, !tbaa !9
  %417 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %417, ptr %18, align 4, !tbaa !9
  %418 = load ptr, ptr %47, align 8, !tbaa !5
  %419 = load i16, ptr %418, align 2, !tbaa !30
  %420 = zext i16 %419 to i32
  %421 = sub nsw i32 2048, %420
  %422 = ashr i32 %421, 5
  %423 = load ptr, ptr %47, align 8, !tbaa !5
  %424 = load i16, ptr %423, align 2, !tbaa !30
  %425 = zext i16 %424 to i32
  %426 = add nsw i32 %425, %422
  %427 = trunc i32 %426 to i16
  store i16 %427, ptr %423, align 2, !tbaa !30
  %428 = load ptr, ptr %22, align 8, !tbaa !5
  %429 = getelementptr inbounds i16, ptr %428, i64 1846
  %430 = load i32, ptr %29, align 4, !tbaa !9
  %431 = load i32, ptr %34, align 4, !tbaa !9
  %432 = add i32 %430, %431
  %433 = load i32, ptr %31, align 4, !tbaa !9
  %434 = and i32 %432, %433
  %435 = load i32, ptr %32, align 4, !tbaa !9
  %436 = shl i32 %434, %435
  %437 = load i8, ptr %24, align 1, !tbaa !27
  %438 = zext i8 %437 to i32
  %439 = load i32, ptr %32, align 4, !tbaa !9
  %440 = sub nsw i32 8, %439
  %441 = ashr i32 %438, %440
  %442 = add i32 %436, %441
  %443 = mul i32 768, %442
  %444 = zext i32 %443 to i64
  %445 = getelementptr inbounds i16, ptr %429, i64 %444
  store ptr %445, ptr %47, align 8, !tbaa !5
  %446 = load i32, ptr %23, align 4, !tbaa !9
  %447 = icmp sge i32 %446, 7
  br i1 %447, label %448, label %551

448:                                              ; preds = %416
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #2
  %449 = load i32, ptr %38, align 4, !tbaa !9
  %450 = load i32, ptr %25, align 4, !tbaa !9
  %451 = sub i32 %449, %450
  store i32 %451, ptr %52, align 4, !tbaa !9
  %452 = load i32, ptr %52, align 4, !tbaa !9
  %453 = load i32, ptr %37, align 4, !tbaa !9
  %454 = icmp uge i32 %452, %453
  br i1 %454, label %455, label %459

455:                                              ; preds = %448
  %456 = load i32, ptr %37, align 4, !tbaa !9
  %457 = load i32, ptr %52, align 4, !tbaa !9
  %458 = add i32 %457, %456
  store i32 %458, ptr %52, align 4, !tbaa !9
  br label %459

459:                                              ; preds = %455, %448
  %460 = load ptr, ptr %36, align 8, !tbaa !5
  %461 = load i32, ptr %52, align 4, !tbaa !9
  %462 = zext i32 %461 to i64
  %463 = getelementptr inbounds i8, ptr %460, i64 %462
  %464 = load i8, ptr %463, align 1, !tbaa !27
  %465 = zext i8 %464 to i32
  store i32 %465, ptr %51, align 4, !tbaa !9
  br label %466

466:                                              ; preds = %547, %459
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #2
  %467 = load i32, ptr %51, align 4, !tbaa !9
  %468 = shl i32 %467, 1
  store i32 %468, ptr %51, align 4, !tbaa !9
  %469 = load i32, ptr %51, align 4, !tbaa !9
  %470 = and i32 %469, 256
  store i32 %470, ptr %53, align 4, !tbaa !9
  %471 = load ptr, ptr %47, align 8, !tbaa !5
  %472 = getelementptr inbounds i16, ptr %471, i64 256
  %473 = load i32, ptr %53, align 4, !tbaa !9
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds i16, ptr %472, i64 %474
  %476 = load i32, ptr %50, align 4, !tbaa !9
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds i16, ptr %475, i64 %477
  store ptr %478, ptr %54, align 8, !tbaa !5
  %479 = load i32, ptr %18, align 4, !tbaa !9
  %480 = icmp ult i32 %479, 16777216
  br i1 %480, label %481, label %491

481:                                              ; preds = %466
  %482 = load i32, ptr %18, align 4, !tbaa !9
  %483 = shl i32 %482, 8
  store i32 %483, ptr %18, align 4, !tbaa !9
  %484 = load i32, ptr %19, align 4, !tbaa !9
  %485 = shl i32 %484, 8
  %486 = load ptr, ptr %20, align 8, !tbaa !5
  %487 = getelementptr inbounds i8, ptr %486, i32 1
  store ptr %487, ptr %20, align 8, !tbaa !5
  %488 = load i8, ptr %486, align 1, !tbaa !27
  %489 = zext i8 %488 to i32
  %490 = or i32 %485, %489
  store i32 %490, ptr %19, align 4, !tbaa !9
  br label %491

491:                                              ; preds = %481, %466
  %492 = load i32, ptr %18, align 4, !tbaa !9
  %493 = lshr i32 %492, 11
  %494 = load ptr, ptr %54, align 8, !tbaa !5
  %495 = load i16, ptr %494, align 2, !tbaa !30
  %496 = zext i16 %495 to i32
  %497 = mul i32 %493, %496
  store i32 %497, ptr %48, align 4, !tbaa !9
  %498 = load i32, ptr %19, align 4, !tbaa !9
  %499 = load i32, ptr %48, align 4, !tbaa !9
  %500 = icmp ult i32 %498, %499
  br i1 %500, label %501, label %519

501:                                              ; preds = %491
  %502 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %502, ptr %18, align 4, !tbaa !9
  %503 = load ptr, ptr %54, align 8, !tbaa !5
  %504 = load i16, ptr %503, align 2, !tbaa !30
  %505 = zext i16 %504 to i32
  %506 = sub nsw i32 2048, %505
  %507 = ashr i32 %506, 5
  %508 = load ptr, ptr %54, align 8, !tbaa !5
  %509 = load i16, ptr %508, align 2, !tbaa !30
  %510 = zext i16 %509 to i32
  %511 = add nsw i32 %510, %507
  %512 = trunc i32 %511 to i16
  store i16 %512, ptr %508, align 2, !tbaa !30
  %513 = load i32, ptr %50, align 4, !tbaa !9
  %514 = shl i32 %513, 1
  store i32 %514, ptr %50, align 4, !tbaa !9
  %515 = load i32, ptr %53, align 4, !tbaa !9
  %516 = icmp ne i32 %515, 0
  br i1 %516, label %517, label %518

517:                                              ; preds = %501
  store i32 19, ptr %40, align 4
  br label %544

518:                                              ; preds = %501
  br label %543

519:                                              ; preds = %491
  %520 = load i32, ptr %48, align 4, !tbaa !9
  %521 = load i32, ptr %18, align 4, !tbaa !9
  %522 = sub i32 %521, %520
  store i32 %522, ptr %18, align 4, !tbaa !9
  %523 = load i32, ptr %48, align 4, !tbaa !9
  %524 = load i32, ptr %19, align 4, !tbaa !9
  %525 = sub i32 %524, %523
  store i32 %525, ptr %19, align 4, !tbaa !9
  %526 = load ptr, ptr %54, align 8, !tbaa !5
  %527 = load i16, ptr %526, align 2, !tbaa !30
  %528 = zext i16 %527 to i32
  %529 = ashr i32 %528, 5
  %530 = load ptr, ptr %54, align 8, !tbaa !5
  %531 = load i16, ptr %530, align 2, !tbaa !30
  %532 = zext i16 %531 to i32
  %533 = sub nsw i32 %532, %529
  %534 = trunc i32 %533 to i16
  store i16 %534, ptr %530, align 2, !tbaa !30
  %535 = load i32, ptr %50, align 4, !tbaa !9
  %536 = load i32, ptr %50, align 4, !tbaa !9
  %537 = add nsw i32 %535, %536
  %538 = add nsw i32 %537, 1
  store i32 %538, ptr %50, align 4, !tbaa !9
  %539 = load i32, ptr %53, align 4, !tbaa !9
  %540 = icmp eq i32 %539, 0
  br i1 %540, label %541, label %542

541:                                              ; preds = %519
  store i32 19, ptr %40, align 4
  br label %544

542:                                              ; preds = %519
  br label %543

543:                                              ; preds = %542, %518
  store i32 0, ptr %40, align 4
  br label %544

544:                                              ; preds = %543, %541, %517
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #2
  %545 = load i32, ptr %40, align 4
  switch i32 %545, label %1630 [
    i32 0, label %546
    i32 19, label %550
  ]

546:                                              ; preds = %544
  br label %547

547:                                              ; preds = %546
  %548 = load i32, ptr %50, align 4, !tbaa !9
  %549 = icmp slt i32 %548, 256
  br i1 %549, label %466, label %550, !llvm.loop !37

550:                                              ; preds = %547, %544
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #2
  br label %551

551:                                              ; preds = %550, %416
  br label %552

552:                                              ; preds = %616, %551
  %553 = load i32, ptr %50, align 4, !tbaa !9
  %554 = icmp slt i32 %553, 256
  br i1 %554, label %555, label %617

555:                                              ; preds = %552
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #2
  %556 = load ptr, ptr %47, align 8, !tbaa !5
  %557 = load i32, ptr %50, align 4, !tbaa !9
  %558 = sext i32 %557 to i64
  %559 = getelementptr inbounds i16, ptr %556, i64 %558
  store ptr %559, ptr %55, align 8, !tbaa !5
  %560 = load i32, ptr %18, align 4, !tbaa !9
  %561 = icmp ult i32 %560, 16777216
  br i1 %561, label %562, label %572

562:                                              ; preds = %555
  %563 = load i32, ptr %18, align 4, !tbaa !9
  %564 = shl i32 %563, 8
  store i32 %564, ptr %18, align 4, !tbaa !9
  %565 = load i32, ptr %19, align 4, !tbaa !9
  %566 = shl i32 %565, 8
  %567 = load ptr, ptr %20, align 8, !tbaa !5
  %568 = getelementptr inbounds i8, ptr %567, i32 1
  store ptr %568, ptr %20, align 8, !tbaa !5
  %569 = load i8, ptr %567, align 1, !tbaa !27
  %570 = zext i8 %569 to i32
  %571 = or i32 %566, %570
  store i32 %571, ptr %19, align 4, !tbaa !9
  br label %572

572:                                              ; preds = %562, %555
  %573 = load i32, ptr %18, align 4, !tbaa !9
  %574 = lshr i32 %573, 11
  %575 = load ptr, ptr %55, align 8, !tbaa !5
  %576 = load i16, ptr %575, align 2, !tbaa !30
  %577 = zext i16 %576 to i32
  %578 = mul i32 %574, %577
  store i32 %578, ptr %48, align 4, !tbaa !9
  %579 = load i32, ptr %19, align 4, !tbaa !9
  %580 = load i32, ptr %48, align 4, !tbaa !9
  %581 = icmp ult i32 %579, %580
  br i1 %581, label %582, label %596

582:                                              ; preds = %572
  %583 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %583, ptr %18, align 4, !tbaa !9
  %584 = load ptr, ptr %55, align 8, !tbaa !5
  %585 = load i16, ptr %584, align 2, !tbaa !30
  %586 = zext i16 %585 to i32
  %587 = sub nsw i32 2048, %586
  %588 = ashr i32 %587, 5
  %589 = load ptr, ptr %55, align 8, !tbaa !5
  %590 = load i16, ptr %589, align 2, !tbaa !30
  %591 = zext i16 %590 to i32
  %592 = add nsw i32 %591, %588
  %593 = trunc i32 %592 to i16
  store i16 %593, ptr %589, align 2, !tbaa !30
  %594 = load i32, ptr %50, align 4, !tbaa !9
  %595 = shl i32 %594, 1
  store i32 %595, ptr %50, align 4, !tbaa !9
  br label %616

596:                                              ; preds = %572
  %597 = load i32, ptr %48, align 4, !tbaa !9
  %598 = load i32, ptr %18, align 4, !tbaa !9
  %599 = sub i32 %598, %597
  store i32 %599, ptr %18, align 4, !tbaa !9
  %600 = load i32, ptr %48, align 4, !tbaa !9
  %601 = load i32, ptr %19, align 4, !tbaa !9
  %602 = sub i32 %601, %600
  store i32 %602, ptr %19, align 4, !tbaa !9
  %603 = load ptr, ptr %55, align 8, !tbaa !5
  %604 = load i16, ptr %603, align 2, !tbaa !30
  %605 = zext i16 %604 to i32
  %606 = ashr i32 %605, 5
  %607 = load ptr, ptr %55, align 8, !tbaa !5
  %608 = load i16, ptr %607, align 2, !tbaa !30
  %609 = zext i16 %608 to i32
  %610 = sub nsw i32 %609, %606
  %611 = trunc i32 %610 to i16
  store i16 %611, ptr %607, align 2, !tbaa !30
  %612 = load i32, ptr %50, align 4, !tbaa !9
  %613 = load i32, ptr %50, align 4, !tbaa !9
  %614 = add nsw i32 %612, %613
  %615 = add nsw i32 %614, 1
  store i32 %615, ptr %50, align 4, !tbaa !9
  br label %616

616:                                              ; preds = %596, %582
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #2
  br label %552, !llvm.loop !38

617:                                              ; preds = %552
  %618 = load i32, ptr %50, align 4, !tbaa !9
  %619 = trunc i32 %618 to i8
  store i8 %619, ptr %24, align 1, !tbaa !27
  %620 = load i8, ptr %24, align 1, !tbaa !27
  %621 = load ptr, ptr %14, align 8, !tbaa !5
  %622 = load i32, ptr %29, align 4, !tbaa !9
  %623 = add i32 %622, 1
  store i32 %623, ptr %29, align 4, !tbaa !9
  %624 = zext i32 %622 to i64
  %625 = getelementptr inbounds i8, ptr %621, i64 %624
  store i8 %620, ptr %625, align 1, !tbaa !27
  %626 = load i32, ptr %35, align 4, !tbaa !9
  %627 = load i32, ptr %37, align 4, !tbaa !9
  %628 = icmp ult i32 %626, %627
  br i1 %628, label %629, label %632

629:                                              ; preds = %617
  %630 = load i32, ptr %35, align 4, !tbaa !9
  %631 = add i32 %630, 1
  store i32 %631, ptr %35, align 4, !tbaa !9
  br label %632

632:                                              ; preds = %629, %617
  %633 = load i8, ptr %24, align 1, !tbaa !27
  %634 = load ptr, ptr %36, align 8, !tbaa !5
  %635 = load i32, ptr %38, align 4, !tbaa !9
  %636 = zext i32 %635 to i64
  %637 = getelementptr inbounds i8, ptr %634, i64 %636
  store i8 %633, ptr %637, align 1, !tbaa !27
  %638 = load i32, ptr %38, align 4, !tbaa !9
  %639 = add i32 %638, 1
  store i32 %639, ptr %38, align 4, !tbaa !9
  %640 = load i32, ptr %37, align 4, !tbaa !9
  %641 = icmp eq i32 %639, %640
  br i1 %641, label %642, label %643

642:                                              ; preds = %632
  store i32 0, ptr %38, align 4, !tbaa !9
  br label %643

643:                                              ; preds = %642, %632
  %644 = load i32, ptr %23, align 4, !tbaa !9
  %645 = icmp slt i32 %644, 4
  br i1 %645, label %646, label %647

646:                                              ; preds = %643
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %657

647:                                              ; preds = %643
  %648 = load i32, ptr %23, align 4, !tbaa !9
  %649 = icmp slt i32 %648, 10
  br i1 %649, label %650, label %653

650:                                              ; preds = %647
  %651 = load i32, ptr %23, align 4, !tbaa !9
  %652 = sub nsw i32 %651, 3
  store i32 %652, ptr %23, align 4, !tbaa !9
  br label %656

653:                                              ; preds = %647
  %654 = load i32, ptr %23, align 4, !tbaa !9
  %655 = sub nsw i32 %654, 6
  store i32 %655, ptr %23, align 4, !tbaa !9
  br label %656

656:                                              ; preds = %653, %650
  br label %657

657:                                              ; preds = %656, %646
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #2
  br label %1525

658:                                              ; preds = %406
  %659 = load i32, ptr %48, align 4, !tbaa !9
  %660 = load i32, ptr %18, align 4, !tbaa !9
  %661 = sub i32 %660, %659
  store i32 %661, ptr %18, align 4, !tbaa !9
  %662 = load i32, ptr %48, align 4, !tbaa !9
  %663 = load i32, ptr %19, align 4, !tbaa !9
  %664 = sub i32 %663, %662
  store i32 %664, ptr %19, align 4, !tbaa !9
  %665 = load ptr, ptr %47, align 8, !tbaa !5
  %666 = load i16, ptr %665, align 2, !tbaa !30
  %667 = zext i16 %666 to i32
  %668 = ashr i32 %667, 5
  %669 = load ptr, ptr %47, align 8, !tbaa !5
  %670 = load i16, ptr %669, align 2, !tbaa !30
  %671 = zext i16 %670 to i32
  %672 = sub nsw i32 %671, %668
  %673 = trunc i32 %672 to i16
  store i16 %673, ptr %669, align 2, !tbaa !30
  %674 = load ptr, ptr %22, align 8, !tbaa !5
  %675 = getelementptr inbounds i16, ptr %674, i64 192
  %676 = load i32, ptr %23, align 4, !tbaa !9
  %677 = sext i32 %676 to i64
  %678 = getelementptr inbounds i16, ptr %675, i64 %677
  store ptr %678, ptr %47, align 8, !tbaa !5
  %679 = load i32, ptr %18, align 4, !tbaa !9
  %680 = icmp ult i32 %679, 16777216
  br i1 %680, label %681, label %691

681:                                              ; preds = %658
  %682 = load i32, ptr %18, align 4, !tbaa !9
  %683 = shl i32 %682, 8
  store i32 %683, ptr %18, align 4, !tbaa !9
  %684 = load i32, ptr %19, align 4, !tbaa !9
  %685 = shl i32 %684, 8
  %686 = load ptr, ptr %20, align 8, !tbaa !5
  %687 = getelementptr inbounds i8, ptr %686, i32 1
  store ptr %687, ptr %20, align 8, !tbaa !5
  %688 = load i8, ptr %686, align 1, !tbaa !27
  %689 = zext i8 %688 to i32
  %690 = or i32 %685, %689
  store i32 %690, ptr %19, align 4, !tbaa !9
  br label %691

691:                                              ; preds = %681, %658
  %692 = load i32, ptr %18, align 4, !tbaa !9
  %693 = lshr i32 %692, 11
  %694 = load ptr, ptr %47, align 8, !tbaa !5
  %695 = load i16, ptr %694, align 2, !tbaa !30
  %696 = zext i16 %695 to i32
  %697 = mul i32 %693, %696
  store i32 %697, ptr %48, align 4, !tbaa !9
  %698 = load i32, ptr %19, align 4, !tbaa !9
  %699 = load i32, ptr %48, align 4, !tbaa !9
  %700 = icmp ult i32 %698, %699
  br i1 %700, label %701, label %722

701:                                              ; preds = %691
  %702 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %702, ptr %18, align 4, !tbaa !9
  %703 = load ptr, ptr %47, align 8, !tbaa !5
  %704 = load i16, ptr %703, align 2, !tbaa !30
  %705 = zext i16 %704 to i32
  %706 = sub nsw i32 2048, %705
  %707 = ashr i32 %706, 5
  %708 = load ptr, ptr %47, align 8, !tbaa !5
  %709 = load i16, ptr %708, align 2, !tbaa !30
  %710 = zext i16 %709 to i32
  %711 = add nsw i32 %710, %707
  %712 = trunc i32 %711 to i16
  store i16 %712, ptr %708, align 2, !tbaa !30
  %713 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %713, ptr %28, align 4, !tbaa !9
  %714 = load i32, ptr %26, align 4, !tbaa !9
  store i32 %714, ptr %27, align 4, !tbaa !9
  %715 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %715, ptr %26, align 4, !tbaa !9
  %716 = load i32, ptr %23, align 4, !tbaa !9
  %717 = icmp slt i32 %716, 7
  %718 = zext i1 %717 to i64
  %719 = select i1 %717, i32 0, i32 3
  store i32 %719, ptr %23, align 4, !tbaa !9
  %720 = load ptr, ptr %22, align 8, !tbaa !5
  %721 = getelementptr inbounds i16, ptr %720, i64 818
  store ptr %721, ptr %47, align 8, !tbaa !5
  br label %1028

722:                                              ; preds = %691
  %723 = load i32, ptr %48, align 4, !tbaa !9
  %724 = load i32, ptr %18, align 4, !tbaa !9
  %725 = sub i32 %724, %723
  store i32 %725, ptr %18, align 4, !tbaa !9
  %726 = load i32, ptr %48, align 4, !tbaa !9
  %727 = load i32, ptr %19, align 4, !tbaa !9
  %728 = sub i32 %727, %726
  store i32 %728, ptr %19, align 4, !tbaa !9
  %729 = load ptr, ptr %47, align 8, !tbaa !5
  %730 = load i16, ptr %729, align 2, !tbaa !30
  %731 = zext i16 %730 to i32
  %732 = ashr i32 %731, 5
  %733 = load ptr, ptr %47, align 8, !tbaa !5
  %734 = load i16, ptr %733, align 2, !tbaa !30
  %735 = zext i16 %734 to i32
  %736 = sub nsw i32 %735, %732
  %737 = trunc i32 %736 to i16
  store i16 %737, ptr %733, align 2, !tbaa !30
  %738 = load ptr, ptr %22, align 8, !tbaa !5
  %739 = getelementptr inbounds i16, ptr %738, i64 204
  %740 = load i32, ptr %23, align 4, !tbaa !9
  %741 = sext i32 %740 to i64
  %742 = getelementptr inbounds i16, ptr %739, i64 %741
  store ptr %742, ptr %47, align 8, !tbaa !5
  %743 = load i32, ptr %18, align 4, !tbaa !9
  %744 = icmp ult i32 %743, 16777216
  br i1 %744, label %745, label %755

745:                                              ; preds = %722
  %746 = load i32, ptr %18, align 4, !tbaa !9
  %747 = shl i32 %746, 8
  store i32 %747, ptr %18, align 4, !tbaa !9
  %748 = load i32, ptr %19, align 4, !tbaa !9
  %749 = shl i32 %748, 8
  %750 = load ptr, ptr %20, align 8, !tbaa !5
  %751 = getelementptr inbounds i8, ptr %750, i32 1
  store ptr %751, ptr %20, align 8, !tbaa !5
  %752 = load i8, ptr %750, align 1, !tbaa !27
  %753 = zext i8 %752 to i32
  %754 = or i32 %749, %753
  store i32 %754, ptr %19, align 4, !tbaa !9
  br label %755

755:                                              ; preds = %745, %722
  %756 = load i32, ptr %18, align 4, !tbaa !9
  %757 = lshr i32 %756, 11
  %758 = load ptr, ptr %47, align 8, !tbaa !5
  %759 = load i16, ptr %758, align 2, !tbaa !30
  %760 = zext i16 %759 to i32
  %761 = mul i32 %757, %760
  store i32 %761, ptr %48, align 4, !tbaa !9
  %762 = load i32, ptr %19, align 4, !tbaa !9
  %763 = load i32, ptr %48, align 4, !tbaa !9
  %764 = icmp ult i32 %762, %763
  br i1 %764, label %765, label %886

765:                                              ; preds = %755
  %766 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %766, ptr %18, align 4, !tbaa !9
  %767 = load ptr, ptr %47, align 8, !tbaa !5
  %768 = load i16, ptr %767, align 2, !tbaa !30
  %769 = zext i16 %768 to i32
  %770 = sub nsw i32 2048, %769
  %771 = ashr i32 %770, 5
  %772 = load ptr, ptr %47, align 8, !tbaa !5
  %773 = load i16, ptr %772, align 2, !tbaa !30
  %774 = zext i16 %773 to i32
  %775 = add nsw i32 %774, %771
  %776 = trunc i32 %775 to i16
  store i16 %776, ptr %772, align 2, !tbaa !30
  %777 = load ptr, ptr %22, align 8, !tbaa !5
  %778 = getelementptr inbounds i16, ptr %777, i64 240
  %779 = load i32, ptr %23, align 4, !tbaa !9
  %780 = shl i32 %779, 4
  %781 = sext i32 %780 to i64
  %782 = getelementptr inbounds i16, ptr %778, i64 %781
  %783 = load i32, ptr %49, align 4, !tbaa !9
  %784 = sext i32 %783 to i64
  %785 = getelementptr inbounds i16, ptr %782, i64 %784
  store ptr %785, ptr %47, align 8, !tbaa !5
  %786 = load i32, ptr %18, align 4, !tbaa !9
  %787 = icmp ult i32 %786, 16777216
  br i1 %787, label %788, label %798

788:                                              ; preds = %765
  %789 = load i32, ptr %18, align 4, !tbaa !9
  %790 = shl i32 %789, 8
  store i32 %790, ptr %18, align 4, !tbaa !9
  %791 = load i32, ptr %19, align 4, !tbaa !9
  %792 = shl i32 %791, 8
  %793 = load ptr, ptr %20, align 8, !tbaa !5
  %794 = getelementptr inbounds i8, ptr %793, i32 1
  store ptr %794, ptr %20, align 8, !tbaa !5
  %795 = load i8, ptr %793, align 1, !tbaa !27
  %796 = zext i8 %795 to i32
  %797 = or i32 %792, %796
  store i32 %797, ptr %19, align 4, !tbaa !9
  br label %798

798:                                              ; preds = %788, %765
  %799 = load i32, ptr %18, align 4, !tbaa !9
  %800 = lshr i32 %799, 11
  %801 = load ptr, ptr %47, align 8, !tbaa !5
  %802 = load i16, ptr %801, align 2, !tbaa !30
  %803 = zext i16 %802 to i32
  %804 = mul i32 %800, %803
  store i32 %804, ptr %48, align 4, !tbaa !9
  %805 = load i32, ptr %19, align 4, !tbaa !9
  %806 = load i32, ptr %48, align 4, !tbaa !9
  %807 = icmp ult i32 %805, %806
  br i1 %807, label %808, label %869

808:                                              ; preds = %798
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #2
  %809 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %809, ptr %18, align 4, !tbaa !9
  %810 = load ptr, ptr %47, align 8, !tbaa !5
  %811 = load i16, ptr %810, align 2, !tbaa !30
  %812 = zext i16 %811 to i32
  %813 = sub nsw i32 2048, %812
  %814 = ashr i32 %813, 5
  %815 = load ptr, ptr %47, align 8, !tbaa !5
  %816 = load i16, ptr %815, align 2, !tbaa !30
  %817 = zext i16 %816 to i32
  %818 = add nsw i32 %817, %814
  %819 = trunc i32 %818 to i16
  store i16 %819, ptr %815, align 2, !tbaa !30
  %820 = load i32, ptr %35, align 4, !tbaa !9
  %821 = icmp eq i32 %820, 0
  br i1 %821, label %822, label %823

822:                                              ; preds = %808
  store i32 1, ptr %9, align 4
  store i32 1, ptr %40, align 4
  br label %868

823:                                              ; preds = %808
  %824 = load i32, ptr %35, align 4, !tbaa !9
  %825 = load i32, ptr %37, align 4, !tbaa !9
  %826 = icmp ult i32 %824, %825
  br i1 %826, label %827, label %830

827:                                              ; preds = %823
  %828 = load i32, ptr %35, align 4, !tbaa !9
  %829 = add i32 %828, 1
  store i32 %829, ptr %35, align 4, !tbaa !9
  br label %830

830:                                              ; preds = %827, %823
  %831 = load i32, ptr %23, align 4, !tbaa !9
  %832 = icmp slt i32 %831, 7
  %833 = zext i1 %832 to i64
  %834 = select i1 %832, i32 9, i32 11
  store i32 %834, ptr %23, align 4, !tbaa !9
  %835 = load i32, ptr %38, align 4, !tbaa !9
  %836 = load i32, ptr %25, align 4, !tbaa !9
  %837 = sub i32 %835, %836
  store i32 %837, ptr %56, align 4, !tbaa !9
  %838 = load i32, ptr %56, align 4, !tbaa !9
  %839 = load i32, ptr %37, align 4, !tbaa !9
  %840 = icmp uge i32 %838, %839
  br i1 %840, label %841, label %845

841:                                              ; preds = %830
  %842 = load i32, ptr %37, align 4, !tbaa !9
  %843 = load i32, ptr %56, align 4, !tbaa !9
  %844 = add i32 %843, %842
  store i32 %844, ptr %56, align 4, !tbaa !9
  br label %845

845:                                              ; preds = %841, %830
  %846 = load ptr, ptr %36, align 8, !tbaa !5
  %847 = load i32, ptr %56, align 4, !tbaa !9
  %848 = zext i32 %847 to i64
  %849 = getelementptr inbounds i8, ptr %846, i64 %848
  %850 = load i8, ptr %849, align 1, !tbaa !27
  store i8 %850, ptr %24, align 1, !tbaa !27
  %851 = load i8, ptr %24, align 1, !tbaa !27
  %852 = load ptr, ptr %36, align 8, !tbaa !5
  %853 = load i32, ptr %38, align 4, !tbaa !9
  %854 = zext i32 %853 to i64
  %855 = getelementptr inbounds i8, ptr %852, i64 %854
  store i8 %851, ptr %855, align 1, !tbaa !27
  %856 = load i32, ptr %38, align 4, !tbaa !9
  %857 = add i32 %856, 1
  store i32 %857, ptr %38, align 4, !tbaa !9
  %858 = load i32, ptr %37, align 4, !tbaa !9
  %859 = icmp eq i32 %857, %858
  br i1 %859, label %860, label %861

860:                                              ; preds = %845
  store i32 0, ptr %38, align 4, !tbaa !9
  br label %861

861:                                              ; preds = %860, %845
  %862 = load i8, ptr %24, align 1, !tbaa !27
  %863 = load ptr, ptr %14, align 8, !tbaa !5
  %864 = load i32, ptr %29, align 4, !tbaa !9
  %865 = add i32 %864, 1
  store i32 %865, ptr %29, align 4, !tbaa !9
  %866 = zext i32 %864 to i64
  %867 = getelementptr inbounds i8, ptr %863, i64 %866
  store i8 %862, ptr %867, align 1, !tbaa !27
  store i32 12, ptr %40, align 4
  br label %868

868:                                              ; preds = %861, %822
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #2
  br label %1526

869:                                              ; preds = %798
  %870 = load i32, ptr %48, align 4, !tbaa !9
  %871 = load i32, ptr %18, align 4, !tbaa !9
  %872 = sub i32 %871, %870
  store i32 %872, ptr %18, align 4, !tbaa !9
  %873 = load i32, ptr %48, align 4, !tbaa !9
  %874 = load i32, ptr %19, align 4, !tbaa !9
  %875 = sub i32 %874, %873
  store i32 %875, ptr %19, align 4, !tbaa !9
  %876 = load ptr, ptr %47, align 8, !tbaa !5
  %877 = load i16, ptr %876, align 2, !tbaa !30
  %878 = zext i16 %877 to i32
  %879 = ashr i32 %878, 5
  %880 = load ptr, ptr %47, align 8, !tbaa !5
  %881 = load i16, ptr %880, align 2, !tbaa !30
  %882 = zext i16 %881 to i32
  %883 = sub nsw i32 %882, %879
  %884 = trunc i32 %883 to i16
  store i16 %884, ptr %880, align 2, !tbaa !30
  br label %885

885:                                              ; preds = %869
  br label %1021

886:                                              ; preds = %755
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #2
  %887 = load i32, ptr %48, align 4, !tbaa !9
  %888 = load i32, ptr %18, align 4, !tbaa !9
  %889 = sub i32 %888, %887
  store i32 %889, ptr %18, align 4, !tbaa !9
  %890 = load i32, ptr %48, align 4, !tbaa !9
  %891 = load i32, ptr %19, align 4, !tbaa !9
  %892 = sub i32 %891, %890
  store i32 %892, ptr %19, align 4, !tbaa !9
  %893 = load ptr, ptr %47, align 8, !tbaa !5
  %894 = load i16, ptr %893, align 2, !tbaa !30
  %895 = zext i16 %894 to i32
  %896 = ashr i32 %895, 5
  %897 = load ptr, ptr %47, align 8, !tbaa !5
  %898 = load i16, ptr %897, align 2, !tbaa !30
  %899 = zext i16 %898 to i32
  %900 = sub nsw i32 %899, %896
  %901 = trunc i32 %900 to i16
  store i16 %901, ptr %897, align 2, !tbaa !30
  %902 = load ptr, ptr %22, align 8, !tbaa !5
  %903 = getelementptr inbounds i16, ptr %902, i64 216
  %904 = load i32, ptr %23, align 4, !tbaa !9
  %905 = sext i32 %904 to i64
  %906 = getelementptr inbounds i16, ptr %903, i64 %905
  store ptr %906, ptr %47, align 8, !tbaa !5
  %907 = load i32, ptr %18, align 4, !tbaa !9
  %908 = icmp ult i32 %907, 16777216
  br i1 %908, label %909, label %919

909:                                              ; preds = %886
  %910 = load i32, ptr %18, align 4, !tbaa !9
  %911 = shl i32 %910, 8
  store i32 %911, ptr %18, align 4, !tbaa !9
  %912 = load i32, ptr %19, align 4, !tbaa !9
  %913 = shl i32 %912, 8
  %914 = load ptr, ptr %20, align 8, !tbaa !5
  %915 = getelementptr inbounds i8, ptr %914, i32 1
  store ptr %915, ptr %20, align 8, !tbaa !5
  %916 = load i8, ptr %914, align 1, !tbaa !27
  %917 = zext i8 %916 to i32
  %918 = or i32 %913, %917
  store i32 %918, ptr %19, align 4, !tbaa !9
  br label %919

919:                                              ; preds = %909, %886
  %920 = load i32, ptr %18, align 4, !tbaa !9
  %921 = lshr i32 %920, 11
  %922 = load ptr, ptr %47, align 8, !tbaa !5
  %923 = load i16, ptr %922, align 2, !tbaa !30
  %924 = zext i16 %923 to i32
  %925 = mul i32 %921, %924
  store i32 %925, ptr %48, align 4, !tbaa !9
  %926 = load i32, ptr %19, align 4, !tbaa !9
  %927 = load i32, ptr %48, align 4, !tbaa !9
  %928 = icmp ult i32 %926, %927
  br i1 %928, label %929, label %942

929:                                              ; preds = %919
  %930 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %930, ptr %18, align 4, !tbaa !9
  %931 = load ptr, ptr %47, align 8, !tbaa !5
  %932 = load i16, ptr %931, align 2, !tbaa !30
  %933 = zext i16 %932 to i32
  %934 = sub nsw i32 2048, %933
  %935 = ashr i32 %934, 5
  %936 = load ptr, ptr %47, align 8, !tbaa !5
  %937 = load i16, ptr %936, align 2, !tbaa !30
  %938 = zext i16 %937 to i32
  %939 = add nsw i32 %938, %935
  %940 = trunc i32 %939 to i16
  store i16 %940, ptr %936, align 2, !tbaa !30
  %941 = load i32, ptr %26, align 4, !tbaa !9
  store i32 %941, ptr %57, align 4, !tbaa !9
  br label %1018

942:                                              ; preds = %919
  %943 = load i32, ptr %48, align 4, !tbaa !9
  %944 = load i32, ptr %18, align 4, !tbaa !9
  %945 = sub i32 %944, %943
  store i32 %945, ptr %18, align 4, !tbaa !9
  %946 = load i32, ptr %48, align 4, !tbaa !9
  %947 = load i32, ptr %19, align 4, !tbaa !9
  %948 = sub i32 %947, %946
  store i32 %948, ptr %19, align 4, !tbaa !9
  %949 = load ptr, ptr %47, align 8, !tbaa !5
  %950 = load i16, ptr %949, align 2, !tbaa !30
  %951 = zext i16 %950 to i32
  %952 = ashr i32 %951, 5
  %953 = load ptr, ptr %47, align 8, !tbaa !5
  %954 = load i16, ptr %953, align 2, !tbaa !30
  %955 = zext i16 %954 to i32
  %956 = sub nsw i32 %955, %952
  %957 = trunc i32 %956 to i16
  store i16 %957, ptr %953, align 2, !tbaa !30
  %958 = load ptr, ptr %22, align 8, !tbaa !5
  %959 = getelementptr inbounds i16, ptr %958, i64 228
  %960 = load i32, ptr %23, align 4, !tbaa !9
  %961 = sext i32 %960 to i64
  %962 = getelementptr inbounds i16, ptr %959, i64 %961
  store ptr %962, ptr %47, align 8, !tbaa !5
  %963 = load i32, ptr %18, align 4, !tbaa !9
  %964 = icmp ult i32 %963, 16777216
  br i1 %964, label %965, label %975

965:                                              ; preds = %942
  %966 = load i32, ptr %18, align 4, !tbaa !9
  %967 = shl i32 %966, 8
  store i32 %967, ptr %18, align 4, !tbaa !9
  %968 = load i32, ptr %19, align 4, !tbaa !9
  %969 = shl i32 %968, 8
  %970 = load ptr, ptr %20, align 8, !tbaa !5
  %971 = getelementptr inbounds i8, ptr %970, i32 1
  store ptr %971, ptr %20, align 8, !tbaa !5
  %972 = load i8, ptr %970, align 1, !tbaa !27
  %973 = zext i8 %972 to i32
  %974 = or i32 %969, %973
  store i32 %974, ptr %19, align 4, !tbaa !9
  br label %975

975:                                              ; preds = %965, %942
  %976 = load i32, ptr %18, align 4, !tbaa !9
  %977 = lshr i32 %976, 11
  %978 = load ptr, ptr %47, align 8, !tbaa !5
  %979 = load i16, ptr %978, align 2, !tbaa !30
  %980 = zext i16 %979 to i32
  %981 = mul i32 %977, %980
  store i32 %981, ptr %48, align 4, !tbaa !9
  %982 = load i32, ptr %19, align 4, !tbaa !9
  %983 = load i32, ptr %48, align 4, !tbaa !9
  %984 = icmp ult i32 %982, %983
  br i1 %984, label %985, label %998

985:                                              ; preds = %975
  %986 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %986, ptr %18, align 4, !tbaa !9
  %987 = load ptr, ptr %47, align 8, !tbaa !5
  %988 = load i16, ptr %987, align 2, !tbaa !30
  %989 = zext i16 %988 to i32
  %990 = sub nsw i32 2048, %989
  %991 = ashr i32 %990, 5
  %992 = load ptr, ptr %47, align 8, !tbaa !5
  %993 = load i16, ptr %992, align 2, !tbaa !30
  %994 = zext i16 %993 to i32
  %995 = add nsw i32 %994, %991
  %996 = trunc i32 %995 to i16
  store i16 %996, ptr %992, align 2, !tbaa !30
  %997 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %997, ptr %57, align 4, !tbaa !9
  br label %1016

998:                                              ; preds = %975
  %999 = load i32, ptr %48, align 4, !tbaa !9
  %1000 = load i32, ptr %18, align 4, !tbaa !9
  %1001 = sub i32 %1000, %999
  store i32 %1001, ptr %18, align 4, !tbaa !9
  %1002 = load i32, ptr %48, align 4, !tbaa !9
  %1003 = load i32, ptr %19, align 4, !tbaa !9
  %1004 = sub i32 %1003, %1002
  store i32 %1004, ptr %19, align 4, !tbaa !9
  %1005 = load ptr, ptr %47, align 8, !tbaa !5
  %1006 = load i16, ptr %1005, align 2, !tbaa !30
  %1007 = zext i16 %1006 to i32
  %1008 = ashr i32 %1007, 5
  %1009 = load ptr, ptr %47, align 8, !tbaa !5
  %1010 = load i16, ptr %1009, align 2, !tbaa !30
  %1011 = zext i16 %1010 to i32
  %1012 = sub nsw i32 %1011, %1008
  %1013 = trunc i32 %1012 to i16
  store i16 %1013, ptr %1009, align 2, !tbaa !30
  %1014 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %1014, ptr %57, align 4, !tbaa !9
  %1015 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %1015, ptr %28, align 4, !tbaa !9
  br label %1016

1016:                                             ; preds = %998, %985
  %1017 = load i32, ptr %26, align 4, !tbaa !9
  store i32 %1017, ptr %27, align 4, !tbaa !9
  br label %1018

1018:                                             ; preds = %1016, %929
  %1019 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %1019, ptr %26, align 4, !tbaa !9
  %1020 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %1020, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #2
  br label %1021

1021:                                             ; preds = %1018, %885
  %1022 = load i32, ptr %23, align 4, !tbaa !9
  %1023 = icmp slt i32 %1022, 7
  %1024 = zext i1 %1023 to i64
  %1025 = select i1 %1023, i32 8, i32 11
  store i32 %1025, ptr %23, align 4, !tbaa !9
  %1026 = load ptr, ptr %22, align 8, !tbaa !5
  %1027 = getelementptr inbounds i16, ptr %1026, i64 1332
  store ptr %1027, ptr %47, align 8, !tbaa !5
  br label %1028

1028:                                             ; preds = %1021, %701
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #2
  %1029 = load ptr, ptr %47, align 8, !tbaa !5
  %1030 = getelementptr inbounds i16, ptr %1029, i64 0
  store ptr %1030, ptr %60, align 8, !tbaa !5
  %1031 = load i32, ptr %18, align 4, !tbaa !9
  %1032 = icmp ult i32 %1031, 16777216
  br i1 %1032, label %1033, label %1043

1033:                                             ; preds = %1028
  %1034 = load i32, ptr %18, align 4, !tbaa !9
  %1035 = shl i32 %1034, 8
  store i32 %1035, ptr %18, align 4, !tbaa !9
  %1036 = load i32, ptr %19, align 4, !tbaa !9
  %1037 = shl i32 %1036, 8
  %1038 = load ptr, ptr %20, align 8, !tbaa !5
  %1039 = getelementptr inbounds i8, ptr %1038, i32 1
  store ptr %1039, ptr %20, align 8, !tbaa !5
  %1040 = load i8, ptr %1038, align 1, !tbaa !27
  %1041 = zext i8 %1040 to i32
  %1042 = or i32 %1037, %1041
  store i32 %1042, ptr %19, align 4, !tbaa !9
  br label %1043

1043:                                             ; preds = %1033, %1028
  %1044 = load i32, ptr %18, align 4, !tbaa !9
  %1045 = lshr i32 %1044, 11
  %1046 = load ptr, ptr %60, align 8, !tbaa !5
  %1047 = load i16, ptr %1046, align 2, !tbaa !30
  %1048 = zext i16 %1047 to i32
  %1049 = mul i32 %1045, %1048
  store i32 %1049, ptr %48, align 4, !tbaa !9
  %1050 = load i32, ptr %19, align 4, !tbaa !9
  %1051 = load i32, ptr %48, align 4, !tbaa !9
  %1052 = icmp ult i32 %1050, %1051
  br i1 %1052, label %1053, label %1071

1053:                                             ; preds = %1043
  %1054 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %1054, ptr %18, align 4, !tbaa !9
  %1055 = load ptr, ptr %60, align 8, !tbaa !5
  %1056 = load i16, ptr %1055, align 2, !tbaa !30
  %1057 = zext i16 %1056 to i32
  %1058 = sub nsw i32 2048, %1057
  %1059 = ashr i32 %1058, 5
  %1060 = load ptr, ptr %60, align 8, !tbaa !5
  %1061 = load i16, ptr %1060, align 2, !tbaa !30
  %1062 = zext i16 %1061 to i32
  %1063 = add nsw i32 %1062, %1059
  %1064 = trunc i32 %1063 to i16
  store i16 %1064, ptr %1060, align 2, !tbaa !30
  %1065 = load ptr, ptr %47, align 8, !tbaa !5
  %1066 = getelementptr inbounds i16, ptr %1065, i64 2
  %1067 = load i32, ptr %49, align 4, !tbaa !9
  %1068 = shl i32 %1067, 3
  %1069 = sext i32 %1068 to i64
  %1070 = getelementptr inbounds i16, ptr %1066, i64 %1069
  store ptr %1070, ptr %60, align 8, !tbaa !5
  store i32 0, ptr %59, align 4, !tbaa !9
  store i32 3, ptr %58, align 4, !tbaa !9
  br label %1148

1071:                                             ; preds = %1043
  %1072 = load i32, ptr %48, align 4, !tbaa !9
  %1073 = load i32, ptr %18, align 4, !tbaa !9
  %1074 = sub i32 %1073, %1072
  store i32 %1074, ptr %18, align 4, !tbaa !9
  %1075 = load i32, ptr %48, align 4, !tbaa !9
  %1076 = load i32, ptr %19, align 4, !tbaa !9
  %1077 = sub i32 %1076, %1075
  store i32 %1077, ptr %19, align 4, !tbaa !9
  %1078 = load ptr, ptr %60, align 8, !tbaa !5
  %1079 = load i16, ptr %1078, align 2, !tbaa !30
  %1080 = zext i16 %1079 to i32
  %1081 = ashr i32 %1080, 5
  %1082 = load ptr, ptr %60, align 8, !tbaa !5
  %1083 = load i16, ptr %1082, align 2, !tbaa !30
  %1084 = zext i16 %1083 to i32
  %1085 = sub nsw i32 %1084, %1081
  %1086 = trunc i32 %1085 to i16
  store i16 %1086, ptr %1082, align 2, !tbaa !30
  %1087 = load ptr, ptr %47, align 8, !tbaa !5
  %1088 = getelementptr inbounds i16, ptr %1087, i64 1
  store ptr %1088, ptr %60, align 8, !tbaa !5
  %1089 = load i32, ptr %18, align 4, !tbaa !9
  %1090 = icmp ult i32 %1089, 16777216
  br i1 %1090, label %1091, label %1101

1091:                                             ; preds = %1071
  %1092 = load i32, ptr %18, align 4, !tbaa !9
  %1093 = shl i32 %1092, 8
  store i32 %1093, ptr %18, align 4, !tbaa !9
  %1094 = load i32, ptr %19, align 4, !tbaa !9
  %1095 = shl i32 %1094, 8
  %1096 = load ptr, ptr %20, align 8, !tbaa !5
  %1097 = getelementptr inbounds i8, ptr %1096, i32 1
  store ptr %1097, ptr %20, align 8, !tbaa !5
  %1098 = load i8, ptr %1096, align 1, !tbaa !27
  %1099 = zext i8 %1098 to i32
  %1100 = or i32 %1095, %1099
  store i32 %1100, ptr %19, align 4, !tbaa !9
  br label %1101

1101:                                             ; preds = %1091, %1071
  %1102 = load i32, ptr %18, align 4, !tbaa !9
  %1103 = lshr i32 %1102, 11
  %1104 = load ptr, ptr %60, align 8, !tbaa !5
  %1105 = load i16, ptr %1104, align 2, !tbaa !30
  %1106 = zext i16 %1105 to i32
  %1107 = mul i32 %1103, %1106
  store i32 %1107, ptr %48, align 4, !tbaa !9
  %1108 = load i32, ptr %19, align 4, !tbaa !9
  %1109 = load i32, ptr %48, align 4, !tbaa !9
  %1110 = icmp ult i32 %1108, %1109
  br i1 %1110, label %1111, label %1129

1111:                                             ; preds = %1101
  %1112 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %1112, ptr %18, align 4, !tbaa !9
  %1113 = load ptr, ptr %60, align 8, !tbaa !5
  %1114 = load i16, ptr %1113, align 2, !tbaa !30
  %1115 = zext i16 %1114 to i32
  %1116 = sub nsw i32 2048, %1115
  %1117 = ashr i32 %1116, 5
  %1118 = load ptr, ptr %60, align 8, !tbaa !5
  %1119 = load i16, ptr %1118, align 2, !tbaa !30
  %1120 = zext i16 %1119 to i32
  %1121 = add nsw i32 %1120, %1117
  %1122 = trunc i32 %1121 to i16
  store i16 %1122, ptr %1118, align 2, !tbaa !30
  %1123 = load ptr, ptr %47, align 8, !tbaa !5
  %1124 = getelementptr inbounds i16, ptr %1123, i64 130
  %1125 = load i32, ptr %49, align 4, !tbaa !9
  %1126 = shl i32 %1125, 3
  %1127 = sext i32 %1126 to i64
  %1128 = getelementptr inbounds i16, ptr %1124, i64 %1127
  store ptr %1128, ptr %60, align 8, !tbaa !5
  store i32 8, ptr %59, align 4, !tbaa !9
  store i32 3, ptr %58, align 4, !tbaa !9
  br label %1147

1129:                                             ; preds = %1101
  %1130 = load i32, ptr %48, align 4, !tbaa !9
  %1131 = load i32, ptr %18, align 4, !tbaa !9
  %1132 = sub i32 %1131, %1130
  store i32 %1132, ptr %18, align 4, !tbaa !9
  %1133 = load i32, ptr %48, align 4, !tbaa !9
  %1134 = load i32, ptr %19, align 4, !tbaa !9
  %1135 = sub i32 %1134, %1133
  store i32 %1135, ptr %19, align 4, !tbaa !9
  %1136 = load ptr, ptr %60, align 8, !tbaa !5
  %1137 = load i16, ptr %1136, align 2, !tbaa !30
  %1138 = zext i16 %1137 to i32
  %1139 = ashr i32 %1138, 5
  %1140 = load ptr, ptr %60, align 8, !tbaa !5
  %1141 = load i16, ptr %1140, align 2, !tbaa !30
  %1142 = zext i16 %1141 to i32
  %1143 = sub nsw i32 %1142, %1139
  %1144 = trunc i32 %1143 to i16
  store i16 %1144, ptr %1140, align 2, !tbaa !30
  %1145 = load ptr, ptr %47, align 8, !tbaa !5
  %1146 = getelementptr inbounds i16, ptr %1145, i64 258
  store ptr %1146, ptr %60, align 8, !tbaa !5
  store i32 16, ptr %59, align 4, !tbaa !9
  store i32 8, ptr %58, align 4, !tbaa !9
  br label %1147

1147:                                             ; preds = %1129, %1111
  br label %1148

1148:                                             ; preds = %1147, %1053
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #2
  %1149 = load i32, ptr %58, align 4, !tbaa !9
  store i32 %1149, ptr %61, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %1150

1150:                                             ; preds = %1212, %1148
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #2
  %1151 = load ptr, ptr %60, align 8, !tbaa !5
  %1152 = load i32, ptr %33, align 4, !tbaa !9
  %1153 = sext i32 %1152 to i64
  %1154 = getelementptr inbounds i16, ptr %1151, i64 %1153
  store ptr %1154, ptr %62, align 8, !tbaa !5
  %1155 = load i32, ptr %18, align 4, !tbaa !9
  %1156 = icmp ult i32 %1155, 16777216
  br i1 %1156, label %1157, label %1167

1157:                                             ; preds = %1150
  %1158 = load i32, ptr %18, align 4, !tbaa !9
  %1159 = shl i32 %1158, 8
  store i32 %1159, ptr %18, align 4, !tbaa !9
  %1160 = load i32, ptr %19, align 4, !tbaa !9
  %1161 = shl i32 %1160, 8
  %1162 = load ptr, ptr %20, align 8, !tbaa !5
  %1163 = getelementptr inbounds i8, ptr %1162, i32 1
  store ptr %1163, ptr %20, align 8, !tbaa !5
  %1164 = load i8, ptr %1162, align 1, !tbaa !27
  %1165 = zext i8 %1164 to i32
  %1166 = or i32 %1161, %1165
  store i32 %1166, ptr %19, align 4, !tbaa !9
  br label %1167

1167:                                             ; preds = %1157, %1150
  %1168 = load i32, ptr %18, align 4, !tbaa !9
  %1169 = lshr i32 %1168, 11
  %1170 = load ptr, ptr %62, align 8, !tbaa !5
  %1171 = load i16, ptr %1170, align 2, !tbaa !30
  %1172 = zext i16 %1171 to i32
  %1173 = mul i32 %1169, %1172
  store i32 %1173, ptr %48, align 4, !tbaa !9
  %1174 = load i32, ptr %19, align 4, !tbaa !9
  %1175 = load i32, ptr %48, align 4, !tbaa !9
  %1176 = icmp ult i32 %1174, %1175
  br i1 %1176, label %1177, label %1191

1177:                                             ; preds = %1167
  %1178 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %1178, ptr %18, align 4, !tbaa !9
  %1179 = load ptr, ptr %62, align 8, !tbaa !5
  %1180 = load i16, ptr %1179, align 2, !tbaa !30
  %1181 = zext i16 %1180 to i32
  %1182 = sub nsw i32 2048, %1181
  %1183 = ashr i32 %1182, 5
  %1184 = load ptr, ptr %62, align 8, !tbaa !5
  %1185 = load i16, ptr %1184, align 2, !tbaa !30
  %1186 = zext i16 %1185 to i32
  %1187 = add nsw i32 %1186, %1183
  %1188 = trunc i32 %1187 to i16
  store i16 %1188, ptr %1184, align 2, !tbaa !30
  %1189 = load i32, ptr %33, align 4, !tbaa !9
  %1190 = shl i32 %1189, 1
  store i32 %1190, ptr %33, align 4, !tbaa !9
  br label %1211

1191:                                             ; preds = %1167
  %1192 = load i32, ptr %48, align 4, !tbaa !9
  %1193 = load i32, ptr %18, align 4, !tbaa !9
  %1194 = sub i32 %1193, %1192
  store i32 %1194, ptr %18, align 4, !tbaa !9
  %1195 = load i32, ptr %48, align 4, !tbaa !9
  %1196 = load i32, ptr %19, align 4, !tbaa !9
  %1197 = sub i32 %1196, %1195
  store i32 %1197, ptr %19, align 4, !tbaa !9
  %1198 = load ptr, ptr %62, align 8, !tbaa !5
  %1199 = load i16, ptr %1198, align 2, !tbaa !30
  %1200 = zext i16 %1199 to i32
  %1201 = ashr i32 %1200, 5
  %1202 = load ptr, ptr %62, align 8, !tbaa !5
  %1203 = load i16, ptr %1202, align 2, !tbaa !30
  %1204 = zext i16 %1203 to i32
  %1205 = sub nsw i32 %1204, %1201
  %1206 = trunc i32 %1205 to i16
  store i16 %1206, ptr %1202, align 2, !tbaa !30
  %1207 = load i32, ptr %33, align 4, !tbaa !9
  %1208 = load i32, ptr %33, align 4, !tbaa !9
  %1209 = add nsw i32 %1207, %1208
  %1210 = add nsw i32 %1209, 1
  store i32 %1210, ptr %33, align 4, !tbaa !9
  br label %1211

1211:                                             ; preds = %1191, %1177
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #2
  br label %1212

1212:                                             ; preds = %1211
  %1213 = load i32, ptr %61, align 4, !tbaa !9
  %1214 = add nsw i32 %1213, -1
  store i32 %1214, ptr %61, align 4, !tbaa !9
  %1215 = icmp ne i32 %1214, 0
  br i1 %1215, label %1150, label %1216, !llvm.loop !39

1216:                                             ; preds = %1212
  %1217 = load i32, ptr %58, align 4, !tbaa !9
  %1218 = shl i32 1, %1217
  %1219 = load i32, ptr %33, align 4, !tbaa !9
  %1220 = sub nsw i32 %1219, %1218
  store i32 %1220, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #2
  %1221 = load i32, ptr %59, align 4, !tbaa !9
  %1222 = load i32, ptr %33, align 4, !tbaa !9
  %1223 = add nsw i32 %1222, %1221
  store i32 %1223, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #2
  %1224 = load i32, ptr %23, align 4, !tbaa !9
  %1225 = icmp slt i32 %1224, 4
  br i1 %1225, label %1226, label %1459

1226:                                             ; preds = %1216
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #2
  %1227 = load i32, ptr %23, align 4, !tbaa !9
  %1228 = add nsw i32 %1227, 7
  store i32 %1228, ptr %23, align 4, !tbaa !9
  %1229 = load ptr, ptr %22, align 8, !tbaa !5
  %1230 = getelementptr inbounds i16, ptr %1229, i64 432
  %1231 = load i32, ptr %33, align 4, !tbaa !9
  %1232 = icmp slt i32 %1231, 4
  br i1 %1232, label %1233, label %1235

1233:                                             ; preds = %1226
  %1234 = load i32, ptr %33, align 4, !tbaa !9
  br label %1236

1235:                                             ; preds = %1226
  br label %1236

1236:                                             ; preds = %1235, %1233
  %1237 = phi i32 [ %1234, %1233 ], [ 3, %1235 ]
  %1238 = shl i32 %1237, 6
  %1239 = sext i32 %1238 to i64
  %1240 = getelementptr inbounds i16, ptr %1230, i64 %1239
  store ptr %1240, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #2
  store i32 6, ptr %64, align 4, !tbaa !9
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %1241

1241:                                             ; preds = %1303, %1236
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #2
  %1242 = load ptr, ptr %47, align 8, !tbaa !5
  %1243 = load i32, ptr %63, align 4, !tbaa !9
  %1244 = sext i32 %1243 to i64
  %1245 = getelementptr inbounds i16, ptr %1242, i64 %1244
  store ptr %1245, ptr %65, align 8, !tbaa !5
  %1246 = load i32, ptr %18, align 4, !tbaa !9
  %1247 = icmp ult i32 %1246, 16777216
  br i1 %1247, label %1248, label %1258

1248:                                             ; preds = %1241
  %1249 = load i32, ptr %18, align 4, !tbaa !9
  %1250 = shl i32 %1249, 8
  store i32 %1250, ptr %18, align 4, !tbaa !9
  %1251 = load i32, ptr %19, align 4, !tbaa !9
  %1252 = shl i32 %1251, 8
  %1253 = load ptr, ptr %20, align 8, !tbaa !5
  %1254 = getelementptr inbounds i8, ptr %1253, i32 1
  store ptr %1254, ptr %20, align 8, !tbaa !5
  %1255 = load i8, ptr %1253, align 1, !tbaa !27
  %1256 = zext i8 %1255 to i32
  %1257 = or i32 %1252, %1256
  store i32 %1257, ptr %19, align 4, !tbaa !9
  br label %1258

1258:                                             ; preds = %1248, %1241
  %1259 = load i32, ptr %18, align 4, !tbaa !9
  %1260 = lshr i32 %1259, 11
  %1261 = load ptr, ptr %65, align 8, !tbaa !5
  %1262 = load i16, ptr %1261, align 2, !tbaa !30
  %1263 = zext i16 %1262 to i32
  %1264 = mul i32 %1260, %1263
  store i32 %1264, ptr %48, align 4, !tbaa !9
  %1265 = load i32, ptr %19, align 4, !tbaa !9
  %1266 = load i32, ptr %48, align 4, !tbaa !9
  %1267 = icmp ult i32 %1265, %1266
  br i1 %1267, label %1268, label %1282

1268:                                             ; preds = %1258
  %1269 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %1269, ptr %18, align 4, !tbaa !9
  %1270 = load ptr, ptr %65, align 8, !tbaa !5
  %1271 = load i16, ptr %1270, align 2, !tbaa !30
  %1272 = zext i16 %1271 to i32
  %1273 = sub nsw i32 2048, %1272
  %1274 = ashr i32 %1273, 5
  %1275 = load ptr, ptr %65, align 8, !tbaa !5
  %1276 = load i16, ptr %1275, align 2, !tbaa !30
  %1277 = zext i16 %1276 to i32
  %1278 = add nsw i32 %1277, %1274
  %1279 = trunc i32 %1278 to i16
  store i16 %1279, ptr %1275, align 2, !tbaa !30
  %1280 = load i32, ptr %63, align 4, !tbaa !9
  %1281 = shl i32 %1280, 1
  store i32 %1281, ptr %63, align 4, !tbaa !9
  br label %1302

1282:                                             ; preds = %1258
  %1283 = load i32, ptr %48, align 4, !tbaa !9
  %1284 = load i32, ptr %18, align 4, !tbaa !9
  %1285 = sub i32 %1284, %1283
  store i32 %1285, ptr %18, align 4, !tbaa !9
  %1286 = load i32, ptr %48, align 4, !tbaa !9
  %1287 = load i32, ptr %19, align 4, !tbaa !9
  %1288 = sub i32 %1287, %1286
  store i32 %1288, ptr %19, align 4, !tbaa !9
  %1289 = load ptr, ptr %65, align 8, !tbaa !5
  %1290 = load i16, ptr %1289, align 2, !tbaa !30
  %1291 = zext i16 %1290 to i32
  %1292 = ashr i32 %1291, 5
  %1293 = load ptr, ptr %65, align 8, !tbaa !5
  %1294 = load i16, ptr %1293, align 2, !tbaa !30
  %1295 = zext i16 %1294 to i32
  %1296 = sub nsw i32 %1295, %1292
  %1297 = trunc i32 %1296 to i16
  store i16 %1297, ptr %1293, align 2, !tbaa !30
  %1298 = load i32, ptr %63, align 4, !tbaa !9
  %1299 = load i32, ptr %63, align 4, !tbaa !9
  %1300 = add nsw i32 %1298, %1299
  %1301 = add nsw i32 %1300, 1
  store i32 %1301, ptr %63, align 4, !tbaa !9
  br label %1302

1302:                                             ; preds = %1282, %1268
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #2
  br label %1303

1303:                                             ; preds = %1302
  %1304 = load i32, ptr %64, align 4, !tbaa !9
  %1305 = add nsw i32 %1304, -1
  store i32 %1305, ptr %64, align 4, !tbaa !9
  %1306 = icmp ne i32 %1305, 0
  br i1 %1306, label %1241, label %1307, !llvm.loop !40

1307:                                             ; preds = %1303
  %1308 = load i32, ptr %63, align 4, !tbaa !9
  %1309 = sub nsw i32 %1308, 64
  store i32 %1309, ptr %63, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #2
  %1310 = load i32, ptr %63, align 4, !tbaa !9
  %1311 = icmp sge i32 %1310, 4
  br i1 %1311, label %1312, label %1448

1312:                                             ; preds = %1307
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #2
  %1313 = load i32, ptr %63, align 4, !tbaa !9
  %1314 = ashr i32 %1313, 1
  %1315 = sub nsw i32 %1314, 1
  store i32 %1315, ptr %66, align 4, !tbaa !9
  %1316 = load i32, ptr %63, align 4, !tbaa !9
  %1317 = and i32 %1316, 1
  %1318 = or i32 2, %1317
  store i32 %1318, ptr %25, align 4, !tbaa !9
  %1319 = load i32, ptr %63, align 4, !tbaa !9
  %1320 = icmp slt i32 %1319, 14
  br i1 %1320, label %1321, label %1335

1321:                                             ; preds = %1312
  %1322 = load i32, ptr %66, align 4, !tbaa !9
  %1323 = load i32, ptr %25, align 4, !tbaa !9
  %1324 = shl i32 %1323, %1322
  store i32 %1324, ptr %25, align 4, !tbaa !9
  %1325 = load ptr, ptr %22, align 8, !tbaa !5
  %1326 = getelementptr inbounds i16, ptr %1325, i64 688
  %1327 = load i32, ptr %25, align 4, !tbaa !9
  %1328 = zext i32 %1327 to i64
  %1329 = getelementptr inbounds i16, ptr %1326, i64 %1328
  %1330 = load i32, ptr %63, align 4, !tbaa !9
  %1331 = sext i32 %1330 to i64
  %1332 = sub i64 0, %1331
  %1333 = getelementptr inbounds i16, ptr %1329, i64 %1332
  %1334 = getelementptr inbounds i16, ptr %1333, i64 -1
  store ptr %1334, ptr %47, align 8, !tbaa !5
  br label %1375

1335:                                             ; preds = %1312
  %1336 = load i32, ptr %66, align 4, !tbaa !9
  %1337 = sub nsw i32 %1336, 4
  store i32 %1337, ptr %66, align 4, !tbaa !9
  br label %1338

1338:                                             ; preds = %1366, %1335
  %1339 = load i32, ptr %18, align 4, !tbaa !9
  %1340 = icmp ult i32 %1339, 16777216
  br i1 %1340, label %1341, label %1351

1341:                                             ; preds = %1338
  %1342 = load i32, ptr %18, align 4, !tbaa !9
  %1343 = shl i32 %1342, 8
  store i32 %1343, ptr %18, align 4, !tbaa !9
  %1344 = load i32, ptr %19, align 4, !tbaa !9
  %1345 = shl i32 %1344, 8
  %1346 = load ptr, ptr %20, align 8, !tbaa !5
  %1347 = getelementptr inbounds i8, ptr %1346, i32 1
  store ptr %1347, ptr %20, align 8, !tbaa !5
  %1348 = load i8, ptr %1346, align 1, !tbaa !27
  %1349 = zext i8 %1348 to i32
  %1350 = or i32 %1345, %1349
  store i32 %1350, ptr %19, align 4, !tbaa !9
  br label %1351

1351:                                             ; preds = %1341, %1338
  %1352 = load i32, ptr %18, align 4, !tbaa !9
  %1353 = lshr i32 %1352, 1
  store i32 %1353, ptr %18, align 4, !tbaa !9
  %1354 = load i32, ptr %25, align 4, !tbaa !9
  %1355 = shl i32 %1354, 1
  store i32 %1355, ptr %25, align 4, !tbaa !9
  %1356 = load i32, ptr %19, align 4, !tbaa !9
  %1357 = load i32, ptr %18, align 4, !tbaa !9
  %1358 = icmp uge i32 %1356, %1357
  br i1 %1358, label %1359, label %1365

1359:                                             ; preds = %1351
  %1360 = load i32, ptr %18, align 4, !tbaa !9
  %1361 = load i32, ptr %19, align 4, !tbaa !9
  %1362 = sub i32 %1361, %1360
  store i32 %1362, ptr %19, align 4, !tbaa !9
  %1363 = load i32, ptr %25, align 4, !tbaa !9
  %1364 = or i32 %1363, 1
  store i32 %1364, ptr %25, align 4, !tbaa !9
  br label %1365

1365:                                             ; preds = %1359, %1351
  br label %1366

1366:                                             ; preds = %1365
  %1367 = load i32, ptr %66, align 4, !tbaa !9
  %1368 = add nsw i32 %1367, -1
  store i32 %1368, ptr %66, align 4, !tbaa !9
  %1369 = icmp ne i32 %1368, 0
  br i1 %1369, label %1338, label %1370, !llvm.loop !41

1370:                                             ; preds = %1366
  %1371 = load ptr, ptr %22, align 8, !tbaa !5
  %1372 = getelementptr inbounds i16, ptr %1371, i64 802
  store ptr %1372, ptr %47, align 8, !tbaa !5
  %1373 = load i32, ptr %25, align 4, !tbaa !9
  %1374 = shl i32 %1373, 4
  store i32 %1374, ptr %25, align 4, !tbaa !9
  store i32 4, ptr %66, align 4, !tbaa !9
  br label %1375

1375:                                             ; preds = %1370, %1321
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #2
  store i32 1, ptr %67, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #2
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %1376

1376:                                             ; preds = %1443, %1375
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #2
  %1377 = load ptr, ptr %47, align 8, !tbaa !5
  %1378 = load i32, ptr %68, align 4, !tbaa !9
  %1379 = sext i32 %1378 to i64
  %1380 = getelementptr inbounds i16, ptr %1377, i64 %1379
  store ptr %1380, ptr %69, align 8, !tbaa !5
  %1381 = load i32, ptr %18, align 4, !tbaa !9
  %1382 = icmp ult i32 %1381, 16777216
  br i1 %1382, label %1383, label %1393

1383:                                             ; preds = %1376
  %1384 = load i32, ptr %18, align 4, !tbaa !9
  %1385 = shl i32 %1384, 8
  store i32 %1385, ptr %18, align 4, !tbaa !9
  %1386 = load i32, ptr %19, align 4, !tbaa !9
  %1387 = shl i32 %1386, 8
  %1388 = load ptr, ptr %20, align 8, !tbaa !5
  %1389 = getelementptr inbounds i8, ptr %1388, i32 1
  store ptr %1389, ptr %20, align 8, !tbaa !5
  %1390 = load i8, ptr %1388, align 1, !tbaa !27
  %1391 = zext i8 %1390 to i32
  %1392 = or i32 %1387, %1391
  store i32 %1392, ptr %19, align 4, !tbaa !9
  br label %1393

1393:                                             ; preds = %1383, %1376
  %1394 = load i32, ptr %18, align 4, !tbaa !9
  %1395 = lshr i32 %1394, 11
  %1396 = load ptr, ptr %69, align 8, !tbaa !5
  %1397 = load i16, ptr %1396, align 2, !tbaa !30
  %1398 = zext i16 %1397 to i32
  %1399 = mul i32 %1395, %1398
  store i32 %1399, ptr %48, align 4, !tbaa !9
  %1400 = load i32, ptr %19, align 4, !tbaa !9
  %1401 = load i32, ptr %48, align 4, !tbaa !9
  %1402 = icmp ult i32 %1400, %1401
  br i1 %1402, label %1403, label %1417

1403:                                             ; preds = %1393
  %1404 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %1404, ptr %18, align 4, !tbaa !9
  %1405 = load ptr, ptr %69, align 8, !tbaa !5
  %1406 = load i16, ptr %1405, align 2, !tbaa !30
  %1407 = zext i16 %1406 to i32
  %1408 = sub nsw i32 2048, %1407
  %1409 = ashr i32 %1408, 5
  %1410 = load ptr, ptr %69, align 8, !tbaa !5
  %1411 = load i16, ptr %1410, align 2, !tbaa !30
  %1412 = zext i16 %1411 to i32
  %1413 = add nsw i32 %1412, %1409
  %1414 = trunc i32 %1413 to i16
  store i16 %1414, ptr %1410, align 2, !tbaa !30
  %1415 = load i32, ptr %68, align 4, !tbaa !9
  %1416 = shl i32 %1415, 1
  store i32 %1416, ptr %68, align 4, !tbaa !9
  br label %1440

1417:                                             ; preds = %1393
  %1418 = load i32, ptr %48, align 4, !tbaa !9
  %1419 = load i32, ptr %18, align 4, !tbaa !9
  %1420 = sub i32 %1419, %1418
  store i32 %1420, ptr %18, align 4, !tbaa !9
  %1421 = load i32, ptr %48, align 4, !tbaa !9
  %1422 = load i32, ptr %19, align 4, !tbaa !9
  %1423 = sub i32 %1422, %1421
  store i32 %1423, ptr %19, align 4, !tbaa !9
  %1424 = load ptr, ptr %69, align 8, !tbaa !5
  %1425 = load i16, ptr %1424, align 2, !tbaa !30
  %1426 = zext i16 %1425 to i32
  %1427 = ashr i32 %1426, 5
  %1428 = load ptr, ptr %69, align 8, !tbaa !5
  %1429 = load i16, ptr %1428, align 2, !tbaa !30
  %1430 = zext i16 %1429 to i32
  %1431 = sub nsw i32 %1430, %1427
  %1432 = trunc i32 %1431 to i16
  store i16 %1432, ptr %1428, align 2, !tbaa !30
  %1433 = load i32, ptr %68, align 4, !tbaa !9
  %1434 = load i32, ptr %68, align 4, !tbaa !9
  %1435 = add nsw i32 %1433, %1434
  %1436 = add nsw i32 %1435, 1
  store i32 %1436, ptr %68, align 4, !tbaa !9
  %1437 = load i32, ptr %67, align 4, !tbaa !9
  %1438 = load i32, ptr %25, align 4, !tbaa !9
  %1439 = or i32 %1438, %1437
  store i32 %1439, ptr %25, align 4, !tbaa !9
  br label %1440

1440:                                             ; preds = %1417, %1403
  %1441 = load i32, ptr %67, align 4, !tbaa !9
  %1442 = shl i32 %1441, 1
  store i32 %1442, ptr %67, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #2
  br label %1443

1443:                                             ; preds = %1440
  %1444 = load i32, ptr %66, align 4, !tbaa !9
  %1445 = add nsw i32 %1444, -1
  store i32 %1445, ptr %66, align 4, !tbaa !9
  %1446 = icmp ne i32 %1445, 0
  br i1 %1446, label %1376, label %1447, !llvm.loop !42

1447:                                             ; preds = %1443
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #2
  br label %1450

1448:                                             ; preds = %1307
  %1449 = load i32, ptr %63, align 4, !tbaa !9
  store i32 %1449, ptr %25, align 4, !tbaa !9
  br label %1450

1450:                                             ; preds = %1448, %1447
  %1451 = load i32, ptr %25, align 4, !tbaa !9
  %1452 = add i32 %1451, 1
  store i32 %1452, ptr %25, align 4, !tbaa !9
  %1453 = icmp eq i32 %1452, 0
  br i1 %1453, label %1454, label %1455

1454:                                             ; preds = %1450
  store i32 -1, ptr %33, align 4, !tbaa !9
  store i32 13, ptr %40, align 4
  br label %1456

1455:                                             ; preds = %1450
  store i32 0, ptr %40, align 4
  br label %1456

1456:                                             ; preds = %1455, %1454
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #2
  %1457 = load i32, ptr %40, align 4
  switch i32 %1457, label %1526 [
    i32 0, label %1458
  ]

1458:                                             ; preds = %1456
  br label %1459

1459:                                             ; preds = %1458, %1216
  %1460 = load i32, ptr %33, align 4, !tbaa !9
  %1461 = add nsw i32 %1460, 2
  store i32 %1461, ptr %33, align 4, !tbaa !9
  %1462 = load i32, ptr %25, align 4, !tbaa !9
  %1463 = load i32, ptr %35, align 4, !tbaa !9
  %1464 = icmp ugt i32 %1462, %1463
  br i1 %1464, label %1465, label %1466

1465:                                             ; preds = %1459
  store i32 1, ptr %9, align 4
  store i32 1, ptr %40, align 4
  br label %1526

1466:                                             ; preds = %1459
  %1467 = load i32, ptr %37, align 4, !tbaa !9
  %1468 = load i32, ptr %35, align 4, !tbaa !9
  %1469 = sub i32 %1467, %1468
  %1470 = load i32, ptr %33, align 4, !tbaa !9
  %1471 = icmp ugt i32 %1469, %1470
  br i1 %1471, label %1472, label %1476

1472:                                             ; preds = %1466
  %1473 = load i32, ptr %33, align 4, !tbaa !9
  %1474 = load i32, ptr %35, align 4, !tbaa !9
  %1475 = add i32 %1474, %1473
  store i32 %1475, ptr %35, align 4, !tbaa !9
  br label %1478

1476:                                             ; preds = %1466
  %1477 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %1477, ptr %35, align 4, !tbaa !9
  br label %1478

1478:                                             ; preds = %1476, %1472
  br label %1479

1479:                                             ; preds = %1522, %1478
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #2
  %1480 = load i32, ptr %38, align 4, !tbaa !9
  %1481 = load i32, ptr %25, align 4, !tbaa !9
  %1482 = sub i32 %1480, %1481
  store i32 %1482, ptr %70, align 4, !tbaa !9
  %1483 = load i32, ptr %70, align 4, !tbaa !9
  %1484 = load i32, ptr %37, align 4, !tbaa !9
  %1485 = icmp uge i32 %1483, %1484
  br i1 %1485, label %1486, label %1490

1486:                                             ; preds = %1479
  %1487 = load i32, ptr %37, align 4, !tbaa !9
  %1488 = load i32, ptr %70, align 4, !tbaa !9
  %1489 = add i32 %1488, %1487
  store i32 %1489, ptr %70, align 4, !tbaa !9
  br label %1490

1490:                                             ; preds = %1486, %1479
  %1491 = load ptr, ptr %36, align 8, !tbaa !5
  %1492 = load i32, ptr %70, align 4, !tbaa !9
  %1493 = zext i32 %1492 to i64
  %1494 = getelementptr inbounds i8, ptr %1491, i64 %1493
  %1495 = load i8, ptr %1494, align 1, !tbaa !27
  store i8 %1495, ptr %24, align 1, !tbaa !27
  %1496 = load i8, ptr %24, align 1, !tbaa !27
  %1497 = load ptr, ptr %36, align 8, !tbaa !5
  %1498 = load i32, ptr %38, align 4, !tbaa !9
  %1499 = zext i32 %1498 to i64
  %1500 = getelementptr inbounds i8, ptr %1497, i64 %1499
  store i8 %1496, ptr %1500, align 1, !tbaa !27
  %1501 = load i32, ptr %38, align 4, !tbaa !9
  %1502 = add i32 %1501, 1
  store i32 %1502, ptr %38, align 4, !tbaa !9
  %1503 = load i32, ptr %37, align 4, !tbaa !9
  %1504 = icmp eq i32 %1502, %1503
  br i1 %1504, label %1505, label %1506

1505:                                             ; preds = %1490
  store i32 0, ptr %38, align 4, !tbaa !9
  br label %1506

1506:                                             ; preds = %1505, %1490
  %1507 = load i32, ptr %33, align 4, !tbaa !9
  %1508 = add nsw i32 %1507, -1
  store i32 %1508, ptr %33, align 4, !tbaa !9
  %1509 = load i8, ptr %24, align 1, !tbaa !27
  %1510 = load ptr, ptr %14, align 8, !tbaa !5
  %1511 = load i32, ptr %29, align 4, !tbaa !9
  %1512 = add i32 %1511, 1
  store i32 %1512, ptr %29, align 4, !tbaa !9
  %1513 = zext i32 %1511 to i64
  %1514 = getelementptr inbounds i8, ptr %1510, i64 %1513
  store i8 %1509, ptr %1514, align 1, !tbaa !27
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #2
  br label %1515

1515:                                             ; preds = %1506
  %1516 = load i32, ptr %33, align 4, !tbaa !9
  %1517 = icmp ne i32 %1516, 0
  br i1 %1517, label %1518, label %1522

1518:                                             ; preds = %1515
  %1519 = load i32, ptr %29, align 4, !tbaa !9
  %1520 = load i32, ptr %15, align 4, !tbaa !9
  %1521 = icmp ult i32 %1519, %1520
  br label %1522

1522:                                             ; preds = %1518, %1515
  %1523 = phi i1 [ false, %1515 ], [ %1521, %1518 ]
  br i1 %1523, label %1479, label %1524, !llvm.loop !43

1524:                                             ; preds = %1522
  br label %1525

1525:                                             ; preds = %1524, %657
  store i32 0, ptr %40, align 4
  br label %1526

1526:                                             ; preds = %1525, %1465, %1456, %868
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #2
  %1527 = load i32, ptr %40, align 4
  switch i32 %1527, label %1529 [
    i32 0, label %1528
  ]

1528:                                             ; preds = %1526
  store i32 0, ptr %40, align 4
  br label %1529

1529:                                             ; preds = %1528, %1526, %378, %371
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #2
  %1530 = load i32, ptr %40, align 4
  switch i32 %1530, label %1628 [
    i32 0, label %1531
    i32 13, label %1532
    i32 12, label %297
  ]

1531:                                             ; preds = %1529
  br label %297

1532:                                             ; preds = %1529
  %1533 = load i32, ptr %18, align 4, !tbaa !9
  %1534 = icmp ult i32 %1533, 16777216
  br i1 %1534, label %1535, label %1545

1535:                                             ; preds = %1532
  %1536 = load i32, ptr %18, align 4, !tbaa !9
  %1537 = shl i32 %1536, 8
  store i32 %1537, ptr %18, align 4, !tbaa !9
  %1538 = load i32, ptr %19, align 4, !tbaa !9
  %1539 = shl i32 %1538, 8
  %1540 = load ptr, ptr %20, align 8, !tbaa !5
  %1541 = getelementptr inbounds i8, ptr %1540, i32 1
  store ptr %1541, ptr %20, align 8, !tbaa !5
  %1542 = load i8, ptr %1540, align 1, !tbaa !27
  %1543 = zext i8 %1542 to i32
  %1544 = or i32 %1539, %1543
  store i32 %1544, ptr %19, align 4, !tbaa !9
  br label %1545

1545:                                             ; preds = %1535, %1532
  %1546 = load ptr, ptr %20, align 8, !tbaa !5
  %1547 = load ptr, ptr %10, align 8, !tbaa !5
  %1548 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %1547, i32 0, i32 3
  %1549 = getelementptr inbounds [64 x i8], ptr %1548, i64 0, i64 0
  %1550 = ptrtoint ptr %1546 to i64
  %1551 = ptrtoint ptr %1549 to i64
  %1552 = sub i64 %1550, %1551
  %1553 = trunc i64 %1552 to i32
  %1554 = load i32, ptr %21, align 4, !tbaa !9
  %1555 = sub nsw i32 %1554, %1553
  store i32 %1555, ptr %21, align 4, !tbaa !9
  %1556 = load i32, ptr %21, align 4, !tbaa !9
  %1557 = icmp slt i32 %1556, 0
  br i1 %1557, label %1558, label %1559

1558:                                             ; preds = %1545
  store i32 1, ptr %9, align 4
  store i32 1, ptr %40, align 4
  br label %1628

1559:                                             ; preds = %1545
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #2
  store i32 0, ptr %71, align 4, !tbaa !9
  br label %1560

1560:                                             ; preds = %1575, %1559
  %1561 = load i32, ptr %71, align 4, !tbaa !9
  %1562 = load i32, ptr %21, align 4, !tbaa !9
  %1563 = icmp slt i32 %1561, %1562
  br i1 %1563, label %1564, label %1578

1564:                                             ; preds = %1560
  %1565 = load ptr, ptr %20, align 8, !tbaa !5
  %1566 = load i32, ptr %71, align 4, !tbaa !9
  %1567 = sext i32 %1566 to i64
  %1568 = getelementptr inbounds i8, ptr %1565, i64 %1567
  %1569 = load i8, ptr %1568, align 1, !tbaa !27
  %1570 = load ptr, ptr %10, align 8, !tbaa !5
  %1571 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %1570, i32 0, i32 3
  %1572 = load i32, ptr %71, align 4, !tbaa !9
  %1573 = sext i32 %1572 to i64
  %1574 = getelementptr inbounds [64 x i8], ptr %1571, i64 0, i64 %1573
  store i8 %1569, ptr %1574, align 1, !tbaa !27
  br label %1575

1575:                                             ; preds = %1564
  %1576 = load i32, ptr %71, align 4, !tbaa !9
  %1577 = add nsw i32 %1576, 1
  store i32 %1577, ptr %71, align 4, !tbaa !9
  br label %1560, !llvm.loop !44

1578:                                             ; preds = %1560
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #2
  %1579 = load i32, ptr %21, align 4, !tbaa !9
  %1580 = load ptr, ptr %10, align 8, !tbaa !5
  %1581 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %1580, i32 0, i32 4
  store i32 %1579, ptr %1581, align 8, !tbaa !15
  %1582 = load i32, ptr %18, align 4, !tbaa !9
  %1583 = load ptr, ptr %10, align 8, !tbaa !5
  %1584 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %1583, i32 0, i32 5
  store i32 %1582, ptr %1584, align 4, !tbaa !11
  %1585 = load i32, ptr %19, align 4, !tbaa !9
  %1586 = load ptr, ptr %10, align 8, !tbaa !5
  %1587 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %1586, i32 0, i32 6
  store i32 %1585, ptr %1587, align 8, !tbaa !14
  %1588 = load i32, ptr %38, align 4, !tbaa !9
  %1589 = load ptr, ptr %10, align 8, !tbaa !5
  %1590 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %1589, i32 0, i32 7
  store i32 %1588, ptr %1590, align 4, !tbaa !26
  %1591 = load i32, ptr %34, align 4, !tbaa !9
  %1592 = load i32, ptr %29, align 4, !tbaa !9
  %1593 = add i32 %1591, %1592
  %1594 = load ptr, ptr %10, align 8, !tbaa !5
  %1595 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %1594, i32 0, i32 8
  store i32 %1593, ptr %1595, align 8, !tbaa !22
  %1596 = load i32, ptr %35, align 4, !tbaa !9
  %1597 = load ptr, ptr %10, align 8, !tbaa !5
  %1598 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %1597, i32 0, i32 9
  store i32 %1596, ptr %1598, align 4, !tbaa !23
  %1599 = load i32, ptr %25, align 4, !tbaa !9
  %1600 = load ptr, ptr %10, align 8, !tbaa !5
  %1601 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %1600, i32 0, i32 10
  %1602 = getelementptr inbounds [4 x i32], ptr %1601, i64 0, i64 0
  store i32 %1599, ptr %1602, align 8, !tbaa !9
  %1603 = load i32, ptr %26, align 4, !tbaa !9
  %1604 = load ptr, ptr %10, align 8, !tbaa !5
  %1605 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %1604, i32 0, i32 10
  %1606 = getelementptr inbounds [4 x i32], ptr %1605, i64 0, i64 1
  store i32 %1603, ptr %1606, align 4, !tbaa !9
  %1607 = load i32, ptr %27, align 4, !tbaa !9
  %1608 = load ptr, ptr %10, align 8, !tbaa !5
  %1609 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %1608, i32 0, i32 10
  %1610 = getelementptr inbounds [4 x i32], ptr %1609, i64 0, i64 2
  store i32 %1607, ptr %1610, align 8, !tbaa !9
  %1611 = load i32, ptr %28, align 4, !tbaa !9
  %1612 = load ptr, ptr %10, align 8, !tbaa !5
  %1613 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %1612, i32 0, i32 10
  %1614 = getelementptr inbounds [4 x i32], ptr %1613, i64 0, i64 3
  store i32 %1611, ptr %1614, align 4, !tbaa !9
  %1615 = load i32, ptr %23, align 4, !tbaa !9
  %1616 = load ptr, ptr %10, align 8, !tbaa !5
  %1617 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %1616, i32 0, i32 11
  store i32 %1615, ptr %1617, align 8, !tbaa !17
  %1618 = load i32, ptr %33, align 4, !tbaa !9
  %1619 = load ptr, ptr %10, align 8, !tbaa !5
  %1620 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %1619, i32 0, i32 12
  store i32 %1618, ptr %1620, align 4, !tbaa !21
  %1621 = getelementptr inbounds [4 x i8], ptr %39, i64 0, i64 0
  %1622 = load i8, ptr %1621, align 1, !tbaa !27
  %1623 = load ptr, ptr %10, align 8, !tbaa !5
  %1624 = getelementptr inbounds %struct._CLzmaDecoderState, ptr %1623, i32 0, i32 13
  %1625 = getelementptr inbounds [4 x i8], ptr %1624, i64 0, i64 0
  store i8 %1622, ptr %1625, align 8, !tbaa !27
  %1626 = load i32, ptr %29, align 4, !tbaa !9
  %1627 = load ptr, ptr %16, align 8, !tbaa !5
  store i32 %1626, ptr %1627, align 4, !tbaa !9
  store i32 0, ptr %9, align 4
  store i32 1, ptr %40, align 4
  br label %1628

1628:                                             ; preds = %1578, %1558, %1529, %185, %145
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #2
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #2
  %1629 = load i32, ptr %9, align 4
  ret i32 %1629

1630:                                             ; preds = %544
  unreachable
}

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 = { 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, !10, i64 100}
!12 = !{!"_CLzmaDecoderState", !13, i64 0, !6, i64 16, !6, i64 24, !7, i64 32, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !7, i64 120, !10, i64 136, !10, i64 140, !7, i64 144}
!13 = !{!"_CLzmaProperties", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12}
!14 = !{!12, !10, i64 104}
!15 = !{!12, !10, i64 96}
!16 = !{!12, !6, i64 16}
!17 = !{!12, !10, i64 136}
!18 = !{!12, !10, i64 8}
!19 = !{!12, !10, i64 4}
!20 = !{!12, !10, i64 0}
!21 = !{!12, !10, i64 140}
!22 = !{!12, !10, i64 112}
!23 = !{!12, !10, i64 116}
!24 = !{!12, !6, i64 24}
!25 = !{!12, !10, i64 12}
!26 = !{!12, !10, i64 108}
!27 = !{!7, !7, i64 0}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = !{!31, !31, i64 0}
!31 = !{!"short", !7, i64 0}
!32 = distinct !{!32, !29}
!33 = distinct !{!33, !29}
!34 = distinct !{!34, !29}
!35 = distinct !{!35, !29}
!36 = distinct !{!36, !29}
!37 = distinct !{!37, !29}
!38 = distinct !{!38, !29}
!39 = distinct !{!39, !29}
!40 = distinct !{!40, !29}
!41 = distinct !{!41, !29}
!42 = distinct !{!42, !29}
!43 = distinct !{!43, !29}
!44 = distinct !{!44, !29}


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

; 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: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable
define dso_local noundef i32 @LzmaDecode(ptr noundef %0, ptr nocapture noundef readonly %1, i32 noundef %2, ptr nocapture noundef %3, ptr nocapture noundef writeonly %4, i32 noundef %5, ptr nocapture noundef writeonly %6, i32 noundef %7) local_unnamed_addr #1 {
  %9 = alloca [4 x i8], align 1
  %10 = getelementptr inbounds i8, ptr %0, i64 100
  %11 = load i32, ptr %10, align 4, !tbaa !5
  %12 = getelementptr inbounds i8, ptr %0, i64 104
  %13 = load i32, ptr %12, align 8, !tbaa !12
  %14 = getelementptr i8, ptr %0, i64 32
  %15 = getelementptr inbounds i8, ptr %0, i64 96
  %16 = load i32, ptr %15, align 8, !tbaa !13
  %17 = getelementptr inbounds i8, ptr %0, i64 16
  %18 = load ptr, ptr %17, align 8, !tbaa !14
  %19 = getelementptr inbounds i8, ptr %0, i64 136
  %20 = load i32, ptr %19, align 8, !tbaa !15
  %21 = getelementptr inbounds i8, ptr %0, i64 120
  %22 = load i32, ptr %21, align 8, !tbaa !16
  %23 = getelementptr inbounds i8, ptr %0, i64 124
  %24 = load i32, ptr %23, align 4, !tbaa !16
  %25 = getelementptr inbounds i8, ptr %0, i64 128
  %26 = load i32, ptr %25, align 8, !tbaa !16
  %27 = getelementptr inbounds i8, ptr %0, i64 132
  %28 = load i32, ptr %27, align 4, !tbaa !16
  %29 = getelementptr inbounds i8, ptr %0, i64 8
  %30 = load i32, ptr %29, align 8, !tbaa !17
  %notmask = shl nsw i32 -1, %30
  %31 = xor i32 %notmask, -1
  %32 = getelementptr inbounds i8, ptr %0, i64 4
  %33 = load i32, ptr %32, align 4, !tbaa !18
  %notmask863 = shl nsw i32 -1, %33
  %34 = xor i32 %notmask863, -1
  %35 = load i32, ptr %0, align 8, !tbaa !19
  %36 = getelementptr inbounds i8, ptr %0, i64 140
  %37 = load i32, ptr %36, align 4, !tbaa !20
  %38 = getelementptr inbounds i8, ptr %0, i64 112
  %39 = load i32, ptr %38, align 8, !tbaa !21
  %40 = getelementptr inbounds i8, ptr %0, i64 116
  %41 = load i32, ptr %40, align 4, !tbaa !22
  %42 = getelementptr inbounds i8, ptr %0, i64 24
  %43 = load ptr, ptr %42, align 8, !tbaa !23
  %44 = getelementptr inbounds i8, ptr %0, i64 12
  %45 = load i32, ptr %44, align 4, !tbaa !24
  %46 = getelementptr inbounds i8, ptr %0, i64 108
  %47 = load i32, ptr %46, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #3
  store i32 0, ptr %3, align 4, !tbaa !16
  store i32 0, ptr %6, align 4, !tbaa !16
  %48 = icmp eq i32 %37, -1
  br i1 %48, label %.thread902, label %49

49:                                               ; preds = %8
  %50 = icmp eq i32 %45, 0
  br i1 %50, label %51, label %54

51:                                               ; preds = %49
  %52 = getelementptr inbounds i8, ptr %0, i64 144
  %53 = load i8, ptr %52, align 8, !tbaa !26
  store i8 %53, ptr %9, align 1, !tbaa !26
  br label %54

54:                                               ; preds = %51, %49
  %.0737 = phi ptr [ %9, %51 ], [ %43, %49 ]
  %.0736 = phi i32 [ 1, %51 ], [ %45, %49 ]
  %55 = icmp eq i32 %37, -2
  br i1 %55, label %.preheader955, label %.loopexit954

.preheader955:                                    ; preds = %54
  %56 = icmp ne i32 %2, 0
  %57 = icmp slt i32 %16, 64
  %58 = select i1 %56, i1 %57, i1 false
  br i1 %58, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.preheader955
  %59 = sext i32 %16 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv = phi i64 [ %59, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ]
  %.0577963 = phi ptr [ %1, %.lr.ph.preheader ], [ %60, %.lr.ph ]
  %.0587962 = phi i32 [ %2, %.lr.ph.preheader ], [ %65, %.lr.ph ]
  %60 = getelementptr inbounds i8, ptr %.0577963, i64 1
  %61 = load i8, ptr %.0577963, align 1, !tbaa !26
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %62 = getelementptr inbounds i8, ptr %14, i64 %indvars.iv
  store i8 %61, ptr %62, align 1, !tbaa !26
  %63 = load i32, ptr %3, align 4, !tbaa !16
  %64 = add i32 %63, 1
  store i32 %64, ptr %3, align 4, !tbaa !16
  %65 = add i32 %.0587962, -1
  %66 = icmp ne i32 %65, 0
  %67 = icmp slt i64 %indvars.iv, 63
  %68 = and i1 %66, %67
  br i1 %68, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !27

._crit_edge.loopexit:                             ; preds = %.lr.ph
  %69 = trunc nsw i64 %indvars.iv.next to i32
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.preheader955
  %.0694.lcssa = phi i32 [ %16, %.preheader955 ], [ %69, %._crit_edge.loopexit ]
  %.0587.lcssa = phi i32 [ %2, %.preheader955 ], [ %65, %._crit_edge.loopexit ]
  %.0577.lcssa = phi ptr [ %1, %.preheader955 ], [ %60, %._crit_edge.loopexit ]
  %70 = icmp slt i32 %.0694.lcssa, 5
  br i1 %70, label %71, label %vector.ph

71:                                               ; preds = %._crit_edge
  store i32 %.0694.lcssa, ptr %15, align 8, !tbaa !13
  %.not879 = icmp ne i32 %7, 0
  %72 = zext i1 %.not879 to i32
  br label %.thread902

vector.ph:                                        ; preds = %._crit_edge
  %73 = load i32, ptr %32, align 4, !tbaa !18
  %74 = add nsw i32 %73, %35
  %75 = shl i32 768, %74
  %76 = add nuw i32 %75, 1846
  %wide.trip.count = zext i32 %76 to i64
  %n.vec = add nsw i64 %wide.trip.count, -6
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %77 = getelementptr inbounds i16, ptr %18, i64 %index
  %78 = getelementptr inbounds i8, ptr %77, i64 16
  store <8 x i16> <i16 1024, i16 1024, i16 1024, i16 1024, i16 1024, i16 1024, i16 1024, i16 1024>, ptr %77, align 2, !tbaa !29
  store <8 x i16> <i16 1024, i16 1024, i16 1024, i16 1024, i16 1024, i16 1024, i16 1024, i16 1024>, ptr %78, align 2, !tbaa !29
  %index.next = add nuw i64 %index, 16
  %79 = icmp eq i64 %index.next, %n.vec
  br i1 %79, label %scalar.ph, label %vector.body, !llvm.loop !31

scalar.ph:                                        ; preds = %vector.body
  %80 = getelementptr inbounds i16, ptr %18, i64 %n.vec
  store i16 1024, ptr %80, align 2, !tbaa !29
  %81 = getelementptr i16, ptr %18, i64 %wide.trip.count
  %82 = getelementptr i8, ptr %81, i64 -10
  store i16 1024, ptr %82, align 2, !tbaa !29
  %83 = getelementptr i16, ptr %18, i64 %wide.trip.count
  %84 = getelementptr i8, ptr %83, i64 -8
  store i16 1024, ptr %84, align 2, !tbaa !29
  %85 = getelementptr i16, ptr %18, i64 %wide.trip.count
  %86 = getelementptr i8, ptr %85, i64 -6
  store i16 1024, ptr %86, align 2, !tbaa !29
  %87 = getelementptr i16, ptr %18, i64 %wide.trip.count
  %88 = getelementptr i8, ptr %87, i64 -4
  store i16 1024, ptr %88, align 2, !tbaa !29
  %89 = getelementptr i16, ptr %18, i64 %wide.trip.count
  %90 = getelementptr i8, ptr %89, i64 -2
  store i16 1024, ptr %90, align 2, !tbaa !29
  %91 = add i32 %.0736, -1
  %92 = zext i32 %91 to i64
  %93 = getelementptr inbounds i8, ptr %.0737, i64 %92
  store i8 0, ptr %93, align 1, !tbaa !26
  %94 = getelementptr i8, ptr %0, i64 33
  %95 = getelementptr i8, ptr %0, i64 34
  %96 = load i8, ptr %94, align 1, !tbaa !26
  %97 = zext i8 %96 to i32
  %98 = getelementptr i8, ptr %0, i64 35
  %99 = load i8, ptr %95, align 1, !tbaa !26
  %100 = zext i8 %99 to i32
  %101 = shl nuw nsw i32 %97, 16
  %102 = shl nuw nsw i32 %100, 8
  %103 = or disjoint i32 %101, %102
  %104 = getelementptr i8, ptr %0, i64 36
  %105 = load i8, ptr %98, align 1, !tbaa !26
  %106 = zext i8 %105 to i32
  %107 = or disjoint i32 %103, %106
  %108 = shl nuw i32 %107, 8
  %109 = load i8, ptr %104, align 1, !tbaa !26
  %110 = zext i8 %109 to i32
  %111 = or disjoint i32 %108, %110
  %scevgep = getelementptr i8, ptr %0, i64 37
  br label %130

.loopexit954:                                     ; preds = %54
  %112 = icmp ne i32 %37, 0
  %113 = icmp ne i32 %5, 0
  %114 = and i1 %112, %113
  br i1 %114, label %.lr.ph974.preheader, label %._crit_edge975

.lr.ph974.preheader:                              ; preds = %.loopexit954
  %115 = add i32 %37, -1
  %116 = add i32 %5, -1
  %umin = tail call i32 @llvm.umin.i32(i32 %115, i32 %116)
  %117 = add nuw i32 %umin, 1
  %wide.trip.count1026 = zext i32 %117 to i64
  br label %.lr.ph974

.lr.ph974:                                        ; preds = %.lr.ph974.preheader, %.lr.ph974
  %indvars.iv1023 = phi i64 [ 0, %.lr.ph974.preheader ], [ %indvars.iv.next1024, %.lr.ph974 ]
  %.1729972 = phi i32 [ %47, %.lr.ph974.preheader ], [ %spec.store.select, %.lr.ph974 ]
  %.1749971 = phi i32 [ %37, %.lr.ph974.preheader ], [ %128, %.lr.ph974 ]
  %118 = sub i32 %.1729972, %22
  %.not878 = icmp ult i32 %118, %.0736
  %119 = select i1 %.not878, i32 0, i32 %.0736
  %spec.select = add i32 %119, %118
  %120 = zext i32 %spec.select to i64
  %121 = getelementptr inbounds i8, ptr %.0737, i64 %120
  %122 = load i8, ptr %121, align 1, !tbaa !26
  %123 = zext i32 %.1729972 to i64
  %124 = getelementptr inbounds i8, ptr %.0737, i64 %123
  store i8 %122, ptr %124, align 1, !tbaa !26
  %indvars.iv.next1024 = add nuw nsw i64 %indvars.iv1023, 1
  %125 = getelementptr inbounds i8, ptr %4, i64 %indvars.iv1023
  store i8 %122, ptr %125, align 1, !tbaa !26
  %126 = add i32 %.1729972, 1
  %127 = icmp eq i32 %126, %.0736
  %spec.store.select = select i1 %127, i32 0, i32 %126
  %128 = add nsw i32 %.1749971, -1
  %exitcond1027.not = icmp eq i64 %indvars.iv.next1024, %wide.trip.count1026
  br i1 %exitcond1027.not, label %._crit_edge975, label %.lr.ph974, !llvm.loop !34

._crit_edge975:                                   ; preds = %.lr.ph974, %.loopexit954
  %.0788.lcssa = phi i32 [ 0, %.loopexit954 ], [ %117, %.lr.ph974 ]
  %.1749.lcssa = phi i32 [ %37, %.loopexit954 ], [ %128, %.lr.ph974 ]
  %.1729.lcssa = phi i32 [ %47, %.loopexit954 ], [ %spec.store.select, %.lr.ph974 ]
  %.1729.lcssa.fr = freeze i32 %.1729.lcssa
  %129 = icmp eq i32 %.1729.lcssa.fr, 0
  %spec.select1187 = select i1 %129, i32 %.0736, i32 %.1729.lcssa.fr
  br label %130

130:                                              ; preds = %._crit_edge975, %scalar.ph
  %.1729.lcssa1126 = phi i32 [ 0, %scalar.ph ], [ %.1729.lcssa.fr, %._crit_edge975 ]
  %.1749.lcssa1124 = phi i32 [ 0, %scalar.ph ], [ %.1749.lcssa, %._crit_edge975 ]
  %.0788.lcssa1122 = phi i32 [ 0, %scalar.ph ], [ %.0788.lcssa, %._crit_edge975 ]
  %.079510661120 = phi i32 [ 1, %scalar.ph ], [ %28, %._crit_edge975 ]
  %.078010671118 = phi i32 [ 1, %scalar.ph ], [ %26, %._crit_edge975 ]
  %.077310681116 = phi i32 [ 1, %scalar.ph ], [ %24, %._crit_edge975 ]
  %.075910691114 = phi i32 [ 1, %scalar.ph ], [ %22, %._crit_edge975 ]
  %.074710701112 = phi i32 [ 0, %scalar.ph ], [ %39, %._crit_edge975 ]
  %.073810711110 = phi i32 [ 0, %scalar.ph ], [ %41, %._crit_edge975 ]
  %.070410721108 = phi i32 [ 0, %scalar.ph ], [ %20, %._crit_edge975 ]
  %.169510731106 = phi i32 [ %.0694.lcssa, %scalar.ph ], [ %16, %._crit_edge975 ]
  %.165010741104 = phi ptr [ %scevgep, %scalar.ph ], [ %14, %._crit_edge975 ]
  %.160910751102 = phi i32 [ %111, %scalar.ph ], [ %13, %._crit_edge975 ]
  %.060110761100 = phi i32 [ -1, %scalar.ph ], [ %11, %._crit_edge975 ]
  %.158810771098 = phi i32 [ %.0587.lcssa, %scalar.ph ], [ %2, %._crit_edge975 ]
  %.157810781096 = phi ptr [ %.0577.lcssa, %scalar.ph ], [ %1, %._crit_edge975 ]
  %131 = phi i32 [ %.0736, %scalar.ph ], [ %spec.select1187, %._crit_edge975 ]
  %.pn.in = add i32 %131, -1
  %.pn = zext i32 %.pn.in to i64
  %.0716.in = getelementptr inbounds i8, ptr %.0737, i64 %.pn
  %.0716 = load i8, ptr %.0716.in, align 1, !tbaa !26
  %132 = ptrtoint ptr %14 to i64
  %133 = icmp ne i32 %7, 0
  %134 = getelementptr inbounds i8, ptr %18, i64 384
  %135 = getelementptr inbounds i8, ptr %18, i64 408
  %136 = getelementptr inbounds i8, ptr %18, i64 432
  %137 = getelementptr inbounds i8, ptr %18, i64 456
  %138 = getelementptr inbounds i8, ptr %18, i64 480
  %139 = getelementptr inbounds i8, ptr %18, i64 2664
  %140 = getelementptr inbounds i8, ptr %18, i64 1636
  %141 = getelementptr inbounds i8, ptr %18, i64 864
  %142 = getelementptr inbounds i8, ptr %18, i64 1604
  %143 = getelementptr inbounds i8, ptr %18, i64 1376
  %144 = getelementptr inbounds i8, ptr %18, i64 3692
  %145 = sub nsw i32 8, %35
  br label %.backedge.outer

.backedge.outer:                                  ; preds = %.loopexit.loopexit, %130
  %.1796.ph = phi i32 [ %.5800, %.loopexit.loopexit ], [ %.079510661120, %130 ]
  %.1789.ph = phi i32 [ %1026, %.loopexit.loopexit ], [ %.0788.lcssa1122, %130 ]
  %.1781.ph = phi i32 [ %.4784, %.loopexit.loopexit ], [ %.078010671118, %130 ]
  %.1774.ph = phi i32 [ %.3776, %.loopexit.loopexit ], [ %.077310681116, %130 ]
  %.1760.ph = phi i32 [ %.10769, %.loopexit.loopexit ], [ %.075910691114, %130 ]
  %.2750.ph = phi i32 [ %1025, %.loopexit.loopexit ], [ %.1749.lcssa1124, %130 ]
  %.1739.ph = phi i32 [ %.5743, %.loopexit.loopexit ], [ %.073810711110, %130 ]
  %.2730.ph = phi i32 [ %spec.store.select6, %.loopexit.loopexit ], [ %.1729.lcssa1126, %130 ]
  %.1717.ph = phi i8 [ %1020, %.loopexit.loopexit ], [ %.0716, %130 ]
  %.1705.ph = phi i32 [ %.5709, %.loopexit.loopexit ], [ %.070410721108, %130 ]
  %.2696.ph = phi i32 [ %.5699, %.loopexit.loopexit ], [ %.169510731106, %130 ]
  %.2651.ph = phi ptr [ %.32681, %.loopexit.loopexit ], [ %.165010741104, %130 ]
  %.2610.ph = phi i32 [ %.38646, %.loopexit.loopexit ], [ %.160910751102, %130 ]
  %.1602.ph = phi i32 [ %.36, %.loopexit.loopexit ], [ %.060110761100, %130 ]
  %.2589.ph = phi i32 [ %.5592, %.loopexit.loopexit ], [ %.158810771098, %130 ]
  %.2579.ph = phi ptr [ %.5582, %.loopexit.loopexit ], [ %.157810781096, %130 ]
  br label %.backedge

.backedge:                                        ; preds = %.backedge.backedge, %.backedge.outer
  %.1789 = phi i32 [ %.1789.ph, %.backedge.outer ], [ %.1789.be, %.backedge.backedge ]
  %.1739 = phi i32 [ %.1739.ph, %.backedge.outer ], [ %.1739.be, %.backedge.backedge ]
  %.2730 = phi i32 [ %.2730.ph, %.backedge.outer ], [ %.2730.be, %.backedge.backedge ]
  %.1717 = phi i8 [ %.1717.ph, %.backedge.outer ], [ %.1717.be, %.backedge.backedge ]
  %.1705 = phi i32 [ %.1705.ph, %.backedge.outer ], [ %.1705.be, %.backedge.backedge ]
  %.2696 = phi i32 [ %.2696.ph, %.backedge.outer ], [ %.5699, %.backedge.backedge ]
  %.2651 = phi ptr [ %.2651.ph, %.backedge.outer ], [ %.2651.be, %.backedge.backedge ]
  %.2610 = phi i32 [ %.2610.ph, %.backedge.outer ], [ %.2610.be, %.backedge.backedge ]
  %.1602 = phi i32 [ %.1602.ph, %.backedge.outer ], [ %.1602.be, %.backedge.backedge ]
  %.2589 = phi i32 [ %.2589.ph, %.backedge.outer ], [ %.5592, %.backedge.backedge ]
  %.2579 = phi ptr [ %.2579.ph, %.backedge.outer ], [ %.5582, %.backedge.backedge ]
  %146 = ptrtoint ptr %.2651 to i64
  %.neg = sub i64 %132, %146
  %.neg864 = trunc i64 %.neg to i32
  %147 = add i32 %.2696, %.neg864
  %148 = icmp slt i32 %147, 24
  br i1 %148, label %149, label %189

149:                                              ; preds = %.backedge
  %150 = icmp slt i32 %147, 0
  br i1 %150, label %.thread902, label %.preheader953

.preheader953:                                    ; preds = %149
  %.not1002 = icmp eq i32 %147, 0
  br i1 %.not1002, label %.preheader952, label %iter.check

iter.check:                                       ; preds = %.preheader953
  %wide.trip.count1031 = zext nneg i32 %147 to i64
  %min.iters.check1203 = icmp ult i32 %147, 8
  %diff.check = icmp ult i64 %.neg, 32
  %or.cond1254 = or i1 %min.iters.check1203, %diff.check
  br i1 %or.cond1254, label %.lr.ph980.preheader, label %vector.main.loop.iter.check

vector.main.loop.iter.check:                      ; preds = %iter.check
  %min.iters.check1205 = icmp ult i32 %147, 32
  br i1 %min.iters.check1205, label %vec.epilog.ph, label %vector.ph1206

vector.ph1206:                                    ; preds = %vector.main.loop.iter.check
  %n.vec1208 = and i64 %wide.trip.count1031, 2147483616
  br label %vector.body1209

vector.body1209:                                  ; preds = %vector.body1209, %vector.ph1206
  %index1210 = phi i64 [ 0, %vector.ph1206 ], [ %index.next1212, %vector.body1209 ]
  %151 = getelementptr inbounds i8, ptr %.2651, i64 %index1210
  %152 = getelementptr inbounds i8, ptr %151, i64 16
  %wide.load = load <16 x i8>, ptr %151, align 1, !tbaa !26
  %wide.load1211 = load <16 x i8>, ptr %152, align 1, !tbaa !26
  %153 = getelementptr inbounds [64 x i8], ptr %14, i64 0, i64 %index1210
  %154 = getelementptr inbounds i8, ptr %153, i64 16
  store <16 x i8> %wide.load, ptr %153, align 1, !tbaa !26
  store <16 x i8> %wide.load1211, ptr %154, align 1, !tbaa !26
  %index.next1212 = add nuw i64 %index1210, 32
  %155 = icmp eq i64 %index.next1212, %n.vec1208
  br i1 %155, label %middle.block1201, label %vector.body1209, !llvm.loop !35

middle.block1201:                                 ; preds = %vector.body1209
  %cmp.n1213 = icmp eq i64 %n.vec1208, %wide.trip.count1031
  br i1 %cmp.n1213, label %.preheader952, label %vec.epilog.iter.check

vec.epilog.iter.check:                            ; preds = %middle.block1201
  %n.vec.remaining = and i64 %wide.trip.count1031, 24
  %min.epilog.iters.check = icmp eq i64 %n.vec.remaining, 0
  br i1 %min.epilog.iters.check, label %.lr.ph980.preheader, label %vec.epilog.ph

.lr.ph980.preheader:                              ; preds = %vec.epilog.middle.block, %iter.check, %vec.epilog.iter.check
  %indvars.iv1028.ph = phi i64 [ 0, %iter.check ], [ %n.vec1208, %vec.epilog.iter.check ], [ %n.vec1215, %vec.epilog.middle.block ]
  %xtraiter = and i64 %wide.trip.count1031, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph980.prol.loopexit, label %.lr.ph980.prol

.lr.ph980.prol:                                   ; preds = %.lr.ph980.preheader, %.lr.ph980.prol
  %indvars.iv1028.prol = phi i64 [ %indvars.iv.next1029.prol, %.lr.ph980.prol ], [ %indvars.iv1028.ph, %.lr.ph980.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph980.prol ], [ 0, %.lr.ph980.preheader ]
  %156 = getelementptr inbounds i8, ptr %.2651, i64 %indvars.iv1028.prol
  %157 = load i8, ptr %156, align 1, !tbaa !26
  %158 = getelementptr inbounds [64 x i8], ptr %14, i64 0, i64 %indvars.iv1028.prol
  store i8 %157, ptr %158, align 1, !tbaa !26
  %indvars.iv.next1029.prol = add nuw nsw i64 %indvars.iv1028.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.lr.ph980.prol.loopexit, label %.lr.ph980.prol, !llvm.loop !36

.lr.ph980.prol.loopexit:                          ; preds = %.lr.ph980.prol, %.lr.ph980.preheader
  %indvars.iv1028.unr = phi i64 [ %indvars.iv1028.ph, %.lr.ph980.preheader ], [ %indvars.iv.next1029.prol, %.lr.ph980.prol ]
  %159 = sub nsw i64 %indvars.iv1028.ph, %wide.trip.count1031
  %160 = icmp ugt i64 %159, -4
  br i1 %160, label %.preheader952, label %.lr.ph980

vec.epilog.ph:                                    ; preds = %vector.main.loop.iter.check, %vec.epilog.iter.check
  %vec.epilog.resume.val = phi i64 [ %n.vec1208, %vec.epilog.iter.check ], [ 0, %vector.main.loop.iter.check ]
  %n.vec1215 = and i64 %wide.trip.count1031, 2147483640
  br label %vec.epilog.vector.body

vec.epilog.vector.body:                           ; preds = %vec.epilog.vector.body, %vec.epilog.ph
  %index1217 = phi i64 [ %vec.epilog.resume.val, %vec.epilog.ph ], [ %index.next1219, %vec.epilog.vector.body ]
  %161 = getelementptr inbounds i8, ptr %.2651, i64 %index1217
  %wide.load1218 = load <8 x i8>, ptr %161, align 1, !tbaa !26
  %162 = getelementptr inbounds [64 x i8], ptr %14, i64 0, i64 %index1217
  store <8 x i8> %wide.load1218, ptr %162, align 1, !tbaa !26
  %index.next1219 = add nuw i64 %index1217, 8
  %163 = icmp eq i64 %index.next1219, %n.vec1215
  br i1 %163, label %vec.epilog.middle.block, label %vec.epilog.vector.body, !llvm.loop !38

vec.epilog.middle.block:                          ; preds = %vec.epilog.vector.body
  %cmp.n1220 = icmp eq i64 %n.vec1215, %wide.trip.count1031
  br i1 %cmp.n1220, label %.preheader952, label %.lr.ph980.preheader

.preheader952:                                    ; preds = %.lr.ph980.prol.loopexit, %.lr.ph980, %middle.block1201, %vec.epilog.middle.block, %.preheader953
  %.not1003 = icmp eq i32 %.2589, 0
  br i1 %.not1003, label %._crit_edge985, label %.lr.ph984.preheader

.lr.ph984.preheader:                              ; preds = %.preheader952
  %164 = zext nneg i32 %147 to i64
  br label %.lr.ph984

.lr.ph980:                                        ; preds = %.lr.ph980.prol.loopexit, %.lr.ph980
  %indvars.iv1028 = phi i64 [ %indvars.iv.next1029.3, %.lr.ph980 ], [ %indvars.iv1028.unr, %.lr.ph980.prol.loopexit ]
  %165 = getelementptr inbounds i8, ptr %.2651, i64 %indvars.iv1028
  %166 = load i8, ptr %165, align 1, !tbaa !26
  %167 = getelementptr inbounds [64 x i8], ptr %14, i64 0, i64 %indvars.iv1028
  store i8 %166, ptr %167, align 1, !tbaa !26
  %indvars.iv.next1029 = add nuw nsw i64 %indvars.iv1028, 1
  %168 = getelementptr inbounds i8, ptr %.2651, i64 %indvars.iv.next1029
  %169 = load i8, ptr %168, align 1, !tbaa !26
  %170 = getelementptr inbounds [64 x i8], ptr %14, i64 0, i64 %indvars.iv.next1029
  store i8 %169, ptr %170, align 1, !tbaa !26
  %indvars.iv.next1029.1 = add nuw nsw i64 %indvars.iv1028, 2
  %171 = getelementptr inbounds i8, ptr %.2651, i64 %indvars.iv.next1029.1
  %172 = load i8, ptr %171, align 1, !tbaa !26
  %173 = getelementptr inbounds [64 x i8], ptr %14, i64 0, i64 %indvars.iv.next1029.1
  store i8 %172, ptr %173, align 1, !tbaa !26
  %indvars.iv.next1029.2 = add nuw nsw i64 %indvars.iv1028, 3
  %174 = getelementptr inbounds i8, ptr %.2651, i64 %indvars.iv.next1029.2
  %175 = load i8, ptr %174, align 1, !tbaa !26
  %176 = getelementptr inbounds [64 x i8], ptr %14, i64 0, i64 %indvars.iv.next1029.2
  store i8 %175, ptr %176, align 1, !tbaa !26
  %indvars.iv.next1029.3 = add nuw nsw i64 %indvars.iv1028, 4
  %exitcond1032.not.3 = icmp eq i64 %indvars.iv.next1029.3, %wide.trip.count1031
  br i1 %exitcond1032.not.3, label %.preheader952, label %.lr.ph980, !llvm.loop !39

.lr.ph984:                                        ; preds = %.lr.ph984.preheader, %.lr.ph984
  %indvars.iv1035 = phi i64 [ %164, %.lr.ph984.preheader ], [ %indvars.iv.next1036, %.lr.ph984 ]
  %.3580983 = phi ptr [ %.2579, %.lr.ph984.preheader ], [ %177, %.lr.ph984 ]
  %.3590982 = phi i32 [ %.2589, %.lr.ph984.preheader ], [ %182, %.lr.ph984 ]
  %177 = getelementptr inbounds i8, ptr %.3580983, i64 1
  %178 = load i8, ptr %.3580983, align 1, !tbaa !26
  %indvars.iv.next1036 = add nuw nsw i64 %indvars.iv1035, 1
  %179 = getelementptr inbounds i8, ptr %14, i64 %indvars.iv1035
  store i8 %178, ptr %179, align 1, !tbaa !26
  %180 = load i32, ptr %3, align 4, !tbaa !16
  %181 = add i32 %180, 1
  store i32 %181, ptr %3, align 4, !tbaa !16
  %182 = add i32 %.3590982, -1
  %183 = icmp ne i32 %182, 0
  %184 = trunc nuw i64 %indvars.iv1035 to i32
  %185 = icmp slt i32 %184, 63
  %186 = and i1 %183, %185
  br i1 %186, label %.lr.ph984, label %._crit_edge985.loopexit, !llvm.loop !40

._crit_edge985.loopexit:                          ; preds = %.lr.ph984
  %187 = trunc nuw i64 %indvars.iv.next1036 to i32
  br label %._crit_edge985

._crit_edge985:                                   ; preds = %._crit_edge985.loopexit, %.preheader952
  %.3697.lcssa = phi i32 [ %147, %.preheader952 ], [ %187, %._crit_edge985.loopexit ]
  %.3590.lcssa = phi i32 [ 0, %.preheader952 ], [ %182, %._crit_edge985.loopexit ]
  %.3580.lcssa = phi ptr [ %.2579, %.preheader952 ], [ %177, %._crit_edge985.loopexit ]
  %188 = icmp sgt i32 %.3697.lcssa, 23
  %or.cond = or i1 %133, %188
  br i1 %or.cond, label %189, label %.thread920

189:                                              ; preds = %._crit_edge985, %.backedge
  %.5699 = phi i32 [ %.3697.lcssa, %._crit_edge985 ], [ %.2696, %.backedge ]
  %.4653 = phi ptr [ %14, %._crit_edge985 ], [ %.2651, %.backedge ]
  %.5592 = phi i32 [ %.3590.lcssa, %._crit_edge985 ], [ %.2589, %.backedge ]
  %.5582 = phi ptr [ %.3580.lcssa, %._crit_edge985 ], [ %.2579, %.backedge ]
  %.not = icmp ult i32 %.1789, %5
  br i1 %.not, label %190, label %.thread920

190:                                              ; preds = %189
  %191 = add i32 %.1789, %.074710701112
  %192 = and i32 %191, %31
  %193 = shl i32 %.1705, 4
  %194 = sext i32 %193 to i64
  %195 = getelementptr inbounds i16, ptr %18, i64 %194
  %196 = zext nneg i32 %192 to i64
  %197 = getelementptr inbounds i16, ptr %195, i64 %196
  %198 = icmp ult i32 %.1602, 16777216
  br i1 %198, label %199, label %206

199:                                              ; preds = %190
  %200 = shl nuw i32 %.1602, 8
  %201 = shl i32 %.2610, 8
  %202 = getelementptr inbounds i8, ptr %.4653, i64 1
  %203 = load i8, ptr %.4653, align 1, !tbaa !26
  %204 = zext i8 %203 to i32
  %205 = or disjoint i32 %201, %204
  br label %206

206:                                              ; preds = %199, %190
  %.5654 = phi ptr [ %202, %199 ], [ %.4653, %190 ]
  %.3611 = phi i32 [ %205, %199 ], [ %.2610, %190 ]
  %.2603 = phi i32 [ %200, %199 ], [ %.1602, %190 ]
  %207 = lshr i32 %.2603, 11
  %208 = load i16, ptr %197, align 2, !tbaa !29
  %209 = zext i16 %208 to i32
  %210 = mul i32 %207, %209
  %211 = icmp ult i32 %.3611, %210
  br i1 %211, label %212, label %315

212:                                              ; preds = %206
  %213 = sub nsw i32 2048, %209
  %214 = lshr i32 %213, 5
  %215 = trunc i32 %214 to i16
  %216 = add i16 %208, %215
  store i16 %216, ptr %197, align 2, !tbaa !29
  %217 = and i32 %191, %34
  %218 = shl i32 %217, %35
  %219 = zext i8 %.1717 to i32
  %220 = lshr i32 %219, %145
  %221 = add i32 %220, %218
  %222 = mul i32 %221, 768
  %223 = zext i32 %222 to i64
  %224 = getelementptr inbounds i16, ptr %144, i64 %223
  %225 = icmp sgt i32 %.1705, 6
  br i1 %225, label %226, label %.lr.ph993.preheader

226:                                              ; preds = %212
  %227 = sub i32 %.2730, %.1760.ph
  %.not874 = icmp ult i32 %227, %.0736
  %228 = select i1 %.not874, i32 0, i32 %.0736
  %spec.select881 = add i32 %228, %227
  %229 = zext i32 %spec.select881 to i64
  %230 = getelementptr inbounds i8, ptr %.0737, i64 %229
  %231 = load i8, ptr %230, align 1, !tbaa !26
  %232 = zext i8 %231 to i32
  %233 = getelementptr inbounds i8, ptr %224, i64 512
  br label %234

234:                                              ; preds = %268, %226
  %.0688 = phi i32 [ 1, %226 ], [ %.1689, %268 ]
  %.0687 = phi i32 [ %232, %226 ], [ %235, %268 ]
  %.6655 = phi ptr [ %.5654, %226 ], [ %.7656, %268 ]
  %.4612 = phi i32 [ %.3611, %226 ], [ %.6614, %268 ]
  %.3604 = phi i32 [ %210, %226 ], [ %.5606, %268 ]
  %235 = shl i32 %.0687, 1
  %236 = and i32 %235, 256
  %237 = zext nneg i32 %236 to i64
  %238 = getelementptr inbounds i16, ptr %233, i64 %237
  %239 = sext i32 %.0688 to i64
  %240 = getelementptr inbounds i16, ptr %238, i64 %239
  %241 = icmp ult i32 %.3604, 16777216
  br i1 %241, label %242, label %249

242:                                              ; preds = %234
  %243 = shl nuw i32 %.3604, 8
  %244 = shl i32 %.4612, 8
  %245 = getelementptr inbounds i8, ptr %.6655, i64 1
  %246 = load i8, ptr %.6655, align 1, !tbaa !26
  %247 = zext i8 %246 to i32
  %248 = or disjoint i32 %244, %247
  br label %249

249:                                              ; preds = %242, %234
  %.7656 = phi ptr [ %245, %242 ], [ %.6655, %234 ]
  %.5613 = phi i32 [ %248, %242 ], [ %.4612, %234 ]
  %.4605 = phi i32 [ %243, %242 ], [ %.3604, %234 ]
  %250 = lshr i32 %.4605, 11
  %251 = load i16, ptr %240, align 2, !tbaa !29
  %252 = zext i16 %251 to i32
  %253 = mul i32 %250, %252
  %254 = icmp ult i32 %.5613, %253
  %255 = shl i32 %.0688, 1
  br i1 %254, label %256, label %261

256:                                              ; preds = %249
  %257 = sub nsw i32 2048, %252
  %258 = lshr i32 %257, 5
  %259 = trunc i32 %258 to i16
  %260 = add i16 %251, %259
  store i16 %260, ptr %240, align 2, !tbaa !29
  %.not875 = icmp eq i32 %236, 0
  br i1 %.not875, label %268, label %.thread894

261:                                              ; preds = %249
  %262 = sub i32 %.4605, %253
  %263 = sub i32 %.5613, %253
  %264 = lshr i16 %251, 5
  %265 = sub i16 %251, %264
  store i16 %265, ptr %240, align 2, !tbaa !29
  %266 = or disjoint i32 %255, 1
  %267 = icmp eq i32 %236, 0
  br i1 %267, label %.thread894, label %268

268:                                              ; preds = %256, %261
  %.1689 = phi i32 [ %255, %256 ], [ %266, %261 ]
  %.6614 = phi i32 [ %.5613, %256 ], [ %263, %261 ]
  %.5606 = phi i32 [ %253, %256 ], [ %262, %261 ]
  %269 = icmp slt i32 %.1689, 256
  br i1 %269, label %234, label %._crit_edge994, !llvm.loop !41

.thread894:                                       ; preds = %261, %256
  %.3691 = phi i32 [ %266, %261 ], [ %255, %256 ]
  %.8616 = phi i32 [ %263, %261 ], [ %.5613, %256 ]
  %.7 = phi i32 [ %262, %261 ], [ %253, %256 ]
  %270 = icmp slt i32 %.3691, 256
  br i1 %270, label %.lr.ph993.preheader, label %._crit_edge994

.lr.ph993.preheader:                              ; preds = %212, %.thread894
  %.8992.ph = phi i32 [ %210, %212 ], [ %.7, %.thread894 ]
  %.9617991.ph = phi i32 [ %.3611, %212 ], [ %.8616, %.thread894 ]
  %.9658990.ph = phi ptr [ %.5654, %212 ], [ %.7656, %.thread894 ]
  %.4692989.ph = phi i32 [ 1, %212 ], [ %.3691, %.thread894 ]
  br label %.lr.ph993

.lr.ph993:                                        ; preds = %.lr.ph993.preheader, %299
  %.8992 = phi i32 [ %.10, %299 ], [ %.8992.ph, %.lr.ph993.preheader ]
  %.9617991 = phi i32 [ %.11619, %299 ], [ %.9617991.ph, %.lr.ph993.preheader ]
  %.9658990 = phi ptr [ %.10659, %299 ], [ %.9658990.ph, %.lr.ph993.preheader ]
  %.4692989 = phi i32 [ %.5693, %299 ], [ %.4692989.ph, %.lr.ph993.preheader ]
  %271 = sext i32 %.4692989 to i64
  %272 = getelementptr inbounds i16, ptr %224, i64 %271
  %273 = icmp ult i32 %.8992, 16777216
  br i1 %273, label %274, label %281

274:                                              ; preds = %.lr.ph993
  %275 = shl nuw i32 %.8992, 8
  %276 = shl i32 %.9617991, 8
  %277 = getelementptr inbounds i8, ptr %.9658990, i64 1
  %278 = load i8, ptr %.9658990, align 1, !tbaa !26
  %279 = zext i8 %278 to i32
  %280 = or disjoint i32 %276, %279
  br label %281

281:                                              ; preds = %274, %.lr.ph993
  %.10659 = phi ptr [ %277, %274 ], [ %.9658990, %.lr.ph993 ]
  %.10618 = phi i32 [ %280, %274 ], [ %.9617991, %.lr.ph993 ]
  %.9 = phi i32 [ %275, %274 ], [ %.8992, %.lr.ph993 ]
  %282 = lshr i32 %.9, 11
  %283 = load i16, ptr %272, align 2, !tbaa !29
  %284 = zext i16 %283 to i32
  %285 = mul i32 %282, %284
  %286 = icmp ult i32 %.10618, %285
  %287 = shl i32 %.4692989, 1
  br i1 %286, label %288, label %293

288:                                              ; preds = %281
  %289 = sub nsw i32 2048, %284
  %290 = lshr i32 %289, 5
  %291 = trunc i32 %290 to i16
  %292 = add i16 %283, %291
  br label %299

293:                                              ; preds = %281
  %294 = sub i32 %.9, %285
  %295 = sub i32 %.10618, %285
  %296 = lshr i16 %283, 5
  %297 = sub i16 %283, %296
  %298 = or disjoint i32 %287, 1
  br label %299

299:                                              ; preds = %293, %288
  %.sink = phi i16 [ %292, %288 ], [ %297, %293 ]
  %.5693 = phi i32 [ %287, %288 ], [ %298, %293 ]
  %.11619 = phi i32 [ %.10618, %288 ], [ %295, %293 ]
  %.10 = phi i32 [ %285, %288 ], [ %294, %293 ]
  store i16 %.sink, ptr %272, align 2
  %300 = icmp slt i32 %.5693, 256
  br i1 %300, label %.lr.ph993, label %._crit_edge994, !llvm.loop !42

._crit_edge994:                                   ; preds = %268, %299, %.thread894
  %.4692.lcssa = phi i32 [ %.3691, %.thread894 ], [ %.5693, %299 ], [ %.1689, %268 ]
  %.9658.lcssa = phi ptr [ %.7656, %.thread894 ], [ %.10659, %299 ], [ %.7656, %268 ]
  %.9617.lcssa = phi i32 [ %.8616, %.thread894 ], [ %.11619, %299 ], [ %.6614, %268 ]
  %.8.lcssa = phi i32 [ %.7, %.thread894 ], [ %.10, %299 ], [ %.5606, %268 ]
  %301 = trunc i32 %.4692.lcssa to i8
  %302 = zext i32 %.1789 to i64
  %303 = getelementptr inbounds i8, ptr %4, i64 %302
  store i8 %301, ptr %303, align 1, !tbaa !26
  %304 = zext i32 %.2730 to i64
  %305 = getelementptr inbounds i8, ptr %.0737, i64 %304
  store i8 %301, ptr %305, align 1, !tbaa !26
  %306 = add i32 %.2730, 1
  %307 = icmp eq i32 %306, %.0736
  %spec.store.select4 = select i1 %307, i32 0, i32 %306
  %308 = icmp slt i32 %.1705, 4
  br i1 %308, label %.backedge.backedge, label %309

309:                                              ; preds = %._crit_edge994
  %310 = icmp ult i32 %.1705, 10
  br i1 %310, label %311, label %313

311:                                              ; preds = %309
  %312 = add nsw i32 %.1705, -3
  br label %.backedge.backedge

313:                                              ; preds = %309
  %314 = add nsw i32 %.1705, -6
  br label %.backedge.backedge

315:                                              ; preds = %206
  %316 = sub i32 %.2603, %210
  %317 = sub i32 %.3611, %210
  %318 = lshr i16 %208, 5
  %319 = sub i16 %208, %318
  store i16 %319, ptr %197, align 2, !tbaa !29
  %320 = sext i32 %.1705 to i64
  %321 = getelementptr inbounds i16, ptr %134, i64 %320
  %322 = icmp ult i32 %316, 16777216
  br i1 %322, label %323, label %330

323:                                              ; preds = %315
  %324 = shl nuw i32 %316, 8
  %325 = shl i32 %317, 8
  %326 = getelementptr inbounds i8, ptr %.5654, i64 1
  %327 = load i8, ptr %.5654, align 1, !tbaa !26
  %328 = zext i8 %327 to i32
  %329 = or disjoint i32 %325, %328
  br label %330

330:                                              ; preds = %323, %315
  %.11660 = phi ptr [ %326, %323 ], [ %.5654, %315 ]
  %.12620 = phi i32 [ %329, %323 ], [ %317, %315 ]
  %.11 = phi i32 [ %324, %323 ], [ %316, %315 ]
  %331 = lshr i32 %.11, 11
  %332 = load i16, ptr %321, align 2, !tbaa !29
  %333 = zext i16 %332 to i32
  %334 = mul i32 %331, %333
  %335 = icmp ult i32 %.12620, %334
  br i1 %335, label %336, label %343

336:                                              ; preds = %330
  %337 = sub nsw i32 2048, %333
  %338 = lshr i32 %337, 5
  %339 = trunc i32 %338 to i16
  %340 = add i16 %332, %339
  store i16 %340, ptr %321, align 2, !tbaa !29
  %341 = icmp slt i32 %.1705, 7
  %342 = select i1 %341, i32 0, i32 3
  br label %468

343:                                              ; preds = %330
  %344 = sub i32 %.11, %334
  %345 = sub i32 %.12620, %334
  %346 = lshr i16 %332, 5
  %347 = sub i16 %332, %346
  store i16 %347, ptr %321, align 2, !tbaa !29
  %348 = getelementptr inbounds i16, ptr %135, i64 %320
  %349 = icmp ult i32 %344, 16777216
  br i1 %349, label %350, label %357

350:                                              ; preds = %343
  %351 = shl nuw i32 %344, 8
  %352 = shl i32 %345, 8
  %353 = getelementptr inbounds i8, ptr %.11660, i64 1
  %354 = load i8, ptr %.11660, align 1, !tbaa !26
  %355 = zext i8 %354 to i32
  %356 = or disjoint i32 %352, %355
  br label %357

357:                                              ; preds = %350, %343
  %.12661 = phi ptr [ %353, %350 ], [ %.11660, %343 ]
  %.13621 = phi i32 [ %356, %350 ], [ %345, %343 ]
  %.12 = phi i32 [ %351, %350 ], [ %344, %343 ]
  %358 = lshr i32 %.12, 11
  %359 = load i16, ptr %348, align 2, !tbaa !29
  %360 = zext i16 %359 to i32
  %361 = mul i32 %358, %360
  %362 = icmp ult i32 %.13621, %361
  br i1 %362, label %363, label %409

363:                                              ; preds = %357
  %364 = sub nsw i32 2048, %360
  %365 = lshr i32 %364, 5
  %366 = trunc i32 %365 to i16
  %367 = add i16 %359, %366
  store i16 %367, ptr %348, align 2, !tbaa !29
  %368 = getelementptr inbounds i16, ptr %138, i64 %194
  %369 = getelementptr inbounds i16, ptr %368, i64 %196
  %370 = icmp ult i32 %361, 16777216
  br i1 %370, label %371, label %378

371:                                              ; preds = %363
  %372 = shl nuw i32 %361, 8
  %373 = shl i32 %.13621, 8
  %374 = getelementptr inbounds i8, ptr %.12661, i64 1
  %375 = load i8, ptr %.12661, align 1, !tbaa !26
  %376 = zext i8 %375 to i32
  %377 = or disjoint i32 %373, %376
  br label %378

378:                                              ; preds = %371, %363
  %.13662 = phi ptr [ %374, %371 ], [ %.12661, %363 ]
  %.14622 = phi i32 [ %377, %371 ], [ %.13621, %363 ]
  %.13 = phi i32 [ %372, %371 ], [ %361, %363 ]
  %379 = lshr i32 %.13, 11
  %380 = load i16, ptr %369, align 2, !tbaa !29
  %381 = zext i16 %380 to i32
  %382 = mul i32 %379, %381
  %383 = icmp ult i32 %.14622, %382
  br i1 %383, label %384, label %404

384:                                              ; preds = %378
  %385 = sub nsw i32 2048, %381
  %386 = lshr i32 %385, 5
  %387 = trunc i32 %386 to i16
  %388 = add i16 %380, %387
  store i16 %388, ptr %369, align 2, !tbaa !29
  %389 = icmp eq i32 %.1739, 0
  br i1 %389, label %.thread902, label %390

390:                                              ; preds = %384
  %391 = icmp slt i32 %.1705, 7
  %392 = select i1 %391, i32 9, i32 11
  %393 = sub i32 %.2730, %.1760.ph
  %.not865 = icmp ult i32 %393, %.0736
  %394 = select i1 %.not865, i32 0, i32 %.0736
  %.0600 = add i32 %394, %393
  %395 = zext i32 %.0600 to i64
  %396 = getelementptr inbounds i8, ptr %.0737, i64 %395
  %397 = load i8, ptr %396, align 1, !tbaa !26
  %398 = zext i32 %.2730 to i64
  %399 = getelementptr inbounds i8, ptr %.0737, i64 %398
  store i8 %397, ptr %399, align 1, !tbaa !26
  %400 = add i32 %.2730, 1
  %401 = icmp eq i32 %400, %.0736
  %spec.store.select5 = select i1 %401, i32 0, i32 %400
  %402 = zext i32 %.1789 to i64
  %403 = getelementptr inbounds i8, ptr %4, i64 %402
  store i8 %397, ptr %403, align 1, !tbaa !26
  br label %.backedge.backedge

.backedge.backedge:                               ; preds = %390, %._crit_edge994, %311, %313
  %.2730.be = phi i32 [ %spec.store.select4, %313 ], [ %spec.store.select4, %311 ], [ %spec.store.select4, %._crit_edge994 ], [ %spec.store.select5, %390 ]
  %.1717.be = phi i8 [ %301, %313 ], [ %301, %311 ], [ %301, %._crit_edge994 ], [ %397, %390 ]
  %.1705.be = phi i32 [ %314, %313 ], [ %312, %311 ], [ 0, %._crit_edge994 ], [ %392, %390 ]
  %.2651.be = phi ptr [ %.9658.lcssa, %313 ], [ %.9658.lcssa, %311 ], [ %.9658.lcssa, %._crit_edge994 ], [ %.13662, %390 ]
  %.2610.be = phi i32 [ %.9617.lcssa, %313 ], [ %.9617.lcssa, %311 ], [ %.9617.lcssa, %._crit_edge994 ], [ %.14622, %390 ]
  %.1602.be = phi i32 [ %.8.lcssa, %313 ], [ %.8.lcssa, %311 ], [ %.8.lcssa, %._crit_edge994 ], [ %382, %390 ]
  %.pn1374.in = icmp ult i32 %.1739, %.0736
  %.pn1374 = zext i1 %.pn1374.in to i32
  %.1739.be = add nuw i32 %.1739, %.pn1374
  %.1789.be = add i32 %.1789, 1
  br label %.backedge

404:                                              ; preds = %378
  %405 = sub i32 %.13, %382
  %406 = sub i32 %.14622, %382
  %407 = lshr i16 %380, 5
  %408 = sub i16 %380, %407
  store i16 %408, ptr %369, align 2, !tbaa !29
  br label %465

409:                                              ; preds = %357
  %410 = sub i32 %.12, %361
  %411 = sub i32 %.13621, %361
  %412 = lshr i16 %359, 5
  %413 = sub i16 %359, %412
  store i16 %413, ptr %348, align 2, !tbaa !29
  %414 = getelementptr inbounds i16, ptr %136, i64 %320
  %415 = icmp ult i32 %410, 16777216
  br i1 %415, label %416, label %423

416:                                              ; preds = %409
  %417 = shl nuw i32 %410, 8
  %418 = shl i32 %411, 8
  %419 = getelementptr inbounds i8, ptr %.12661, i64 1
  %420 = load i8, ptr %.12661, align 1, !tbaa !26
  %421 = zext i8 %420 to i32
  %422 = or disjoint i32 %418, %421
  br label %423

423:                                              ; preds = %416, %409
  %.14663 = phi ptr [ %419, %416 ], [ %.12661, %409 ]
  %.15623 = phi i32 [ %422, %416 ], [ %411, %409 ]
  %.14 = phi i32 [ %417, %416 ], [ %410, %409 ]
  %424 = lshr i32 %.14, 11
  %425 = load i16, ptr %414, align 2, !tbaa !29
  %426 = zext i16 %425 to i32
  %427 = mul i32 %424, %426
  %428 = icmp ult i32 %.15623, %427
  br i1 %428, label %429, label %434

429:                                              ; preds = %423
  %430 = sub nsw i32 2048, %426
  %431 = lshr i32 %430, 5
  %432 = trunc i32 %431 to i16
  %433 = add i16 %425, %432
  store i16 %433, ptr %414, align 2, !tbaa !29
  br label %465

434:                                              ; preds = %423
  %435 = sub i32 %.14, %427
  %436 = sub i32 %.15623, %427
  %437 = lshr i16 %425, 5
  %438 = sub i16 %425, %437
  store i16 %438, ptr %414, align 2, !tbaa !29
  %439 = getelementptr inbounds i16, ptr %137, i64 %320
  %440 = icmp ult i32 %435, 16777216
  br i1 %440, label %441, label %448

441:                                              ; preds = %434
  %442 = shl nuw i32 %435, 8
  %443 = shl i32 %436, 8
  %444 = getelementptr inbounds i8, ptr %.14663, i64 1
  %445 = load i8, ptr %.14663, align 1, !tbaa !26
  %446 = zext i8 %445 to i32
  %447 = or disjoint i32 %443, %446
  br label %448

448:                                              ; preds = %441, %434
  %.15664 = phi ptr [ %444, %441 ], [ %.14663, %434 ]
  %.16624 = phi i32 [ %447, %441 ], [ %436, %434 ]
  %.15 = phi i32 [ %442, %441 ], [ %435, %434 ]
  %449 = lshr i32 %.15, 11
  %450 = load i16, ptr %439, align 2, !tbaa !29
  %451 = zext i16 %450 to i32
  %452 = mul i32 %449, %451
  %453 = icmp ult i32 %.16624, %452
  br i1 %453, label %454, label %459

454:                                              ; preds = %448
  %455 = sub nsw i32 2048, %451
  %456 = lshr i32 %455, 5
  %457 = trunc i32 %456 to i16
  %458 = add i16 %450, %457
  br label %464

459:                                              ; preds = %448
  %460 = sub i32 %.15, %452
  %461 = sub i32 %.16624, %452
  %462 = lshr i16 %450, 5
  %463 = sub i16 %450, %462
  br label %464

464:                                              ; preds = %459, %454
  %storemerge = phi i16 [ %463, %459 ], [ %458, %454 ]
  %.2797 = phi i32 [ %.1781.ph, %459 ], [ %.1796.ph, %454 ]
  %.17625 = phi i32 [ %461, %459 ], [ %.16624, %454 ]
  %.16 = phi i32 [ %460, %459 ], [ %452, %454 ]
  %.0598 = phi i32 [ %.1796.ph, %459 ], [ %.1781.ph, %454 ]
  store i16 %storemerge, ptr %439, align 2, !tbaa !29
  br label %465

465:                                              ; preds = %429, %464, %404
  %.4799 = phi i32 [ %.1796.ph, %404 ], [ %.1796.ph, %429 ], [ %.2797, %464 ]
  %.3783 = phi i32 [ %.1781.ph, %404 ], [ %.1781.ph, %429 ], [ %.1774.ph, %464 ]
  %.2775 = phi i32 [ %.1774.ph, %404 ], [ %.1760.ph, %429 ], [ %.1760.ph, %464 ]
  %.2761 = phi i32 [ %.1760.ph, %404 ], [ %.1774.ph, %429 ], [ %.0598, %464 ]
  %.17666 = phi ptr [ %.13662, %404 ], [ %.14663, %429 ], [ %.15664, %464 ]
  %.19627 = phi i32 [ %406, %404 ], [ %.15623, %429 ], [ %.17625, %464 ]
  %.18 = phi i32 [ %405, %404 ], [ %427, %429 ], [ %.16, %464 ]
  %466 = icmp slt i32 %.1705, 7
  %467 = select i1 %466, i32 8, i32 11
  br label %468

468:                                              ; preds = %465, %336
  %.5800 = phi i32 [ %.1781.ph, %336 ], [ %.4799, %465 ]
  %.4784 = phi i32 [ %.1774.ph, %336 ], [ %.3783, %465 ]
  %.3776 = phi i32 [ %.1760.ph, %336 ], [ %.2775, %465 ]
  %.3762 = phi i32 [ %.1760.ph, %336 ], [ %.2761, %465 ]
  %.4708 = phi i32 [ %342, %336 ], [ %467, %465 ]
  %.0701 = phi ptr [ %140, %336 ], [ %139, %465 ]
  %.18667 = phi ptr [ %.11660, %336 ], [ %.17666, %465 ]
  %.20628 = phi i32 [ %.12620, %336 ], [ %.19627, %465 ]
  %.19 = phi i32 [ %334, %336 ], [ %.18, %465 ]
  %469 = icmp ult i32 %.19, 16777216
  br i1 %469, label %470, label %477

470:                                              ; preds = %468
  %471 = shl nuw i32 %.19, 8
  %472 = shl i32 %.20628, 8
  %473 = getelementptr inbounds i8, ptr %.18667, i64 1
  %474 = load i8, ptr %.18667, align 1, !tbaa !26
  %475 = zext i8 %474 to i32
  %476 = or disjoint i32 %472, %475
  br label %477

477:                                              ; preds = %470, %468
  %.19668 = phi ptr [ %473, %470 ], [ %.18667, %468 ]
  %.21629 = phi i32 [ %476, %470 ], [ %.20628, %468 ]
  %.20 = phi i32 [ %471, %470 ], [ %.19, %468 ]
  %478 = lshr i32 %.20, 11
  %479 = load i16, ptr %.0701, align 2, !tbaa !29
  %480 = zext i16 %479 to i32
  %481 = mul i32 %478, %480
  %482 = icmp ult i32 %.21629, %481
  br i1 %482, label %483, label %492

483:                                              ; preds = %477
  %484 = sub nsw i32 2048, %480
  %485 = lshr i32 %484, 5
  %486 = trunc i32 %485 to i16
  %487 = add i16 %479, %486
  store i16 %487, ptr %.0701, align 2, !tbaa !29
  %488 = getelementptr inbounds i8, ptr %.0701, i64 4
  %489 = shl i32 %192, 3
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds i16, ptr %488, i64 %490
  br label %527

492:                                              ; preds = %477
  %493 = sub i32 %.20, %481
  %494 = sub i32 %.21629, %481
  %495 = lshr i16 %479, 5
  %496 = sub i16 %479, %495
  store i16 %496, ptr %.0701, align 2, !tbaa !29
  %497 = getelementptr inbounds i8, ptr %.0701, i64 2
  %498 = icmp ult i32 %493, 16777216
  br i1 %498, label %499, label %506

499:                                              ; preds = %492
  %500 = shl nuw i32 %493, 8
  %501 = shl i32 %494, 8
  %502 = getelementptr inbounds i8, ptr %.19668, i64 1
  %503 = load i8, ptr %.19668, align 1, !tbaa !26
  %504 = zext i8 %503 to i32
  %505 = or disjoint i32 %501, %504
  br label %506

506:                                              ; preds = %499, %492
  %.20669 = phi ptr [ %502, %499 ], [ %.19668, %492 ]
  %.22630 = phi i32 [ %505, %499 ], [ %494, %492 ]
  %.21 = phi i32 [ %500, %499 ], [ %493, %492 ]
  %507 = lshr i32 %.21, 11
  %508 = load i16, ptr %497, align 2, !tbaa !29
  %509 = zext i16 %508 to i32
  %510 = mul i32 %507, %509
  %511 = icmp ult i32 %.22630, %510
  br i1 %511, label %512, label %521

512:                                              ; preds = %506
  %513 = sub nsw i32 2048, %509
  %514 = lshr i32 %513, 5
  %515 = trunc i32 %514 to i16
  %516 = add i16 %508, %515
  store i16 %516, ptr %497, align 2, !tbaa !29
  %517 = getelementptr inbounds i8, ptr %.0701, i64 260
  %518 = shl i32 %192, 3
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds i16, ptr %517, i64 %519
  br label %527

521:                                              ; preds = %506
  %522 = sub i32 %.21, %510
  %523 = sub i32 %.22630, %510
  %524 = lshr i16 %508, 5
  %525 = sub i16 %508, %524
  store i16 %525, ptr %497, align 2, !tbaa !29
  %526 = getelementptr inbounds i8, ptr %.0701, i64 516
  br label %527

527:                                              ; preds = %483, %521, %512
  %.21670 = phi ptr [ %.19668, %483 ], [ %.20669, %512 ], [ %.20669, %521 ]
  %.23631 = phi i32 [ %.21629, %483 ], [ %.22630, %512 ], [ %523, %521 ]
  %.22 = phi i32 [ %481, %483 ], [ %510, %512 ], [ %522, %521 ]
  %.not866.2 = phi i1 [ true, %483 ], [ true, %512 ], [ false, %521 ]
  %.0597 = phi i32 [ 3, %483 ], [ 3, %512 ], [ 8, %521 ]
  %.0596 = phi i32 [ 0, %483 ], [ 8, %512 ], [ 16, %521 ]
  %.0595 = phi ptr [ %491, %483 ], [ %520, %512 ], [ %526, %521 ]
  %528 = getelementptr inbounds i8, ptr %.0595, i64 2
  %529 = icmp ult i32 %.22, 16777216
  br i1 %529, label %530, label %537

530:                                              ; preds = %527
  %531 = shl nuw i32 %.22, 8
  %532 = shl i32 %.23631, 8
  %533 = getelementptr inbounds i8, ptr %.21670, i64 1
  %534 = load i8, ptr %.21670, align 1, !tbaa !26
  %535 = zext i8 %534 to i32
  %536 = or disjoint i32 %532, %535
  br label %537

537:                                              ; preds = %530, %527
  %.23672 = phi ptr [ %533, %530 ], [ %.21670, %527 ]
  %.25633 = phi i32 [ %536, %530 ], [ %.23631, %527 ]
  %.24 = phi i32 [ %531, %530 ], [ %.22, %527 ]
  %538 = lshr i32 %.24, 11
  %539 = load i16, ptr %528, align 2, !tbaa !29
  %540 = zext i16 %539 to i32
  %541 = mul i32 %538, %540
  %542 = icmp ult i32 %.25633, %541
  br i1 %542, label %543, label %548

543:                                              ; preds = %537
  %544 = sub nsw i32 2048, %540
  %545 = lshr i32 %544, 5
  %546 = trunc i32 %545 to i16
  %547 = add i16 %539, %546
  br label %553

548:                                              ; preds = %537
  %549 = sub i32 %.24, %541
  %550 = sub i32 %.25633, %541
  %551 = lshr i16 %539, 5
  %552 = sub i16 %539, %551
  br label %553

553:                                              ; preds = %548, %543
  %.sink1043 = phi i16 [ %547, %543 ], [ %552, %548 ]
  %.4752 = phi i32 [ 2, %543 ], [ 3, %548 ]
  %.26634 = phi i32 [ %.25633, %543 ], [ %550, %548 ]
  %.25 = phi i32 [ %541, %543 ], [ %549, %548 ]
  store i16 %.sink1043, ptr %528, align 2
  %554 = zext nneg i32 %.4752 to i64
  %555 = getelementptr inbounds i16, ptr %.0595, i64 %554
  %556 = icmp ult i32 %.25, 16777216
  br i1 %556, label %557, label %564

557:                                              ; preds = %553
  %558 = shl nuw i32 %.25, 8
  %559 = shl i32 %.26634, 8
  %560 = getelementptr inbounds i8, ptr %.23672, i64 1
  %561 = load i8, ptr %.23672, align 1, !tbaa !26
  %562 = zext i8 %561 to i32
  %563 = or disjoint i32 %559, %562
  br label %564

564:                                              ; preds = %557, %553
  %.23672.1 = phi ptr [ %560, %557 ], [ %.23672, %553 ]
  %.25633.1 = phi i32 [ %563, %557 ], [ %.26634, %553 ]
  %.24.1 = phi i32 [ %558, %557 ], [ %.25, %553 ]
  %565 = lshr i32 %.24.1, 11
  %566 = load i16, ptr %555, align 2, !tbaa !29
  %567 = zext i16 %566 to i32
  %568 = mul i32 %565, %567
  %569 = icmp ult i32 %.25633.1, %568
  %570 = shl nuw nsw i32 %.4752, 1
  br i1 %569, label %577, label %571

571:                                              ; preds = %564
  %572 = sub i32 %.24.1, %568
  %573 = sub i32 %.25633.1, %568
  %574 = lshr i16 %566, 5
  %575 = sub i16 %566, %574
  %576 = or disjoint i32 %570, 1
  br label %582

577:                                              ; preds = %564
  %578 = sub nsw i32 2048, %567
  %579 = lshr i32 %578, 5
  %580 = trunc i32 %579 to i16
  %581 = add i16 %566, %580
  br label %582

582:                                              ; preds = %577, %571
  %.sink1043.1 = phi i16 [ %581, %577 ], [ %575, %571 ]
  %.4752.1 = phi i32 [ %570, %577 ], [ %576, %571 ]
  %.26634.1 = phi i32 [ %.25633.1, %577 ], [ %573, %571 ]
  %.25.1 = phi i32 [ %568, %577 ], [ %572, %571 ]
  store i16 %.sink1043.1, ptr %555, align 2
  %583 = sext i32 %.4752.1 to i64
  %584 = getelementptr inbounds i16, ptr %.0595, i64 %583
  %585 = icmp ult i32 %.25.1, 16777216
  br i1 %585, label %586, label %593

586:                                              ; preds = %582
  %587 = shl nuw i32 %.25.1, 8
  %588 = shl i32 %.26634.1, 8
  %589 = getelementptr inbounds i8, ptr %.23672.1, i64 1
  %590 = load i8, ptr %.23672.1, align 1, !tbaa !26
  %591 = zext i8 %590 to i32
  %592 = or disjoint i32 %588, %591
  br label %593

593:                                              ; preds = %586, %582
  %.23672.2 = phi ptr [ %589, %586 ], [ %.23672.1, %582 ]
  %.25633.2 = phi i32 [ %592, %586 ], [ %.26634.1, %582 ]
  %.24.2 = phi i32 [ %587, %586 ], [ %.25.1, %582 ]
  %594 = lshr i32 %.24.2, 11
  %595 = load i16, ptr %584, align 2, !tbaa !29
  %596 = zext i16 %595 to i32
  %597 = mul i32 %594, %596
  %598 = icmp ult i32 %.25633.2, %597
  %599 = shl nsw i32 %.4752.1, 1
  br i1 %598, label %606, label %600

600:                                              ; preds = %593
  %601 = sub i32 %.24.2, %597
  %602 = sub i32 %.25633.2, %597
  %603 = lshr i16 %595, 5
  %604 = sub i16 %595, %603
  %605 = or disjoint i32 %599, 1
  br label %611

606:                                              ; preds = %593
  %607 = sub nsw i32 2048, %596
  %608 = lshr i32 %607, 5
  %609 = trunc i32 %608 to i16
  %610 = add i16 %595, %609
  br label %611

611:                                              ; preds = %606, %600
  %.sink1043.2 = phi i16 [ %610, %606 ], [ %604, %600 ]
  %.4752.2 = phi i32 [ %599, %606 ], [ %605, %600 ]
  %.26634.2 = phi i32 [ %.25633.2, %606 ], [ %602, %600 ]
  %.25.2 = phi i32 [ %597, %606 ], [ %601, %600 ]
  store i16 %.sink1043.2, ptr %584, align 2
  br i1 %.not866.2, label %758, label %612, !llvm.loop !43

612:                                              ; preds = %611
  %613 = sext i32 %.4752.2 to i64
  %614 = getelementptr inbounds i16, ptr %.0595, i64 %613
  %615 = icmp ult i32 %.25.2, 16777216
  br i1 %615, label %616, label %623

616:                                              ; preds = %612
  %617 = shl nuw i32 %.25.2, 8
  %618 = shl i32 %.26634.2, 8
  %619 = getelementptr inbounds i8, ptr %.23672.2, i64 1
  %620 = load i8, ptr %.23672.2, align 1, !tbaa !26
  %621 = zext i8 %620 to i32
  %622 = or disjoint i32 %618, %621
  br label %623

623:                                              ; preds = %616, %612
  %.23672.3 = phi ptr [ %619, %616 ], [ %.23672.2, %612 ]
  %.25633.3 = phi i32 [ %622, %616 ], [ %.26634.2, %612 ]
  %.24.3 = phi i32 [ %617, %616 ], [ %.25.2, %612 ]
  %624 = lshr i32 %.24.3, 11
  %625 = load i16, ptr %614, align 2, !tbaa !29
  %626 = zext i16 %625 to i32
  %627 = mul i32 %624, %626
  %628 = icmp ult i32 %.25633.3, %627
  %629 = shl i32 %.4752.2, 1
  br i1 %628, label %636, label %630

630:                                              ; preds = %623
  %631 = sub i32 %.24.3, %627
  %632 = sub i32 %.25633.3, %627
  %633 = lshr i16 %625, 5
  %634 = sub i16 %625, %633
  %635 = or disjoint i32 %629, 1
  br label %641

636:                                              ; preds = %623
  %637 = sub nsw i32 2048, %626
  %638 = lshr i32 %637, 5
  %639 = trunc i32 %638 to i16
  %640 = add i16 %625, %639
  br label %641

641:                                              ; preds = %636, %630
  %.sink1043.3 = phi i16 [ %640, %636 ], [ %634, %630 ]
  %.4752.3 = phi i32 [ %629, %636 ], [ %635, %630 ]
  %.26634.3 = phi i32 [ %.25633.3, %636 ], [ %632, %630 ]
  %.25.3 = phi i32 [ %627, %636 ], [ %631, %630 ]
  store i16 %.sink1043.3, ptr %614, align 2
  %642 = sext i32 %.4752.3 to i64
  %643 = getelementptr inbounds i16, ptr %.0595, i64 %642
  %644 = icmp ult i32 %.25.3, 16777216
  br i1 %644, label %645, label %652

645:                                              ; preds = %641
  %646 = shl nuw i32 %.25.3, 8
  %647 = shl i32 %.26634.3, 8
  %648 = getelementptr inbounds i8, ptr %.23672.3, i64 1
  %649 = load i8, ptr %.23672.3, align 1, !tbaa !26
  %650 = zext i8 %649 to i32
  %651 = or disjoint i32 %647, %650
  br label %652

652:                                              ; preds = %645, %641
  %.23672.4 = phi ptr [ %648, %645 ], [ %.23672.3, %641 ]
  %.25633.4 = phi i32 [ %651, %645 ], [ %.26634.3, %641 ]
  %.24.4 = phi i32 [ %646, %645 ], [ %.25.3, %641 ]
  %653 = lshr i32 %.24.4, 11
  %654 = load i16, ptr %643, align 2, !tbaa !29
  %655 = zext i16 %654 to i32
  %656 = mul i32 %653, %655
  %657 = icmp ult i32 %.25633.4, %656
  %658 = shl i32 %.4752.3, 1
  br i1 %657, label %665, label %659

659:                                              ; preds = %652
  %660 = sub i32 %.24.4, %656
  %661 = sub i32 %.25633.4, %656
  %662 = lshr i16 %654, 5
  %663 = sub i16 %654, %662
  %664 = or disjoint i32 %658, 1
  br label %670

665:                                              ; preds = %652
  %666 = sub nsw i32 2048, %655
  %667 = lshr i32 %666, 5
  %668 = trunc i32 %667 to i16
  %669 = add i16 %654, %668
  br label %670

670:                                              ; preds = %665, %659
  %.sink1043.4 = phi i16 [ %669, %665 ], [ %663, %659 ]
  %.4752.4 = phi i32 [ %658, %665 ], [ %664, %659 ]
  %.26634.4 = phi i32 [ %.25633.4, %665 ], [ %661, %659 ]
  %.25.4 = phi i32 [ %656, %665 ], [ %660, %659 ]
  store i16 %.sink1043.4, ptr %643, align 2
  %671 = sext i32 %.4752.4 to i64
  %672 = getelementptr inbounds i16, ptr %.0595, i64 %671
  %673 = icmp ult i32 %.25.4, 16777216
  br i1 %673, label %674, label %681

674:                                              ; preds = %670
  %675 = shl nuw i32 %.25.4, 8
  %676 = shl i32 %.26634.4, 8
  %677 = getelementptr inbounds i8, ptr %.23672.4, i64 1
  %678 = load i8, ptr %.23672.4, align 1, !tbaa !26
  %679 = zext i8 %678 to i32
  %680 = or disjoint i32 %676, %679
  br label %681

681:                                              ; preds = %674, %670
  %.23672.5 = phi ptr [ %677, %674 ], [ %.23672.4, %670 ]
  %.25633.5 = phi i32 [ %680, %674 ], [ %.26634.4, %670 ]
  %.24.5 = phi i32 [ %675, %674 ], [ %.25.4, %670 ]
  %682 = lshr i32 %.24.5, 11
  %683 = load i16, ptr %672, align 2, !tbaa !29
  %684 = zext i16 %683 to i32
  %685 = mul i32 %682, %684
  %686 = icmp ult i32 %.25633.5, %685
  %687 = shl i32 %.4752.4, 1
  br i1 %686, label %694, label %688

688:                                              ; preds = %681
  %689 = sub i32 %.24.5, %685
  %690 = sub i32 %.25633.5, %685
  %691 = lshr i16 %683, 5
  %692 = sub i16 %683, %691
  %693 = or disjoint i32 %687, 1
  br label %699

694:                                              ; preds = %681
  %695 = sub nsw i32 2048, %684
  %696 = lshr i32 %695, 5
  %697 = trunc i32 %696 to i16
  %698 = add i16 %683, %697
  br label %699

699:                                              ; preds = %694, %688
  %.sink1043.5 = phi i16 [ %698, %694 ], [ %692, %688 ]
  %.4752.5 = phi i32 [ %687, %694 ], [ %693, %688 ]
  %.26634.5 = phi i32 [ %.25633.5, %694 ], [ %690, %688 ]
  %.25.5 = phi i32 [ %685, %694 ], [ %689, %688 ]
  store i16 %.sink1043.5, ptr %672, align 2
  %700 = sext i32 %.4752.5 to i64
  %701 = getelementptr inbounds i16, ptr %.0595, i64 %700
  %702 = icmp ult i32 %.25.5, 16777216
  br i1 %702, label %703, label %710

703:                                              ; preds = %699
  %704 = shl nuw i32 %.25.5, 8
  %705 = shl i32 %.26634.5, 8
  %706 = getelementptr inbounds i8, ptr %.23672.5, i64 1
  %707 = load i8, ptr %.23672.5, align 1, !tbaa !26
  %708 = zext i8 %707 to i32
  %709 = or disjoint i32 %705, %708
  br label %710

710:                                              ; preds = %703, %699
  %.23672.6 = phi ptr [ %706, %703 ], [ %.23672.5, %699 ]
  %.25633.6 = phi i32 [ %709, %703 ], [ %.26634.5, %699 ]
  %.24.6 = phi i32 [ %704, %703 ], [ %.25.5, %699 ]
  %711 = lshr i32 %.24.6, 11
  %712 = load i16, ptr %701, align 2, !tbaa !29
  %713 = zext i16 %712 to i32
  %714 = mul i32 %711, %713
  %715 = icmp ult i32 %.25633.6, %714
  %716 = shl i32 %.4752.5, 1
  br i1 %715, label %723, label %717

717:                                              ; preds = %710
  %718 = sub i32 %.24.6, %714
  %719 = sub i32 %.25633.6, %714
  %720 = lshr i16 %712, 5
  %721 = sub i16 %712, %720
  %722 = or disjoint i32 %716, 1
  br label %728

723:                                              ; preds = %710
  %724 = sub nsw i32 2048, %713
  %725 = lshr i32 %724, 5
  %726 = trunc i32 %725 to i16
  %727 = add i16 %712, %726
  br label %728

728:                                              ; preds = %723, %717
  %.sink1043.6 = phi i16 [ %727, %723 ], [ %721, %717 ]
  %.4752.6 = phi i32 [ %716, %723 ], [ %722, %717 ]
  %.26634.6 = phi i32 [ %.25633.6, %723 ], [ %719, %717 ]
  %.25.6 = phi i32 [ %714, %723 ], [ %718, %717 ]
  store i16 %.sink1043.6, ptr %701, align 2
  %729 = sext i32 %.4752.6 to i64
  %730 = getelementptr inbounds i16, ptr %.0595, i64 %729
  %731 = icmp ult i32 %.25.6, 16777216
  br i1 %731, label %732, label %739

732:                                              ; preds = %728
  %733 = shl nuw i32 %.25.6, 8
  %734 = shl i32 %.26634.6, 8
  %735 = getelementptr inbounds i8, ptr %.23672.6, i64 1
  %736 = load i8, ptr %.23672.6, align 1, !tbaa !26
  %737 = zext i8 %736 to i32
  %738 = or disjoint i32 %734, %737
  br label %739

739:                                              ; preds = %732, %728
  %.23672.7 = phi ptr [ %735, %732 ], [ %.23672.6, %728 ]
  %.25633.7 = phi i32 [ %738, %732 ], [ %.26634.6, %728 ]
  %.24.7 = phi i32 [ %733, %732 ], [ %.25.6, %728 ]
  %740 = lshr i32 %.24.7, 11
  %741 = load i16, ptr %730, align 2, !tbaa !29
  %742 = zext i16 %741 to i32
  %743 = mul i32 %740, %742
  %744 = icmp ult i32 %.25633.7, %743
  %745 = shl i32 %.4752.6, 1
  br i1 %744, label %752, label %746

746:                                              ; preds = %739
  %747 = sub i32 %.24.7, %743
  %748 = sub i32 %.25633.7, %743
  %749 = lshr i16 %741, 5
  %750 = sub i16 %741, %749
  %751 = or disjoint i32 %745, 1
  br label %757

752:                                              ; preds = %739
  %753 = sub nsw i32 2048, %742
  %754 = lshr i32 %753, 5
  %755 = trunc i32 %754 to i16
  %756 = add i16 %741, %755
  br label %757

757:                                              ; preds = %752, %746
  %.sink1043.7 = phi i16 [ %756, %752 ], [ %750, %746 ]
  %.4752.7 = phi i32 [ %745, %752 ], [ %751, %746 ]
  %.26634.7 = phi i32 [ %.25633.7, %752 ], [ %748, %746 ]
  %.25.7 = phi i32 [ %743, %752 ], [ %747, %746 ]
  store i16 %.sink1043.7, ptr %730, align 2
  br label %758

758:                                              ; preds = %757, %611
  %.4752.lcssa = phi i32 [ %.4752.2, %611 ], [ %.4752.7, %757 ]
  %.26634.lcssa = phi i32 [ %.26634.2, %611 ], [ %.26634.7, %757 ]
  %.25.lcssa = phi i32 [ %.25.2, %611 ], [ %.25.7, %757 ]
  %.23672.lcssa = phi ptr [ %.23672.2, %611 ], [ %.23672.7, %757 ]
  %.neg867 = shl nsw i32 -1, %.0597
  %759 = add nsw i32 %.0596, %.neg867
  %760 = add i32 %759, %.4752.lcssa
  %761 = icmp ult i32 %.4708, 4
  br i1 %761, label %762, label %1009

762:                                              ; preds = %758
  %763 = tail call i32 @llvm.smin.i32(i32 %760, i32 3)
  %764 = shl i32 %763, 6
  %765 = sext i32 %764 to i64
  %766 = getelementptr inbounds i16, ptr %141, i64 %765
  %767 = getelementptr inbounds i8, ptr %766, i64 2
  %768 = icmp ult i32 %.25.lcssa, 16777216
  br i1 %768, label %769, label %776

769:                                              ; preds = %762
  %770 = shl nuw i32 %.25.lcssa, 8
  %771 = shl i32 %.26634.lcssa, 8
  %772 = getelementptr inbounds i8, ptr %.23672.lcssa, i64 1
  %773 = load i8, ptr %.23672.lcssa, align 1, !tbaa !26
  %774 = zext i8 %773 to i32
  %775 = or disjoint i32 %771, %774
  br label %776

776:                                              ; preds = %769, %762
  %.25674 = phi ptr [ %772, %769 ], [ %.23672.lcssa, %762 ]
  %.28636 = phi i32 [ %775, %769 ], [ %.26634.lcssa, %762 ]
  %.27 = phi i32 [ %770, %769 ], [ %.25.lcssa, %762 ]
  %777 = lshr i32 %.27, 11
  %778 = load i16, ptr %767, align 2, !tbaa !29
  %779 = zext i16 %778 to i32
  %780 = mul i32 %777, %779
  %781 = icmp ult i32 %.28636, %780
  br i1 %781, label %782, label %787

782:                                              ; preds = %776
  %783 = sub nsw i32 2048, %779
  %784 = lshr i32 %783, 5
  %785 = trunc i32 %784 to i16
  %786 = add i16 %778, %785
  br label %792

787:                                              ; preds = %776
  %788 = sub i32 %.27, %780
  %789 = sub i32 %.28636, %780
  %790 = lshr i16 %778, 5
  %791 = sub i16 %778, %790
  br label %792

792:                                              ; preds = %787, %782
  %.sink1044 = phi i16 [ %786, %782 ], [ %791, %787 ]
  %.29637 = phi i32 [ %.28636, %782 ], [ %789, %787 ]
  %.28 = phi i32 [ %780, %782 ], [ %788, %787 ]
  %.1586 = phi i32 [ 2, %782 ], [ 3, %787 ]
  store i16 %.sink1044, ptr %767, align 2
  %793 = zext nneg i32 %.1586 to i64
  %794 = getelementptr inbounds i16, ptr %766, i64 %793
  %795 = icmp ult i32 %.28, 16777216
  br i1 %795, label %796, label %803

796:                                              ; preds = %792
  %797 = shl nuw i32 %.28, 8
  %798 = shl i32 %.29637, 8
  %799 = getelementptr inbounds i8, ptr %.25674, i64 1
  %800 = load i8, ptr %.25674, align 1, !tbaa !26
  %801 = zext i8 %800 to i32
  %802 = or disjoint i32 %798, %801
  br label %803

803:                                              ; preds = %796, %792
  %.25674.1 = phi ptr [ %799, %796 ], [ %.25674, %792 ]
  %.28636.1 = phi i32 [ %802, %796 ], [ %.29637, %792 ]
  %.27.1 = phi i32 [ %797, %796 ], [ %.28, %792 ]
  %804 = lshr i32 %.27.1, 11
  %805 = load i16, ptr %794, align 2, !tbaa !29
  %806 = zext i16 %805 to i32
  %807 = mul i32 %804, %806
  %808 = icmp ult i32 %.28636.1, %807
  %809 = shl nuw nsw i32 %.1586, 1
  br i1 %808, label %816, label %810

810:                                              ; preds = %803
  %811 = sub i32 %.27.1, %807
  %812 = sub i32 %.28636.1, %807
  %813 = lshr i16 %805, 5
  %814 = sub i16 %805, %813
  %815 = or disjoint i32 %809, 1
  br label %821

816:                                              ; preds = %803
  %817 = sub nsw i32 2048, %806
  %818 = lshr i32 %817, 5
  %819 = trunc i32 %818 to i16
  %820 = add i16 %805, %819
  br label %821

821:                                              ; preds = %816, %810
  %.sink1045 = phi i16 [ %820, %816 ], [ %814, %810 ]
  %.29637.1 = phi i32 [ %.28636.1, %816 ], [ %812, %810 ]
  %.28.1 = phi i32 [ %807, %816 ], [ %811, %810 ]
  %.1586.1 = phi i32 [ %809, %816 ], [ %815, %810 ]
  store i16 %.sink1045, ptr %794, align 2
  %822 = zext nneg i32 %.1586.1 to i64
  %823 = getelementptr inbounds i16, ptr %766, i64 %822
  %824 = icmp ult i32 %.28.1, 16777216
  br i1 %824, label %825, label %832

825:                                              ; preds = %821
  %826 = shl nuw i32 %.28.1, 8
  %827 = shl i32 %.29637.1, 8
  %828 = getelementptr inbounds i8, ptr %.25674.1, i64 1
  %829 = load i8, ptr %.25674.1, align 1, !tbaa !26
  %830 = zext i8 %829 to i32
  %831 = or disjoint i32 %827, %830
  br label %832

832:                                              ; preds = %825, %821
  %.25674.2 = phi ptr [ %828, %825 ], [ %.25674.1, %821 ]
  %.28636.2 = phi i32 [ %831, %825 ], [ %.29637.1, %821 ]
  %.27.2 = phi i32 [ %826, %825 ], [ %.28.1, %821 ]
  %833 = lshr i32 %.27.2, 11
  %834 = load i16, ptr %823, align 2, !tbaa !29
  %835 = zext i16 %834 to i32
  %836 = mul i32 %833, %835
  %837 = icmp ult i32 %.28636.2, %836
  %838 = shl nuw nsw i32 %.1586.1, 1
  br i1 %837, label %845, label %839

839:                                              ; preds = %832
  %840 = sub i32 %.27.2, %836
  %841 = sub i32 %.28636.2, %836
  %842 = lshr i16 %834, 5
  %843 = sub i16 %834, %842
  %844 = or disjoint i32 %838, 1
  br label %850

845:                                              ; preds = %832
  %846 = sub nsw i32 2048, %835
  %847 = lshr i32 %846, 5
  %848 = trunc i32 %847 to i16
  %849 = add i16 %834, %848
  br label %850

850:                                              ; preds = %845, %839
  %.sink1046 = phi i16 [ %849, %845 ], [ %843, %839 ]
  %.29637.2 = phi i32 [ %.28636.2, %845 ], [ %841, %839 ]
  %.28.2 = phi i32 [ %836, %845 ], [ %840, %839 ]
  %.1586.2 = phi i32 [ %838, %845 ], [ %844, %839 ]
  store i16 %.sink1046, ptr %823, align 2
  %851 = zext nneg i32 %.1586.2 to i64
  %852 = getelementptr inbounds i16, ptr %766, i64 %851
  %853 = icmp ult i32 %.28.2, 16777216
  br i1 %853, label %854, label %861

854:                                              ; preds = %850
  %855 = shl nuw i32 %.28.2, 8
  %856 = shl i32 %.29637.2, 8
  %857 = getelementptr inbounds i8, ptr %.25674.2, i64 1
  %858 = load i8, ptr %.25674.2, align 1, !tbaa !26
  %859 = zext i8 %858 to i32
  %860 = or disjoint i32 %856, %859
  br label %861

861:                                              ; preds = %854, %850
  %.25674.3 = phi ptr [ %857, %854 ], [ %.25674.2, %850 ]
  %.28636.3 = phi i32 [ %860, %854 ], [ %.29637.2, %850 ]
  %.27.3 = phi i32 [ %855, %854 ], [ %.28.2, %850 ]
  %862 = lshr i32 %.27.3, 11
  %863 = load i16, ptr %852, align 2, !tbaa !29
  %864 = zext i16 %863 to i32
  %865 = mul i32 %862, %864
  %866 = icmp ult i32 %.28636.3, %865
  %867 = shl nuw nsw i32 %.1586.2, 1
  br i1 %866, label %874, label %868

868:                                              ; preds = %861
  %869 = sub i32 %.27.3, %865
  %870 = sub i32 %.28636.3, %865
  %871 = lshr i16 %863, 5
  %872 = sub i16 %863, %871
  %873 = or disjoint i32 %867, 1
  br label %879

874:                                              ; preds = %861
  %875 = sub nsw i32 2048, %864
  %876 = lshr i32 %875, 5
  %877 = trunc i32 %876 to i16
  %878 = add i16 %863, %877
  br label %879

879:                                              ; preds = %874, %868
  %.sink1047 = phi i16 [ %878, %874 ], [ %872, %868 ]
  %.29637.3 = phi i32 [ %.28636.3, %874 ], [ %870, %868 ]
  %.28.3 = phi i32 [ %865, %874 ], [ %869, %868 ]
  %.1586.3 = phi i32 [ %867, %874 ], [ %873, %868 ]
  store i16 %.sink1047, ptr %852, align 2
  %880 = zext nneg i32 %.1586.3 to i64
  %881 = getelementptr inbounds i16, ptr %766, i64 %880
  %882 = icmp ult i32 %.28.3, 16777216
  br i1 %882, label %883, label %890

883:                                              ; preds = %879
  %884 = shl nuw i32 %.28.3, 8
  %885 = shl i32 %.29637.3, 8
  %886 = getelementptr inbounds i8, ptr %.25674.3, i64 1
  %887 = load i8, ptr %.25674.3, align 1, !tbaa !26
  %888 = zext i8 %887 to i32
  %889 = or disjoint i32 %885, %888
  br label %890

890:                                              ; preds = %883, %879
  %.25674.4 = phi ptr [ %886, %883 ], [ %.25674.3, %879 ]
  %.28636.4 = phi i32 [ %889, %883 ], [ %.29637.3, %879 ]
  %.27.4 = phi i32 [ %884, %883 ], [ %.28.3, %879 ]
  %891 = lshr i32 %.27.4, 11
  %892 = load i16, ptr %881, align 2, !tbaa !29
  %893 = zext i16 %892 to i32
  %894 = mul i32 %891, %893
  %895 = icmp ult i32 %.28636.4, %894
  %896 = shl nuw nsw i32 %.1586.3, 1
  br i1 %895, label %903, label %897

897:                                              ; preds = %890
  %898 = sub i32 %.27.4, %894
  %899 = sub i32 %.28636.4, %894
  %900 = lshr i16 %892, 5
  %901 = sub i16 %892, %900
  %902 = or disjoint i32 %896, 1
  br label %908

903:                                              ; preds = %890
  %904 = sub nsw i32 2048, %893
  %905 = lshr i32 %904, 5
  %906 = trunc i32 %905 to i16
  %907 = add i16 %892, %906
  br label %908

908:                                              ; preds = %903, %897
  %.sink1048 = phi i16 [ %907, %903 ], [ %901, %897 ]
  %.29637.4 = phi i32 [ %.28636.4, %903 ], [ %899, %897 ]
  %.28.4 = phi i32 [ %894, %903 ], [ %898, %897 ]
  %.1586.4 = phi i32 [ %896, %903 ], [ %902, %897 ]
  store i16 %.sink1048, ptr %881, align 2
  %909 = zext nneg i32 %.1586.4 to i64
  %910 = getelementptr inbounds i16, ptr %766, i64 %909
  %911 = icmp ult i32 %.28.4, 16777216
  br i1 %911, label %912, label %919

912:                                              ; preds = %908
  %913 = shl nuw i32 %.28.4, 8
  %914 = shl i32 %.29637.4, 8
  %915 = getelementptr inbounds i8, ptr %.25674.4, i64 1
  %916 = load i8, ptr %.25674.4, align 1, !tbaa !26
  %917 = zext i8 %916 to i32
  %918 = or disjoint i32 %914, %917
  br label %919

919:                                              ; preds = %912, %908
  %.25674.5 = phi ptr [ %915, %912 ], [ %.25674.4, %908 ]
  %.28636.5 = phi i32 [ %918, %912 ], [ %.29637.4, %908 ]
  %.27.5 = phi i32 [ %913, %912 ], [ %.28.4, %908 ]
  %920 = lshr i32 %.27.5, 11
  %921 = load i16, ptr %910, align 2, !tbaa !29
  %922 = zext i16 %921 to i32
  %923 = mul i32 %920, %922
  %924 = icmp ult i32 %.28636.5, %923
  %925 = shl nuw nsw i32 %.1586.4, 1
  br i1 %924, label %932, label %926

926:                                              ; preds = %919
  %927 = sub i32 %.27.5, %923
  %928 = sub i32 %.28636.5, %923
  %929 = lshr i16 %921, 5
  %930 = sub i16 %921, %929
  %931 = or disjoint i32 %925, 1
  br label %937

932:                                              ; preds = %919
  %933 = sub nsw i32 2048, %922
  %934 = lshr i32 %933, 5
  %935 = trunc i32 %934 to i16
  %936 = add i16 %921, %935
  br label %937

937:                                              ; preds = %932, %926
  %.sink1049 = phi i16 [ %936, %932 ], [ %930, %926 ]
  %.29637.5 = phi i32 [ %.28636.5, %932 ], [ %928, %926 ]
  %.28.5 = phi i32 [ %923, %932 ], [ %927, %926 ]
  %.1586.5 = phi i32 [ %925, %932 ], [ %931, %926 ]
  store i16 %.sink1049, ptr %910, align 2
  %938 = add nuw nsw i32 %.4708, 7
  %939 = add nsw i32 %.1586.5, -64
  %940 = icmp ugt i32 %.1586.5, 67
  br i1 %940, label %941, label %.loopexit951

941:                                              ; preds = %937
  %942 = lshr i32 %939, 1
  %943 = and i32 %.1586.5, 1
  %944 = or disjoint i32 %943, 2
  %945 = icmp ult i32 %.1586.5, 78
  br i1 %945, label %946, label %955

946:                                              ; preds = %941
  %947 = add nsw i32 %942, -1
  %948 = shl nuw i32 %944, %947
  %949 = zext i32 %948 to i64
  %950 = getelementptr inbounds i16, ptr %143, i64 %949
  %951 = zext nneg i32 %939 to i64
  %952 = sub nsw i64 0, %951
  %953 = getelementptr inbounds i16, ptr %950, i64 %952
  %954 = getelementptr inbounds i8, ptr %953, i64 -2
  br label %974

955:                                              ; preds = %941
  %956 = add nsw i32 %942, -5
  br label %957

957:                                              ; preds = %966, %955
  %.4763 = phi i32 [ %944, %955 ], [ %.5764, %966 ]
  %.26675 = phi ptr [ %.25674.5, %955 ], [ %.27676, %966 ]
  %.30638 = phi i32 [ %.29637.5, %955 ], [ %.32640, %966 ]
  %.29 = phi i32 [ %.28.5, %955 ], [ %967, %966 ]
  %.0574 = phi i32 [ %956, %955 ], [ %971, %966 ]
  %958 = icmp ult i32 %.29, 16777216
  br i1 %958, label %959, label %966

959:                                              ; preds = %957
  %960 = shl nuw i32 %.29, 8
  %961 = shl i32 %.30638, 8
  %962 = getelementptr inbounds i8, ptr %.26675, i64 1
  %963 = load i8, ptr %.26675, align 1, !tbaa !26
  %964 = zext i8 %963 to i32
  %965 = or disjoint i32 %961, %964
  br label %966

966:                                              ; preds = %959, %957
  %.27676 = phi ptr [ %962, %959 ], [ %.26675, %957 ]
  %.31639 = phi i32 [ %965, %959 ], [ %.30638, %957 ]
  %.30 = phi i32 [ %960, %959 ], [ %.29, %957 ]
  %967 = lshr i32 %.30, 1
  %968 = shl i32 %.4763, 1
  %.not869 = icmp uge i32 %.31639, %967
  %969 = zext i1 %.not869 to i32
  %.5764 = or disjoint i32 %968, %969
  %970 = select i1 %.not869, i32 %967, i32 0
  %.32640 = sub i32 %.31639, %970
  %971 = add nsw i32 %.0574, -1
  %.not870 = icmp eq i32 %971, 0
  br i1 %.not870, label %972, label %957, !llvm.loop !44

972:                                              ; preds = %966
  %973 = shl i32 %.5764, 4
  br label %974

974:                                              ; preds = %972, %946
  %.6765 = phi i32 [ %948, %946 ], [ %973, %972 ]
  %.1702 = phi ptr [ %954, %946 ], [ %142, %972 ]
  %.28677 = phi ptr [ %.25674.5, %946 ], [ %.27676, %972 ]
  %.33641 = phi i32 [ %.29637.5, %946 ], [ %.32640, %972 ]
  %.31 = phi i32 [ %.28.5, %946 ], [ %967, %972 ]
  %.1575 = phi i32 [ %947, %946 ], [ 4, %972 ]
  br label %975

975:                                              ; preds = %1005, %974
  %.7766 = phi i32 [ %.6765, %974 ], [ %.8767, %1005 ]
  %.29678 = phi ptr [ %.28677, %974 ], [ %.30679, %1005 ]
  %.34642 = phi i32 [ %.33641, %974 ], [ %.36644, %1005 ]
  %.32 = phi i32 [ %.31, %974 ], [ %.34, %1005 ]
  %.2576 = phi i32 [ %.1575, %974 ], [ %1007, %1005 ]
  %.0573 = phi i32 [ 1, %974 ], [ %1006, %1005 ]
  %.0571 = phi i32 [ 1, %974 ], [ %.1572, %1005 ]
  %976 = sext i32 %.0571 to i64
  %977 = getelementptr inbounds i16, ptr %.1702, i64 %976
  %978 = icmp ult i32 %.32, 16777216
  br i1 %978, label %979, label %986

979:                                              ; preds = %975
  %980 = shl nuw i32 %.32, 8
  %981 = shl i32 %.34642, 8
  %982 = getelementptr inbounds i8, ptr %.29678, i64 1
  %983 = load i8, ptr %.29678, align 1, !tbaa !26
  %984 = zext i8 %983 to i32
  %985 = or disjoint i32 %981, %984
  br label %986

986:                                              ; preds = %979, %975
  %.30679 = phi ptr [ %982, %979 ], [ %.29678, %975 ]
  %.35643 = phi i32 [ %985, %979 ], [ %.34642, %975 ]
  %.33 = phi i32 [ %980, %979 ], [ %.32, %975 ]
  %987 = lshr i32 %.33, 11
  %988 = load i16, ptr %977, align 2, !tbaa !29
  %989 = zext i16 %988 to i32
  %990 = mul i32 %987, %989
  %991 = icmp ult i32 %.35643, %990
  %992 = shl i32 %.0571, 1
  br i1 %991, label %993, label %998

993:                                              ; preds = %986
  %994 = sub nsw i32 2048, %989
  %995 = lshr i32 %994, 5
  %996 = trunc i32 %995 to i16
  %997 = add i16 %988, %996
  br label %1005

998:                                              ; preds = %986
  %999 = sub i32 %.33, %990
  %1000 = sub i32 %.35643, %990
  %1001 = lshr i16 %988, 5
  %1002 = sub i16 %988, %1001
  %1003 = or disjoint i32 %992, 1
  %1004 = or i32 %.0573, %.7766
  br label %1005

1005:                                             ; preds = %998, %993
  %.sink1050 = phi i16 [ %997, %993 ], [ %1002, %998 ]
  %.8767 = phi i32 [ %.7766, %993 ], [ %1004, %998 ]
  %.36644 = phi i32 [ %.35643, %993 ], [ %1000, %998 ]
  %.34 = phi i32 [ %990, %993 ], [ %999, %998 ]
  %.1572 = phi i32 [ %992, %993 ], [ %1003, %998 ]
  store i16 %.sink1050, ptr %977, align 2
  %1006 = shl i32 %.0573, 1
  %1007 = add nsw i32 %.2576, -1
  %.not871 = icmp eq i32 %1007, 0
  br i1 %.not871, label %.loopexit951, label %975, !llvm.loop !45

.loopexit951:                                     ; preds = %1005, %937
  %.9768 = phi i32 [ %939, %937 ], [ %.8767, %1005 ]
  %.31680 = phi ptr [ %.25674.5, %937 ], [ %.30679, %1005 ]
  %.37645 = phi i32 [ %.29637.5, %937 ], [ %.36644, %1005 ]
  %.35 = phi i32 [ %.28.5, %937 ], [ %.34, %1005 ]
  %1008 = add i32 %.9768, 1
  %.not872 = icmp eq i32 %1008, 0
  br i1 %.not872, label %.thread920, label %1009

1009:                                             ; preds = %.loopexit951, %758
  %.10769 = phi i32 [ %1008, %.loopexit951 ], [ %.3762, %758 ]
  %.5709 = phi i32 [ %938, %.loopexit951 ], [ %.4708, %758 ]
  %.32681 = phi ptr [ %.31680, %.loopexit951 ], [ %.23672.lcssa, %758 ]
  %.38646 = phi i32 [ %.37645, %.loopexit951 ], [ %.26634.lcssa, %758 ]
  %.36 = phi i32 [ %.35, %.loopexit951 ], [ %.25.lcssa, %758 ]
  %1010 = icmp ugt i32 %.10769, %.1739
  br i1 %1010, label %.thread902, label %1011

1011:                                             ; preds = %1009
  %1012 = add nsw i32 %760, 2
  %1013 = sub i32 %.0736, %.1739
  %1014 = add i32 %1012, %.1739
  br label %1015

1015:                                             ; preds = %1015, %1011
  %.3791 = phi i32 [ %.1789, %1011 ], [ %1026, %1015 ]
  %.7755 = phi i32 [ %1012, %1011 ], [ %1025, %1015 ]
  %.4732 = phi i32 [ %.2730, %1011 ], [ %spec.store.select6, %1015 ]
  %1016 = sub i32 %.4732, %.10769
  %.not873 = icmp ult i32 %1016, %.0736
  %1017 = select i1 %.not873, i32 0, i32 %.0736
  %spec.select887 = add i32 %1017, %1016
  %1018 = zext i32 %spec.select887 to i64
  %1019 = getelementptr inbounds i8, ptr %.0737, i64 %1018
  %1020 = load i8, ptr %1019, align 1, !tbaa !26
  %1021 = zext i32 %.4732 to i64
  %1022 = getelementptr inbounds i8, ptr %.0737, i64 %1021
  store i8 %1020, ptr %1022, align 1, !tbaa !26
  %1023 = add i32 %.4732, 1
  %1024 = icmp eq i32 %1023, %.0736
  %spec.store.select6 = select i1 %1024, i32 0, i32 %1023
  %1025 = add nsw i32 %.7755, -1
  %1026 = add i32 %.3791, 1
  %1027 = zext i32 %.3791 to i64
  %1028 = getelementptr inbounds i8, ptr %4, i64 %1027
  store i8 %1020, ptr %1028, align 1, !tbaa !26
  %1029 = icmp ne i32 %1025, 0
  %1030 = icmp ult i32 %1026, %5
  %1031 = and i1 %1030, %1029
  br i1 %1031, label %1015, label %.loopexit.loopexit, !llvm.loop !46

.loopexit.loopexit:                               ; preds = %1015
  %1032 = icmp ugt i32 %1013, %1012
  %.5743 = select i1 %1032, i32 %1014, i32 %.0736
  br label %.backedge.outer

.thread920:                                       ; preds = %.loopexit951, %._crit_edge985, %189
  %.39950 = phi i32 [ %.1602, %189 ], [ %.1602, %._crit_edge985 ], [ %.35, %.loopexit951 ]
  %.41949 = phi i32 [ %.2610, %189 ], [ %.2610, %._crit_edge985 ], [ %.37645, %.loopexit951 ]
  %.35684948 = phi ptr [ %14, %._crit_edge985 ], [ %.4653, %189 ], [ %.31680, %.loopexit951 ]
  %.6700947 = phi i32 [ %.3697.lcssa, %._crit_edge985 ], [ %.5699, %189 ], [ %.5699, %.loopexit951 ]
  %.8712946 = phi i32 [ %.1705, %189 ], [ %.1705, %._crit_edge985 ], [ %938, %.loopexit951 ]
  %.10758943 = phi i32 [ %.2750.ph, %189 ], [ %.2750.ph, %._crit_edge985 ], [ -1, %.loopexit951 ]
  %.13772942 = phi i32 [ %.1760.ph, %189 ], [ %.1760.ph, %._crit_edge985 ], [ 0, %.loopexit951 ]
  %.6779941 = phi i32 [ %.1774.ph, %189 ], [ %.1774.ph, %._crit_edge985 ], [ %.3776, %.loopexit951 ]
  %.7787940 = phi i32 [ %.1781.ph, %189 ], [ %.1781.ph, %._crit_edge985 ], [ %.4784, %.loopexit951 ]
  %.8803938 = phi i32 [ %.1796.ph, %189 ], [ %.1796.ph, %._crit_edge985 ], [ %.5800, %.loopexit951 ]
  %1033 = icmp ult i32 %.39950, 16777216
  br i1 %1033, label %1034, label %1041

1034:                                             ; preds = %.thread920
  %1035 = shl nuw i32 %.39950, 8
  %1036 = shl i32 %.41949, 8
  %1037 = getelementptr inbounds i8, ptr %.35684948, i64 1
  %1038 = load i8, ptr %.35684948, align 1, !tbaa !26
  %1039 = zext i8 %1038 to i32
  %1040 = or disjoint i32 %1036, %1039
  br label %1041

1041:                                             ; preds = %1034, %.thread920
  %.36685 = phi ptr [ %1037, %1034 ], [ %.35684948, %.thread920 ]
  %.42 = phi i32 [ %1040, %1034 ], [ %.41949, %.thread920 ]
  %.40 = phi i32 [ %1035, %1034 ], [ %.39950, %.thread920 ]
  %1042 = ptrtoint ptr %.36685 to i64
  %.neg876 = sub i64 %132, %1042
  %.neg877 = trunc i64 %.neg876 to i32
  %1043 = add i32 %.6700947, %.neg877
  %1044 = icmp slt i32 %1043, 0
  br i1 %1044, label %.thread902, label %.preheader

.preheader:                                       ; preds = %1041
  %.not1004 = icmp eq i32 %1043, 0
  br i1 %.not1004, label %._crit_edge1001, label %iter.check1227

iter.check1227:                                   ; preds = %.preheader
  %wide.trip.count1041 = zext nneg i32 %1043 to i64
  %min.iters.check1225 = icmp ult i32 %1043, 8
  %diff.check1222 = icmp ult i64 %.neg876, 32
  %or.cond1255 = or i1 %min.iters.check1225, %diff.check1222
  br i1 %or.cond1255, label %.lr.ph1000.preheader, label %vector.main.loop.iter.check1229

vector.main.loop.iter.check1229:                  ; preds = %iter.check1227
  %min.iters.check1228 = icmp ult i32 %1043, 32
  br i1 %min.iters.check1228, label %vec.epilog.ph1241, label %vector.ph1230

vector.ph1230:                                    ; preds = %vector.main.loop.iter.check1229
  %n.vec1232 = and i64 %wide.trip.count1041, 2147483616
  br label %vector.body1233

vector.body1233:                                  ; preds = %vector.body1233, %vector.ph1230
  %index1234 = phi i64 [ 0, %vector.ph1230 ], [ %index.next1237, %vector.body1233 ]
  %1045 = getelementptr inbounds i8, ptr %.36685, i64 %index1234
  %1046 = getelementptr inbounds i8, ptr %1045, i64 16
  %wide.load1235 = load <16 x i8>, ptr %1045, align 1, !tbaa !26
  %wide.load1236 = load <16 x i8>, ptr %1046, align 1, !tbaa !26
  %1047 = getelementptr inbounds [64 x i8], ptr %14, i64 0, i64 %index1234
  %1048 = getelementptr inbounds i8, ptr %1047, i64 16
  store <16 x i8> %wide.load1235, ptr %1047, align 1, !tbaa !26
  store <16 x i8> %wide.load1236, ptr %1048, align 1, !tbaa !26
  %index.next1237 = add nuw i64 %index1234, 32
  %1049 = icmp eq i64 %index.next1237, %n.vec1232
  br i1 %1049, label %middle.block1223, label %vector.body1233, !llvm.loop !47

middle.block1223:                                 ; preds = %vector.body1233
  %cmp.n1238 = icmp eq i64 %n.vec1232, %wide.trip.count1041
  br i1 %cmp.n1238, label %._crit_edge1001, label %vec.epilog.iter.check1242

vec.epilog.iter.check1242:                        ; preds = %middle.block1223
  %n.vec.remaining1243 = and i64 %wide.trip.count1041, 24
  %min.epilog.iters.check1244 = icmp eq i64 %n.vec.remaining1243, 0
  br i1 %min.epilog.iters.check1244, label %.lr.ph1000.preheader, label %vec.epilog.ph1241

vec.epilog.ph1241:                                ; preds = %vector.main.loop.iter.check1229, %vec.epilog.iter.check1242
  %vec.epilog.resume.val1245 = phi i64 [ %n.vec1232, %vec.epilog.iter.check1242 ], [ 0, %vector.main.loop.iter.check1229 ]
  %n.vec1247 = and i64 %wide.trip.count1041, 2147483640
  br label %vec.epilog.vector.body1249

vec.epilog.vector.body1249:                       ; preds = %vec.epilog.vector.body1249, %vec.epilog.ph1241
  %index1250 = phi i64 [ %vec.epilog.resume.val1245, %vec.epilog.ph1241 ], [ %index.next1252, %vec.epilog.vector.body1249 ]
  %1050 = getelementptr inbounds i8, ptr %.36685, i64 %index1250
  %wide.load1251 = load <8 x i8>, ptr %1050, align 1, !tbaa !26
  %1051 = getelementptr inbounds [64 x i8], ptr %14, i64 0, i64 %index1250
  store <8 x i8> %wide.load1251, ptr %1051, align 1, !tbaa !26
  %index.next1252 = add nuw i64 %index1250, 8
  %1052 = icmp eq i64 %index.next1252, %n.vec1247
  br i1 %1052, label %vec.epilog.middle.block1239, label %vec.epilog.vector.body1249, !llvm.loop !48

vec.epilog.middle.block1239:                      ; preds = %vec.epilog.vector.body1249
  %cmp.n1253 = icmp eq i64 %n.vec1247, %wide.trip.count1041
  br i1 %cmp.n1253, label %._crit_edge1001, label %.lr.ph1000.preheader

.lr.ph1000.preheader:                             ; preds = %vec.epilog.middle.block1239, %iter.check1227, %vec.epilog.iter.check1242
  %indvars.iv1038.ph = phi i64 [ 0, %iter.check1227 ], [ %n.vec1232, %vec.epilog.iter.check1242 ], [ %n.vec1247, %vec.epilog.middle.block1239 ]
  %xtraiter1371 = and i64 %wide.trip.count1041, 3
  %lcmp.mod1372.not = icmp eq i64 %xtraiter1371, 0
  br i1 %lcmp.mod1372.not, label %.lr.ph1000.prol.loopexit, label %.lr.ph1000.prol

.lr.ph1000.prol:                                  ; preds = %.lr.ph1000.preheader, %.lr.ph1000.prol
  %indvars.iv1038.prol = phi i64 [ %indvars.iv.next1039.prol, %.lr.ph1000.prol ], [ %indvars.iv1038.ph, %.lr.ph1000.preheader ]
  %prol.iter1373 = phi i64 [ %prol.iter1373.next, %.lr.ph1000.prol ], [ 0, %.lr.ph1000.preheader ]
  %1053 = getelementptr inbounds i8, ptr %.36685, i64 %indvars.iv1038.prol
  %1054 = load i8, ptr %1053, align 1, !tbaa !26
  %1055 = getelementptr inbounds [64 x i8], ptr %14, i64 0, i64 %indvars.iv1038.prol
  store i8 %1054, ptr %1055, align 1, !tbaa !26
  %indvars.iv.next1039.prol = add nuw nsw i64 %indvars.iv1038.prol, 1
  %prol.iter1373.next = add i64 %prol.iter1373, 1
  %prol.iter1373.cmp.not = icmp eq i64 %prol.iter1373.next, %xtraiter1371
  br i1 %prol.iter1373.cmp.not, label %.lr.ph1000.prol.loopexit, label %.lr.ph1000.prol, !llvm.loop !49

.lr.ph1000.prol.loopexit:                         ; preds = %.lr.ph1000.prol, %.lr.ph1000.preheader
  %indvars.iv1038.unr = phi i64 [ %indvars.iv1038.ph, %.lr.ph1000.preheader ], [ %indvars.iv.next1039.prol, %.lr.ph1000.prol ]
  %1056 = sub nsw i64 %indvars.iv1038.ph, %wide.trip.count1041
  %1057 = icmp ugt i64 %1056, -4
  br i1 %1057, label %._crit_edge1001, label %.lr.ph1000

.lr.ph1000:                                       ; preds = %.lr.ph1000.prol.loopexit, %.lr.ph1000
  %indvars.iv1038 = phi i64 [ %indvars.iv.next1039.3, %.lr.ph1000 ], [ %indvars.iv1038.unr, %.lr.ph1000.prol.loopexit ]
  %1058 = getelementptr inbounds i8, ptr %.36685, i64 %indvars.iv1038
  %1059 = load i8, ptr %1058, align 1, !tbaa !26
  %1060 = getelementptr inbounds [64 x i8], ptr %14, i64 0, i64 %indvars.iv1038
  store i8 %1059, ptr %1060, align 1, !tbaa !26
  %indvars.iv.next1039 = add nuw nsw i64 %indvars.iv1038, 1
  %1061 = getelementptr inbounds i8, ptr %.36685, i64 %indvars.iv.next1039
  %1062 = load i8, ptr %1061, align 1, !tbaa !26
  %1063 = getelementptr inbounds [64 x i8], ptr %14, i64 0, i64 %indvars.iv.next1039
  store i8 %1062, ptr %1063, align 1, !tbaa !26
  %indvars.iv.next1039.1 = add nuw nsw i64 %indvars.iv1038, 2
  %1064 = getelementptr inbounds i8, ptr %.36685, i64 %indvars.iv.next1039.1
  %1065 = load i8, ptr %1064, align 1, !tbaa !26
  %1066 = getelementptr inbounds [64 x i8], ptr %14, i64 0, i64 %indvars.iv.next1039.1
  store i8 %1065, ptr %1066, align 1, !tbaa !26
  %indvars.iv.next1039.2 = add nuw nsw i64 %indvars.iv1038, 3
  %1067 = getelementptr inbounds i8, ptr %.36685, i64 %indvars.iv.next1039.2
  %1068 = load i8, ptr %1067, align 1, !tbaa !26
  %1069 = getelementptr inbounds [64 x i8], ptr %14, i64 0, i64 %indvars.iv.next1039.2
  store i8 %1068, ptr %1069, align 1, !tbaa !26
  %indvars.iv.next1039.3 = add nuw nsw i64 %indvars.iv1038, 4
  %exitcond1042.not.3 = icmp eq i64 %indvars.iv.next1039.3, %wide.trip.count1041
  br i1 %exitcond1042.not.3, label %._crit_edge1001, label %.lr.ph1000, !llvm.loop !50

._crit_edge1001:                                  ; preds = %.lr.ph1000.prol.loopexit, %.lr.ph1000, %middle.block1223, %vec.epilog.middle.block1239, %.preheader
  store i32 %1043, ptr %15, align 8, !tbaa !13
  store i32 %.40, ptr %10, align 4, !tbaa !5
  store i32 %.42, ptr %12, align 8, !tbaa !12
  store i32 %.2730, ptr %46, align 4, !tbaa !25
  %1070 = add i32 %.1789, %.074710701112
  store i32 %1070, ptr %38, align 8, !tbaa !21
  store i32 %.1739, ptr %40, align 4, !tbaa !22
  store i32 %.13772942, ptr %21, align 8, !tbaa !16
  store i32 %.6779941, ptr %23, align 4, !tbaa !16
  store i32 %.7787940, ptr %25, align 8, !tbaa !16
  store i32 %.8803938, ptr %27, align 4, !tbaa !16
  store i32 %.8712946, ptr %19, align 8, !tbaa !15
  store i32 %.10758943, ptr %36, align 4, !tbaa !20
  %1071 = load i8, ptr %9, align 1, !tbaa !26
  %1072 = getelementptr inbounds i8, ptr %0, i64 144
  store i8 %1071, ptr %1072, align 8, !tbaa !26
  store i32 %.1789, ptr %6, align 4, !tbaa !16
  br label %.thread902

.thread902:                                       ; preds = %149, %384, %1009, %1041, %8, %._crit_edge1001, %71
  %.6 = phi i32 [ %72, %71 ], [ 0, %._crit_edge1001 ], [ 0, %8 ], [ 1, %1041 ], [ 1, %1009 ], [ 1, %384 ], [ 1, %149 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #3
  ret i32 %.6
}

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.i32(i32, i32) #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umin.i32(i32, i32) #2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !8, i64 100}
!6 = !{!"_CLzmaDecoderState", !7, i64 0, !11, i64 16, !11, i64 24, !9, i64 32, !8, i64 96, !8, i64 100, !8, i64 104, !8, i64 108, !8, i64 112, !8, i64 116, !9, i64 120, !8, i64 136, !8, i64 140, !9, i64 144}
!7 = !{!"_CLzmaProperties", !8, i64 0, !8, i64 4, !8, i64 8, !8, i64 12}
!8 = !{!"int", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C/C++ TBAA"}
!11 = !{!"any pointer", !9, i64 0}
!12 = !{!6, !8, i64 104}
!13 = !{!6, !8, i64 96}
!14 = !{!6, !11, i64 16}
!15 = !{!6, !8, i64 136}
!16 = !{!8, !8, i64 0}
!17 = !{!6, !8, i64 8}
!18 = !{!6, !8, i64 4}
!19 = !{!6, !8, i64 0}
!20 = !{!6, !8, i64 140}
!21 = !{!6, !8, i64 112}
!22 = !{!6, !8, i64 116}
!23 = !{!6, !11, i64 24}
!24 = !{!6, !8, i64 12}
!25 = !{!6, !8, i64 108}
!26 = !{!9, !9, i64 0}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = !{!30, !30, i64 0}
!30 = !{!"short", !9, i64 0}
!31 = distinct !{!31, !28, !32, !33}
!32 = !{!"llvm.loop.isvectorized", i32 1}
!33 = !{!"llvm.loop.unroll.runtime.disable"}
!34 = distinct !{!34, !28}
!35 = distinct !{!35, !28, !32, !33}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.unroll.disable"}
!38 = distinct !{!38, !28, !32, !33}
!39 = distinct !{!39, !28, !32}
!40 = distinct !{!40, !28}
!41 = distinct !{!41, !28}
!42 = distinct !{!42, !28}
!43 = distinct !{!43, !28}
!44 = distinct !{!44, !28}
!45 = distinct !{!45, !28}
!46 = distinct !{!46, !28}
!47 = distinct !{!47, !28, !32, !33}
!48 = distinct !{!48, !28, !32, !33}
!49 = distinct !{!49, !37}
!50 = distinct !{!50, !28, !32}


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