; LLVM IR from mncoppola/rpef :: utilities_src/squashfs2.1/squashfs-2.1-r2 (read_fs)

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

@swap = external dso_local global i32, align 4
@stderr = external global ptr, align 8
@.str.4 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [156 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [2 x i8], align 1

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

declare void @read_bytes(i32 noundef, i32 noundef, i32 noundef, ptr noundef) #1

; Function Attrs: nounwind
declare i32 @fprintf(ptr noundef, ptr noundef, ...) #2

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4

; Function Attrs: nounwind uwtable
define dso_local i32 @read_super(i32 noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) #5 {
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca %struct.squashfs_super_block, align 1
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i64, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i64, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i64, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i64, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i64, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i64, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i64, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i64, align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i64, align 8
  %54 = alloca ptr, align 8
  %55 = alloca ptr, align 8
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i64, align 8
  %59 = alloca ptr, align 8
  %60 = alloca ptr, align 8
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i64, align 8
  %64 = alloca ptr, align 8
  %65 = alloca ptr, align 8
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca i64, align 8
  %69 = alloca ptr, align 8
  %70 = alloca ptr, align 8
  %71 = alloca i32, align 4
  %72 = alloca i32, align 4
  %73 = alloca i64, align 8
  %74 = alloca ptr, align 8
  %75 = alloca ptr, align 8
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca i64, align 8
  %79 = alloca ptr, align 8
  %80 = alloca ptr, align 8
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca i64, align 8
  %84 = alloca ptr, align 8
  %85 = alloca ptr, align 8
  %86 = alloca i32, align 4
  %87 = alloca i32, align 4
  %88 = alloca i64, align 8
  %89 = alloca ptr, align 8
  %90 = alloca ptr, align 8
  %91 = alloca i32, align 4
  %92 = alloca i32, align 4
  %93 = alloca i64, align 8
  %94 = alloca ptr, align 8
  %95 = alloca ptr, align 8
  %96 = alloca i32, align 4
  %97 = alloca i32, align 4
  %98 = alloca i64, align 8
  %99 = alloca ptr, align 8
  %100 = alloca ptr, align 8
  %101 = alloca i32, align 4
  %102 = alloca i32, align 4
  %103 = alloca i64, align 8
  %104 = alloca ptr, align 8
  %105 = alloca ptr, align 8
  store i32 %0, ptr %6, align 4, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !9
  store ptr %2, ptr %8, align 8, !tbaa !9
  store ptr %3, ptr %9, align 8, !tbaa !9
  %106 = load i32, ptr %6, align 4, !tbaa !5
  %107 = load ptr, ptr %7, align 8, !tbaa !9
  call void @read_bytes(i32 noundef %106, i32 noundef 0, i32 noundef 63, ptr noundef %107)
  store i32 0, ptr @swap, align 4, !tbaa !5
  %108 = load ptr, ptr %7, align 8, !tbaa !9
  %109 = getelementptr inbounds %struct.squashfs_super_block, ptr %108, i32 0, i32 0
  %110 = load i32, ptr %109, align 1, !tbaa !11
  %111 = icmp ne i32 %110, 1936814952
  br i1 %111, label %112, label %643

112:                                              ; preds = %4
  %113 = load ptr, ptr %7, align 8, !tbaa !9
  %114 = getelementptr inbounds %struct.squashfs_super_block, ptr %113, i32 0, i32 0
  %115 = load i32, ptr %114, align 1, !tbaa !11
  %116 = icmp eq i32 %115, 1752396147
  br i1 %116, label %117, label %638

117:                                              ; preds = %112
  call void @llvm.lifetime.start.p0(i64 63, ptr %10) #6
  %118 = load ptr, ptr @stderr, align 8, !tbaa !9
  %119 = load ptr, ptr %9, align 8, !tbaa !9
  %120 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %118, ptr noundef @.str.4, ptr noundef %119) #6
  call void @llvm.memset.p0.i64(ptr align 1 %10, i8 0, i64 63, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  store i32 0, ptr %12, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #6
  store i64 0, ptr %13, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #6
  %121 = load ptr, ptr %7, align 8, !tbaa !9
  %122 = getelementptr inbounds i8, ptr %121, i64 0
  store ptr %122, ptr %14, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #6
  %123 = getelementptr inbounds i8, ptr %13, i64 7
  store ptr %123, ptr %15, align 8, !tbaa !9
  store i32 0, ptr %11, align 4, !tbaa !5
  br label %124

124:                                              ; preds = %135, %117
  %125 = load i32, ptr %11, align 4, !tbaa !5
  %126 = load i32, ptr %12, align 4, !tbaa !5
  %127 = add nsw i32 32, %126
  %128 = icmp slt i32 %125, %127
  br i1 %128, label %129, label %138

129:                                              ; preds = %124
  %130 = load ptr, ptr %14, align 8, !tbaa !9
  %131 = getelementptr inbounds i8, ptr %130, i32 1
  store ptr %131, ptr %14, align 8, !tbaa !9
  %132 = load i8, ptr %130, align 1, !tbaa !15
  %133 = load ptr, ptr %15, align 8, !tbaa !9
  %134 = getelementptr inbounds i8, ptr %133, i32 -1
  store ptr %134, ptr %15, align 8, !tbaa !9
  store i8 %132, ptr %133, align 1, !tbaa !15
  br label %135

135:                                              ; preds = %129
  %136 = load i32, ptr %11, align 4, !tbaa !5
  %137 = add nsw i32 %136, 8
  store i32 %137, ptr %11, align 4, !tbaa !5
  br label %124, !llvm.loop !16

138:                                              ; preds = %124
  %139 = load i64, ptr %13, align 8, !tbaa !14
  %140 = load i32, ptr %12, align 4, !tbaa !5
  %141 = sub nsw i32 32, %140
  %142 = zext i32 %141 to i64
  %143 = lshr i64 %139, %142
  %144 = trunc i64 %143 to i32
  %145 = getelementptr inbounds %struct.squashfs_super_block, ptr %10, i32 0, i32 0
  store i32 %144, ptr %145, align 1, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  store i32 0, ptr %17, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #6
  store i64 0, ptr %18, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #6
  %146 = load ptr, ptr %7, align 8, !tbaa !9
  %147 = getelementptr inbounds i8, ptr %146, i64 4
  store ptr %147, ptr %19, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #6
  %148 = getelementptr inbounds i8, ptr %18, i64 7
  store ptr %148, ptr %20, align 8, !tbaa !9
  store i32 0, ptr %16, align 4, !tbaa !5
  br label %149

149:                                              ; preds = %160, %138
  %150 = load i32, ptr %16, align 4, !tbaa !5
  %151 = load i32, ptr %17, align 4, !tbaa !5
  %152 = add nsw i32 32, %151
  %153 = icmp slt i32 %150, %152
  br i1 %153, label %154, label %163

154:                                              ; preds = %149
  %155 = load ptr, ptr %19, align 8, !tbaa !9
  %156 = getelementptr inbounds i8, ptr %155, i32 1
  store ptr %156, ptr %19, align 8, !tbaa !9
  %157 = load i8, ptr %155, align 1, !tbaa !15
  %158 = load ptr, ptr %20, align 8, !tbaa !9
  %159 = getelementptr inbounds i8, ptr %158, i32 -1
  store ptr %159, ptr %20, align 8, !tbaa !9
  store i8 %157, ptr %158, align 1, !tbaa !15
  br label %160

160:                                              ; preds = %154
  %161 = load i32, ptr %16, align 4, !tbaa !5
  %162 = add nsw i32 %161, 8
  store i32 %162, ptr %16, align 4, !tbaa !5
  br label %149, !llvm.loop !18

163:                                              ; preds = %149
  %164 = load i64, ptr %18, align 8, !tbaa !14
  %165 = load i32, ptr %17, align 4, !tbaa !5
  %166 = sub nsw i32 32, %165
  %167 = zext i32 %166 to i64
  %168 = lshr i64 %164, %167
  %169 = trunc i64 %168 to i32
  %170 = getelementptr inbounds %struct.squashfs_super_block, ptr %10, i32 0, i32 1
  store i32 %169, ptr %170, align 1, !tbaa !19
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  store i32 0, ptr %22, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #6
  store i64 0, ptr %23, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #6
  %171 = load ptr, ptr %7, align 8, !tbaa !9
  %172 = getelementptr inbounds i8, ptr %171, i64 8
  store ptr %172, ptr %24, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #6
  %173 = getelementptr inbounds i8, ptr %23, i64 7
  store ptr %173, ptr %25, align 8, !tbaa !9
  store i32 0, ptr %21, align 4, !tbaa !5
  br label %174

174:                                              ; preds = %185, %163
  %175 = load i32, ptr %21, align 4, !tbaa !5
  %176 = load i32, ptr %22, align 4, !tbaa !5
  %177 = add nsw i32 32, %176
  %178 = icmp slt i32 %175, %177
  br i1 %178, label %179, label %188

179:                                              ; preds = %174
  %180 = load ptr, ptr %24, align 8, !tbaa !9
  %181 = getelementptr inbounds i8, ptr %180, i32 1
  store ptr %181, ptr %24, align 8, !tbaa !9
  %182 = load i8, ptr %180, align 1, !tbaa !15
  %183 = load ptr, ptr %25, align 8, !tbaa !9
  %184 = getelementptr inbounds i8, ptr %183, i32 -1
  store ptr %184, ptr %25, align 8, !tbaa !9
  store i8 %182, ptr %183, align 1, !tbaa !15
  br label %185

185:                                              ; preds = %179
  %186 = load i32, ptr %21, align 4, !tbaa !5
  %187 = add nsw i32 %186, 8
  store i32 %187, ptr %21, align 4, !tbaa !5
  br label %174, !llvm.loop !20

188:                                              ; preds = %174
  %189 = load i64, ptr %23, align 8, !tbaa !14
  %190 = load i32, ptr %22, align 4, !tbaa !5
  %191 = sub nsw i32 32, %190
  %192 = zext i32 %191 to i64
  %193 = lshr i64 %189, %192
  %194 = trunc i64 %193 to i32
  %195 = getelementptr inbounds %struct.squashfs_super_block, ptr %10, i32 0, i32 2
  store i32 %194, ptr %195, align 1, !tbaa !21
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  store i32 0, ptr %27, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #6
  store i64 0, ptr %28, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #6
  %196 = load ptr, ptr %7, align 8, !tbaa !9
  %197 = getelementptr inbounds i8, ptr %196, i64 12
  store ptr %197, ptr %29, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #6
  %198 = getelementptr inbounds i8, ptr %28, i64 7
  store ptr %198, ptr %30, align 8, !tbaa !9
  store i32 0, ptr %26, align 4, !tbaa !5
  br label %199

199:                                              ; preds = %210, %188
  %200 = load i32, ptr %26, align 4, !tbaa !5
  %201 = load i32, ptr %27, align 4, !tbaa !5
  %202 = add nsw i32 32, %201
  %203 = icmp slt i32 %200, %202
  br i1 %203, label %204, label %213

204:                                              ; preds = %199
  %205 = load ptr, ptr %29, align 8, !tbaa !9
  %206 = getelementptr inbounds i8, ptr %205, i32 1
  store ptr %206, ptr %29, align 8, !tbaa !9
  %207 = load i8, ptr %205, align 1, !tbaa !15
  %208 = load ptr, ptr %30, align 8, !tbaa !9
  %209 = getelementptr inbounds i8, ptr %208, i32 -1
  store ptr %209, ptr %30, align 8, !tbaa !9
  store i8 %207, ptr %208, align 1, !tbaa !15
  br label %210

210:                                              ; preds = %204
  %211 = load i32, ptr %26, align 4, !tbaa !5
  %212 = add nsw i32 %211, 8
  store i32 %212, ptr %26, align 4, !tbaa !5
  br label %199, !llvm.loop !22

213:                                              ; preds = %199
  %214 = load i64, ptr %28, align 8, !tbaa !14
  %215 = load i32, ptr %27, align 4, !tbaa !5
  %216 = sub nsw i32 32, %215
  %217 = zext i32 %216 to i64
  %218 = lshr i64 %214, %217
  %219 = trunc i64 %218 to i32
  %220 = getelementptr inbounds %struct.squashfs_super_block, ptr %10, i32 0, i32 3
  store i32 %219, ptr %220, align 1, !tbaa !23
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #6
  store i32 0, ptr %32, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #6
  store i64 0, ptr %33, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #6
  %221 = load ptr, ptr %7, align 8, !tbaa !9
  %222 = getelementptr inbounds i8, ptr %221, i64 16
  store ptr %222, ptr %34, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #6
  %223 = getelementptr inbounds i8, ptr %33, i64 7
  store ptr %223, ptr %35, align 8, !tbaa !9
  store i32 0, ptr %31, align 4, !tbaa !5
  br label %224

224:                                              ; preds = %235, %213
  %225 = load i32, ptr %31, align 4, !tbaa !5
  %226 = load i32, ptr %32, align 4, !tbaa !5
  %227 = add nsw i32 32, %226
  %228 = icmp slt i32 %225, %227
  br i1 %228, label %229, label %238

229:                                              ; preds = %224
  %230 = load ptr, ptr %34, align 8, !tbaa !9
  %231 = getelementptr inbounds i8, ptr %230, i32 1
  store ptr %231, ptr %34, align 8, !tbaa !9
  %232 = load i8, ptr %230, align 1, !tbaa !15
  %233 = load ptr, ptr %35, align 8, !tbaa !9
  %234 = getelementptr inbounds i8, ptr %233, i32 -1
  store ptr %234, ptr %35, align 8, !tbaa !9
  store i8 %232, ptr %233, align 1, !tbaa !15
  br label %235

235:                                              ; preds = %229
  %236 = load i32, ptr %31, align 4, !tbaa !5
  %237 = add nsw i32 %236, 8
  store i32 %237, ptr %31, align 4, !tbaa !5
  br label %224, !llvm.loop !24

238:                                              ; preds = %224
  %239 = load i64, ptr %33, align 8, !tbaa !14
  %240 = load i32, ptr %32, align 4, !tbaa !5
  %241 = sub nsw i32 32, %240
  %242 = zext i32 %241 to i64
  %243 = lshr i64 %239, %242
  %244 = trunc i64 %243 to i32
  %245 = getelementptr inbounds %struct.squashfs_super_block, ptr %10, i32 0, i32 4
  store i32 %244, ptr %245, align 1, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #6
  store i32 0, ptr %37, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #6
  store i64 0, ptr %38, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #6
  %246 = load ptr, ptr %7, align 8, !tbaa !9
  %247 = getelementptr inbounds i8, ptr %246, i64 20
  store ptr %247, ptr %39, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #6
  %248 = getelementptr inbounds i8, ptr %38, i64 7
  store ptr %248, ptr %40, align 8, !tbaa !9
  store i32 0, ptr %36, align 4, !tbaa !5
  br label %249

249:                                              ; preds = %260, %238
  %250 = load i32, ptr %36, align 4, !tbaa !5
  %251 = load i32, ptr %37, align 4, !tbaa !5
  %252 = add nsw i32 32, %251
  %253 = icmp slt i32 %250, %252
  br i1 %253, label %254, label %263

254:                                              ; preds = %249
  %255 = load ptr, ptr %39, align 8, !tbaa !9
  %256 = getelementptr inbounds i8, ptr %255, i32 1
  store ptr %256, ptr %39, align 8, !tbaa !9
  %257 = load i8, ptr %255, align 1, !tbaa !15
  %258 = load ptr, ptr %40, align 8, !tbaa !9
  %259 = getelementptr inbounds i8, ptr %258, i32 -1
  store ptr %259, ptr %40, align 8, !tbaa !9
  store i8 %257, ptr %258, align 1, !tbaa !15
  br label %260

260:                                              ; preds = %254
  %261 = load i32, ptr %36, align 4, !tbaa !5
  %262 = add nsw i32 %261, 8
  store i32 %262, ptr %36, align 4, !tbaa !5
  br label %249, !llvm.loop !26

263:                                              ; preds = %249
  %264 = load i64, ptr %38, align 8, !tbaa !14
  %265 = load i32, ptr %37, align 4, !tbaa !5
  %266 = sub nsw i32 32, %265
  %267 = zext i32 %266 to i64
  %268 = lshr i64 %264, %267
  %269 = trunc i64 %268 to i32
  %270 = getelementptr inbounds %struct.squashfs_super_block, ptr %10, i32 0, i32 5
  store i32 %269, ptr %270, align 1, !tbaa !27
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #6
  store i32 0, ptr %42, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #6
  store i64 0, ptr %43, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #6
  %271 = load ptr, ptr %7, align 8, !tbaa !9
  %272 = getelementptr inbounds i8, ptr %271, i64 24
  store ptr %272, ptr %44, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #6
  %273 = getelementptr inbounds i8, ptr %43, i64 7
  store ptr %273, ptr %45, align 8, !tbaa !9
  store i32 0, ptr %41, align 4, !tbaa !5
  br label %274

274:                                              ; preds = %285, %263
  %275 = load i32, ptr %41, align 4, !tbaa !5
  %276 = load i32, ptr %42, align 4, !tbaa !5
  %277 = add nsw i32 32, %276
  %278 = icmp slt i32 %275, %277
  br i1 %278, label %279, label %288

279:                                              ; preds = %274
  %280 = load ptr, ptr %44, align 8, !tbaa !9
  %281 = getelementptr inbounds i8, ptr %280, i32 1
  store ptr %281, ptr %44, align 8, !tbaa !9
  %282 = load i8, ptr %280, align 1, !tbaa !15
  %283 = load ptr, ptr %45, align 8, !tbaa !9
  %284 = getelementptr inbounds i8, ptr %283, i32 -1
  store ptr %284, ptr %45, align 8, !tbaa !9
  store i8 %282, ptr %283, align 1, !tbaa !15
  br label %285

285:                                              ; preds = %279
  %286 = load i32, ptr %41, align 4, !tbaa !5
  %287 = add nsw i32 %286, 8
  store i32 %287, ptr %41, align 4, !tbaa !5
  br label %274, !llvm.loop !28

288:                                              ; preds = %274
  %289 = load i64, ptr %43, align 8, !tbaa !14
  %290 = load i32, ptr %42, align 4, !tbaa !5
  %291 = sub nsw i32 32, %290
  %292 = zext i32 %291 to i64
  %293 = lshr i64 %289, %292
  %294 = trunc i64 %293 to i32
  %295 = getelementptr inbounds %struct.squashfs_super_block, ptr %10, i32 0, i32 6
  store i32 %294, ptr %295, align 1, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #6
  store i32 0, ptr %47, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #6
  store i64 0, ptr %48, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #6
  %296 = load ptr, ptr %7, align 8, !tbaa !9
  %297 = getelementptr inbounds i8, ptr %296, i64 28
  store ptr %297, ptr %49, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #6
  %298 = getelementptr inbounds i8, ptr %48, i64 7
  store ptr %298, ptr %50, align 8, !tbaa !9
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %299

299:                                              ; preds = %310, %288
  %300 = load i32, ptr %46, align 4, !tbaa !5
  %301 = load i32, ptr %47, align 4, !tbaa !5
  %302 = add nsw i32 16, %301
  %303 = icmp slt i32 %300, %302
  br i1 %303, label %304, label %313

304:                                              ; preds = %299
  %305 = load ptr, ptr %49, align 8, !tbaa !9
  %306 = getelementptr inbounds i8, ptr %305, i32 1
  store ptr %306, ptr %49, align 8, !tbaa !9
  %307 = load i8, ptr %305, align 1, !tbaa !15
  %308 = load ptr, ptr %50, align 8, !tbaa !9
  %309 = getelementptr inbounds i8, ptr %308, i32 -1
  store ptr %309, ptr %50, align 8, !tbaa !9
  store i8 %307, ptr %308, align 1, !tbaa !15
  br label %310

310:                                              ; preds = %304
  %311 = load i32, ptr %46, align 4, !tbaa !5
  %312 = add nsw i32 %311, 8
  store i32 %312, ptr %46, align 4, !tbaa !5
  br label %299, !llvm.loop !30

313:                                              ; preds = %299
  %314 = load i64, ptr %48, align 8, !tbaa !14
  %315 = load i32, ptr %47, align 4, !tbaa !5
  %316 = sub nsw i32 48, %315
  %317 = zext i32 %316 to i64
  %318 = lshr i64 %314, %317
  %319 = trunc i64 %318 to i32
  %320 = getelementptr inbounds %struct.squashfs_super_block, ptr %10, i32 0, i32 7
  %321 = zext i32 %319 to i64
  %322 = load i64, ptr %320, align 1
  %323 = and i64 %321, 65535
  %324 = and i64 %322, -65536
  %325 = or i64 %324, %323
  store i64 %325, ptr %320, align 1
  %326 = trunc i64 %323 to i32
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #6
  store i32 0, ptr %52, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #6
  store i64 0, ptr %53, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #6
  %327 = load ptr, ptr %7, align 8, !tbaa !9
  %328 = getelementptr inbounds i8, ptr %327, i64 30
  store ptr %328, ptr %54, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #6
  %329 = getelementptr inbounds i8, ptr %53, i64 7
  store ptr %329, ptr %55, align 8, !tbaa !9
  store i32 0, ptr %51, align 4, !tbaa !5
  br label %330

330:                                              ; preds = %341, %313
  %331 = load i32, ptr %51, align 4, !tbaa !5
  %332 = load i32, ptr %52, align 4, !tbaa !5
  %333 = add nsw i32 16, %332
  %334 = icmp slt i32 %331, %333
  br i1 %334, label %335, label %344

335:                                              ; preds = %330
  %336 = load ptr, ptr %54, align 8, !tbaa !9
  %337 = getelementptr inbounds i8, ptr %336, i32 1
  store ptr %337, ptr %54, align 8, !tbaa !9
  %338 = load i8, ptr %336, align 1, !tbaa !15
  %339 = load ptr, ptr %55, align 8, !tbaa !9
  %340 = getelementptr inbounds i8, ptr %339, i32 -1
  store ptr %340, ptr %55, align 8, !tbaa !9
  store i8 %338, ptr %339, align 1, !tbaa !15
  br label %341

341:                                              ; preds = %335
  %342 = load i32, ptr %51, align 4, !tbaa !5
  %343 = add nsw i32 %342, 8
  store i32 %343, ptr %51, align 4, !tbaa !5
  br label %330, !llvm.loop !31

344:                                              ; preds = %330
  %345 = load i64, ptr %53, align 8, !tbaa !14
  %346 = load i32, ptr %52, align 4, !tbaa !5
  %347 = sub nsw i32 48, %346
  %348 = zext i32 %347 to i64
  %349 = lshr i64 %345, %348
  %350 = trunc i64 %349 to i32
  %351 = getelementptr inbounds %struct.squashfs_super_block, ptr %10, i32 0, i32 7
  %352 = zext i32 %350 to i64
  %353 = load i64, ptr %351, align 1
  %354 = and i64 %352, 65535
  %355 = shl i64 %354, 16
  %356 = and i64 %353, -4294901761
  %357 = or i64 %356, %355
  store i64 %357, ptr %351, align 1
  %358 = trunc i64 %354 to i32
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #6
  store i32 0, ptr %57, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #6
  store i64 0, ptr %58, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #6
  %359 = load ptr, ptr %7, align 8, !tbaa !9
  %360 = getelementptr inbounds i8, ptr %359, i64 32
  store ptr %360, ptr %59, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #6
  %361 = getelementptr inbounds i8, ptr %58, i64 7
  store ptr %361, ptr %60, align 8, !tbaa !9
  store i32 0, ptr %56, align 4, !tbaa !5
  br label %362

362:                                              ; preds = %373, %344
  %363 = load i32, ptr %56, align 4, !tbaa !5
  %364 = load i32, ptr %57, align 4, !tbaa !5
  %365 = add nsw i32 16, %364
  %366 = icmp slt i32 %363, %365
  br i1 %366, label %367, label %376

367:                                              ; preds = %362
  %368 = load ptr, ptr %59, align 8, !tbaa !9
  %369 = getelementptr inbounds i8, ptr %368, i32 1
  store ptr %369, ptr %59, align 8, !tbaa !9
  %370 = load i8, ptr %368, align 1, !tbaa !15
  %371 = load ptr, ptr %60, align 8, !tbaa !9
  %372 = getelementptr inbounds i8, ptr %371, i32 -1
  store ptr %372, ptr %60, align 8, !tbaa !9
  store i8 %370, ptr %371, align 1, !tbaa !15
  br label %373

373:                                              ; preds = %367
  %374 = load i32, ptr %56, align 4, !tbaa !5
  %375 = add nsw i32 %374, 8
  store i32 %375, ptr %56, align 4, !tbaa !5
  br label %362, !llvm.loop !32

376:                                              ; preds = %362
  %377 = load i64, ptr %58, align 8, !tbaa !14
  %378 = load i32, ptr %57, align 4, !tbaa !5
  %379 = sub nsw i32 48, %378
  %380 = zext i32 %379 to i64
  %381 = lshr i64 %377, %380
  %382 = trunc i64 %381 to i32
  %383 = getelementptr inbounds %struct.squashfs_super_block, ptr %10, i32 0, i32 7
  %384 = zext i32 %382 to i64
  %385 = load i64, ptr %383, align 1
  %386 = and i64 %384, 65535
  %387 = shl i64 %386, 32
  %388 = and i64 %385, -281470681743361
  %389 = or i64 %388, %387
  store i64 %389, ptr %383, align 1
  %390 = trunc i64 %386 to i32
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #6
  store i32 0, ptr %62, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #6
  store i64 0, ptr %63, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #6
  %391 = load ptr, ptr %7, align 8, !tbaa !9
  %392 = getelementptr inbounds i8, ptr %391, i64 34
  store ptr %392, ptr %64, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #6
  %393 = getelementptr inbounds i8, ptr %63, i64 7
  store ptr %393, ptr %65, align 8, !tbaa !9
  store i32 0, ptr %61, align 4, !tbaa !5
  br label %394

394:                                              ; preds = %405, %376
  %395 = load i32, ptr %61, align 4, !tbaa !5
  %396 = load i32, ptr %62, align 4, !tbaa !5
  %397 = add nsw i32 16, %396
  %398 = icmp slt i32 %395, %397
  br i1 %398, label %399, label %408

399:                                              ; preds = %394
  %400 = load ptr, ptr %64, align 8, !tbaa !9
  %401 = getelementptr inbounds i8, ptr %400, i32 1
  store ptr %401, ptr %64, align 8, !tbaa !9
  %402 = load i8, ptr %400, align 1, !tbaa !15
  %403 = load ptr, ptr %65, align 8, !tbaa !9
  %404 = getelementptr inbounds i8, ptr %403, i32 -1
  store ptr %404, ptr %65, align 8, !tbaa !9
  store i8 %402, ptr %403, align 1, !tbaa !15
  br label %405

405:                                              ; preds = %399
  %406 = load i32, ptr %61, align 4, !tbaa !5
  %407 = add nsw i32 %406, 8
  store i32 %407, ptr %61, align 4, !tbaa !5
  br label %394, !llvm.loop !33

408:                                              ; preds = %394
  %409 = load i64, ptr %63, align 8, !tbaa !14
  %410 = load i32, ptr %62, align 4, !tbaa !5
  %411 = sub nsw i32 48, %410
  %412 = zext i32 %411 to i64
  %413 = lshr i64 %409, %412
  %414 = trunc i64 %413 to i32
  %415 = getelementptr inbounds %struct.squashfs_super_block, ptr %10, i32 0, i32 7
  %416 = zext i32 %414 to i64
  %417 = load i64, ptr %415, align 1
  %418 = and i64 %416, 65535
  %419 = shl i64 %418, 48
  %420 = and i64 %417, 281474976710655
  %421 = or i64 %420, %419
  store i64 %421, ptr %415, align 1
  %422 = trunc i64 %418 to i32
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #6
  store i32 0, ptr %67, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #6
  store i64 0, ptr %68, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #6
  %423 = load ptr, ptr %7, align 8, !tbaa !9
  %424 = getelementptr inbounds i8, ptr %423, i64 36
  store ptr %424, ptr %69, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #6
  %425 = getelementptr inbounds i8, ptr %68, i64 7
  store ptr %425, ptr %70, align 8, !tbaa !9
  store i32 0, ptr %66, align 4, !tbaa !5
  br label %426

426:                                              ; preds = %437, %408
  %427 = load i32, ptr %66, align 4, !tbaa !5
  %428 = load i32, ptr %67, align 4, !tbaa !5
  %429 = add nsw i32 8, %428
  %430 = icmp slt i32 %427, %429
  br i1 %430, label %431, label %440

431:                                              ; preds = %426
  %432 = load ptr, ptr %69, align 8, !tbaa !9
  %433 = getelementptr inbounds i8, ptr %432, i32 1
  store ptr %433, ptr %69, align 8, !tbaa !9
  %434 = load i8, ptr %432, align 1, !tbaa !15
  %435 = load ptr, ptr %70, align 8, !tbaa !9
  %436 = getelementptr inbounds i8, ptr %435, i32 -1
  store ptr %436, ptr %70, align 8, !tbaa !9
  store i8 %434, ptr %435, align 1, !tbaa !15
  br label %437

437:                                              ; preds = %431
  %438 = load i32, ptr %66, align 4, !tbaa !5
  %439 = add nsw i32 %438, 8
  store i32 %439, ptr %66, align 4, !tbaa !5
  br label %426, !llvm.loop !34

440:                                              ; preds = %426
  %441 = load i64, ptr %68, align 8, !tbaa !14
  %442 = load i32, ptr %67, align 4, !tbaa !5
  %443 = sub nsw i32 56, %442
  %444 = zext i32 %443 to i64
  %445 = lshr i64 %441, %444
  %446 = trunc i64 %445 to i32
  %447 = getelementptr inbounds %struct.squashfs_super_block, ptr %10, i32 0, i32 8
  %448 = trunc i32 %446 to i16
  %449 = load i16, ptr %447, align 1
  %450 = and i16 %448, 255
  %451 = and i16 %449, -256
  %452 = or i16 %451, %450
  store i16 %452, ptr %447, align 1
  %453 = zext i16 %450 to i32
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #6
  store i32 0, ptr %72, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #6
  store i64 0, ptr %73, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #6
  %454 = load ptr, ptr %7, align 8, !tbaa !9
  %455 = getelementptr inbounds i8, ptr %454, i64 37
  store ptr %455, ptr %74, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #6
  %456 = getelementptr inbounds i8, ptr %73, i64 7
  store ptr %456, ptr %75, align 8, !tbaa !9
  store i32 0, ptr %71, align 4, !tbaa !5
  br label %457

457:                                              ; preds = %468, %440
  %458 = load i32, ptr %71, align 4, !tbaa !5
  %459 = load i32, ptr %72, align 4, !tbaa !5
  %460 = add nsw i32 8, %459
  %461 = icmp slt i32 %458, %460
  br i1 %461, label %462, label %471

462:                                              ; preds = %457
  %463 = load ptr, ptr %74, align 8, !tbaa !9
  %464 = getelementptr inbounds i8, ptr %463, i32 1
  store ptr %464, ptr %74, align 8, !tbaa !9
  %465 = load i8, ptr %463, align 1, !tbaa !15
  %466 = load ptr, ptr %75, align 8, !tbaa !9
  %467 = getelementptr inbounds i8, ptr %466, i32 -1
  store ptr %467, ptr %75, align 8, !tbaa !9
  store i8 %465, ptr %466, align 1, !tbaa !15
  br label %468

468:                                              ; preds = %462
  %469 = load i32, ptr %71, align 4, !tbaa !5
  %470 = add nsw i32 %469, 8
  store i32 %470, ptr %71, align 4, !tbaa !5
  br label %457, !llvm.loop !35

471:                                              ; preds = %457
  %472 = load i64, ptr %73, align 8, !tbaa !14
  %473 = load i32, ptr %72, align 4, !tbaa !5
  %474 = sub nsw i32 56, %473
  %475 = zext i32 %474 to i64
  %476 = lshr i64 %472, %475
  %477 = trunc i64 %476 to i32
  %478 = getelementptr inbounds %struct.squashfs_super_block, ptr %10, i32 0, i32 8
  %479 = trunc i32 %477 to i16
  %480 = load i16, ptr %478, align 1
  %481 = and i16 %479, 255
  %482 = shl i16 %481, 8
  %483 = and i16 %480, 255
  %484 = or i16 %483, %482
  store i16 %484, ptr %478, align 1
  %485 = zext i16 %481 to i32
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #6
  store i32 0, ptr %77, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #6
  store i64 0, ptr %78, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #6
  %486 = load ptr, ptr %7, align 8, !tbaa !9
  %487 = getelementptr inbounds i8, ptr %486, i64 38
  store ptr %487, ptr %79, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #6
  %488 = getelementptr inbounds i8, ptr %78, i64 7
  store ptr %488, ptr %80, align 8, !tbaa !9
  store i32 0, ptr %76, align 4, !tbaa !5
  br label %489

489:                                              ; preds = %500, %471
  %490 = load i32, ptr %76, align 4, !tbaa !5
  %491 = load i32, ptr %77, align 4, !tbaa !5
  %492 = add nsw i32 8, %491
  %493 = icmp slt i32 %490, %492
  br i1 %493, label %494, label %503

494:                                              ; preds = %489
  %495 = load ptr, ptr %79, align 8, !tbaa !9
  %496 = getelementptr inbounds i8, ptr %495, i32 1
  store ptr %496, ptr %79, align 8, !tbaa !9
  %497 = load i8, ptr %495, align 1, !tbaa !15
  %498 = load ptr, ptr %80, align 8, !tbaa !9
  %499 = getelementptr inbounds i8, ptr %498, i32 -1
  store ptr %499, ptr %80, align 8, !tbaa !9
  store i8 %497, ptr %498, align 1, !tbaa !15
  br label %500

500:                                              ; preds = %494
  %501 = load i32, ptr %76, align 4, !tbaa !5
  %502 = add nsw i32 %501, 8
  store i32 %502, ptr %76, align 4, !tbaa !5
  br label %489, !llvm.loop !36

503:                                              ; preds = %489
  %504 = load i64, ptr %78, align 8, !tbaa !14
  %505 = load i32, ptr %77, align 4, !tbaa !5
  %506 = sub nsw i32 56, %505
  %507 = zext i32 %506 to i64
  %508 = lshr i64 %504, %507
  %509 = trunc i64 %508 to i32
  %510 = getelementptr inbounds %struct.squashfs_super_block, ptr %10, i32 0, i32 9
  %511 = trunc i32 %509 to i8
  store i8 %511, ptr %510, align 1
  %512 = zext i8 %511 to i32
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #6
  store i32 0, ptr %82, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #6
  store i64 0, ptr %83, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #6
  %513 = load ptr, ptr %7, align 8, !tbaa !9
  %514 = getelementptr inbounds i8, ptr %513, i64 39
  store ptr %514, ptr %84, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #6
  %515 = getelementptr inbounds i8, ptr %83, i64 7
  store ptr %515, ptr %85, align 8, !tbaa !9
  store i32 0, ptr %81, align 4, !tbaa !5
  br label %516

516:                                              ; preds = %527, %503
  %517 = load i32, ptr %81, align 4, !tbaa !5
  %518 = load i32, ptr %82, align 4, !tbaa !5
  %519 = add nsw i32 32, %518
  %520 = icmp slt i32 %517, %519
  br i1 %520, label %521, label %530

521:                                              ; preds = %516
  %522 = load ptr, ptr %84, align 8, !tbaa !9
  %523 = getelementptr inbounds i8, ptr %522, i32 1
  store ptr %523, ptr %84, align 8, !tbaa !9
  %524 = load i8, ptr %522, align 1, !tbaa !15
  %525 = load ptr, ptr %85, align 8, !tbaa !9
  %526 = getelementptr inbounds i8, ptr %525, i32 -1
  store ptr %526, ptr %85, align 8, !tbaa !9
  store i8 %524, ptr %525, align 1, !tbaa !15
  br label %527

527:                                              ; preds = %521
  %528 = load i32, ptr %81, align 4, !tbaa !5
  %529 = add nsw i32 %528, 8
  store i32 %529, ptr %81, align 4, !tbaa !5
  br label %516, !llvm.loop !37

530:                                              ; preds = %516
  %531 = load i64, ptr %83, align 8, !tbaa !14
  %532 = load i32, ptr %82, align 4, !tbaa !5
  %533 = sub nsw i32 32, %532
  %534 = zext i32 %533 to i64
  %535 = lshr i64 %531, %534
  %536 = trunc i64 %535 to i32
  %537 = getelementptr inbounds %struct.squashfs_super_block, ptr %10, i32 0, i32 10
  store i32 %536, ptr %537, align 1, !tbaa !38
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #6
  store i32 0, ptr %87, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #6
  store i64 0, ptr %88, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #6
  %538 = load ptr, ptr %7, align 8, !tbaa !9
  %539 = getelementptr inbounds i8, ptr %538, i64 43
  store ptr %539, ptr %89, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #6
  %540 = getelementptr inbounds i8, ptr %88, i64 7
  store ptr %540, ptr %90, align 8, !tbaa !9
  store i32 0, ptr %86, align 4, !tbaa !5
  br label %541

541:                                              ; preds = %552, %530
  %542 = load i32, ptr %86, align 4, !tbaa !5
  %543 = load i32, ptr %87, align 4, !tbaa !5
  %544 = add nsw i32 64, %543
  %545 = icmp slt i32 %542, %544
  br i1 %545, label %546, label %555

546:                                              ; preds = %541
  %547 = load ptr, ptr %89, align 8, !tbaa !9
  %548 = getelementptr inbounds i8, ptr %547, i32 1
  store ptr %548, ptr %89, align 8, !tbaa !9
  %549 = load i8, ptr %547, align 1, !tbaa !15
  %550 = load ptr, ptr %90, align 8, !tbaa !9
  %551 = getelementptr inbounds i8, ptr %550, i32 -1
  store ptr %551, ptr %90, align 8, !tbaa !9
  store i8 %549, ptr %550, align 1, !tbaa !15
  br label %552

552:                                              ; preds = %546
  %553 = load i32, ptr %86, align 4, !tbaa !5
  %554 = add nsw i32 %553, 8
  store i32 %554, ptr %86, align 4, !tbaa !5
  br label %541, !llvm.loop !39

555:                                              ; preds = %541
  %556 = load i64, ptr %88, align 8, !tbaa !14
  %557 = load i32, ptr %87, align 4, !tbaa !5
  %558 = sub nsw i32 0, %557
  %559 = zext i32 %558 to i64
  %560 = lshr i64 %556, %559
  %561 = getelementptr inbounds %struct.squashfs_super_block, ptr %10, i32 0, i32 11
  store i64 %560, ptr %561, align 1, !tbaa !40
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #6
  store i32 0, ptr %92, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #6
  store i64 0, ptr %93, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #6
  %562 = load ptr, ptr %7, align 8, !tbaa !9
  %563 = getelementptr inbounds i8, ptr %562, i64 51
  store ptr %563, ptr %94, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #6
  %564 = getelementptr inbounds i8, ptr %93, i64 7
  store ptr %564, ptr %95, align 8, !tbaa !9
  store i32 0, ptr %91, align 4, !tbaa !5
  br label %565

565:                                              ; preds = %576, %555
  %566 = load i32, ptr %91, align 4, !tbaa !5
  %567 = load i32, ptr %92, align 4, !tbaa !5
  %568 = add nsw i32 32, %567
  %569 = icmp slt i32 %566, %568
  br i1 %569, label %570, label %579

570:                                              ; preds = %565
  %571 = load ptr, ptr %94, align 8, !tbaa !9
  %572 = getelementptr inbounds i8, ptr %571, i32 1
  store ptr %572, ptr %94, align 8, !tbaa !9
  %573 = load i8, ptr %571, align 1, !tbaa !15
  %574 = load ptr, ptr %95, align 8, !tbaa !9
  %575 = getelementptr inbounds i8, ptr %574, i32 -1
  store ptr %575, ptr %95, align 8, !tbaa !9
  store i8 %573, ptr %574, align 1, !tbaa !15
  br label %576

576:                                              ; preds = %570
  %577 = load i32, ptr %91, align 4, !tbaa !5
  %578 = add nsw i32 %577, 8
  store i32 %578, ptr %91, align 4, !tbaa !5
  br label %565, !llvm.loop !41

579:                                              ; preds = %565
  %580 = load i64, ptr %93, align 8, !tbaa !14
  %581 = load i32, ptr %92, align 4, !tbaa !5
  %582 = sub nsw i32 32, %581
  %583 = zext i32 %582 to i64
  %584 = lshr i64 %580, %583
  %585 = trunc i64 %584 to i32
  %586 = getelementptr inbounds %struct.squashfs_super_block, ptr %10, i32 0, i32 12
  store i32 %585, ptr %586, align 1, !tbaa !42
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #6
  store i32 0, ptr %97, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #6
  store i64 0, ptr %98, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #6
  %587 = load ptr, ptr %7, align 8, !tbaa !9
  %588 = getelementptr inbounds i8, ptr %587, i64 55
  store ptr %588, ptr %99, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #6
  %589 = getelementptr inbounds i8, ptr %98, i64 7
  store ptr %589, ptr %100, align 8, !tbaa !9
  store i32 0, ptr %96, align 4, !tbaa !5
  br label %590

590:                                              ; preds = %601, %579
  %591 = load i32, ptr %96, align 4, !tbaa !5
  %592 = load i32, ptr %97, align 4, !tbaa !5
  %593 = add nsw i32 32, %592
  %594 = icmp slt i32 %591, %593
  br i1 %594, label %595, label %604

595:                                              ; preds = %590
  %596 = load ptr, ptr %99, align 8, !tbaa !9
  %597 = getelementptr inbounds i8, ptr %596, i32 1
  store ptr %597, ptr %99, align 8, !tbaa !9
  %598 = load i8, ptr %596, align 1, !tbaa !15
  %599 = load ptr, ptr %100, align 8, !tbaa !9
  %600 = getelementptr inbounds i8, ptr %599, i32 -1
  store ptr %600, ptr %100, align 8, !tbaa !9
  store i8 %598, ptr %599, align 1, !tbaa !15
  br label %601

601:                                              ; preds = %595
  %602 = load i32, ptr %96, align 4, !tbaa !5
  %603 = add nsw i32 %602, 8
  store i32 %603, ptr %96, align 4, !tbaa !5
  br label %590, !llvm.loop !43

604:                                              ; preds = %590
  %605 = load i64, ptr %98, align 8, !tbaa !14
  %606 = load i32, ptr %97, align 4, !tbaa !5
  %607 = sub nsw i32 32, %606
  %608 = zext i32 %607 to i64
  %609 = lshr i64 %605, %608
  %610 = trunc i64 %609 to i32
  %611 = getelementptr inbounds %struct.squashfs_super_block, ptr %10, i32 0, i32 13
  store i32 %610, ptr %611, align 1, !tbaa !44
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #6
  store i32 0, ptr %102, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #6
  store i64 0, ptr %103, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #6
  %612 = load ptr, ptr %7, align 8, !tbaa !9
  %613 = getelementptr inbounds i8, ptr %612, i64 59
  store ptr %613, ptr %104, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #6
  %614 = getelementptr inbounds i8, ptr %103, i64 7
  store ptr %614, ptr %105, align 8, !tbaa !9
  store i32 0, ptr %101, align 4, !tbaa !5
  br label %615

615:                                              ; preds = %626, %604
  %616 = load i32, ptr %101, align 4, !tbaa !5
  %617 = load i32, ptr %102, align 4, !tbaa !5
  %618 = add nsw i32 32, %617
  %619 = icmp slt i32 %616, %618
  br i1 %619, label %620, label %629

620:                                              ; preds = %615
  %621 = load ptr, ptr %104, align 8, !tbaa !9
  %622 = getelementptr inbounds i8, ptr %621, i32 1
  store ptr %622, ptr %104, align 8, !tbaa !9
  %623 = load i8, ptr %621, align 1, !tbaa !15
  %624 = load ptr, ptr %105, align 8, !tbaa !9
  %625 = getelementptr inbounds i8, ptr %624, i32 -1
  store ptr %625, ptr %105, align 8, !tbaa !9
  store i8 %623, ptr %624, align 1, !tbaa !15
  br label %626

626:                                              ; preds = %620
  %627 = load i32, ptr %101, align 4, !tbaa !5
  %628 = add nsw i32 %627, 8
  store i32 %628, ptr %101, align 4, !tbaa !5
  br label %615, !llvm.loop !45

629:                                              ; preds = %615
  %630 = load i64, ptr %103, align 8, !tbaa !14
  %631 = load i32, ptr %102, align 4, !tbaa !5
  %632 = sub nsw i32 32, %631
  %633 = zext i32 %632 to i64
  %634 = lshr i64 %630, %633
  %635 = trunc i64 %634 to i32
  %636 = getelementptr inbounds %struct.squashfs_super_block, ptr %10, i32 0, i32 14
  store i32 %635, ptr %636, align 1, !tbaa !46
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #6
  %637 = load ptr, ptr %7, align 8, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %637, ptr align 1 %10, i64 63, i1 false)
  store i32 1, ptr @swap, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 63, ptr %10) #6
  br label %642

638:                                              ; preds = %112
  %639 = load ptr, ptr @stderr, align 8, !tbaa !9
  %640 = load ptr, ptr %9, align 8, !tbaa !9
  %641 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %639, ptr noundef @.str.5, ptr noundef %640) #6
  br label %795

642:                                              ; preds = %629
  br label %643

643:                                              ; preds = %642, %4
  %644 = load ptr, ptr %7, align 8, !tbaa !9
  %645 = getelementptr inbounds %struct.squashfs_super_block, ptr %644, i32 0, i32 7
  %646 = load i64, ptr %645, align 1
  %647 = and i64 %646, 65535
  %648 = trunc i64 %647 to i32
  %649 = icmp ne i32 %648, 2
  br i1 %649, label %658, label %650

650:                                              ; preds = %643
  %651 = load ptr, ptr %7, align 8, !tbaa !9
  %652 = getelementptr inbounds %struct.squashfs_super_block, ptr %651, i32 0, i32 7
  %653 = load i64, ptr %652, align 1
  %654 = lshr i64 %653, 16
  %655 = and i64 %654, 65535
  %656 = trunc i64 %655 to i32
  %657 = icmp sgt i32 %656, 1
  br i1 %657, label %658, label %685

658:                                              ; preds = %650, %643
  %659 = load ptr, ptr %7, align 8, !tbaa !9
  %660 = getelementptr inbounds %struct.squashfs_super_block, ptr %659, i32 0, i32 7
  %661 = load i64, ptr %660, align 1
  %662 = and i64 %661, 65535
  %663 = trunc i64 %662 to i32
  %664 = icmp eq i32 %663, 1
  br i1 %664, label %665, label %669

665:                                              ; preds = %658
  %666 = load ptr, ptr @stderr, align 8, !tbaa !9
  %667 = load ptr, ptr %9, align 8, !tbaa !9
  %668 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %666, ptr noundef @.str.6, ptr noundef %667) #6
  br label %684

669:                                              ; preds = %658
  %670 = load ptr, ptr @stderr, align 8, !tbaa !9
  %671 = load ptr, ptr %9, align 8, !tbaa !9
  %672 = load ptr, ptr %7, align 8, !tbaa !9
  %673 = getelementptr inbounds %struct.squashfs_super_block, ptr %672, i32 0, i32 7
  %674 = load i64, ptr %673, align 1
  %675 = and i64 %674, 65535
  %676 = trunc i64 %675 to i32
  %677 = load ptr, ptr %7, align 8, !tbaa !9
  %678 = getelementptr inbounds %struct.squashfs_super_block, ptr %677, i32 0, i32 7
  %679 = load i64, ptr %678, align 1
  %680 = lshr i64 %679, 16
  %681 = and i64 %680, 65535
  %682 = trunc i64 %681 to i32
  %683 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %670, ptr noundef @.str.7, ptr noundef %671, i32 noundef %676, i32 noundef %682, i32 noundef 2, i32 noundef 1) #6
  br label %684

684:                                              ; preds = %669, %665
  br label %795

685:                                              ; preds = %650
  %686 = load i32, ptr @swap, align 4, !tbaa !5
  %687 = load ptr, ptr %8, align 8, !tbaa !9
  store i32 %686, ptr %687, align 4, !tbaa !5
  %688 = load ptr, ptr %9, align 8, !tbaa !9
  %689 = call i32 (ptr, ...) @printf(ptr noundef @.str.8, ptr noundef %688)
  %690 = load ptr, ptr %7, align 8, !tbaa !9
  %691 = getelementptr inbounds %struct.squashfs_super_block, ptr %690, i32 0, i32 8
  %692 = load i16, ptr %691, align 1
  %693 = and i16 %692, 255
  %694 = zext i16 %693 to i32
  %695 = ashr i32 %694, 0
  %696 = and i32 %695, 1
  %697 = icmp ne i32 %696, 0
  %698 = zext i1 %697 to i64
  %699 = select i1 %697, ptr @.str.10, ptr @.str.11
  %700 = call i32 (ptr, ...) @printf(ptr noundef @.str.9, ptr noundef %699)
  %701 = load ptr, ptr %7, align 8, !tbaa !9
  %702 = getelementptr inbounds %struct.squashfs_super_block, ptr %701, i32 0, i32 8
  %703 = load i16, ptr %702, align 1
  %704 = and i16 %703, 255
  %705 = zext i16 %704 to i32
  %706 = ashr i32 %705, 1
  %707 = and i32 %706, 1
  %708 = icmp ne i32 %707, 0
  %709 = zext i1 %708 to i64
  %710 = select i1 %708, ptr @.str.10, ptr @.str.11
  %711 = call i32 (ptr, ...) @printf(ptr noundef @.str.12, ptr noundef %710)
  %712 = load ptr, ptr %7, align 8, !tbaa !9
  %713 = getelementptr inbounds %struct.squashfs_super_block, ptr %712, i32 0, i32 8
  %714 = load i16, ptr %713, align 1
  %715 = and i16 %714, 255
  %716 = zext i16 %715 to i32
  %717 = ashr i32 %716, 3
  %718 = and i32 %717, 1
  %719 = icmp ne i32 %718, 0
  %720 = zext i1 %719 to i64
  %721 = select i1 %719, ptr @.str.10, ptr @.str.11
  %722 = call i32 (ptr, ...) @printf(ptr noundef @.str.13, ptr noundef %721)
  %723 = load ptr, ptr %7, align 8, !tbaa !9
  %724 = getelementptr inbounds %struct.squashfs_super_block, ptr %723, i32 0, i32 8
  %725 = load i16, ptr %724, align 1
  %726 = and i16 %725, 255
  %727 = zext i16 %726 to i32
  %728 = ashr i32 %727, 2
  %729 = and i32 %728, 1
  %730 = icmp ne i32 %729, 0
  %731 = zext i1 %730 to i64
  %732 = select i1 %730, ptr @.str.11, ptr @.str.15
  %733 = call i32 (ptr, ...) @printf(ptr noundef @.str.14, ptr noundef %732)
  %734 = load ptr, ptr %7, align 8, !tbaa !9
  %735 = getelementptr inbounds %struct.squashfs_super_block, ptr %734, i32 0, i32 8
  %736 = load i16, ptr %735, align 1
  %737 = and i16 %736, 255
  %738 = zext i16 %737 to i32
  %739 = ashr i32 %738, 4
  %740 = and i32 %739, 1
  %741 = icmp ne i32 %740, 0
  %742 = zext i1 %741 to i64
  %743 = select i1 %741, ptr @.str.15, ptr @.str.11
  %744 = call i32 (ptr, ...) @printf(ptr noundef @.str.16, ptr noundef %743)
  %745 = load ptr, ptr %7, align 8, !tbaa !9
  %746 = getelementptr inbounds %struct.squashfs_super_block, ptr %745, i32 0, i32 8
  %747 = load i16, ptr %746, align 1
  %748 = and i16 %747, 255
  %749 = zext i16 %748 to i32
  %750 = ashr i32 %749, 5
  %751 = and i32 %750, 1
  %752 = icmp ne i32 %751, 0
  %753 = zext i1 %752 to i64
  %754 = select i1 %752, ptr @.str.11, ptr @.str.15
  %755 = call i32 (ptr, ...) @printf(ptr noundef @.str.17, ptr noundef %754)
  %756 = load ptr, ptr %7, align 8, !tbaa !9
  %757 = getelementptr inbounds %struct.squashfs_super_block, ptr %756, i32 0, i32 8
  %758 = load i16, ptr %757, align 1
  %759 = and i16 %758, 255
  %760 = zext i16 %759 to i32
  %761 = ashr i32 %760, 6
  %762 = and i32 %761, 1
  %763 = icmp ne i32 %762, 0
  %764 = zext i1 %763 to i64
  %765 = select i1 %763, ptr @.str.11, ptr @.str.15
  %766 = call i32 (ptr, ...) @printf(ptr noundef @.str.18, ptr noundef %765)
  %767 = load ptr, ptr %7, align 8, !tbaa !9
  %768 = getelementptr inbounds %struct.squashfs_super_block, ptr %767, i32 0, i32 2
  %769 = load i32, ptr %768, align 1, !tbaa !21
  %770 = call i32 (ptr, ...) @printf(ptr noundef @.str.19, i32 noundef %769)
  %771 = load ptr, ptr %7, align 8, !tbaa !9
  %772 = getelementptr inbounds %struct.squashfs_super_block, ptr %771, i32 0, i32 12
  %773 = load i32, ptr %772, align 1, !tbaa !42
  %774 = call i32 (ptr, ...) @printf(ptr noundef @.str.20, i32 noundef %773)
  %775 = load ptr, ptr %7, align 8, !tbaa !9
  %776 = getelementptr inbounds %struct.squashfs_super_block, ptr %775, i32 0, i32 13
  %777 = load i32, ptr %776, align 1, !tbaa !44
  %778 = call i32 (ptr, ...) @printf(ptr noundef @.str.21, i32 noundef %777)
  %779 = load ptr, ptr %7, align 8, !tbaa !9
  %780 = getelementptr inbounds %struct.squashfs_super_block, ptr %779, i32 0, i32 1
  %781 = load i32, ptr %780, align 1, !tbaa !19
  %782 = call i32 (ptr, ...) @printf(ptr noundef @.str.22, i32 noundef %781)
  %783 = load ptr, ptr %7, align 8, !tbaa !9
  %784 = getelementptr inbounds %struct.squashfs_super_block, ptr %783, i32 0, i32 8
  %785 = load i16, ptr %784, align 1
  %786 = lshr i16 %785, 8
  %787 = zext i16 %786 to i32
  %788 = call i32 (ptr, ...) @printf(ptr noundef @.str.23, i32 noundef %787)
  %789 = load ptr, ptr %7, align 8, !tbaa !9
  %790 = getelementptr inbounds %struct.squashfs_super_block, ptr %789, i32 0, i32 9
  %791 = load i8, ptr %790, align 1
  %792 = zext i8 %791 to i32
  %793 = call i32 (ptr, ...) @printf(ptr noundef @.str.24, i32 noundef %792)
  %794 = call i32 (ptr, ...) @printf(ptr noundef @.str.25)
  store i32 1, ptr %5, align 4
  br label %796

795:                                              ; preds = %684, %638
  store i32 0, ptr %5, align 4
  br label %796

796:                                              ; preds = %795, %685
  %797 = load i32, ptr %5, align 4
  ret i32 %797
}

declare i32 @printf(ptr noundef, ...) #1

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "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 "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #5 = { 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 #6 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !6, i64 0}
!12 = !{!"squashfs_super_block", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !6, i64 30, !6, i64 32, !6, i64 34, !6, i64 36, !6, i64 37, !6, i64 38, !6, i64 39, !13, i64 43, !6, i64 51, !6, i64 55, !6, i64 59}
!13 = !{!"long long", !7, i64 0}
!14 = !{!13, !13, i64 0}
!15 = !{!7, !7, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}
!19 = !{!12, !6, i64 4}
!20 = distinct !{!20, !17}
!21 = !{!12, !6, i64 8}
!22 = distinct !{!22, !17}
!23 = !{!12, !6, i64 12}
!24 = distinct !{!24, !17}
!25 = !{!12, !6, i64 16}
!26 = distinct !{!26, !17}
!27 = !{!12, !6, i64 20}
!28 = distinct !{!28, !17}
!29 = !{!12, !6, i64 24}
!30 = distinct !{!30, !17}
!31 = distinct !{!31, !17}
!32 = distinct !{!32, !17}
!33 = distinct !{!33, !17}
!34 = distinct !{!34, !17}
!35 = distinct !{!35, !17}
!36 = distinct !{!36, !17}
!37 = distinct !{!37, !17}
!38 = !{!12, !6, i64 39}
!39 = distinct !{!39, !17}
!40 = !{!12, !13, i64 43}
!41 = distinct !{!41, !17}
!42 = !{!12, !6, i64 51}
!43 = distinct !{!43, !17}
!44 = !{!12, !6, i64 55}
!45 = distinct !{!45, !17}
!46 = !{!12, !6, i64 59}


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

@swap = external dso_local local_unnamed_addr global i32, align 4
@stderr = external local_unnamed_addr global ptr, align 8
@.str.4 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [156 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [2 x i8], align 1

declare void @read_bytes(i32 noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nofree nounwind
declare noundef i32 @fprintf(ptr nocapture noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local range(i32 0, 2) i32 @read_super(i32 noundef %0, ptr noundef %1, ptr nocapture noundef writeonly %2, ptr noundef %3) local_unnamed_addr #2 {
  tail call void @read_bytes(i32 noundef %0, i32 noundef 0, i32 noundef 63, ptr noundef %1) #3
  store i32 0, ptr @swap, align 4, !tbaa !5
  %5 = load i32, ptr %1, align 1, !tbaa !9
  switch i32 %5, label %137 [
    i32 1936814952, label %._crit_edge
    i32 1752396147, label %6
  ]

._crit_edge:                                      ; preds = %4
  %.phi.trans.insert = getelementptr inbounds i8, ptr %1, i64 28
  %.pre = load i64, ptr %.phi.trans.insert, align 1
  br label %140

6:                                                ; preds = %4
  %7 = load ptr, ptr @stderr, align 8, !tbaa !12
  %8 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7, ptr noundef nonnull @.str.4, ptr noundef %3) #4
  %9 = getelementptr inbounds i8, ptr %1, i64 1
  %10 = load i8, ptr %1, align 1, !tbaa !14
  %11 = getelementptr inbounds i8, ptr %1, i64 2
  %12 = load i8, ptr %9, align 1, !tbaa !14
  %13 = getelementptr inbounds i8, ptr %1, i64 3
  %14 = load i8, ptr %11, align 1, !tbaa !14
  %15 = load i8, ptr %13, align 1, !tbaa !14
  %.sroa.7365.0.insert.ext = zext i8 %10 to i32
  %.sroa.7365.0.insert.shift = shl nuw i32 %.sroa.7365.0.insert.ext, 24
  %.sroa.6364.0.insert.ext = zext i8 %12 to i32
  %.sroa.6364.0.insert.shift = shl nuw nsw i32 %.sroa.6364.0.insert.ext, 16
  %.sroa.6364.0.insert.insert = or disjoint i32 %.sroa.7365.0.insert.shift, %.sroa.6364.0.insert.shift
  %.sroa.5363.0.insert.ext = zext i8 %14 to i32
  %.sroa.5363.0.insert.shift = shl nuw nsw i32 %.sroa.5363.0.insert.ext, 8
  %.sroa.5363.0.insert.insert = or disjoint i32 %.sroa.6364.0.insert.insert, %.sroa.5363.0.insert.shift
  %.sroa.4362.0.insert.ext = zext i8 %15 to i32
  %.sroa.4362.0.insert.insert = or disjoint i32 %.sroa.5363.0.insert.insert, %.sroa.4362.0.insert.ext
  %16 = getelementptr inbounds i8, ptr %1, i64 4
  %17 = getelementptr inbounds i8, ptr %1, i64 5
  %18 = load i8, ptr %16, align 1, !tbaa !14
  %19 = getelementptr inbounds i8, ptr %1, i64 6
  %20 = load i8, ptr %17, align 1, !tbaa !14
  %21 = getelementptr inbounds i8, ptr %1, i64 7
  %22 = load i8, ptr %19, align 1, !tbaa !14
  %23 = load i8, ptr %21, align 1, !tbaa !14
  %.sroa.7360.0.insert.ext = zext i8 %18 to i32
  %.sroa.7360.0.insert.shift = shl nuw i32 %.sroa.7360.0.insert.ext, 24
  %.sroa.6359.0.insert.ext = zext i8 %20 to i32
  %.sroa.6359.0.insert.shift = shl nuw nsw i32 %.sroa.6359.0.insert.ext, 16
  %.sroa.6359.0.insert.insert = or disjoint i32 %.sroa.7360.0.insert.shift, %.sroa.6359.0.insert.shift
  %.sroa.5358.0.insert.ext = zext i8 %22 to i32
  %.sroa.5358.0.insert.shift = shl nuw nsw i32 %.sroa.5358.0.insert.ext, 8
  %.sroa.5358.0.insert.insert = or disjoint i32 %.sroa.6359.0.insert.insert, %.sroa.5358.0.insert.shift
  %.sroa.4357.0.insert.ext = zext i8 %23 to i32
  %.sroa.4357.0.insert.insert = or disjoint i32 %.sroa.5358.0.insert.insert, %.sroa.4357.0.insert.ext
  %24 = getelementptr inbounds i8, ptr %1, i64 8
  %25 = getelementptr inbounds i8, ptr %1, i64 9
  %26 = load i8, ptr %24, align 1, !tbaa !14
  %27 = getelementptr inbounds i8, ptr %1, i64 10
  %28 = load i8, ptr %25, align 1, !tbaa !14
  %29 = getelementptr inbounds i8, ptr %1, i64 11
  %30 = load i8, ptr %27, align 1, !tbaa !14
  %31 = load i8, ptr %29, align 1, !tbaa !14
  %.sroa.7355.0.insert.ext = zext i8 %26 to i32
  %.sroa.7355.0.insert.shift = shl nuw i32 %.sroa.7355.0.insert.ext, 24
  %.sroa.6354.0.insert.ext = zext i8 %28 to i32
  %.sroa.6354.0.insert.shift = shl nuw nsw i32 %.sroa.6354.0.insert.ext, 16
  %.sroa.6354.0.insert.insert = or disjoint i32 %.sroa.7355.0.insert.shift, %.sroa.6354.0.insert.shift
  %.sroa.5353.0.insert.ext = zext i8 %30 to i32
  %.sroa.5353.0.insert.shift = shl nuw nsw i32 %.sroa.5353.0.insert.ext, 8
  %.sroa.5353.0.insert.insert = or disjoint i32 %.sroa.6354.0.insert.insert, %.sroa.5353.0.insert.shift
  %.sroa.4352.0.insert.ext = zext i8 %31 to i32
  %.sroa.4352.0.insert.insert = or disjoint i32 %.sroa.5353.0.insert.insert, %.sroa.4352.0.insert.ext
  %32 = getelementptr inbounds i8, ptr %1, i64 12
  %33 = getelementptr inbounds i8, ptr %1, i64 13
  %34 = load i8, ptr %32, align 1, !tbaa !14
  %35 = getelementptr inbounds i8, ptr %1, i64 14
  %36 = load i8, ptr %33, align 1, !tbaa !14
  %37 = getelementptr inbounds i8, ptr %1, i64 15
  %38 = load i8, ptr %35, align 1, !tbaa !14
  %39 = load i8, ptr %37, align 1, !tbaa !14
  %.sroa.7350.0.insert.ext = zext i8 %34 to i32
  %.sroa.7350.0.insert.shift = shl nuw i32 %.sroa.7350.0.insert.ext, 24
  %.sroa.6349.0.insert.ext = zext i8 %36 to i32
  %.sroa.6349.0.insert.shift = shl nuw nsw i32 %.sroa.6349.0.insert.ext, 16
  %.sroa.6349.0.insert.insert = or disjoint i32 %.sroa.7350.0.insert.shift, %.sroa.6349.0.insert.shift
  %.sroa.5348.0.insert.ext = zext i8 %38 to i32
  %.sroa.5348.0.insert.shift = shl nuw nsw i32 %.sroa.5348.0.insert.ext, 8
  %.sroa.5348.0.insert.insert = or disjoint i32 %.sroa.6349.0.insert.insert, %.sroa.5348.0.insert.shift
  %.sroa.4347.0.insert.ext = zext i8 %39 to i32
  %.sroa.4347.0.insert.insert = or disjoint i32 %.sroa.5348.0.insert.insert, %.sroa.4347.0.insert.ext
  %40 = getelementptr inbounds i8, ptr %1, i64 16
  %41 = getelementptr inbounds i8, ptr %1, i64 17
  %42 = load i8, ptr %40, align 1, !tbaa !14
  %43 = getelementptr inbounds i8, ptr %1, i64 18
  %44 = load i8, ptr %41, align 1, !tbaa !14
  %45 = getelementptr inbounds i8, ptr %1, i64 19
  %46 = load i8, ptr %43, align 1, !tbaa !14
  %47 = load i8, ptr %45, align 1, !tbaa !14
  %.sroa.7345.0.insert.ext = zext i8 %42 to i32
  %.sroa.7345.0.insert.shift = shl nuw i32 %.sroa.7345.0.insert.ext, 24
  %.sroa.6344.0.insert.ext = zext i8 %44 to i32
  %.sroa.6344.0.insert.shift = shl nuw nsw i32 %.sroa.6344.0.insert.ext, 16
  %.sroa.6344.0.insert.insert = or disjoint i32 %.sroa.7345.0.insert.shift, %.sroa.6344.0.insert.shift
  %.sroa.5343.0.insert.ext = zext i8 %46 to i32
  %.sroa.5343.0.insert.shift = shl nuw nsw i32 %.sroa.5343.0.insert.ext, 8
  %.sroa.5343.0.insert.insert = or disjoint i32 %.sroa.6344.0.insert.insert, %.sroa.5343.0.insert.shift
  %.sroa.4342.0.insert.ext = zext i8 %47 to i32
  %.sroa.4342.0.insert.insert = or disjoint i32 %.sroa.5343.0.insert.insert, %.sroa.4342.0.insert.ext
  %48 = getelementptr inbounds i8, ptr %1, i64 20
  %49 = getelementptr inbounds i8, ptr %1, i64 21
  %50 = load i8, ptr %48, align 1, !tbaa !14
  %51 = getelementptr inbounds i8, ptr %1, i64 22
  %52 = load i8, ptr %49, align 1, !tbaa !14
  %53 = getelementptr inbounds i8, ptr %1, i64 23
  %54 = load i8, ptr %51, align 1, !tbaa !14
  %55 = load i8, ptr %53, align 1, !tbaa !14
  %.sroa.7340.0.insert.ext = zext i8 %50 to i32
  %.sroa.7340.0.insert.shift = shl nuw i32 %.sroa.7340.0.insert.ext, 24
  %.sroa.6339.0.insert.ext = zext i8 %52 to i32
  %.sroa.6339.0.insert.shift = shl nuw nsw i32 %.sroa.6339.0.insert.ext, 16
  %.sroa.6339.0.insert.insert = or disjoint i32 %.sroa.7340.0.insert.shift, %.sroa.6339.0.insert.shift
  %.sroa.5338.0.insert.ext = zext i8 %54 to i32
  %.sroa.5338.0.insert.shift = shl nuw nsw i32 %.sroa.5338.0.insert.ext, 8
  %.sroa.5338.0.insert.insert = or disjoint i32 %.sroa.6339.0.insert.insert, %.sroa.5338.0.insert.shift
  %.sroa.4337.0.insert.ext = zext i8 %55 to i32
  %.sroa.4337.0.insert.insert = or disjoint i32 %.sroa.5338.0.insert.insert, %.sroa.4337.0.insert.ext
  %56 = getelementptr inbounds i8, ptr %1, i64 24
  %57 = getelementptr inbounds i8, ptr %1, i64 25
  %58 = load i8, ptr %56, align 1, !tbaa !14
  %59 = getelementptr inbounds i8, ptr %1, i64 26
  %60 = load i8, ptr %57, align 1, !tbaa !14
  %61 = getelementptr inbounds i8, ptr %1, i64 27
  %62 = load i8, ptr %59, align 1, !tbaa !14
  %63 = load i8, ptr %61, align 1, !tbaa !14
  %.sroa.7335.0.insert.ext = zext i8 %58 to i32
  %.sroa.7335.0.insert.shift = shl nuw i32 %.sroa.7335.0.insert.ext, 24
  %.sroa.6334.0.insert.ext = zext i8 %60 to i32
  %.sroa.6334.0.insert.shift = shl nuw nsw i32 %.sroa.6334.0.insert.ext, 16
  %.sroa.6334.0.insert.insert = or disjoint i32 %.sroa.7335.0.insert.shift, %.sroa.6334.0.insert.shift
  %.sroa.5333.0.insert.ext = zext i8 %62 to i32
  %.sroa.5333.0.insert.shift = shl nuw nsw i32 %.sroa.5333.0.insert.ext, 8
  %.sroa.5333.0.insert.insert = or disjoint i32 %.sroa.6334.0.insert.insert, %.sroa.5333.0.insert.shift
  %.sroa.4332.0.insert.ext = zext i8 %63 to i32
  %.sroa.4332.0.insert.insert = or disjoint i32 %.sroa.5333.0.insert.insert, %.sroa.4332.0.insert.ext
  %64 = getelementptr inbounds i8, ptr %1, i64 28
  %65 = getelementptr inbounds i8, ptr %1, i64 29
  %66 = load i8, ptr %64, align 1, !tbaa !14
  %67 = load i8, ptr %65, align 1, !tbaa !14
  %.sroa.5330.0.insert.ext = zext i8 %66 to i64
  %.sroa.5330.0.insert.shift = shl nuw nsw i64 %.sroa.5330.0.insert.ext, 8
  %.sroa.4329.0.insert.ext = zext i8 %67 to i64
  %.sroa.4329.0.insert.insert = or disjoint i64 %.sroa.5330.0.insert.shift, %.sroa.4329.0.insert.ext
  %68 = getelementptr inbounds i8, ptr %1, i64 30
  %69 = getelementptr inbounds i8, ptr %1, i64 31
  %70 = load i8, ptr %68, align 1, !tbaa !14
  %71 = load i8, ptr %69, align 1, !tbaa !14
  %.sroa.5327.0.insert.ext = zext i8 %70 to i64
  %.sroa.5327.0.insert.shift = shl nuw nsw i64 %.sroa.5327.0.insert.ext, 24
  %.sroa.4326.0.insert.ext = zext i8 %71 to i64
  %.sroa.4326.0.insert.shift = shl nuw nsw i64 %.sroa.4326.0.insert.ext, 16
  %.sroa.4326.0.insert.insert = or disjoint i64 %.sroa.5327.0.insert.shift, %.sroa.4326.0.insert.shift
  %72 = getelementptr inbounds i8, ptr %1, i64 32
  %73 = getelementptr inbounds i8, ptr %1, i64 33
  %74 = load i8, ptr %72, align 1, !tbaa !14
  %75 = load i8, ptr %73, align 1, !tbaa !14
  %.sroa.5324.0.insert.ext = zext i8 %74 to i64
  %.sroa.5324.0.insert.shift = shl nuw nsw i64 %.sroa.5324.0.insert.ext, 40
  %.sroa.4323.0.insert.ext = zext i8 %75 to i64
  %.sroa.4323.0.insert.shift = shl nuw nsw i64 %.sroa.4323.0.insert.ext, 32
  %.sroa.4323.0.insert.insert = or disjoint i64 %.sroa.5324.0.insert.shift, %.sroa.4323.0.insert.shift
  %76 = getelementptr inbounds i8, ptr %1, i64 34
  %77 = getelementptr inbounds i8, ptr %1, i64 35
  %78 = load i8, ptr %76, align 1, !tbaa !14
  %79 = load i8, ptr %77, align 1, !tbaa !14
  %80 = or disjoint i64 %.sroa.4326.0.insert.insert, %.sroa.4329.0.insert.insert
  %.sroa.5321.0.insert.ext = zext i8 %78 to i64
  %.sroa.5321.0.insert.shift = shl nuw i64 %.sroa.5321.0.insert.ext, 56
  %.sroa.4320.0.insert.ext = zext i8 %79 to i64
  %.sroa.4320.0.insert.shift = shl nuw nsw i64 %.sroa.4320.0.insert.ext, 48
  %.sroa.4320.0.insert.insert = or disjoint i64 %.sroa.5321.0.insert.shift, %.sroa.4320.0.insert.shift
  %81 = getelementptr inbounds i8, ptr %1, i64 36
  %82 = load i8, ptr %81, align 1, !tbaa !14
  %83 = getelementptr inbounds i8, ptr %1, i64 37
  %84 = load i8, ptr %83, align 1, !tbaa !14
  %.sroa.4316.0.insert.ext = zext i8 %84 to i16
  %.sroa.4316.0.insert.shift = shl nuw i16 %.sroa.4316.0.insert.ext, 8
  %85 = getelementptr inbounds i8, ptr %1, i64 39
  %86 = getelementptr inbounds i8, ptr %1, i64 40
  %87 = load i8, ptr %85, align 1, !tbaa !14
  %88 = getelementptr inbounds i8, ptr %1, i64 41
  %89 = load i8, ptr %86, align 1, !tbaa !14
  %90 = getelementptr inbounds i8, ptr %1, i64 42
  %91 = load i8, ptr %88, align 1, !tbaa !14
  %92 = load i8, ptr %90, align 1, !tbaa !14
  %93 = or disjoint i64 %80, %.sroa.4323.0.insert.insert
  %94 = zext i8 %82 to i16
  %95 = or disjoint i16 %.sroa.4316.0.insert.shift, %94
  %.sroa.7312.0.insert.ext = zext i8 %87 to i32
  %.sroa.7312.0.insert.shift = shl nuw i32 %.sroa.7312.0.insert.ext, 24
  %.sroa.6311.0.insert.ext = zext i8 %89 to i32
  %.sroa.6311.0.insert.shift = shl nuw nsw i32 %.sroa.6311.0.insert.ext, 16
  %.sroa.6311.0.insert.insert = or disjoint i32 %.sroa.7312.0.insert.shift, %.sroa.6311.0.insert.shift
  %.sroa.5310.0.insert.ext = zext i8 %91 to i32
  %.sroa.5310.0.insert.shift = shl nuw nsw i32 %.sroa.5310.0.insert.ext, 8
  %.sroa.5310.0.insert.insert = or disjoint i32 %.sroa.6311.0.insert.insert, %.sroa.5310.0.insert.shift
  %.sroa.4309.0.insert.ext = zext i8 %92 to i32
  %.sroa.4309.0.insert.insert = or disjoint i32 %.sroa.5310.0.insert.insert, %.sroa.4309.0.insert.ext
  %96 = getelementptr inbounds i8, ptr %1, i64 43
  %97 = getelementptr inbounds i8, ptr %1, i64 44
  %98 = load i8, ptr %96, align 1, !tbaa !14
  %99 = getelementptr inbounds i8, ptr %1, i64 45
  %100 = load i8, ptr %97, align 1, !tbaa !14
  %101 = getelementptr inbounds i8, ptr %1, i64 46
  %102 = load i8, ptr %99, align 1, !tbaa !14
  %103 = getelementptr inbounds i8, ptr %1, i64 47
  %104 = load i8, ptr %101, align 1, !tbaa !14
  %105 = getelementptr inbounds i8, ptr %1, i64 48
  %106 = load i8, ptr %103, align 1, !tbaa !14
  %107 = getelementptr inbounds i8, ptr %1, i64 49
  %108 = load i8, ptr %105, align 1, !tbaa !14
  %109 = getelementptr inbounds i8, ptr %1, i64 50
  %110 = load i8, ptr %107, align 1, !tbaa !14
  %111 = load i8, ptr %109, align 1, !tbaa !14
  %.sroa.11.0.insert.ext = zext i8 %98 to i64
  %.sroa.11.0.insert.shift = shl nuw i64 %.sroa.11.0.insert.ext, 56
  %.sroa.10.0.insert.ext = zext i8 %100 to i64
  %.sroa.10.0.insert.shift = shl nuw nsw i64 %.sroa.10.0.insert.ext, 48
  %.sroa.10.0.insert.insert = or disjoint i64 %.sroa.11.0.insert.shift, %.sroa.10.0.insert.shift
  %.sroa.9.0.insert.ext = zext i8 %102 to i64
  %.sroa.9.0.insert.shift = shl nuw nsw i64 %.sroa.9.0.insert.ext, 40
  %.sroa.9.0.insert.insert = or disjoint i64 %.sroa.10.0.insert.insert, %.sroa.9.0.insert.shift
  %.sroa.8.0.insert.ext = zext i8 %104 to i64
  %.sroa.8.0.insert.shift = shl nuw nsw i64 %.sroa.8.0.insert.ext, 32
  %.sroa.8.0.insert.insert = or disjoint i64 %.sroa.9.0.insert.insert, %.sroa.8.0.insert.shift
  %.sroa.7307.0.insert.ext = zext i8 %106 to i64
  %.sroa.7307.0.insert.shift = shl nuw nsw i64 %.sroa.7307.0.insert.ext, 24
  %.sroa.7307.0.insert.insert = or disjoint i64 %.sroa.8.0.insert.insert, %.sroa.7307.0.insert.shift
  %.sroa.6306.0.insert.ext = zext i8 %108 to i64
  %.sroa.6306.0.insert.shift = shl nuw nsw i64 %.sroa.6306.0.insert.ext, 16
  %.sroa.5305.0.insert.ext = zext i8 %110 to i64
  %.sroa.5305.0.insert.shift = shl nuw nsw i64 %.sroa.5305.0.insert.ext, 8
  %.sroa.5305.0.insert.mask = or disjoint i64 %.sroa.7307.0.insert.insert, %.sroa.6306.0.insert.shift
  %.sroa.0304.0.insert.ext = zext i8 %111 to i64
  %.sroa.0304.0.insert.mask = or i64 %.sroa.5305.0.insert.mask, %.sroa.5305.0.insert.shift
  %.sroa.0304.0.insert.insert = or i64 %.sroa.0304.0.insert.mask, %.sroa.0304.0.insert.ext
  %112 = getelementptr inbounds i8, ptr %1, i64 51
  %113 = getelementptr inbounds i8, ptr %1, i64 52
  %114 = load i8, ptr %112, align 1, !tbaa !14
  %115 = getelementptr inbounds i8, ptr %1, i64 53
  %116 = load i8, ptr %113, align 1, !tbaa !14
  %117 = getelementptr inbounds i8, ptr %1, i64 54
  %118 = load i8, ptr %115, align 1, !tbaa !14
  %119 = load i8, ptr %117, align 1, !tbaa !14
  %120 = or disjoint i64 %93, %.sroa.4320.0.insert.insert
  %.sroa.7303.0.insert.ext = zext i8 %114 to i32
  %.sroa.7303.0.insert.shift = shl nuw i32 %.sroa.7303.0.insert.ext, 24
  %.sroa.6302.0.insert.ext = zext i8 %116 to i32
  %.sroa.6302.0.insert.shift = shl nuw nsw i32 %.sroa.6302.0.insert.ext, 16
  %.sroa.6302.0.insert.insert = or disjoint i32 %.sroa.7303.0.insert.shift, %.sroa.6302.0.insert.shift
  %.sroa.5301.0.insert.ext = zext i8 %118 to i32
  %.sroa.5301.0.insert.shift = shl nuw nsw i32 %.sroa.5301.0.insert.ext, 8
  %.sroa.5301.0.insert.insert = or disjoint i32 %.sroa.6302.0.insert.insert, %.sroa.5301.0.insert.shift
  %.sroa.4300.0.insert.ext = zext i8 %119 to i32
  %.sroa.4300.0.insert.insert = or disjoint i32 %.sroa.5301.0.insert.insert, %.sroa.4300.0.insert.ext
  %121 = getelementptr inbounds i8, ptr %1, i64 55
  %122 = getelementptr inbounds i8, ptr %1, i64 56
  %123 = load i8, ptr %121, align 1, !tbaa !14
  %124 = getelementptr inbounds i8, ptr %1, i64 57
  %125 = load i8, ptr %122, align 1, !tbaa !14
  %126 = getelementptr inbounds i8, ptr %1, i64 58
  %127 = load i8, ptr %124, align 1, !tbaa !14
  %128 = load i8, ptr %126, align 1, !tbaa !14
  %.sroa.7298.0.insert.ext = zext i8 %123 to i32
  %.sroa.7298.0.insert.shift = shl nuw i32 %.sroa.7298.0.insert.ext, 24
  %.sroa.6297.0.insert.ext = zext i8 %125 to i32
  %.sroa.6297.0.insert.shift = shl nuw nsw i32 %.sroa.6297.0.insert.ext, 16
  %.sroa.6297.0.insert.insert = or disjoint i32 %.sroa.7298.0.insert.shift, %.sroa.6297.0.insert.shift
  %.sroa.5296.0.insert.ext = zext i8 %127 to i32
  %.sroa.5296.0.insert.shift = shl nuw nsw i32 %.sroa.5296.0.insert.ext, 8
  %.sroa.5296.0.insert.insert = or disjoint i32 %.sroa.6297.0.insert.insert, %.sroa.5296.0.insert.shift
  %.sroa.4295.0.insert.ext = zext i8 %128 to i32
  %.sroa.4295.0.insert.insert = or disjoint i32 %.sroa.5296.0.insert.insert, %.sroa.4295.0.insert.ext
  %129 = getelementptr inbounds i8, ptr %1, i64 59
  %130 = getelementptr inbounds i8, ptr %1, i64 60
  %131 = load i8, ptr %129, align 1, !tbaa !14
  %132 = getelementptr inbounds i8, ptr %1, i64 61
  %133 = load i8, ptr %130, align 1, !tbaa !14
  %134 = getelementptr inbounds i8, ptr %1, i64 62
  %135 = load i8, ptr %132, align 1, !tbaa !14
  %136 = load i8, ptr %134, align 1, !tbaa !14
  %.sroa.7.0.insert.ext = zext i8 %131 to i32
  %.sroa.7.0.insert.shift = shl nuw i32 %.sroa.7.0.insert.ext, 24
  %.sroa.6.0.insert.ext = zext i8 %133 to i32
  %.sroa.6.0.insert.shift = shl nuw nsw i32 %.sroa.6.0.insert.ext, 16
  %.sroa.6.0.insert.insert = or disjoint i32 %.sroa.7.0.insert.shift, %.sroa.6.0.insert.shift
  %.sroa.5.0.insert.ext = zext i8 %135 to i32
  %.sroa.5.0.insert.shift = shl nuw nsw i32 %.sroa.5.0.insert.ext, 8
  %.sroa.5.0.insert.insert = or disjoint i32 %.sroa.6.0.insert.insert, %.sroa.5.0.insert.shift
  %.sroa.4.0.insert.ext = zext i8 %136 to i32
  %.sroa.4.0.insert.insert = or disjoint i32 %.sroa.5.0.insert.insert, %.sroa.4.0.insert.ext
  store i32 %.sroa.4362.0.insert.insert, ptr %1, align 1
  store i32 %.sroa.4357.0.insert.insert, ptr %16, align 1
  store i32 %.sroa.4352.0.insert.insert, ptr %24, align 1
  store i32 %.sroa.4347.0.insert.insert, ptr %32, align 1
  store i32 %.sroa.4342.0.insert.insert, ptr %40, align 1
  store i32 %.sroa.4337.0.insert.insert, ptr %48, align 1
  store i32 %.sroa.4332.0.insert.insert, ptr %56, align 1
  store i64 %120, ptr %64, align 1
  store i16 %95, ptr %81, align 1
  store i32 %.sroa.4309.0.insert.insert, ptr %85, align 1
  store i64 %.sroa.0304.0.insert.insert, ptr %96, align 1
  store i32 %.sroa.4300.0.insert.insert, ptr %112, align 1
  store i32 %.sroa.4295.0.insert.insert, ptr %121, align 1
  store i32 %.sroa.4.0.insert.insert, ptr %129, align 1
  store i32 1, ptr @swap, align 4, !tbaa !5
  br label %140

137:                                              ; preds = %4
  %138 = load ptr, ptr @stderr, align 8, !tbaa !12
  %139 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %138, ptr noundef nonnull @.str.5, ptr noundef %3) #4
  br label %206

140:                                              ; preds = %._crit_edge, %6
  %141 = phi i32 [ 0, %._crit_edge ], [ 1, %6 ]
  %142 = phi i64 [ %.pre, %._crit_edge ], [ %120, %6 ]
  %143 = and i64 %142, 4294901759
  %or.cond = icmp eq i64 %143, 2
  br i1 %or.cond, label %154, label %144

144:                                              ; preds = %140
  %145 = trunc i64 %142 to i32
  %146 = and i32 %145, 65535
  %147 = icmp eq i32 %146, 1
  %148 = load ptr, ptr @stderr, align 8, !tbaa !12
  br i1 %147, label %149, label %151

149:                                              ; preds = %144
  %150 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %148, ptr noundef nonnull @.str.6, ptr noundef %3) #4
  br label %206

151:                                              ; preds = %144
  %152 = lshr i32 %145, 16
  %153 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %148, ptr noundef nonnull @.str.7, ptr noundef %3, i32 noundef %146, i32 noundef %152, i32 noundef 2, i32 noundef 1) #4
  br label %206

154:                                              ; preds = %140
  store i32 %141, ptr %2, align 4, !tbaa !5
  %155 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, ptr noundef %3)
  %156 = getelementptr inbounds i8, ptr %1, i64 36
  %157 = load i16, ptr %156, align 1
  %158 = and i16 %157, 1
  %.not233 = icmp eq i16 %158, 0
  %159 = select i1 %.not233, ptr @.str.11, ptr @.str.10
  %160 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.9, ptr noundef nonnull %159)
  %161 = load i16, ptr %156, align 1
  %162 = and i16 %161, 2
  %.not234 = icmp eq i16 %162, 0
  %163 = select i1 %.not234, ptr @.str.11, ptr @.str.10
  %164 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.12, ptr noundef nonnull %163)
  %165 = load i16, ptr %156, align 1
  %166 = and i16 %165, 8
  %.not235 = icmp eq i16 %166, 0
  %167 = select i1 %.not235, ptr @.str.11, ptr @.str.10
  %168 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.13, ptr noundef nonnull %167)
  %169 = load i16, ptr %156, align 1
  %170 = and i16 %169, 4
  %.not236 = icmp eq i16 %170, 0
  %171 = select i1 %.not236, ptr @.str.15, ptr @.str.11
  %172 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.14, ptr noundef nonnull %171)
  %173 = load i16, ptr %156, align 1
  %174 = and i16 %173, 16
  %.not237 = icmp eq i16 %174, 0
  %175 = select i1 %.not237, ptr @.str.11, ptr @.str.15
  %176 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.16, ptr noundef nonnull %175)
  %177 = load i16, ptr %156, align 1
  %178 = and i16 %177, 32
  %.not238 = icmp eq i16 %178, 0
  %179 = select i1 %.not238, ptr @.str.15, ptr @.str.11
  %180 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.17, ptr noundef nonnull %179)
  %181 = load i16, ptr %156, align 1
  %182 = and i16 %181, 64
  %.not239 = icmp eq i16 %182, 0
  %183 = select i1 %.not239, ptr @.str.15, ptr @.str.11
  %184 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.18, ptr noundef nonnull %183)
  %185 = getelementptr inbounds i8, ptr %1, i64 8
  %186 = load i32, ptr %185, align 1, !tbaa !15
  %187 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.19, i32 noundef %186)
  %188 = getelementptr inbounds i8, ptr %1, i64 51
  %189 = load i32, ptr %188, align 1, !tbaa !16
  %190 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.20, i32 noundef %189)
  %191 = getelementptr inbounds i8, ptr %1, i64 55
  %192 = load i32, ptr %191, align 1, !tbaa !17
  %193 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.21, i32 noundef %192)
  %194 = getelementptr inbounds i8, ptr %1, i64 4
  %195 = load i32, ptr %194, align 1, !tbaa !18
  %196 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.22, i32 noundef %195)
  %197 = load i16, ptr %156, align 1
  %198 = lshr i16 %197, 8
  %199 = zext nneg i16 %198 to i32
  %200 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.23, i32 noundef %199)
  %201 = getelementptr inbounds i8, ptr %1, i64 38
  %202 = load i8, ptr %201, align 1
  %203 = zext i8 %202 to i32
  %204 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.24, i32 noundef %203)
  %205 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.25)
  br label %206

206:                                              ; preds = %137, %151, %149, %154
  %.0173 = phi i32 [ 1, %154 ], [ 0, %149 ], [ 0, %151 ], [ 0, %137 ]
  ret i32 %.0173
}

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #1

attributes #0 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nofree nounwind "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 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 #3 = { nounwind }
attributes #4 = { cold 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !6, i64 0}
!10 = !{!"squashfs_super_block", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !6, i64 30, !6, i64 32, !6, i64 34, !6, i64 36, !6, i64 37, !6, i64 38, !6, i64 39, !11, i64 43, !6, i64 51, !6, i64 55, !6, i64 59}
!11 = !{!"long long", !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"any pointer", !7, i64 0}
!14 = !{!7, !7, i64 0}
!15 = !{!10, !6, i64 8}
!16 = !{!10, !6, i64 51}
!17 = !{!10, !6, i64 55}
!18 = !{!10, !6, i64 4}


; Effective O3 passes: BDCEPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,LoopRotatePass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass