; LLVM IR from mlcommons/tiny :: benchmark/interface/Middlewares/ST/filex/common/src/fx_directory_entry_write.l_f843b004 (write)

; 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.FX_MEDIA_STRUCT = type { i64, ptr, ptr, i64, i32, i64, ptr, ptr, i64, i64, i32, i32, i32, i64, i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, i32, i64, i64, i32, i64, i64, ptr, i32, i32, ptr, i64, i64, i64, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, i64, ptr, ptr, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, %struct.TX_MUTEX_STRUCT, i32, %struct.FX_DIR_ENTRY_STRUCT, %struct.FX_DIR_ENTRY_STRUCT, [256 x i8], [256 x i8], %struct.FX_PATH_STRUCT, [16 x %struct.FX_FAT_CACHE_ENTRY_STRUCT], [128 x i8], i64, [1024 x i8], [256 x %struct.FX_CACHED_SECTOR_STRUCT], i64, i64, i64, i64, i8 }
%struct.TX_MUTEX_STRUCT = type { i64, ptr, i32, ptr, i32, i32, ptr, i32, ptr, ptr, i32, ptr, ptr }
%struct.FX_DIR_ENTRY_STRUCT = type { ptr, [13 x i8], i32, i32, i8, i8, i8, i32, i32, i32, i32, i32, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64 }
%struct.FX_PATH_STRUCT = type { %struct.FX_DIR_ENTRY_STRUCT, [256 x i8], [256 x i8], i64 }
%struct.FX_FAT_CACHE_ENTRY_STRUCT = type { i64, i64, i64 }
%struct.FX_CACHED_SECTOR_STRUCT = type { ptr, i64, i8, i8, i8, i8, ptr }

; Function Attrs: nounwind uwtable
define dso_local i32 @_fx_directory_entry_write(ptr noundef %0, ptr noundef %1) #0 {
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i8, align 1
  %22 = alloca i8, align 1
  %23 = alloca i8, align 1
  %24 = alloca [12 x i8], align 1
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 12, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #3
  %31 = load ptr, ptr %4, align 8, !tbaa !5
  %32 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %31, i32 0, i32 89
  %33 = load i64, ptr %32, align 8, !tbaa !9
  %34 = add i64 %33, 1
  store i64 %34, ptr %32, align 8, !tbaa !9
  %35 = load ptr, ptr %5, align 8, !tbaa !5
  %36 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %35, i32 0, i32 0
  %37 = load ptr, ptr %36, align 8, !tbaa !17
  %38 = getelementptr inbounds i8, ptr %37, i64 0
  %39 = load i8, ptr %38, align 1, !tbaa !18
  %40 = zext i8 %39 to i32
  %41 = icmp eq i32 %40, 229
  br i1 %41, label %42, label %53

42:                                               ; preds = %2
  %43 = load ptr, ptr %5, align 8, !tbaa !5
  %44 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %43, i32 0, i32 1
  %45 = getelementptr inbounds [13 x i8], ptr %44, i64 0, i64 0
  %46 = load i8, ptr %45, align 8, !tbaa !18
  %47 = zext i8 %46 to i32
  %48 = icmp eq i32 %47, 229
  br i1 %48, label %49, label %53

49:                                               ; preds = %42
  store i32 1, ptr %11, align 4, !tbaa !19
  %50 = load ptr, ptr %5, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %50, i32 0, i32 1
  %52 = getelementptr inbounds [13 x i8], ptr %51, i64 0, i64 0
  store i8 0, ptr %52, align 8, !tbaa !18
  br label %54

53:                                               ; preds = %42, %2
  store i32 0, ptr %11, align 4, !tbaa !19
  br label %54

54:                                               ; preds = %53, %49
  %55 = load ptr, ptr %5, align 8, !tbaa !5
  %56 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %55, i32 0, i32 15
  %57 = load i64, ptr %56, align 8, !tbaa !20
  store i64 %57, ptr %27, align 8, !tbaa !21
  %58 = load ptr, ptr %5, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %58, i32 0, i32 14
  %60 = load i64, ptr %59, align 8, !tbaa !22
  store i64 %60, ptr %25, align 8, !tbaa !21
  %61 = load i64, ptr %25, align 8, !tbaa !21
  %62 = load ptr, ptr %4, align 8, !tbaa !5
  %63 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %62, i32 0, i32 18
  %64 = load i32, ptr %63, align 4, !tbaa !23
  %65 = zext i32 %64 to i64
  %66 = icmp uge i64 %61, %65
  br i1 %66, label %67, label %94

67:                                               ; preds = %54
  %68 = load i64, ptr %25, align 8, !tbaa !21
  %69 = load ptr, ptr %4, align 8, !tbaa !5
  %70 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %69, i32 0, i32 18
  %71 = load i32, ptr %70, align 4, !tbaa !23
  %72 = zext i32 %71 to i64
  %73 = sub i64 %68, %72
  %74 = load ptr, ptr %4, align 8, !tbaa !5
  %75 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %74, i32 0, i32 19
  %76 = load i32, ptr %75, align 8, !tbaa !24
  %77 = zext i32 %76 to i64
  %78 = udiv i64 %73, %77
  %79 = add i64 %78, 2
  store i64 %79, ptr %28, align 8, !tbaa !21
  %80 = load i64, ptr %25, align 8, !tbaa !21
  %81 = load ptr, ptr %4, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %81, i32 0, i32 18
  %83 = load i32, ptr %82, align 4, !tbaa !23
  %84 = zext i32 %83 to i64
  %85 = load i64, ptr %28, align 8, !tbaa !21
  %86 = sub i64 %85, 2
  %87 = load ptr, ptr %4, align 8, !tbaa !5
  %88 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %87, i32 0, i32 19
  %89 = load i32, ptr %88, align 8, !tbaa !24
  %90 = zext i32 %89 to i64
  %91 = mul i64 %86, %90
  %92 = add i64 %84, %91
  %93 = sub i64 %80, %92
  store i64 %93, ptr %26, align 8, !tbaa !21
  br label %95

94:                                               ; preds = %54
  store i64 0, ptr %28, align 8, !tbaa !21
  store i64 0, ptr %26, align 8, !tbaa !21
  br label %95

95:                                               ; preds = %94, %67
  %96 = load ptr, ptr %4, align 8, !tbaa !5
  %97 = load ptr, ptr %5, align 8, !tbaa !5
  %98 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %97, i32 0, i32 14
  %99 = load i64, ptr %98, align 8, !tbaa !22
  %100 = load ptr, ptr %4, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %100, i32 0, i32 2
  %102 = load ptr, ptr %101, align 8, !tbaa !25
  %103 = call i32 @_fx_utility_logical_sector_read(ptr noundef %96, i64 noundef %99, ptr noundef %102, i64 noundef 1, i8 noundef zeroext 3)
  store i32 %103, ptr %8, align 4, !tbaa !19
  %104 = load i32, ptr %8, align 4, !tbaa !19
  %105 = icmp ne i32 %104, 0
  br i1 %105, label %106, label %108

106:                                              ; preds = %95
  %107 = load i32, ptr %8, align 4, !tbaa !19
  store i32 %107, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %1431

108:                                              ; preds = %95
  %109 = load ptr, ptr %4, align 8, !tbaa !5
  %110 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %109, i32 0, i32 2
  %111 = load ptr, ptr %110, align 8, !tbaa !25
  store ptr %111, ptr %7, align 8, !tbaa !5
  %112 = load ptr, ptr %7, align 8, !tbaa !5
  %113 = load ptr, ptr %5, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %113, i32 0, i32 15
  %115 = load i64, ptr %114, align 8, !tbaa !20
  %116 = trunc i64 %115 to i32
  %117 = zext i32 %116 to i64
  %118 = getelementptr inbounds i8, ptr %112, i64 %117
  store ptr %118, ptr %6, align 8, !tbaa !5
  %119 = load ptr, ptr %5, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %119, i32 0, i32 2
  %121 = load i32, ptr %120, align 8, !tbaa !26
  %122 = icmp ne i32 %121, 0
  br i1 %122, label %123, label %967

123:                                              ; preds = %108
  store i32 0, ptr %17, align 4, !tbaa !19
  store i32 0, ptr %12, align 4, !tbaa !19
  store i32 0, ptr %19, align 4, !tbaa !19
  store i32 0, ptr %18, align 4, !tbaa !19
  br label %124

124:                                              ; preds = %178, %123
  %125 = load ptr, ptr %5, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %125, i32 0, i32 0
  %127 = load ptr, ptr %126, align 8, !tbaa !17
  %128 = load i32, ptr %17, align 4, !tbaa !19
  %129 = zext i32 %128 to i64
  %130 = getelementptr inbounds i8, ptr %127, i64 %129
  %131 = load i8, ptr %130, align 1, !tbaa !18
  %132 = icmp ne i8 %131, 0
  br i1 %132, label %133, label %181

133:                                              ; preds = %124
  %134 = load ptr, ptr %5, align 8, !tbaa !5
  %135 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %134, i32 0, i32 0
  %136 = load ptr, ptr %135, align 8, !tbaa !17
  %137 = load i32, ptr %17, align 4, !tbaa !19
  %138 = zext i32 %137 to i64
  %139 = getelementptr inbounds i8, ptr %136, i64 %138
  %140 = load i8, ptr %139, align 1, !tbaa !18
  %141 = sext i8 %140 to i32
  %142 = icmp eq i32 %141, 46
  br i1 %142, label %143, label %151

143:                                              ; preds = %133
  %144 = load i32, ptr %17, align 4, !tbaa !19
  %145 = icmp eq i32 %144, 0
  br i1 %145, label %146, label %147

146:                                              ; preds = %143
  br label %178

147:                                              ; preds = %143
  %148 = load i32, ptr %12, align 4, !tbaa !19
  store i32 %148, ptr %18, align 4, !tbaa !19
  %149 = load i32, ptr %17, align 4, !tbaa !19
  %150 = add i32 %149, 1
  store i32 %150, ptr %19, align 4, !tbaa !19
  br label %178

151:                                              ; preds = %133
  %152 = load ptr, ptr %5, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %152, i32 0, i32 0
  %154 = load ptr, ptr %153, align 8, !tbaa !17
  %155 = load i32, ptr %17, align 4, !tbaa !19
  %156 = zext i32 %155 to i64
  %157 = getelementptr inbounds i8, ptr %154, i64 %156
  %158 = load i8, ptr %157, align 1, !tbaa !18
  %159 = sext i8 %158 to i32
  %160 = icmp ne i32 %159, 32
  br i1 %160, label %161, label %177

161:                                              ; preds = %151
  %162 = load i32, ptr %12, align 4, !tbaa !19
  %163 = icmp ult i32 %162, 8
  br i1 %163, label %164, label %177

164:                                              ; preds = %161
  %165 = load ptr, ptr %5, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %165, i32 0, i32 0
  %167 = load ptr, ptr %166, align 8, !tbaa !17
  %168 = load i32, ptr %17, align 4, !tbaa !19
  %169 = zext i32 %168 to i64
  %170 = getelementptr inbounds i8, ptr %167, i64 %169
  %171 = load i8, ptr %170, align 1, !tbaa !18
  %172 = load i32, ptr %12, align 4, !tbaa !19
  %173 = zext i32 %172 to i64
  %174 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 %173
  store i8 %171, ptr %174, align 1, !tbaa !18
  %175 = load i32, ptr %12, align 4, !tbaa !19
  %176 = add i32 %175, 1
  store i32 %176, ptr %12, align 4, !tbaa !19
  br label %177

177:                                              ; preds = %164, %161, %151
  br label %178

178:                                              ; preds = %177, %147, %146
  %179 = load i32, ptr %17, align 4, !tbaa !19
  %180 = add i32 %179, 1
  store i32 %180, ptr %17, align 4, !tbaa !19
  br label %124, !llvm.loop !27

181:                                              ; preds = %124
  %182 = load i32, ptr %12, align 4, !tbaa !19
  store i32 %182, ptr %13, align 4, !tbaa !19
  br label %183

183:                                              ; preds = %190, %181
  %184 = load i32, ptr %13, align 4, !tbaa !19
  %185 = icmp ult i32 %184, 11
  br i1 %185, label %186, label %193

186:                                              ; preds = %183
  %187 = load i32, ptr %13, align 4, !tbaa !19
  %188 = zext i32 %187 to i64
  %189 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 %188
  store i8 32, ptr %189, align 1, !tbaa !18
  br label %190

190:                                              ; preds = %186
  %191 = load i32, ptr %13, align 4, !tbaa !19
  %192 = add i32 %191, 1
  store i32 %192, ptr %13, align 4, !tbaa !19
  br label %183, !llvm.loop !29

193:                                              ; preds = %183
  %194 = load i32, ptr %19, align 4, !tbaa !19
  %195 = icmp ne i32 %194, 0
  br i1 %195, label %196, label %266

196:                                              ; preds = %193
  %197 = load ptr, ptr %5, align 8, !tbaa !5
  %198 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %197, i32 0, i32 0
  %199 = load ptr, ptr %198, align 8, !tbaa !17
  %200 = load i32, ptr %19, align 4, !tbaa !19
  %201 = zext i32 %200 to i64
  %202 = getelementptr inbounds i8, ptr %199, i64 %201
  %203 = load i8, ptr %202, align 1, !tbaa !18
  %204 = icmp ne i8 %203, 0
  br i1 %204, label %205, label %215

205:                                              ; preds = %196
  %206 = load ptr, ptr %5, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %206, i32 0, i32 0
  %208 = load ptr, ptr %207, align 8, !tbaa !17
  %209 = load i32, ptr %19, align 4, !tbaa !19
  %210 = add i32 %209, 1
  store i32 %210, ptr %19, align 4, !tbaa !19
  %211 = zext i32 %209 to i64
  %212 = getelementptr inbounds i8, ptr %208, i64 %211
  %213 = load i8, ptr %212, align 1, !tbaa !18
  %214 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 8
  store i8 %213, ptr %214, align 1, !tbaa !18
  br label %215

215:                                              ; preds = %205, %196
  %216 = load ptr, ptr %5, align 8, !tbaa !5
  %217 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %216, i32 0, i32 0
  %218 = load ptr, ptr %217, align 8, !tbaa !17
  %219 = load i32, ptr %19, align 4, !tbaa !19
  %220 = zext i32 %219 to i64
  %221 = getelementptr inbounds i8, ptr %218, i64 %220
  %222 = load i8, ptr %221, align 1, !tbaa !18
  %223 = icmp ne i8 %222, 0
  br i1 %223, label %224, label %234

224:                                              ; preds = %215
  %225 = load ptr, ptr %5, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %225, i32 0, i32 0
  %227 = load ptr, ptr %226, align 8, !tbaa !17
  %228 = load i32, ptr %19, align 4, !tbaa !19
  %229 = add i32 %228, 1
  store i32 %229, ptr %19, align 4, !tbaa !19
  %230 = zext i32 %228 to i64
  %231 = getelementptr inbounds i8, ptr %227, i64 %230
  %232 = load i8, ptr %231, align 1, !tbaa !18
  %233 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 9
  store i8 %232, ptr %233, align 1, !tbaa !18
  br label %234

234:                                              ; preds = %224, %215
  %235 = load ptr, ptr %5, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %235, i32 0, i32 0
  %237 = load ptr, ptr %236, align 8, !tbaa !17
  %238 = load i32, ptr %19, align 4, !tbaa !19
  %239 = zext i32 %238 to i64
  %240 = getelementptr inbounds i8, ptr %237, i64 %239
  %241 = load i8, ptr %240, align 1, !tbaa !18
  %242 = icmp ne i8 %241, 0
  br i1 %242, label %243, label %253

243:                                              ; preds = %234
  %244 = load ptr, ptr %5, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %244, i32 0, i32 0
  %246 = load ptr, ptr %245, align 8, !tbaa !17
  %247 = load i32, ptr %19, align 4, !tbaa !19
  %248 = add i32 %247, 1
  store i32 %248, ptr %19, align 4, !tbaa !19
  %249 = zext i32 %247 to i64
  %250 = getelementptr inbounds i8, ptr %246, i64 %249
  %251 = load i8, ptr %250, align 1, !tbaa !18
  %252 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 10
  store i8 %251, ptr %252, align 1, !tbaa !18
  br label %253

253:                                              ; preds = %243, %234
  %254 = load i32, ptr %18, align 4, !tbaa !19
  store i32 %254, ptr %12, align 4, !tbaa !19
  br label %255

255:                                              ; preds = %262, %253
  %256 = load i32, ptr %18, align 4, !tbaa !19
  %257 = icmp ule i32 %256, 7
  br i1 %257, label %258, label %265

258:                                              ; preds = %255
  %259 = load i32, ptr %18, align 4, !tbaa !19
  %260 = zext i32 %259 to i64
  %261 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 %260
  store i8 32, ptr %261, align 1, !tbaa !18
  br label %262

262:                                              ; preds = %258
  %263 = load i32, ptr %18, align 4, !tbaa !19
  %264 = add i32 %263, 1
  store i32 %264, ptr %18, align 4, !tbaa !19
  br label %255, !llvm.loop !30

265:                                              ; preds = %255
  br label %266

266:                                              ; preds = %265, %193
  %267 = load i32, ptr %17, align 4, !tbaa !19
  %268 = urem i32 %267, 13
  %269 = icmp eq i32 %268, 0
  br i1 %269, label %270, label %273

270:                                              ; preds = %266
  %271 = load i32, ptr %17, align 4, !tbaa !19
  %272 = udiv i32 %271, 13
  store i32 %272, ptr %16, align 4, !tbaa !19
  br label %277

273:                                              ; preds = %266
  %274 = load i32, ptr %17, align 4, !tbaa !19
  %275 = udiv i32 %274, 13
  %276 = add i32 %275, 1
  store i32 %276, ptr %16, align 4, !tbaa !19
  br label %277

277:                                              ; preds = %273, %270
  store i32 1, ptr %20, align 4, !tbaa !19
  store i32 0, ptr %15, align 4, !tbaa !19
  store i32 0, ptr %14, align 4, !tbaa !19
  br label %278

278:                                              ; preds = %345, %310, %277
  %279 = load i32, ptr %14, align 4, !tbaa !19
  %280 = icmp ult i32 %279, 11
  br i1 %280, label %281, label %350

281:                                              ; preds = %278
  %282 = load i32, ptr %14, align 4, !tbaa !19
  %283 = zext i32 %282 to i64
  %284 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 %283
  %285 = load i8, ptr %284, align 1, !tbaa !18
  %286 = sext i8 %285 to i32
  %287 = icmp eq i32 %286, 32
  br i1 %287, label %288, label %313

288:                                              ; preds = %281
  %289 = load ptr, ptr %5, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %289, i32 0, i32 0
  %291 = load ptr, ptr %290, align 8, !tbaa !17
  %292 = load i32, ptr %15, align 4, !tbaa !19
  %293 = zext i32 %292 to i64
  %294 = getelementptr inbounds i8, ptr %291, i64 %293
  %295 = load i8, ptr %294, align 1, !tbaa !18
  %296 = sext i8 %295 to i32
  %297 = icmp eq i32 %296, 0
  br i1 %297, label %298, label %299

298:                                              ; preds = %288
  br label %350

299:                                              ; preds = %288
  %300 = load ptr, ptr %5, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %300, i32 0, i32 0
  %302 = load ptr, ptr %301, align 8, !tbaa !17
  %303 = load i32, ptr %15, align 4, !tbaa !19
  %304 = zext i32 %303 to i64
  %305 = getelementptr inbounds i8, ptr %302, i64 %304
  %306 = load i8, ptr %305, align 1, !tbaa !18
  %307 = sext i8 %306 to i32
  %308 = icmp ne i32 %307, 46
  br i1 %308, label %309, label %310

309:                                              ; preds = %299
  store i32 0, ptr %20, align 4, !tbaa !19
  br label %350

310:                                              ; preds = %299
  store i32 8, ptr %14, align 4, !tbaa !19
  %311 = load i32, ptr %15, align 4, !tbaa !19
  %312 = add i32 %311, 1
  store i32 %312, ptr %15, align 4, !tbaa !19
  br label %278, !llvm.loop !31

313:                                              ; preds = %281
  %314 = load i32, ptr %14, align 4, !tbaa !19
  %315 = icmp eq i32 %314, 8
  br i1 %315, label %316, label %329

316:                                              ; preds = %313
  %317 = load ptr, ptr %5, align 8, !tbaa !5
  %318 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %317, i32 0, i32 0
  %319 = load ptr, ptr %318, align 8, !tbaa !17
  %320 = load i32, ptr %15, align 4, !tbaa !19
  %321 = zext i32 %320 to i64
  %322 = getelementptr inbounds i8, ptr %319, i64 %321
  %323 = load i8, ptr %322, align 1, !tbaa !18
  %324 = sext i8 %323 to i32
  %325 = icmp eq i32 %324, 46
  br i1 %325, label %326, label %329

326:                                              ; preds = %316
  %327 = load i32, ptr %15, align 4, !tbaa !19
  %328 = add i32 %327, 1
  store i32 %328, ptr %15, align 4, !tbaa !19
  br label %329

329:                                              ; preds = %326, %316, %313
  %330 = load i32, ptr %14, align 4, !tbaa !19
  %331 = zext i32 %330 to i64
  %332 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 %331
  %333 = load i8, ptr %332, align 1, !tbaa !18
  %334 = sext i8 %333 to i32
  %335 = load ptr, ptr %5, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %335, i32 0, i32 0
  %337 = load ptr, ptr %336, align 8, !tbaa !17
  %338 = load i32, ptr %15, align 4, !tbaa !19
  %339 = zext i32 %338 to i64
  %340 = getelementptr inbounds i8, ptr %337, i64 %339
  %341 = load i8, ptr %340, align 1, !tbaa !18
  %342 = sext i8 %341 to i32
  %343 = icmp ne i32 %334, %342
  br i1 %343, label %344, label %345

344:                                              ; preds = %329
  store i32 0, ptr %20, align 4, !tbaa !19
  br label %350

345:                                              ; preds = %329
  %346 = load i32, ptr %14, align 4, !tbaa !19
  %347 = add i32 %346, 1
  store i32 %347, ptr %14, align 4, !tbaa !19
  %348 = load i32, ptr %15, align 4, !tbaa !19
  %349 = add i32 %348, 1
  store i32 %349, ptr %15, align 4, !tbaa !19
  br label %278, !llvm.loop !31

350:                                              ; preds = %344, %309, %298, %278
  %351 = load i32, ptr %19, align 4, !tbaa !19
  %352 = icmp ne i32 %351, 0
  br i1 %352, label %353, label %359

353:                                              ; preds = %350
  %354 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 8
  %355 = load i8, ptr %354, align 1, !tbaa !18
  %356 = sext i8 %355 to i32
  %357 = icmp eq i32 %356, 32
  br i1 %357, label %358, label %359

358:                                              ; preds = %353
  store i32 0, ptr %20, align 4, !tbaa !19
  br label %359

359:                                              ; preds = %358, %353, %350
  %360 = load ptr, ptr %5, align 8, !tbaa !5
  %361 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %360, i32 0, i32 0
  %362 = load ptr, ptr %361, align 8, !tbaa !17
  %363 = load i32, ptr %15, align 4, !tbaa !19
  %364 = zext i32 %363 to i64
  %365 = getelementptr inbounds i8, ptr %362, i64 %364
  %366 = load i8, ptr %365, align 1, !tbaa !18
  %367 = icmp ne i8 %366, 0
  br i1 %367, label %368, label %369

368:                                              ; preds = %359
  store i32 0, ptr %20, align 4, !tbaa !19
  br label %369

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

372:                                              ; preds = %369
  %373 = load ptr, ptr %5, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %373, i32 0, i32 16
  %375 = load i64, ptr %374, align 8, !tbaa !32
  %376 = trunc i64 %375 to i32
  store i32 %376, ptr %10, align 4, !tbaa !19
  %377 = load i32, ptr %10, align 4, !tbaa !19
  %378 = urem i32 %377, 65536
  store i32 %378, ptr %10, align 4, !tbaa !19
  %379 = load i32, ptr %12, align 4, !tbaa !19
  %380 = icmp ugt i32 %379, 3
  br i1 %380, label %381, label %382

381:                                              ; preds = %372
  store i32 3, ptr %12, align 4, !tbaa !19
  br label %382

382:                                              ; preds = %381, %372
  %383 = load i32, ptr %12, align 4, !tbaa !19
  %384 = add i32 %383, 1
  store i32 %384, ptr %12, align 4, !tbaa !19
  %385 = zext i32 %383 to i64
  %386 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 %385
  store i8 126, ptr %386, align 1, !tbaa !18
  store i32 0, ptr %15, align 4, !tbaa !19
  br label %387

387:                                              ; preds = %437, %382
  %388 = load i32, ptr %15, align 4, !tbaa !19
  %389 = icmp ult i32 %388, 4
  br i1 %389, label %390, label %440

390:                                              ; preds = %387
  %391 = load i32, ptr %15, align 4, !tbaa !19
  %392 = icmp eq i32 %391, 0
  br i1 %392, label %393, label %397

393:                                              ; preds = %390
  %394 = load i32, ptr %10, align 4, !tbaa !19
  %395 = lshr i32 %394, 12
  %396 = and i32 %395, 15
  store i32 %396, ptr %9, align 4, !tbaa !19
  br label %416

397:                                              ; preds = %390
  %398 = load i32, ptr %15, align 4, !tbaa !19
  %399 = icmp eq i32 %398, 1
  br i1 %399, label %400, label %404

400:                                              ; preds = %397
  %401 = load i32, ptr %10, align 4, !tbaa !19
  %402 = lshr i32 %401, 8
  %403 = and i32 %402, 15
  store i32 %403, ptr %9, align 4, !tbaa !19
  br label %415

404:                                              ; preds = %397
  %405 = load i32, ptr %15, align 4, !tbaa !19
  %406 = icmp eq i32 %405, 2
  br i1 %406, label %407, label %411

407:                                              ; preds = %404
  %408 = load i32, ptr %10, align 4, !tbaa !19
  %409 = lshr i32 %408, 4
  %410 = and i32 %409, 15
  store i32 %410, ptr %9, align 4, !tbaa !19
  br label %414

411:                                              ; preds = %404
  %412 = load i32, ptr %10, align 4, !tbaa !19
  %413 = and i32 %412, 15
  store i32 %413, ptr %9, align 4, !tbaa !19
  br label %414

414:                                              ; preds = %411, %407
  br label %415

415:                                              ; preds = %414, %400
  br label %416

416:                                              ; preds = %415, %393
  %417 = load i32, ptr %9, align 4, !tbaa !19
  %418 = icmp ugt i32 %417, 9
  br i1 %418, label %419, label %428

419:                                              ; preds = %416
  %420 = load i32, ptr %9, align 4, !tbaa !19
  %421 = sub i32 %420, 10
  %422 = add i32 65, %421
  %423 = trunc i32 %422 to i8
  %424 = load i32, ptr %12, align 4, !tbaa !19
  %425 = add i32 %424, 1
  store i32 %425, ptr %12, align 4, !tbaa !19
  %426 = zext i32 %424 to i64
  %427 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 %426
  store i8 %423, ptr %427, align 1, !tbaa !18
  br label %436

428:                                              ; preds = %416
  %429 = load i32, ptr %9, align 4, !tbaa !19
  %430 = add i32 48, %429
  %431 = trunc i32 %430 to i8
  %432 = load i32, ptr %12, align 4, !tbaa !19
  %433 = add i32 %432, 1
  store i32 %433, ptr %12, align 4, !tbaa !19
  %434 = zext i32 %432 to i64
  %435 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 %434
  store i8 %431, ptr %435, align 1, !tbaa !18
  br label %436

436:                                              ; preds = %428, %419
  br label %437

437:                                              ; preds = %436
  %438 = load i32, ptr %15, align 4, !tbaa !19
  %439 = add i32 %438, 1
  store i32 %439, ptr %15, align 4, !tbaa !19
  br label %387, !llvm.loop !33

440:                                              ; preds = %387
  br label %441

441:                                              ; preds = %440, %369
  %442 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 11
  store i8 0, ptr %442, align 1, !tbaa !18
  %443 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 0
  %444 = load i8, ptr %443, align 1, !tbaa !18
  %445 = zext i8 %444 to i32
  %446 = icmp eq i32 %445, 229
  br i1 %446, label %447, label %452

447:                                              ; preds = %441
  %448 = load i32, ptr %11, align 4, !tbaa !19
  %449 = icmp eq i32 %448, 0
  br i1 %449, label %450, label %452

450:                                              ; preds = %447
  %451 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 0
  store i8 -113, ptr %451, align 1, !tbaa !18
  br label %452

452:                                              ; preds = %450, %447, %441
  store i32 0, ptr %12, align 4, !tbaa !19
  br label %453

453:                                              ; preds = %478, %452
  %454 = load i32, ptr %12, align 4, !tbaa !19
  %455 = icmp ult i32 %454, 11
  br i1 %455, label %456, label %481

456:                                              ; preds = %453
  %457 = load i32, ptr %12, align 4, !tbaa !19
  %458 = zext i32 %457 to i64
  %459 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 %458
  %460 = load i8, ptr %459, align 1, !tbaa !18
  store i8 %460, ptr %23, align 1, !tbaa !18
  %461 = load i8, ptr %23, align 1, !tbaa !18
  %462 = sext i8 %461 to i32
  %463 = icmp sge i32 %462, 97
  br i1 %463, label %464, label %473

464:                                              ; preds = %456
  %465 = load i8, ptr %23, align 1, !tbaa !18
  %466 = sext i8 %465 to i32
  %467 = icmp sle i32 %466, 122
  br i1 %467, label %468, label %473

468:                                              ; preds = %464
  %469 = load i8, ptr %23, align 1, !tbaa !18
  %470 = sext i8 %469 to i32
  %471 = sub nsw i32 %470, 32
  %472 = trunc i32 %471 to i8
  store i8 %472, ptr %23, align 1, !tbaa !18
  br label %473

473:                                              ; preds = %468, %464, %456
  %474 = load i8, ptr %23, align 1, !tbaa !18
  %475 = load i32, ptr %12, align 4, !tbaa !19
  %476 = zext i32 %475 to i64
  %477 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 %476
  store i8 %474, ptr %477, align 1, !tbaa !18
  br label %478

478:                                              ; preds = %473
  %479 = load i32, ptr %12, align 4, !tbaa !19
  %480 = add i32 %479, 1
  store i32 %480, ptr %12, align 4, !tbaa !19
  br label %453, !llvm.loop !34

481:                                              ; preds = %453
  %482 = load ptr, ptr %5, align 8, !tbaa !5
  %483 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %482, i32 0, i32 1
  %484 = getelementptr inbounds [13 x i8], ptr %483, i64 0, i64 0
  %485 = load i8, ptr %484, align 8, !tbaa !18
  %486 = sext i8 %485 to i32
  %487 = icmp ne i32 %486, 0
  br i1 %487, label %488, label %618

488:                                              ; preds = %481
  store i32 0, ptr %12, align 4, !tbaa !19
  br label %489

489:                                              ; preds = %496, %488
  %490 = load i32, ptr %12, align 4, !tbaa !19
  %491 = icmp ult i32 %490, 11
  br i1 %491, label %492, label %499

492:                                              ; preds = %489
  %493 = load i32, ptr %12, align 4, !tbaa !19
  %494 = zext i32 %493 to i64
  %495 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 %494
  store i8 32, ptr %495, align 1, !tbaa !18
  br label %496

496:                                              ; preds = %492
  %497 = load i32, ptr %12, align 4, !tbaa !19
  %498 = add i32 %497, 1
  store i32 %498, ptr %12, align 4, !tbaa !19
  br label %489, !llvm.loop !35

499:                                              ; preds = %489
  store i32 0, ptr %12, align 4, !tbaa !19
  store i32 0, ptr %13, align 4, !tbaa !19
  br label %500

500:                                              ; preds = %534, %499
  %501 = load i32, ptr %13, align 4, !tbaa !19
  %502 = icmp ult i32 %501, 8
  br i1 %502, label %503, label %539

503:                                              ; preds = %500
  %504 = load ptr, ptr %5, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %504, i32 0, i32 1
  %506 = load i32, ptr %12, align 4, !tbaa !19
  %507 = zext i32 %506 to i64
  %508 = getelementptr inbounds [13 x i8], ptr %505, i64 0, i64 %507
  %509 = load i8, ptr %508, align 1, !tbaa !18
  %510 = zext i8 %509 to i32
  %511 = icmp eq i32 %510, 46
  br i1 %511, label %512, label %513

512:                                              ; preds = %503
  br label %539

513:                                              ; preds = %503
  %514 = load ptr, ptr %5, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %514, i32 0, i32 1
  %516 = load i32, ptr %12, align 4, !tbaa !19
  %517 = zext i32 %516 to i64
  %518 = getelementptr inbounds [13 x i8], ptr %515, i64 0, i64 %517
  %519 = load i8, ptr %518, align 1, !tbaa !18
  %520 = zext i8 %519 to i32
  %521 = icmp eq i32 %520, 0
  br i1 %521, label %522, label %523

522:                                              ; preds = %513
  br label %539

523:                                              ; preds = %513
  %524 = load ptr, ptr %5, align 8, !tbaa !5
  %525 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %524, i32 0, i32 1
  %526 = load i32, ptr %12, align 4, !tbaa !19
  %527 = zext i32 %526 to i64
  %528 = getelementptr inbounds [13 x i8], ptr %525, i64 0, i64 %527
  %529 = load i8, ptr %528, align 1, !tbaa !18
  store i8 %529, ptr %23, align 1, !tbaa !18
  %530 = load i8, ptr %23, align 1, !tbaa !18
  %531 = load i32, ptr %13, align 4, !tbaa !19
  %532 = zext i32 %531 to i64
  %533 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 %532
  store i8 %530, ptr %533, align 1, !tbaa !18
  br label %534

534:                                              ; preds = %523
  %535 = load i32, ptr %12, align 4, !tbaa !19
  %536 = add i32 %535, 1
  store i32 %536, ptr %12, align 4, !tbaa !19
  %537 = load i32, ptr %13, align 4, !tbaa !19
  %538 = add i32 %537, 1
  store i32 %538, ptr %13, align 4, !tbaa !19
  br label %500, !llvm.loop !36

539:                                              ; preds = %522, %512, %500
  %540 = load ptr, ptr %5, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %540, i32 0, i32 1
  %542 = load i32, ptr %12, align 4, !tbaa !19
  %543 = zext i32 %542 to i64
  %544 = getelementptr inbounds [13 x i8], ptr %541, i64 0, i64 %543
  %545 = load i8, ptr %544, align 1, !tbaa !18
  %546 = zext i8 %545 to i32
  %547 = icmp ne i32 %546, 0
  br i1 %547, label %548, label %581

548:                                              ; preds = %539
  %549 = load i32, ptr %12, align 4, !tbaa !19
  %550 = add i32 %549, 1
  store i32 %550, ptr %12, align 4, !tbaa !19
  store i32 8, ptr %13, align 4, !tbaa !19
  br label %551

551:                                              ; preds = %575, %548
  %552 = load i32, ptr %13, align 4, !tbaa !19
  %553 = icmp ult i32 %552, 11
  br i1 %553, label %554, label %580

554:                                              ; preds = %551
  %555 = load ptr, ptr %5, align 8, !tbaa !5
  %556 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %555, i32 0, i32 1
  %557 = load i32, ptr %12, align 4, !tbaa !19
  %558 = zext i32 %557 to i64
  %559 = getelementptr inbounds [13 x i8], ptr %556, i64 0, i64 %558
  %560 = load i8, ptr %559, align 1, !tbaa !18
  %561 = zext i8 %560 to i32
  %562 = icmp eq i32 %561, 0
  br i1 %562, label %563, label %564

563:                                              ; preds = %554
  br label %580

564:                                              ; preds = %554
  %565 = load ptr, ptr %5, align 8, !tbaa !5
  %566 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %565, i32 0, i32 1
  %567 = load i32, ptr %12, align 4, !tbaa !19
  %568 = zext i32 %567 to i64
  %569 = getelementptr inbounds [13 x i8], ptr %566, i64 0, i64 %568
  %570 = load i8, ptr %569, align 1, !tbaa !18
  store i8 %570, ptr %23, align 1, !tbaa !18
  %571 = load i8, ptr %23, align 1, !tbaa !18
  %572 = load i32, ptr %13, align 4, !tbaa !19
  %573 = zext i32 %572 to i64
  %574 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 %573
  store i8 %571, ptr %574, align 1, !tbaa !18
  br label %575

575:                                              ; preds = %564
  %576 = load i32, ptr %12, align 4, !tbaa !19
  %577 = add i32 %576, 1
  store i32 %577, ptr %12, align 4, !tbaa !19
  %578 = load i32, ptr %13, align 4, !tbaa !19
  %579 = add i32 %578, 1
  store i32 %579, ptr %13, align 4, !tbaa !19
  br label %551, !llvm.loop !37

580:                                              ; preds = %563, %551
  br label %581

581:                                              ; preds = %580, %539
  store i32 0, ptr %13, align 4, !tbaa !19
  br label %582

582:                                              ; preds = %607, %581
  %583 = load i32, ptr %13, align 4, !tbaa !19
  %584 = icmp ult i32 %583, 11
  br i1 %584, label %585, label %610

585:                                              ; preds = %582
  %586 = load i32, ptr %13, align 4, !tbaa !19
  %587 = zext i32 %586 to i64
  %588 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 %587
  %589 = load i8, ptr %588, align 1, !tbaa !18
  store i8 %589, ptr %23, align 1, !tbaa !18
  %590 = load i8, ptr %23, align 1, !tbaa !18
  %591 = sext i8 %590 to i32
  %592 = icmp sge i32 %591, 97
  br i1 %592, label %593, label %602

593:                                              ; preds = %585
  %594 = load i8, ptr %23, align 1, !tbaa !18
  %595 = sext i8 %594 to i32
  %596 = icmp sle i32 %595, 122
  br i1 %596, label %597, label %602

597:                                              ; preds = %593
  %598 = load i8, ptr %23, align 1, !tbaa !18
  %599 = sext i8 %598 to i32
  %600 = sub nsw i32 %599, 32
  %601 = trunc i32 %600 to i8
  store i8 %601, ptr %23, align 1, !tbaa !18
  br label %602

602:                                              ; preds = %597, %593, %585
  %603 = load i8, ptr %23, align 1, !tbaa !18
  %604 = load i32, ptr %13, align 4, !tbaa !19
  %605 = zext i32 %604 to i64
  %606 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 %605
  store i8 %603, ptr %606, align 1, !tbaa !18
  br label %607

607:                                              ; preds = %602
  %608 = load i32, ptr %13, align 4, !tbaa !19
  %609 = add i32 %608, 1
  store i32 %609, ptr %13, align 4, !tbaa !19
  br label %582, !llvm.loop !38

610:                                              ; preds = %582
  %611 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 0
  %612 = load i8, ptr %611, align 1, !tbaa !18
  %613 = zext i8 %612 to i32
  %614 = icmp eq i32 %613, 229
  br i1 %614, label %615, label %617

615:                                              ; preds = %610
  %616 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 0
  store i8 -113, ptr %616, align 1, !tbaa !18
  br label %617

617:                                              ; preds = %615, %610
  br label %618

618:                                              ; preds = %617, %481
  store i8 0, ptr %21, align 1, !tbaa !18
  store i32 0, ptr %12, align 4, !tbaa !19
  br label %619

619:                                              ; preds = %641, %618
  %620 = load i32, ptr %12, align 4, !tbaa !19
  %621 = icmp ult i32 %620, 11
  br i1 %621, label %622, label %644

622:                                              ; preds = %619
  %623 = load i8, ptr %21, align 1, !tbaa !18
  %624 = zext i8 %623 to i32
  %625 = and i32 %624, 1
  %626 = shl i32 %625, 7
  %627 = load i8, ptr %21, align 1, !tbaa !18
  %628 = zext i8 %627 to i32
  %629 = and i32 %628, 254
  %630 = ashr i32 %629, 1
  %631 = or i32 %626, %630
  %632 = trunc i32 %631 to i8
  %633 = zext i8 %632 to i32
  %634 = load i32, ptr %12, align 4, !tbaa !19
  %635 = zext i32 %634 to i64
  %636 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 %635
  %637 = load i8, ptr %636, align 1, !tbaa !18
  %638 = sext i8 %637 to i32
  %639 = add nsw i32 %633, %638
  %640 = trunc i32 %639 to i8
  store i8 %640, ptr %21, align 1, !tbaa !18
  br label %641

641:                                              ; preds = %622
  %642 = load i32, ptr %12, align 4, !tbaa !19
  %643 = add i32 %642, 1
  store i32 %643, ptr %12, align 4, !tbaa !19
  br label %619, !llvm.loop !39

644:                                              ; preds = %619
  %645 = load i32, ptr %16, align 4, !tbaa !19
  %646 = or i32 64, %645
  %647 = trunc i32 %646 to i8
  %648 = load ptr, ptr %6, align 8, !tbaa !5
  %649 = getelementptr inbounds i8, ptr %648, i64 0
  store i8 %647, ptr %649, align 1, !tbaa !18
  br label %650

650:                                              ; preds = %839, %644
  %651 = load i32, ptr %16, align 4, !tbaa !19
  %652 = icmp ugt i32 %651, 0
  br i1 %652, label %653, label %846

653:                                              ; preds = %650
  store i8 0, ptr %22, align 1, !tbaa !18
  %654 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 0
  %655 = load i8, ptr %654, align 1, !tbaa !18
  %656 = zext i8 %655 to i32
  %657 = icmp eq i32 %656, 229
  br i1 %657, label %658, label %661

658:                                              ; preds = %653
  %659 = load ptr, ptr %6, align 8, !tbaa !5
  %660 = getelementptr inbounds i8, ptr %659, i64 0
  store i8 -27, ptr %660, align 1, !tbaa !18
  br label %661

661:                                              ; preds = %658, %653
  %662 = load ptr, ptr %6, align 8, !tbaa !5
  %663 = getelementptr inbounds i8, ptr %662, i64 11
  store i8 15, ptr %663, align 1, !tbaa !18
  %664 = load ptr, ptr %6, align 8, !tbaa !5
  %665 = getelementptr inbounds i8, ptr %664, i64 12
  store i8 0, ptr %665, align 1, !tbaa !18
  %666 = load i8, ptr %21, align 1, !tbaa !18
  %667 = load ptr, ptr %6, align 8, !tbaa !5
  %668 = getelementptr inbounds i8, ptr %667, i64 13
  store i8 %666, ptr %668, align 1, !tbaa !18
  %669 = load ptr, ptr %6, align 8, !tbaa !5
  %670 = getelementptr inbounds i8, ptr %669, i64 26
  store i8 0, ptr %670, align 1, !tbaa !18
  %671 = load ptr, ptr %6, align 8, !tbaa !5
  %672 = getelementptr inbounds i8, ptr %671, i64 27
  store i8 0, ptr %672, align 1, !tbaa !18
  store i32 1, ptr %12, align 4, !tbaa !19
  %673 = load i32, ptr %16, align 4, !tbaa !19
  %674 = sub i32 %673, 1
  %675 = mul i32 13, %674
  store i32 %675, ptr %13, align 4, !tbaa !19
  br label %676

676:                                              ; preds = %736, %661
  %677 = load i32, ptr %12, align 4, !tbaa !19
  %678 = icmp ult i32 %677, 32
  br i1 %678, label %679, label %739

679:                                              ; preds = %676
  %680 = load i32, ptr %12, align 4, !tbaa !19
  %681 = icmp eq i32 %680, 11
  br i1 %681, label %685, label %682

682:                                              ; preds = %679
  %683 = load i32, ptr %12, align 4, !tbaa !19
  %684 = icmp eq i32 %683, 26
  br i1 %684, label %685, label %686

685:                                              ; preds = %682, %679
  br label %736

686:                                              ; preds = %682
  %687 = load i32, ptr %12, align 4, !tbaa !19
  %688 = icmp eq i32 %687, 13
  br i1 %688, label %689, label %690

689:                                              ; preds = %686
  store i32 12, ptr %12, align 4, !tbaa !19
  br label %736

690:                                              ; preds = %686
  %691 = load i8, ptr %22, align 1, !tbaa !18
  %692 = icmp ne i8 %691, 0
  br i1 %692, label %693, label %705

693:                                              ; preds = %690
  %694 = load i8, ptr %22, align 1, !tbaa !18
  %695 = load ptr, ptr %6, align 8, !tbaa !5
  %696 = load i32, ptr %12, align 4, !tbaa !19
  %697 = zext i32 %696 to i64
  %698 = getelementptr inbounds i8, ptr %695, i64 %697
  store i8 %694, ptr %698, align 1, !tbaa !18
  %699 = load i8, ptr %22, align 1, !tbaa !18
  %700 = load ptr, ptr %6, align 8, !tbaa !5
  %701 = load i32, ptr %12, align 4, !tbaa !19
  %702 = add i32 %701, 1
  %703 = zext i32 %702 to i64
  %704 = getelementptr inbounds i8, ptr %700, i64 %703
  store i8 %699, ptr %704, align 1, !tbaa !18
  br label %722

705:                                              ; preds = %690
  %706 = load ptr, ptr %5, align 8, !tbaa !5
  %707 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %706, i32 0, i32 0
  %708 = load ptr, ptr %707, align 8, !tbaa !17
  %709 = load i32, ptr %13, align 4, !tbaa !19
  %710 = zext i32 %709 to i64
  %711 = getelementptr inbounds i8, ptr %708, i64 %710
  %712 = load i8, ptr %711, align 1, !tbaa !18
  %713 = load ptr, ptr %6, align 8, !tbaa !5
  %714 = load i32, ptr %12, align 4, !tbaa !19
  %715 = zext i32 %714 to i64
  %716 = getelementptr inbounds i8, ptr %713, i64 %715
  store i8 %712, ptr %716, align 1, !tbaa !18
  %717 = load ptr, ptr %6, align 8, !tbaa !5
  %718 = load i32, ptr %12, align 4, !tbaa !19
  %719 = add i32 %718, 1
  %720 = zext i32 %719 to i64
  %721 = getelementptr inbounds i8, ptr %717, i64 %720
  store i8 0, ptr %721, align 1, !tbaa !18
  br label %722

722:                                              ; preds = %705, %693
  %723 = load ptr, ptr %5, align 8, !tbaa !5
  %724 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %723, i32 0, i32 0
  %725 = load ptr, ptr %724, align 8, !tbaa !17
  %726 = load i32, ptr %13, align 4, !tbaa !19
  %727 = zext i32 %726 to i64
  %728 = getelementptr inbounds i8, ptr %725, i64 %727
  %729 = load i8, ptr %728, align 1, !tbaa !18
  %730 = sext i8 %729 to i32
  %731 = icmp eq i32 %730, 0
  br i1 %731, label %732, label %733

732:                                              ; preds = %722
  store i8 -1, ptr %22, align 1, !tbaa !18
  br label %733

733:                                              ; preds = %732, %722
  %734 = load i32, ptr %13, align 4, !tbaa !19
  %735 = add i32 %734, 1
  store i32 %735, ptr %13, align 4, !tbaa !19
  br label %736

736:                                              ; preds = %733, %689, %685
  %737 = load i32, ptr %12, align 4, !tbaa !19
  %738 = add i32 %737, 2
  store i32 %738, ptr %12, align 4, !tbaa !19
  br label %676, !llvm.loop !40

739:                                              ; preds = %676
  %740 = load ptr, ptr %6, align 8, !tbaa !5
  %741 = getelementptr inbounds i8, ptr %740, i64 32
  store ptr %741, ptr %6, align 8, !tbaa !5
  %742 = load i64, ptr %27, align 8, !tbaa !21
  %743 = add i64 %742, 32
  store i64 %743, ptr %27, align 8, !tbaa !21
  %744 = load i64, ptr %27, align 8, !tbaa !21
  %745 = load ptr, ptr %4, align 8, !tbaa !5
  %746 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %745, i32 0, i32 10
  %747 = load i32, ptr %746, align 8, !tbaa !41
  %748 = zext i32 %747 to i64
  %749 = icmp uge i64 %744, %748
  br i1 %749, label %750, label %839

750:                                              ; preds = %739
  %751 = load ptr, ptr %4, align 8, !tbaa !5
  %752 = load i64, ptr %25, align 8, !tbaa !21
  %753 = load ptr, ptr %7, align 8, !tbaa !5
  %754 = call i32 @_fx_utility_logical_sector_write(ptr noundef %751, i64 noundef %752, ptr noundef %753, i64 noundef 1, i8 noundef zeroext 3)
  store i32 %754, ptr %8, align 4, !tbaa !19
  %755 = load i32, ptr %8, align 4, !tbaa !19
  %756 = icmp ne i32 %755, 0
  br i1 %756, label %757, label %759

757:                                              ; preds = %750
  %758 = load i32, ptr %8, align 4, !tbaa !19
  store i32 %758, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %1431

759:                                              ; preds = %750
  %760 = load i64, ptr %25, align 8, !tbaa !21
  %761 = load ptr, ptr %4, align 8, !tbaa !5
  %762 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %761, i32 0, i32 18
  %763 = load i32, ptr %762, align 4, !tbaa !23
  %764 = zext i32 %763 to i64
  %765 = icmp uge i64 %760, %764
  br i1 %765, label %766, label %812

766:                                              ; preds = %759
  %767 = load i64, ptr %26, align 8, !tbaa !21
  %768 = load ptr, ptr %4, align 8, !tbaa !5
  %769 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %768, i32 0, i32 19
  %770 = load i32, ptr %769, align 8, !tbaa !24
  %771 = sub i32 %770, 1
  %772 = zext i32 %771 to i64
  %773 = icmp ult i64 %767, %772
  br i1 %773, label %774, label %779

774:                                              ; preds = %766
  %775 = load i64, ptr %25, align 8, !tbaa !21
  %776 = add i64 %775, 1
  store i64 %776, ptr %25, align 8, !tbaa !21
  %777 = load i64, ptr %26, align 8, !tbaa !21
  %778 = add i64 %777, 1
  store i64 %778, ptr %26, align 8, !tbaa !21
  br label %811

779:                                              ; preds = %766
  %780 = load ptr, ptr %4, align 8, !tbaa !5
  %781 = load i64, ptr %28, align 8, !tbaa !21
  %782 = call i32 @_fx_utility_FAT_entry_read(ptr noundef %780, i64 noundef %781, ptr noundef %29)
  store i32 %782, ptr %8, align 4, !tbaa !19
  %783 = load i32, ptr %8, align 4, !tbaa !19
  %784 = icmp ne i32 %783, 0
  br i1 %784, label %785, label %787

785:                                              ; preds = %779
  %786 = load i32, ptr %8, align 4, !tbaa !19
  store i32 %786, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %1431

787:                                              ; preds = %779
  %788 = load i64, ptr %29, align 8, !tbaa !21
  store i64 %788, ptr %28, align 8, !tbaa !21
  %789 = load i64, ptr %28, align 8, !tbaa !21
  %790 = icmp ult i64 %789, 2
  br i1 %790, label %797, label %791

791:                                              ; preds = %787
  %792 = load i64, ptr %28, align 8, !tbaa !21
  %793 = load ptr, ptr %4, align 8, !tbaa !5
  %794 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %793, i32 0, i32 126
  %795 = load i64, ptr %794, align 8, !tbaa !42
  %796 = icmp uge i64 %792, %795
  br i1 %796, label %797, label %798

797:                                              ; preds = %791, %787
  store i32 8, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %1431

798:                                              ; preds = %791
  store i64 0, ptr %26, align 8, !tbaa !21
  %799 = load ptr, ptr %4, align 8, !tbaa !5
  %800 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %799, i32 0, i32 18
  %801 = load i32, ptr %800, align 4, !tbaa !23
  %802 = zext i32 %801 to i64
  %803 = load i64, ptr %28, align 8, !tbaa !21
  %804 = sub i64 %803, 2
  %805 = load ptr, ptr %4, align 8, !tbaa !5
  %806 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %805, i32 0, i32 19
  %807 = load i32, ptr %806, align 8, !tbaa !24
  %808 = zext i32 %807 to i64
  %809 = mul i64 %804, %808
  %810 = add i64 %802, %809
  store i64 %810, ptr %25, align 8, !tbaa !21
  br label %811

811:                                              ; preds = %798, %774
  br label %823

812:                                              ; preds = %759
  %813 = load i64, ptr %25, align 8, !tbaa !21
  %814 = add i64 %813, 1
  store i64 %814, ptr %25, align 8, !tbaa !21
  %815 = load i64, ptr %25, align 8, !tbaa !21
  %816 = load ptr, ptr %4, align 8, !tbaa !5
  %817 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %816, i32 0, i32 18
  %818 = load i32, ptr %817, align 4, !tbaa !23
  %819 = zext i32 %818 to i64
  %820 = icmp uge i64 %815, %819
  br i1 %820, label %821, label %822

821:                                              ; preds = %812
  store i32 8, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %1431

822:                                              ; preds = %812
  br label %823

823:                                              ; preds = %822, %811
  %824 = load ptr, ptr %4, align 8, !tbaa !5
  %825 = load i64, ptr %25, align 8, !tbaa !21
  %826 = load ptr, ptr %4, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %826, i32 0, i32 2
  %828 = load ptr, ptr %827, align 8, !tbaa !25
  %829 = call i32 @_fx_utility_logical_sector_read(ptr noundef %824, i64 noundef %825, ptr noundef %828, i64 noundef 1, i8 noundef zeroext 3)
  store i32 %829, ptr %8, align 4, !tbaa !19
  %830 = load i32, ptr %8, align 4, !tbaa !19
  %831 = icmp ne i32 %830, 0
  br i1 %831, label %832, label %834

832:                                              ; preds = %823
  %833 = load i32, ptr %8, align 4, !tbaa !19
  store i32 %833, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %1431

834:                                              ; preds = %823
  %835 = load ptr, ptr %4, align 8, !tbaa !5
  %836 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %835, i32 0, i32 2
  %837 = load ptr, ptr %836, align 8, !tbaa !25
  store ptr %837, ptr %7, align 8, !tbaa !5
  store i64 0, ptr %27, align 8, !tbaa !21
  %838 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %838, ptr %6, align 8, !tbaa !5
  br label %839

839:                                              ; preds = %834, %739
  %840 = load i32, ptr %16, align 4, !tbaa !19
  %841 = add i32 %840, -1
  store i32 %841, ptr %16, align 4, !tbaa !19
  %842 = load i32, ptr %16, align 4, !tbaa !19
  %843 = trunc i32 %842 to i8
  %844 = load ptr, ptr %6, align 8, !tbaa !5
  %845 = getelementptr inbounds i8, ptr %844, i64 0
  store i8 %843, ptr %845, align 1, !tbaa !18
  br label %650, !llvm.loop !43

846:                                              ; preds = %650
  %847 = load ptr, ptr %5, align 8, !tbaa !5
  %848 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %847, i32 0, i32 1
  %849 = getelementptr inbounds [13 x i8], ptr %848, i64 0, i64 0
  %850 = load i8, ptr %849, align 8, !tbaa !18
  %851 = sext i8 %850 to i32
  %852 = icmp eq i32 %851, 0
  br i1 %852, label %853, label %869

853:                                              ; preds = %846
  store i32 0, ptr %12, align 4, !tbaa !19
  br label %854

854:                                              ; preds = %865, %853
  %855 = load i32, ptr %12, align 4, !tbaa !19
  %856 = icmp ult i32 %855, 11
  br i1 %856, label %857, label %868

857:                                              ; preds = %854
  %858 = load i32, ptr %12, align 4, !tbaa !19
  %859 = zext i32 %858 to i64
  %860 = getelementptr inbounds [12 x i8], ptr %24, i64 0, i64 %859
  %861 = load i8, ptr %860, align 1, !tbaa !18
  store i8 %861, ptr %23, align 1, !tbaa !18
  %862 = load i8, ptr %23, align 1, !tbaa !18
  %863 = load ptr, ptr %6, align 8, !tbaa !5
  %864 = getelementptr inbounds i8, ptr %863, i32 1
  store ptr %864, ptr %6, align 8, !tbaa !5
  store i8 %862, ptr %863, align 1, !tbaa !18
  br label %865

865:                                              ; preds = %857
  %866 = load i32, ptr %12, align 4, !tbaa !19
  %867 = add i32 %866, 1
  store i32 %867, ptr %12, align 4, !tbaa !19
  br label %854, !llvm.loop !44

868:                                              ; preds = %854
  br label %966

869:                                              ; preds = %846
  store i32 0, ptr %12, align 4, !tbaa !19
  br label %870

870:                                              ; preds = %878, %869
  %871 = load i32, ptr %12, align 4, !tbaa !19
  %872 = icmp ult i32 %871, 11
  br i1 %872, label %873, label %881

873:                                              ; preds = %870
  %874 = load ptr, ptr %6, align 8, !tbaa !5
  %875 = load i32, ptr %12, align 4, !tbaa !19
  %876 = zext i32 %875 to i64
  %877 = getelementptr inbounds i8, ptr %874, i64 %876
  store i8 32, ptr %877, align 1, !tbaa !18
  br label %878

878:                                              ; preds = %873
  %879 = load i32, ptr %12, align 4, !tbaa !19
  %880 = add i32 %879, 1
  store i32 %880, ptr %12, align 4, !tbaa !19
  br label %870, !llvm.loop !45

881:                                              ; preds = %870
  store i32 0, ptr %12, align 4, !tbaa !19
  store i32 0, ptr %13, align 4, !tbaa !19
  br label %882

882:                                              ; preds = %916, %881
  %883 = load i32, ptr %13, align 4, !tbaa !19
  %884 = icmp ult i32 %883, 8
  br i1 %884, label %885, label %921

885:                                              ; preds = %882
  %886 = load ptr, ptr %5, align 8, !tbaa !5
  %887 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %886, i32 0, i32 1
  %888 = load i32, ptr %12, align 4, !tbaa !19
  %889 = zext i32 %888 to i64
  %890 = getelementptr inbounds [13 x i8], ptr %887, i64 0, i64 %889
  %891 = load i8, ptr %890, align 1, !tbaa !18
  %892 = zext i8 %891 to i32
  %893 = icmp eq i32 %892, 46
  br i1 %893, label %894, label %895

894:                                              ; preds = %885
  br label %921

895:                                              ; preds = %885
  %896 = load ptr, ptr %5, align 8, !tbaa !5
  %897 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %896, i32 0, i32 1
  %898 = load i32, ptr %12, align 4, !tbaa !19
  %899 = zext i32 %898 to i64
  %900 = getelementptr inbounds [13 x i8], ptr %897, i64 0, i64 %899
  %901 = load i8, ptr %900, align 1, !tbaa !18
  %902 = zext i8 %901 to i32
  %903 = icmp eq i32 %902, 0
  br i1 %903, label %904, label %905

904:                                              ; preds = %895
  br label %921

905:                                              ; preds = %895
  %906 = load ptr, ptr %5, align 8, !tbaa !5
  %907 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %906, i32 0, i32 1
  %908 = load i32, ptr %12, align 4, !tbaa !19
  %909 = zext i32 %908 to i64
  %910 = getelementptr inbounds [13 x i8], ptr %907, i64 0, i64 %909
  %911 = load i8, ptr %910, align 1, !tbaa !18
  %912 = load ptr, ptr %6, align 8, !tbaa !5
  %913 = load i32, ptr %13, align 4, !tbaa !19
  %914 = zext i32 %913 to i64
  %915 = getelementptr inbounds i8, ptr %912, i64 %914
  store i8 %911, ptr %915, align 1, !tbaa !18
  br label %916

916:                                              ; preds = %905
  %917 = load i32, ptr %12, align 4, !tbaa !19
  %918 = add i32 %917, 1
  store i32 %918, ptr %12, align 4, !tbaa !19
  %919 = load i32, ptr %13, align 4, !tbaa !19
  %920 = add i32 %919, 1
  store i32 %920, ptr %13, align 4, !tbaa !19
  br label %882, !llvm.loop !46

921:                                              ; preds = %904, %894, %882
  %922 = load ptr, ptr %5, align 8, !tbaa !5
  %923 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %922, i32 0, i32 1
  %924 = load i32, ptr %12, align 4, !tbaa !19
  %925 = zext i32 %924 to i64
  %926 = getelementptr inbounds [13 x i8], ptr %923, i64 0, i64 %925
  %927 = load i8, ptr %926, align 1, !tbaa !18
  %928 = zext i8 %927 to i32
  %929 = icmp ne i32 %928, 0
  br i1 %929, label %930, label %963

930:                                              ; preds = %921
  %931 = load i32, ptr %12, align 4, !tbaa !19
  %932 = add i32 %931, 1
  store i32 %932, ptr %12, align 4, !tbaa !19
  store i32 8, ptr %13, align 4, !tbaa !19
  br label %933

933:                                              ; preds = %957, %930
  %934 = load i32, ptr %13, align 4, !tbaa !19
  %935 = icmp ult i32 %934, 11
  br i1 %935, label %936, label %962

936:                                              ; preds = %933
  %937 = load ptr, ptr %5, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %937, i32 0, i32 1
  %939 = load i32, ptr %12, align 4, !tbaa !19
  %940 = zext i32 %939 to i64
  %941 = getelementptr inbounds [13 x i8], ptr %938, i64 0, i64 %940
  %942 = load i8, ptr %941, align 1, !tbaa !18
  %943 = zext i8 %942 to i32
  %944 = icmp eq i32 %943, 0
  br i1 %944, label %945, label %946

945:                                              ; preds = %936
  br label %962

946:                                              ; preds = %936
  %947 = load ptr, ptr %5, align 8, !tbaa !5
  %948 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %947, i32 0, i32 1
  %949 = load i32, ptr %12, align 4, !tbaa !19
  %950 = zext i32 %949 to i64
  %951 = getelementptr inbounds [13 x i8], ptr %948, i64 0, i64 %950
  %952 = load i8, ptr %951, align 1, !tbaa !18
  %953 = load ptr, ptr %6, align 8, !tbaa !5
  %954 = load i32, ptr %13, align 4, !tbaa !19
  %955 = zext i32 %954 to i64
  %956 = getelementptr inbounds i8, ptr %953, i64 %955
  store i8 %952, ptr %956, align 1, !tbaa !18
  br label %957

957:                                              ; preds = %946
  %958 = load i32, ptr %12, align 4, !tbaa !19
  %959 = add i32 %958, 1
  store i32 %959, ptr %12, align 4, !tbaa !19
  %960 = load i32, ptr %13, align 4, !tbaa !19
  %961 = add i32 %960, 1
  store i32 %961, ptr %13, align 4, !tbaa !19
  br label %933, !llvm.loop !47

962:                                              ; preds = %945, %933
  br label %963

963:                                              ; preds = %962, %921
  %964 = load ptr, ptr %6, align 8, !tbaa !5
  %965 = getelementptr inbounds i8, ptr %964, i64 11
  store ptr %965, ptr %6, align 8, !tbaa !5
  br label %966

966:                                              ; preds = %963, %868
  br label %1268

967:                                              ; preds = %108
  %968 = load ptr, ptr %5, align 8, !tbaa !5
  %969 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %968, i32 0, i32 3
  %970 = load i32, ptr %969, align 4, !tbaa !48
  %971 = icmp ugt i32 %970, 0
  br i1 %971, label %972, label %1107

972:                                              ; preds = %967
  %973 = load ptr, ptr %5, align 8, !tbaa !5
  %974 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %973, i32 0, i32 3
  %975 = load i32, ptr %974, align 4, !tbaa !48
  %976 = or i32 64, %975
  %977 = trunc i32 %976 to i8
  %978 = zext i8 %977 to i32
  %979 = load ptr, ptr %6, align 8, !tbaa !5
  %980 = load i8, ptr %979, align 1, !tbaa !18
  %981 = zext i8 %980 to i32
  %982 = icmp eq i32 %978, %981
  br i1 %982, label %983, label %1106

983:                                              ; preds = %972
  store i32 0, ptr %13, align 4, !tbaa !19
  br label %984

984:                                              ; preds = %1102, %983
  %985 = load i32, ptr %13, align 4, !tbaa !19
  %986 = load ptr, ptr %5, align 8, !tbaa !5
  %987 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %986, i32 0, i32 3
  %988 = load i32, ptr %987, align 4, !tbaa !48
  %989 = icmp ult i32 %985, %988
  br i1 %989, label %990, label %1105

990:                                              ; preds = %984
  %991 = load ptr, ptr %5, align 8, !tbaa !5
  %992 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %991, i32 0, i32 0
  %993 = load ptr, ptr %992, align 8, !tbaa !17
  %994 = getelementptr inbounds i8, ptr %993, i64 0
  %995 = load i8, ptr %994, align 1, !tbaa !18
  %996 = zext i8 %995 to i32
  %997 = icmp eq i32 %996, 229
  br i1 %997, label %998, label %1001

998:                                              ; preds = %990
  %999 = load ptr, ptr %6, align 8, !tbaa !5
  %1000 = getelementptr inbounds i8, ptr %999, i64 0
  store i8 -27, ptr %1000, align 1, !tbaa !18
  br label %1001

1001:                                             ; preds = %998, %990
  %1002 = load ptr, ptr %6, align 8, !tbaa !5
  %1003 = getelementptr inbounds i8, ptr %1002, i64 32
  store ptr %1003, ptr %6, align 8, !tbaa !5
  %1004 = load i64, ptr %27, align 8, !tbaa !21
  %1005 = add i64 %1004, 32
  store i64 %1005, ptr %27, align 8, !tbaa !21
  %1006 = load i64, ptr %27, align 8, !tbaa !21
  %1007 = load ptr, ptr %4, align 8, !tbaa !5
  %1008 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %1007, i32 0, i32 10
  %1009 = load i32, ptr %1008, align 8, !tbaa !41
  %1010 = zext i32 %1009 to i64
  %1011 = icmp uge i64 %1006, %1010
  br i1 %1011, label %1012, label %1101

1012:                                             ; preds = %1001
  %1013 = load ptr, ptr %4, align 8, !tbaa !5
  %1014 = load i64, ptr %25, align 8, !tbaa !21
  %1015 = load ptr, ptr %7, align 8, !tbaa !5
  %1016 = call i32 @_fx_utility_logical_sector_write(ptr noundef %1013, i64 noundef %1014, ptr noundef %1015, i64 noundef 1, i8 noundef zeroext 3)
  store i32 %1016, ptr %8, align 4, !tbaa !19
  %1017 = load i32, ptr %8, align 4, !tbaa !19
  %1018 = icmp ne i32 %1017, 0
  br i1 %1018, label %1019, label %1021

1019:                                             ; preds = %1012
  %1020 = load i32, ptr %8, align 4, !tbaa !19
  store i32 %1020, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %1431

1021:                                             ; preds = %1012
  %1022 = load i64, ptr %25, align 8, !tbaa !21
  %1023 = load ptr, ptr %4, align 8, !tbaa !5
  %1024 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %1023, i32 0, i32 18
  %1025 = load i32, ptr %1024, align 4, !tbaa !23
  %1026 = zext i32 %1025 to i64
  %1027 = icmp uge i64 %1022, %1026
  br i1 %1027, label %1028, label %1074

1028:                                             ; preds = %1021
  %1029 = load i64, ptr %26, align 8, !tbaa !21
  %1030 = load ptr, ptr %4, align 8, !tbaa !5
  %1031 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %1030, i32 0, i32 19
  %1032 = load i32, ptr %1031, align 8, !tbaa !24
  %1033 = sub i32 %1032, 1
  %1034 = zext i32 %1033 to i64
  %1035 = icmp ult i64 %1029, %1034
  br i1 %1035, label %1036, label %1041

1036:                                             ; preds = %1028
  %1037 = load i64, ptr %25, align 8, !tbaa !21
  %1038 = add i64 %1037, 1
  store i64 %1038, ptr %25, align 8, !tbaa !21
  %1039 = load i64, ptr %26, align 8, !tbaa !21
  %1040 = add i64 %1039, 1
  store i64 %1040, ptr %26, align 8, !tbaa !21
  br label %1073

1041:                                             ; preds = %1028
  %1042 = load ptr, ptr %4, align 8, !tbaa !5
  %1043 = load i64, ptr %28, align 8, !tbaa !21
  %1044 = call i32 @_fx_utility_FAT_entry_read(ptr noundef %1042, i64 noundef %1043, ptr noundef %29)
  store i32 %1044, ptr %8, align 4, !tbaa !19
  %1045 = load i32, ptr %8, align 4, !tbaa !19
  %1046 = icmp ne i32 %1045, 0
  br i1 %1046, label %1047, label %1049

1047:                                             ; preds = %1041
  %1048 = load i32, ptr %8, align 4, !tbaa !19
  store i32 %1048, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %1431

1049:                                             ; preds = %1041
  %1050 = load i64, ptr %29, align 8, !tbaa !21
  store i64 %1050, ptr %28, align 8, !tbaa !21
  %1051 = load i64, ptr %28, align 8, !tbaa !21
  %1052 = icmp ult i64 %1051, 2
  br i1 %1052, label %1059, label %1053

1053:                                             ; preds = %1049
  %1054 = load i64, ptr %28, align 8, !tbaa !21
  %1055 = load ptr, ptr %4, align 8, !tbaa !5
  %1056 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %1055, i32 0, i32 126
  %1057 = load i64, ptr %1056, align 8, !tbaa !42
  %1058 = icmp uge i64 %1054, %1057
  br i1 %1058, label %1059, label %1060

1059:                                             ; preds = %1053, %1049
  store i32 8, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %1431

1060:                                             ; preds = %1053
  store i64 0, ptr %26, align 8, !tbaa !21
  %1061 = load ptr, ptr %4, align 8, !tbaa !5
  %1062 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %1061, i32 0, i32 18
  %1063 = load i32, ptr %1062, align 4, !tbaa !23
  %1064 = zext i32 %1063 to i64
  %1065 = load i64, ptr %28, align 8, !tbaa !21
  %1066 = sub i64 %1065, 2
  %1067 = load ptr, ptr %4, align 8, !tbaa !5
  %1068 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %1067, i32 0, i32 19
  %1069 = load i32, ptr %1068, align 8, !tbaa !24
  %1070 = zext i32 %1069 to i64
  %1071 = mul i64 %1066, %1070
  %1072 = add i64 %1064, %1071
  store i64 %1072, ptr %25, align 8, !tbaa !21
  br label %1073

1073:                                             ; preds = %1060, %1036
  br label %1085

1074:                                             ; preds = %1021
  %1075 = load i64, ptr %25, align 8, !tbaa !21
  %1076 = add i64 %1075, 1
  store i64 %1076, ptr %25, align 8, !tbaa !21
  %1077 = load i64, ptr %25, align 8, !tbaa !21
  %1078 = load ptr, ptr %4, align 8, !tbaa !5
  %1079 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %1078, i32 0, i32 18
  %1080 = load i32, ptr %1079, align 4, !tbaa !23
  %1081 = zext i32 %1080 to i64
  %1082 = icmp uge i64 %1077, %1081
  br i1 %1082, label %1083, label %1084

1083:                                             ; preds = %1074
  store i32 8, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %1431

1084:                                             ; preds = %1074
  br label %1085

1085:                                             ; preds = %1084, %1073
  %1086 = load ptr, ptr %4, align 8, !tbaa !5
  %1087 = load i64, ptr %25, align 8, !tbaa !21
  %1088 = load ptr, ptr %4, align 8, !tbaa !5
  %1089 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %1088, i32 0, i32 2
  %1090 = load ptr, ptr %1089, align 8, !tbaa !25
  %1091 = call i32 @_fx_utility_logical_sector_read(ptr noundef %1086, i64 noundef %1087, ptr noundef %1090, i64 noundef 1, i8 noundef zeroext 3)
  store i32 %1091, ptr %8, align 4, !tbaa !19
  %1092 = load i32, ptr %8, align 4, !tbaa !19
  %1093 = icmp ne i32 %1092, 0
  br i1 %1093, label %1094, label %1096

1094:                                             ; preds = %1085
  %1095 = load i32, ptr %8, align 4, !tbaa !19
  store i32 %1095, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %1431

1096:                                             ; preds = %1085
  %1097 = load ptr, ptr %4, align 8, !tbaa !5
  %1098 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %1097, i32 0, i32 2
  %1099 = load ptr, ptr %1098, align 8, !tbaa !25
  store ptr %1099, ptr %7, align 8, !tbaa !5
  store i64 0, ptr %27, align 8, !tbaa !21
  %1100 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %1100, ptr %6, align 8, !tbaa !5
  br label %1101

1101:                                             ; preds = %1096, %1001
  br label %1102

1102:                                             ; preds = %1101
  %1103 = load i32, ptr %13, align 4, !tbaa !19
  %1104 = add i32 %1103, 1
  store i32 %1104, ptr %13, align 4, !tbaa !19
  br label %984, !llvm.loop !49

1105:                                             ; preds = %984
  br label %1106

1106:                                             ; preds = %1105, %972
  br label %1107

1107:                                             ; preds = %1106, %967
  store i32 0, ptr %13, align 4, !tbaa !19
  br label %1108

1108:                                             ; preds = %1116, %1107
  %1109 = load i32, ptr %13, align 4, !tbaa !19
  %1110 = icmp ult i32 %1109, 11
  br i1 %1110, label %1111, label %1119

1111:                                             ; preds = %1108
  %1112 = load ptr, ptr %6, align 8, !tbaa !5
  %1113 = load i32, ptr %13, align 4, !tbaa !19
  %1114 = zext i32 %1113 to i64
  %1115 = getelementptr inbounds i8, ptr %1112, i64 %1114
  store i8 32, ptr %1115, align 1, !tbaa !18
  br label %1116

1116:                                             ; preds = %1111
  %1117 = load i32, ptr %13, align 4, !tbaa !19
  %1118 = add i32 %1117, 1
  store i32 %1118, ptr %13, align 4, !tbaa !19
  br label %1108, !llvm.loop !50

1119:                                             ; preds = %1108
  store i32 0, ptr %12, align 4, !tbaa !19
  br label %1120

1120:                                             ; preds = %1135, %1119
  %1121 = load ptr, ptr %5, align 8, !tbaa !5
  %1122 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1121, i32 0, i32 0
  %1123 = load ptr, ptr %1122, align 8, !tbaa !17
  %1124 = load i32, ptr %12, align 4, !tbaa !19
  %1125 = zext i32 %1124 to i64
  %1126 = getelementptr inbounds i8, ptr %1123, i64 %1125
  %1127 = load i8, ptr %1126, align 1, !tbaa !18
  %1128 = zext i8 %1127 to i32
  %1129 = icmp eq i32 %1128, 46
  br i1 %1129, label %1130, label %1138

1130:                                             ; preds = %1120
  %1131 = load ptr, ptr %6, align 8, !tbaa !5
  %1132 = load i32, ptr %12, align 4, !tbaa !19
  %1133 = zext i32 %1132 to i64
  %1134 = getelementptr inbounds i8, ptr %1131, i64 %1133
  store i8 46, ptr %1134, align 1, !tbaa !18
  br label %1135

1135:                                             ; preds = %1130
  %1136 = load i32, ptr %12, align 4, !tbaa !19
  %1137 = add i32 %1136, 1
  store i32 %1137, ptr %12, align 4, !tbaa !19
  br label %1120, !llvm.loop !51

1138:                                             ; preds = %1120
  %1139 = load ptr, ptr %5, align 8, !tbaa !5
  %1140 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1139, i32 0, i32 0
  %1141 = load ptr, ptr %1140, align 8, !tbaa !17
  %1142 = load i32, ptr %12, align 4, !tbaa !19
  %1143 = zext i32 %1142 to i64
  %1144 = getelementptr inbounds i8, ptr %1141, i64 %1143
  %1145 = load i8, ptr %1144, align 1, !tbaa !18
  %1146 = zext i8 %1145 to i32
  %1147 = icmp ne i32 %1146, 0
  br i1 %1147, label %1148, label %1206

1148:                                             ; preds = %1138
  store i32 0, ptr %12, align 4, !tbaa !19
  store i32 0, ptr %13, align 4, !tbaa !19
  br label %1149

1149:                                             ; preds = %1200, %1148
  %1150 = load i32, ptr %13, align 4, !tbaa !19
  %1151 = icmp ult i32 %1150, 8
  br i1 %1151, label %1152, label %1205

1152:                                             ; preds = %1149
  %1153 = load ptr, ptr %5, align 8, !tbaa !5
  %1154 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1153, i32 0, i32 0
  %1155 = load ptr, ptr %1154, align 8, !tbaa !17
  %1156 = load i32, ptr %12, align 4, !tbaa !19
  %1157 = zext i32 %1156 to i64
  %1158 = getelementptr inbounds i8, ptr %1155, i64 %1157
  %1159 = load i8, ptr %1158, align 1, !tbaa !18
  %1160 = zext i8 %1159 to i32
  %1161 = icmp eq i32 %1160, 46
  br i1 %1161, label %1162, label %1163

1162:                                             ; preds = %1152
  br label %1205

1163:                                             ; preds = %1152
  %1164 = load ptr, ptr %5, align 8, !tbaa !5
  %1165 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1164, i32 0, i32 0
  %1166 = load ptr, ptr %1165, align 8, !tbaa !17
  %1167 = load i32, ptr %12, align 4, !tbaa !19
  %1168 = zext i32 %1167 to i64
  %1169 = getelementptr inbounds i8, ptr %1166, i64 %1168
  %1170 = load i8, ptr %1169, align 1, !tbaa !18
  %1171 = zext i8 %1170 to i32
  %1172 = icmp eq i32 %1171, 0
  br i1 %1172, label %1173, label %1174

1173:                                             ; preds = %1163
  br label %1205

1174:                                             ; preds = %1163
  %1175 = load ptr, ptr %5, align 8, !tbaa !5
  %1176 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1175, i32 0, i32 0
  %1177 = load ptr, ptr %1176, align 8, !tbaa !17
  %1178 = load i32, ptr %12, align 4, !tbaa !19
  %1179 = zext i32 %1178 to i64
  %1180 = getelementptr inbounds i8, ptr %1177, i64 %1179
  %1181 = load i8, ptr %1180, align 1, !tbaa !18
  store i8 %1181, ptr %23, align 1, !tbaa !18
  %1182 = load i8, ptr %23, align 1, !tbaa !18
  %1183 = sext i8 %1182 to i32
  %1184 = icmp sge i32 %1183, 97
  br i1 %1184, label %1185, label %1194

1185:                                             ; preds = %1174
  %1186 = load i8, ptr %23, align 1, !tbaa !18
  %1187 = sext i8 %1186 to i32
  %1188 = icmp sle i32 %1187, 122
  br i1 %1188, label %1189, label %1194

1189:                                             ; preds = %1185
  %1190 = load i8, ptr %23, align 1, !tbaa !18
  %1191 = sext i8 %1190 to i32
  %1192 = sub nsw i32 %1191, 32
  %1193 = trunc i32 %1192 to i8
  store i8 %1193, ptr %23, align 1, !tbaa !18
  br label %1194

1194:                                             ; preds = %1189, %1185, %1174
  %1195 = load i8, ptr %23, align 1, !tbaa !18
  %1196 = load ptr, ptr %6, align 8, !tbaa !5
  %1197 = load i32, ptr %13, align 4, !tbaa !19
  %1198 = zext i32 %1197 to i64
  %1199 = getelementptr inbounds i8, ptr %1196, i64 %1198
  store i8 %1195, ptr %1199, align 1, !tbaa !18
  br label %1200

1200:                                             ; preds = %1194
  %1201 = load i32, ptr %12, align 4, !tbaa !19
  %1202 = add i32 %1201, 1
  store i32 %1202, ptr %12, align 4, !tbaa !19
  %1203 = load i32, ptr %13, align 4, !tbaa !19
  %1204 = add i32 %1203, 1
  store i32 %1204, ptr %13, align 4, !tbaa !19
  br label %1149, !llvm.loop !52

1205:                                             ; preds = %1173, %1162, %1149
  br label %1206

1206:                                             ; preds = %1205, %1138
  %1207 = load ptr, ptr %5, align 8, !tbaa !5
  %1208 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1207, i32 0, i32 0
  %1209 = load ptr, ptr %1208, align 8, !tbaa !17
  %1210 = load i32, ptr %12, align 4, !tbaa !19
  %1211 = zext i32 %1210 to i64
  %1212 = getelementptr inbounds i8, ptr %1209, i64 %1211
  %1213 = load i8, ptr %1212, align 1, !tbaa !18
  %1214 = zext i8 %1213 to i32
  %1215 = icmp ne i32 %1214, 0
  br i1 %1215, label %1216, label %1265

1216:                                             ; preds = %1206
  %1217 = load i32, ptr %12, align 4, !tbaa !19
  %1218 = add i32 %1217, 1
  store i32 %1218, ptr %12, align 4, !tbaa !19
  store i32 8, ptr %13, align 4, !tbaa !19
  br label %1219

1219:                                             ; preds = %1259, %1216
  %1220 = load i32, ptr %13, align 4, !tbaa !19
  %1221 = icmp ult i32 %1220, 11
  br i1 %1221, label %1222, label %1264

1222:                                             ; preds = %1219
  %1223 = load ptr, ptr %5, align 8, !tbaa !5
  %1224 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1223, i32 0, i32 0
  %1225 = load ptr, ptr %1224, align 8, !tbaa !17
  %1226 = load i32, ptr %12, align 4, !tbaa !19
  %1227 = zext i32 %1226 to i64
  %1228 = getelementptr inbounds i8, ptr %1225, i64 %1227
  %1229 = load i8, ptr %1228, align 1, !tbaa !18
  %1230 = zext i8 %1229 to i32
  %1231 = icmp eq i32 %1230, 0
  br i1 %1231, label %1232, label %1233

1232:                                             ; preds = %1222
  br label %1264

1233:                                             ; preds = %1222
  %1234 = load ptr, ptr %5, align 8, !tbaa !5
  %1235 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1234, i32 0, i32 0
  %1236 = load ptr, ptr %1235, align 8, !tbaa !17
  %1237 = load i32, ptr %12, align 4, !tbaa !19
  %1238 = zext i32 %1237 to i64
  %1239 = getelementptr inbounds i8, ptr %1236, i64 %1238
  %1240 = load i8, ptr %1239, align 1, !tbaa !18
  store i8 %1240, ptr %23, align 1, !tbaa !18
  %1241 = load i8, ptr %23, align 1, !tbaa !18
  %1242 = sext i8 %1241 to i32
  %1243 = icmp sge i32 %1242, 97
  br i1 %1243, label %1244, label %1253

1244:                                             ; preds = %1233
  %1245 = load i8, ptr %23, align 1, !tbaa !18
  %1246 = sext i8 %1245 to i32
  %1247 = icmp sle i32 %1246, 122
  br i1 %1247, label %1248, label %1253

1248:                                             ; preds = %1244
  %1249 = load i8, ptr %23, align 1, !tbaa !18
  %1250 = sext i8 %1249 to i32
  %1251 = sub nsw i32 %1250, 32
  %1252 = trunc i32 %1251 to i8
  store i8 %1252, ptr %23, align 1, !tbaa !18
  br label %1253

1253:                                             ; preds = %1248, %1244, %1233
  %1254 = load i8, ptr %23, align 1, !tbaa !18
  %1255 = load ptr, ptr %6, align 8, !tbaa !5
  %1256 = load i32, ptr %13, align 4, !tbaa !19
  %1257 = zext i32 %1256 to i64
  %1258 = getelementptr inbounds i8, ptr %1255, i64 %1257
  store i8 %1254, ptr %1258, align 1, !tbaa !18
  br label %1259

1259:                                             ; preds = %1253
  %1260 = load i32, ptr %12, align 4, !tbaa !19
  %1261 = add i32 %1260, 1
  store i32 %1261, ptr %12, align 4, !tbaa !19
  %1262 = load i32, ptr %13, align 4, !tbaa !19
  %1263 = add i32 %1262, 1
  store i32 %1263, ptr %13, align 4, !tbaa !19
  br label %1219, !llvm.loop !53

1264:                                             ; preds = %1232, %1219
  br label %1265

1265:                                             ; preds = %1264, %1206
  %1266 = load ptr, ptr %6, align 8, !tbaa !5
  %1267 = getelementptr inbounds i8, ptr %1266, i64 11
  store ptr %1267, ptr %6, align 8, !tbaa !5
  br label %1268

1268:                                             ; preds = %1265, %966
  %1269 = load ptr, ptr %5, align 8, !tbaa !5
  %1270 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1269, i32 0, i32 4
  %1271 = load i8, ptr %1270, align 8, !tbaa !54
  %1272 = load ptr, ptr %6, align 8, !tbaa !5
  %1273 = getelementptr inbounds i8, ptr %1272, i32 1
  store ptr %1273, ptr %6, align 8, !tbaa !5
  store i8 %1271, ptr %1272, align 1, !tbaa !18
  %1274 = load ptr, ptr %5, align 8, !tbaa !5
  %1275 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1274, i32 0, i32 5
  %1276 = load i8, ptr %1275, align 1, !tbaa !55
  %1277 = load ptr, ptr %6, align 8, !tbaa !5
  %1278 = getelementptr inbounds i8, ptr %1277, i32 1
  store ptr %1278, ptr %6, align 8, !tbaa !5
  store i8 %1276, ptr %1277, align 1, !tbaa !18
  %1279 = load ptr, ptr %5, align 8, !tbaa !5
  %1280 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1279, i32 0, i32 6
  %1281 = load i8, ptr %1280, align 2, !tbaa !56
  %1282 = load ptr, ptr %6, align 8, !tbaa !5
  %1283 = getelementptr inbounds i8, ptr %1282, i32 1
  store ptr %1283, ptr %6, align 8, !tbaa !5
  store i8 %1281, ptr %1282, align 1, !tbaa !18
  %1284 = load ptr, ptr %6, align 8, !tbaa !5
  %1285 = load ptr, ptr %5, align 8, !tbaa !5
  %1286 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1285, i32 0, i32 7
  %1287 = load i32, ptr %1286, align 4, !tbaa !57
  call void @_fx_utility_16_unsigned_write(ptr noundef %1284, i32 noundef %1287)
  %1288 = load ptr, ptr %6, align 8, !tbaa !5
  %1289 = getelementptr inbounds i8, ptr %1288, i64 2
  store ptr %1289, ptr %6, align 8, !tbaa !5
  %1290 = load ptr, ptr %6, align 8, !tbaa !5
  %1291 = load ptr, ptr %5, align 8, !tbaa !5
  %1292 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1291, i32 0, i32 8
  %1293 = load i32, ptr %1292, align 8, !tbaa !58
  call void @_fx_utility_16_unsigned_write(ptr noundef %1290, i32 noundef %1293)
  %1294 = load ptr, ptr %6, align 8, !tbaa !5
  %1295 = getelementptr inbounds i8, ptr %1294, i64 2
  store ptr %1295, ptr %6, align 8, !tbaa !5
  %1296 = load ptr, ptr %6, align 8, !tbaa !5
  %1297 = load ptr, ptr %5, align 8, !tbaa !5
  %1298 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1297, i32 0, i32 9
  %1299 = load i32, ptr %1298, align 4, !tbaa !59
  call void @_fx_utility_16_unsigned_write(ptr noundef %1296, i32 noundef %1299)
  %1300 = load ptr, ptr %6, align 8, !tbaa !5
  %1301 = getelementptr inbounds i8, ptr %1300, i64 2
  store ptr %1301, ptr %6, align 8, !tbaa !5
  %1302 = load ptr, ptr %4, align 8, !tbaa !5
  %1303 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %1302, i32 0, i32 23
  %1304 = load i32, ptr %1303, align 8, !tbaa !60
  %1305 = icmp ne i32 %1304, 0
  br i1 %1305, label %1306, label %1314

1306:                                             ; preds = %1268
  %1307 = load ptr, ptr %5, align 8, !tbaa !5
  %1308 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1307, i32 0, i32 12
  %1309 = load i64, ptr %1308, align 8, !tbaa !61
  %1310 = lshr i64 %1309, 16
  %1311 = trunc i64 %1310 to i32
  store i32 %1311, ptr %9, align 4, !tbaa !19
  %1312 = load ptr, ptr %6, align 8, !tbaa !5
  %1313 = load i32, ptr %9, align 4, !tbaa !19
  call void @_fx_utility_16_unsigned_write(ptr noundef %1312, i32 noundef %1313)
  br label %1316

1314:                                             ; preds = %1268
  %1315 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_fx_utility_16_unsigned_write(ptr noundef %1315, i32 noundef 0)
  br label %1316

1316:                                             ; preds = %1314, %1306
  %1317 = load ptr, ptr %6, align 8, !tbaa !5
  %1318 = getelementptr inbounds i8, ptr %1317, i64 2
  store ptr %1318, ptr %6, align 8, !tbaa !5
  %1319 = load ptr, ptr %6, align 8, !tbaa !5
  %1320 = load ptr, ptr %5, align 8, !tbaa !5
  %1321 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1320, i32 0, i32 10
  %1322 = load i32, ptr %1321, align 8, !tbaa !62
  call void @_fx_utility_16_unsigned_write(ptr noundef %1319, i32 noundef %1322)
  %1323 = load ptr, ptr %6, align 8, !tbaa !5
  %1324 = getelementptr inbounds i8, ptr %1323, i64 2
  store ptr %1324, ptr %6, align 8, !tbaa !5
  %1325 = load ptr, ptr %6, align 8, !tbaa !5
  %1326 = load ptr, ptr %5, align 8, !tbaa !5
  %1327 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1326, i32 0, i32 11
  %1328 = load i32, ptr %1327, align 4, !tbaa !63
  call void @_fx_utility_16_unsigned_write(ptr noundef %1325, i32 noundef %1328)
  %1329 = load ptr, ptr %6, align 8, !tbaa !5
  %1330 = getelementptr inbounds i8, ptr %1329, i64 2
  store ptr %1330, ptr %6, align 8, !tbaa !5
  %1331 = load ptr, ptr %6, align 8, !tbaa !5
  %1332 = load ptr, ptr %5, align 8, !tbaa !5
  %1333 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1332, i32 0, i32 12
  %1334 = load i64, ptr %1333, align 8, !tbaa !61
  %1335 = trunc i64 %1334 to i32
  call void @_fx_utility_16_unsigned_write(ptr noundef %1331, i32 noundef %1335)
  %1336 = load ptr, ptr %6, align 8, !tbaa !5
  %1337 = getelementptr inbounds i8, ptr %1336, i64 2
  store ptr %1337, ptr %6, align 8, !tbaa !5
  %1338 = load ptr, ptr %6, align 8, !tbaa !5
  %1339 = load ptr, ptr %5, align 8, !tbaa !5
  %1340 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1339, i32 0, i32 13
  %1341 = load i64, ptr %1340, align 8, !tbaa !64
  call void @_fx_utility_32_unsigned_write(ptr noundef %1338, i64 noundef %1341)
  %1342 = load ptr, ptr %4, align 8, !tbaa !5
  %1343 = load i64, ptr %25, align 8, !tbaa !21
  %1344 = load ptr, ptr %7, align 8, !tbaa !5
  %1345 = call i32 @_fx_utility_logical_sector_write(ptr noundef %1342, i64 noundef %1343, ptr noundef %1344, i64 noundef 1, i8 noundef zeroext 3)
  store i32 %1345, ptr %8, align 4, !tbaa !19
  %1346 = load i32, ptr %8, align 4, !tbaa !19
  %1347 = icmp ne i32 %1346, 0
  br i1 %1347, label %1348, label %1350

1348:                                             ; preds = %1316
  %1349 = load i32, ptr %8, align 4, !tbaa !19
  store i32 %1349, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %1431

1350:                                             ; preds = %1316
  %1351 = load ptr, ptr %4, align 8, !tbaa !5
  %1352 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %1351, i32 0, i32 117
  %1353 = getelementptr inbounds [256 x i8], ptr %1352, i64 0, i64 0
  %1354 = load i8, ptr %1353, align 8, !tbaa !18
  %1355 = icmp ne i8 %1354, 0
  br i1 %1355, label %1356, label %1430

1356:                                             ; preds = %1350
  %1357 = load ptr, ptr %5, align 8, !tbaa !5
  %1358 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1357, i32 0, i32 14
  %1359 = load i64, ptr %1358, align 8, !tbaa !22
  %1360 = load ptr, ptr %4, align 8, !tbaa !5
  %1361 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %1360, i32 0, i32 115
  %1362 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1361, i32 0, i32 14
  %1363 = load i64, ptr %1362, align 8, !tbaa !65
  %1364 = icmp eq i64 %1359, %1363
  br i1 %1364, label %1365, label %1429

1365:                                             ; preds = %1356
  %1366 = load ptr, ptr %5, align 8, !tbaa !5
  %1367 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1366, i32 0, i32 15
  %1368 = load i64, ptr %1367, align 8, !tbaa !20
  %1369 = load ptr, ptr %4, align 8, !tbaa !5
  %1370 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %1369, i32 0, i32 115
  %1371 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1370, i32 0, i32 15
  %1372 = load i64, ptr %1371, align 8, !tbaa !66
  %1373 = icmp eq i64 %1368, %1372
  br i1 %1373, label %1374, label %1429

1374:                                             ; preds = %1365
  %1375 = load ptr, ptr %5, align 8, !tbaa !5
  %1376 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1375, i32 0, i32 12
  %1377 = load i64, ptr %1376, align 8, !tbaa !61
  %1378 = load ptr, ptr %4, align 8, !tbaa !5
  %1379 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %1378, i32 0, i32 115
  %1380 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1379, i32 0, i32 12
  store i64 %1377, ptr %1380, align 8, !tbaa !67
  %1381 = load ptr, ptr %5, align 8, !tbaa !5
  %1382 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1381, i32 0, i32 13
  %1383 = load i64, ptr %1382, align 8, !tbaa !64
  %1384 = load ptr, ptr %4, align 8, !tbaa !5
  %1385 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %1384, i32 0, i32 115
  %1386 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1385, i32 0, i32 13
  store i64 %1383, ptr %1386, align 8, !tbaa !68
  %1387 = load ptr, ptr %5, align 8, !tbaa !5
  %1388 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1387, i32 0, i32 4
  %1389 = load i8, ptr %1388, align 8, !tbaa !54
  %1390 = load ptr, ptr %4, align 8, !tbaa !5
  %1391 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %1390, i32 0, i32 115
  %1392 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1391, i32 0, i32 4
  store i8 %1389, ptr %1392, align 8, !tbaa !69
  %1393 = load ptr, ptr %5, align 8, !tbaa !5
  %1394 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1393, i32 0, i32 10
  %1395 = load i32, ptr %1394, align 8, !tbaa !62
  %1396 = load ptr, ptr %4, align 8, !tbaa !5
  %1397 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %1396, i32 0, i32 115
  %1398 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1397, i32 0, i32 10
  store i32 %1395, ptr %1398, align 8, !tbaa !70
  %1399 = load ptr, ptr %5, align 8, !tbaa !5
  %1400 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1399, i32 0, i32 11
  %1401 = load i32, ptr %1400, align 4, !tbaa !63
  %1402 = load ptr, ptr %4, align 8, !tbaa !5
  %1403 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %1402, i32 0, i32 115
  %1404 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1403, i32 0, i32 11
  store i32 %1401, ptr %1404, align 4, !tbaa !71
  %1405 = load ptr, ptr %5, align 8, !tbaa !5
  %1406 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1405, i32 0, i32 5
  %1407 = load i8, ptr %1406, align 1, !tbaa !55
  %1408 = load ptr, ptr %4, align 8, !tbaa !5
  %1409 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %1408, i32 0, i32 115
  %1410 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1409, i32 0, i32 5
  store i8 %1407, ptr %1410, align 1, !tbaa !72
  %1411 = load ptr, ptr %5, align 8, !tbaa !5
  %1412 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1411, i32 0, i32 6
  %1413 = load i8, ptr %1412, align 2, !tbaa !56
  %1414 = load ptr, ptr %4, align 8, !tbaa !5
  %1415 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %1414, i32 0, i32 115
  %1416 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1415, i32 0, i32 6
  store i8 %1413, ptr %1416, align 2, !tbaa !73
  %1417 = load ptr, ptr %5, align 8, !tbaa !5
  %1418 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1417, i32 0, i32 7
  %1419 = load i32, ptr %1418, align 4, !tbaa !57
  %1420 = load ptr, ptr %4, align 8, !tbaa !5
  %1421 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %1420, i32 0, i32 115
  %1422 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1421, i32 0, i32 7
  store i32 %1419, ptr %1422, align 4, !tbaa !74
  %1423 = load ptr, ptr %5, align 8, !tbaa !5
  %1424 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1423, i32 0, i32 8
  %1425 = load i32, ptr %1424, align 8, !tbaa !58
  %1426 = load ptr, ptr %4, align 8, !tbaa !5
  %1427 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %1426, i32 0, i32 115
  %1428 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %1427, i32 0, i32 8
  store i32 %1425, ptr %1428, align 8, !tbaa !75
  br label %1429

1429:                                             ; preds = %1374, %1365, %1356
  br label %1430

1430:                                             ; preds = %1429, %1350
  store i32 0, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %1431

1431:                                             ; preds = %1430, %1348, %1094, %1083, %1059, %1047, %1019, %832, %821, %797, %785, %757, %106
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 12, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #3
  %1432 = load i32, ptr %3, align 4
  ret i32 %1432
}

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

declare i32 @_fx_utility_logical_sector_read(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i8 noundef zeroext) #2

declare i32 @_fx_utility_logical_sector_write(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i8 noundef zeroext) #2

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

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

declare void @_fx_utility_32_unsigned_write(ptr noundef, i64 noundef) #2

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

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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, !11, i64 640}
!10 = !{!"FX_MEDIA_STRUCT", !11, i64 0, !6, i64 8, !6, i64 16, !11, i64 24, !12, i64 32, !11, i64 40, !6, i64 48, !6, i64 56, !11, i64 64, !11, i64 72, !12, i64 80, !12, i64 84, !12, i64 88, !13, i64 96, !11, i64 104, !12, i64 112, !12, i64 116, !12, i64 120, !12, i64 124, !12, i64 128, !12, i64 132, !12, i64 136, !12, i64 140, !12, i64 144, !11, i64 152, !12, i64 160, !11, i64 168, !11, i64 176, !12, i64 184, !11, i64 192, !11, i64 200, !6, i64 208, !12, i64 216, !12, i64 220, !6, i64 224, !11, i64 232, !11, i64 240, !11, i64 248, !12, i64 256, !12, i64 260, !12, i64 264, !12, i64 268, !12, i64 272, !12, i64 276, !12, i64 280, !6, i64 288, !6, i64 296, !6, i64 304, !6, i64 312, !11, i64 320, !6, i64 328, !6, i64 336, !11, i64 344, !11, i64 352, !11, i64 360, !11, i64 368, !11, i64 376, !11, i64 384, !11, i64 392, !11, i64 400, !11, i64 408, !11, i64 416, !11, i64 424, !11, i64 432, !11, i64 440, !11, i64 448, !11, i64 456, !11, i64 464, !11, i64 472, !11, i64 480, !11, i64 488, !11, i64 496, !11, i64 504, !11, i64 512, !11, i64 520, !11, i64 528, !11, i64 536, !11, i64 544, !11, i64 552, !11, i64 560, !11, i64 568, !11, i64 576, !11, i64 584, !11, i64 592, !11, i64 600, !11, i64 608, !11, i64 616, !11, i64 624, !11, i64 632, !11, i64 640, !11, i64 648, !11, i64 656, !11, i64 664, !11, i64 672, !11, i64 680, !11, i64 688, !11, i64 696, !11, i64 704, !11, i64 712, !11, i64 720, !11, i64 728, !11, i64 736, !11, i64 744, !11, i64 752, !11, i64 760, !11, i64 768, !11, i64 776, !11, i64 784, !11, i64 792, !11, i64 800, !11, i64 808, !11, i64 816, !14, i64 824, !12, i64 920, !15, i64 928, !15, i64 1064, !7, i64 1200, !7, i64 1456, !16, i64 1712, !7, i64 2368, !7, i64 2752, !11, i64 2880, !7, i64 2888, !7, i64 3912, !11, i64 12104, !11, i64 12112, !11, i64 12120, !11, i64 12128, !7, i64 12136}
!11 = !{!"long", !7, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!"long long", !7, i64 0}
!14 = !{!"TX_MUTEX_STRUCT", !11, i64 0, !6, i64 8, !12, i64 16, !6, i64 24, !12, i64 32, !12, i64 36, !6, i64 40, !12, i64 48, !6, i64 56, !6, i64 64, !12, i64 72, !6, i64 80, !6, i64 88}
!15 = !{!"FX_DIR_ENTRY_STRUCT", !6, i64 0, !7, i64 8, !12, i64 24, !12, i64 28, !7, i64 32, !7, i64 33, !7, i64 34, !12, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !11, i64 56, !13, i64 64, !13, i64 72, !11, i64 80, !11, i64 88, !11, i64 96, !11, i64 104, !13, i64 112, !11, i64 120, !13, i64 128}
!16 = !{!"FX_PATH_STRUCT", !15, i64 0, !7, i64 136, !7, i64 392, !11, i64 648}
!17 = !{!15, !6, i64 0}
!18 = !{!7, !7, i64 0}
!19 = !{!12, !12, i64 0}
!20 = !{!15, !11, i64 80}
!21 = !{!11, !11, i64 0}
!22 = !{!15, !13, i64 72}
!23 = !{!10, !12, i64 124}
!24 = !{!10, !12, i64 128}
!25 = !{!10, !6, i64 16}
!26 = !{!15, !12, i64 24}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = distinct !{!29, !28}
!30 = distinct !{!30, !28}
!31 = distinct !{!31, !28}
!32 = !{!15, !11, i64 88}
!33 = distinct !{!33, !28}
!34 = distinct !{!34, !28}
!35 = distinct !{!35, !28}
!36 = distinct !{!36, !28}
!37 = distinct !{!37, !28}
!38 = distinct !{!38, !28}
!39 = distinct !{!39, !28}
!40 = distinct !{!40, !28}
!41 = !{!10, !12, i64 80}
!42 = !{!10, !11, i64 12120}
!43 = distinct !{!43, !28}
!44 = distinct !{!44, !28}
!45 = distinct !{!45, !28}
!46 = distinct !{!46, !28}
!47 = distinct !{!47, !28}
!48 = !{!15, !12, i64 28}
!49 = distinct !{!49, !28}
!50 = distinct !{!50, !28}
!51 = distinct !{!51, !28}
!52 = distinct !{!52, !28}
!53 = distinct !{!53, !28}
!54 = !{!15, !7, i64 32}
!55 = !{!15, !7, i64 33}
!56 = !{!15, !7, i64 34}
!57 = !{!15, !12, i64 36}
!58 = !{!15, !12, i64 40}
!59 = !{!15, !12, i64 44}
!60 = !{!10, !12, i64 144}
!61 = !{!15, !11, i64 56}
!62 = !{!15, !12, i64 48}
!63 = !{!15, !12, i64 52}
!64 = !{!15, !13, i64 64}
!65 = !{!10, !13, i64 1136}
!66 = !{!10, !11, i64 1144}
!67 = !{!10, !11, i64 1120}
!68 = !{!10, !13, i64 1128}
!69 = !{!10, !7, i64 1096}
!70 = !{!10, !12, i64 1112}
!71 = !{!10, !12, i64 1116}
!72 = !{!10, !7, i64 1097}
!73 = !{!10, !7, i64 1098}
!74 = !{!10, !12, i64 1100}
!75 = !{!10, !12, i64 1104}


; 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: nounwind uwtable
define dso_local i32 @_fx_directory_entry_write(ptr noundef %0, ptr nocapture noundef %1) local_unnamed_addr #0 {
  %3 = alloca [12 x i8], align 8
  %4 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %3) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #5
  %5 = getelementptr inbounds i8, ptr %0, i64 640
  %6 = load i64, ptr %5, align 8, !tbaa !5
  %7 = add i64 %6, 1
  store i64 %7, ptr %5, align 8, !tbaa !5
  %8 = load ptr, ptr %1, align 8, !tbaa !16
  %9 = load i8, ptr %8, align 1, !tbaa !17
  %10 = icmp eq i8 %9, -27
  br i1 %10, label %11, label %16

11:                                               ; preds = %2
  %12 = getelementptr inbounds i8, ptr %1, i64 8
  %13 = load i8, ptr %12, align 8, !tbaa !17
  %14 = icmp eq i8 %13, -27
  br i1 %14, label %15, label %16

15:                                               ; preds = %11
  store i8 0, ptr %12, align 8, !tbaa !17
  br label %16

16:                                               ; preds = %2, %11, %15
  %17 = phi i1 [ false, %15 ], [ true, %11 ], [ true, %2 ]
  %18 = getelementptr inbounds i8, ptr %1, i64 80
  %19 = load i64, ptr %18, align 8, !tbaa !18
  %20 = getelementptr inbounds i8, ptr %1, i64 72
  %21 = load i64, ptr %20, align 8, !tbaa !19
  %22 = getelementptr inbounds i8, ptr %0, i64 124
  %23 = load i32, ptr %22, align 4, !tbaa !20
  %24 = zext i32 %23 to i64
  %.not = icmp ult i64 %21, %24
  br i1 %.not, label %35, label %25

25:                                               ; preds = %16
  %26 = sub i64 %21, %24
  %27 = getelementptr inbounds i8, ptr %0, i64 128
  %28 = load i32, ptr %27, align 8, !tbaa !21
  %29 = zext i32 %28 to i64
  %30 = udiv i64 %26, %29
  %31 = add i64 %30, 2
  %32 = mul i64 %30, %29
  %33 = add i64 %32, %24
  %34 = sub i64 %21, %33
  br label %35

35:                                               ; preds = %16, %25
  %.0425 = phi i64 [ %34, %25 ], [ 0, %16 ]
  %.0 = phi i64 [ %31, %25 ], [ 0, %16 ]
  %36 = getelementptr inbounds i8, ptr %0, i64 16
  %37 = load ptr, ptr %36, align 8, !tbaa !22
  %38 = tail call i32 @_fx_utility_logical_sector_read(ptr noundef nonnull %0, i64 noundef %21, ptr noundef %37, i64 noundef 1, i8 noundef zeroext 3) #5
  %.not536 = icmp eq i32 %38, 0
  br i1 %.not536, label %39, label %.loopexit589

39:                                               ; preds = %35
  %40 = load ptr, ptr %36, align 8, !tbaa !22
  %41 = load i64, ptr %18, align 8, !tbaa !18
  %42 = and i64 %41, 4294967295
  %43 = getelementptr inbounds i8, ptr %40, i64 %42
  %44 = getelementptr inbounds i8, ptr %1, i64 24
  %45 = load i32, ptr %44, align 8, !tbaa !23
  %.not537 = icmp eq i32 %45, 0
  br i1 %.not537, label %451, label %.preheader606

.preheader606:                                    ; preds = %39
  %46 = load ptr, ptr %1, align 8, !tbaa !16
  br label %47

47:                                               ; preds = %.preheader606, %64
  %.0475 = phi i32 [ %.1476, %64 ], [ 0, %.preheader606 ]
  %.0459 = phi i32 [ %65, %64 ], [ 0, %.preheader606 ]
  %.0456 = phi i32 [ %.1457, %64 ], [ 0, %.preheader606 ]
  %.0450 = phi i32 [ %.1451, %64 ], [ 0, %.preheader606 ]
  %48 = zext i32 %.0459 to i64
  %49 = getelementptr inbounds i8, ptr %46, i64 %48
  %50 = load i8, ptr %49, align 1, !tbaa !17
  switch i8 %50, label %57 [
    i8 0, label %.preheader605
    i8 46, label %54
  ]

.preheader605:                                    ; preds = %47
  %51 = icmp ult i32 %.0475, 11
  br i1 %51, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.preheader605
  %52 = zext nneg i32 %.0475 to i64
  %scevgep = getelementptr i8, ptr %3, i64 %52
  %narrow773 = sub nsw i32 11, %.0475
  %53 = zext i32 %narrow773 to i64
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %scevgep, i8 32, i64 %53, i1 false), !tbaa !17
  br label %._crit_edge

54:                                               ; preds = %47
  %55 = icmp eq i32 %.0459, 0
  %56 = add i32 %.0459, 1
  %spec.select = select i1 %55, i32 %.0456, i32 %.0475
  %spec.select571 = select i1 %55, i32 %.0450, i32 %56
  br label %64

57:                                               ; preds = %47
  %58 = icmp ne i8 %50, 32
  %59 = icmp ult i32 %.0475, 8
  %or.cond = select i1 %58, i1 %59, i1 false
  br i1 %or.cond, label %60, label %64

60:                                               ; preds = %57
  %61 = zext nneg i32 %.0475 to i64
  %62 = getelementptr inbounds [12 x i8], ptr %3, i64 0, i64 %61
  store i8 %50, ptr %62, align 1, !tbaa !17
  %63 = add nuw nsw i32 %.0475, 1
  br label %64

64:                                               ; preds = %54, %57, %60
  %.1476 = phi i32 [ %63, %60 ], [ %.0475, %57 ], [ %.0475, %54 ]
  %.1457 = phi i32 [ %.0456, %60 ], [ %.0456, %57 ], [ %spec.select, %54 ]
  %.1451 = phi i32 [ %.0450, %60 ], [ %.0450, %57 ], [ %spec.select571, %54 ]
  %65 = add i32 %.0459, 1
  br label %47, !llvm.loop !24

._crit_edge:                                      ; preds = %.lr.ph.preheader, %.preheader605
  %.not549 = icmp eq i32 %.0450, 0
  br i1 %.not549, label %.loopexit604, label %66

66:                                               ; preds = %._crit_edge
  %67 = zext i32 %.0450 to i64
  %68 = getelementptr inbounds i8, ptr %46, i64 %67
  %69 = load i8, ptr %68, align 1, !tbaa !17
  %.not550 = icmp eq i8 %69, 0
  br i1 %.not550, label %.thread756, label %70

70:                                               ; preds = %66
  %71 = add i32 %.0450, 1
  %72 = getelementptr inbounds i8, ptr %3, i64 8
  store i8 %69, ptr %72, align 8, !tbaa !17
  %.pre = zext i32 %71 to i64
  %.phi.trans.insert = getelementptr inbounds i8, ptr %46, i64 %.pre
  %.pre729 = load i8, ptr %.phi.trans.insert, align 1, !tbaa !17
  %.not551 = icmp eq i8 %.pre729, 0
  br i1 %.not551, label %.thread756, label %73

73:                                               ; preds = %70
  %74 = add i32 %.0450, 2
  %75 = getelementptr inbounds i8, ptr %3, i64 9
  store i8 %.pre729, ptr %75, align 1, !tbaa !17
  %.pre730 = zext i32 %74 to i64
  %.phi.trans.insert747 = getelementptr inbounds i8, ptr %46, i64 %.pre730
  %.pre748 = load i8, ptr %.phi.trans.insert747, align 1, !tbaa !17
  %.not552 = icmp eq i8 %.pre748, 0
  br i1 %.not552, label %.thread756, label %76

76:                                               ; preds = %73
  %77 = add i32 %.0450, 3
  %78 = getelementptr inbounds i8, ptr %3, i64 10
  store i8 %.pre748, ptr %78, align 2, !tbaa !17
  br label %.thread756

.thread756:                                       ; preds = %66, %70, %76, %73
  %.4454 = phi i32 [ %77, %76 ], [ %74, %73 ], [ %71, %70 ], [ %.0450, %66 ]
  %79 = icmp ult i32 %.0456, 8
  br i1 %79, label %.lr.ph619.preheader, label %.loopexit604

.lr.ph619.preheader:                              ; preds = %.thread756
  %80 = zext nneg i32 %.0456 to i64
  %scevgep685 = getelementptr i8, ptr %3, i64 %80
  %narrow = sub nuw nsw i32 8, %.0456
  %81 = zext nneg i32 %narrow to i64
  call void @llvm.memset.p0.i64(ptr align 1 %scevgep685, i8 32, i64 %81, i1 false), !tbaa !17
  br label %.loopexit604

.loopexit604:                                     ; preds = %.lr.ph619.preheader, %.thread756, %._crit_edge
  %.2477 = phi i32 [ %.0475, %._crit_edge ], [ %.0456, %.thread756 ], [ %.0456, %.lr.ph619.preheader ]
  %.5455 = phi i32 [ 0, %._crit_edge ], [ %.4454, %.thread756 ], [ %.4454, %.lr.ph619.preheader ]
  %82 = urem i32 %.0459, 13
  %83 = icmp ne i32 %82, 0
  %84 = udiv i32 %.0459, 13
  %85 = zext i1 %83 to i32
  %.0460 = add nuw nsw i32 %84, %85
  br label %86

86:                                               ; preds = %.loopexit604, %.backedge
  %.0462621 = phi i32 [ 0, %.loopexit604 ], [ %.0462.be, %.backedge ]
  %.0466620 = phi i32 [ 0, %.loopexit604 ], [ %.0466.be, %.backedge ]
  %87 = zext nneg i32 %.0466620 to i64
  %88 = getelementptr inbounds [12 x i8], ptr %3, i64 0, i64 %87
  %89 = load i8, ptr %88, align 1, !tbaa !17
  %90 = icmp ne i8 %89, 32
  br i1 %90, label %96, label %91

91:                                               ; preds = %86
  %92 = zext i32 %.0462621 to i64
  %93 = getelementptr inbounds i8, ptr %46, i64 %92
  %94 = load i8, ptr %93, align 1, !tbaa !17
  switch i8 %94, label %.loopexit603 [
    i8 0, label %.loopexit603.loopexit
    i8 46, label %.backedge
  ]

.backedge:                                        ; preds = %91, %108
  %.0466.be = phi i32 [ %109, %108 ], [ 8, %91 ]
  %.0462.be.in = phi i32 [ %.1463, %108 ], [ %.0462621, %91 ]
  %.0462.be = add i32 %.0462.be.in, 1
  %95 = icmp ult i32 %.0466.be, 11
  br i1 %95, label %86, label %.backedge..loopexit680_crit_edge, !llvm.loop !26

.backedge..loopexit680_crit_edge:                 ; preds = %.backedge
  %.pre732.phi.trans.insert = zext i32 %.0462.be to i64
  %.phi.trans.insert734.phi.trans.insert = getelementptr inbounds i8, ptr %46, i64 %.pre732.phi.trans.insert
  %.pre735.pre = load i8, ptr %.phi.trans.insert734.phi.trans.insert, align 1, !tbaa !17
  br label %.loopexit603

96:                                               ; preds = %86
  %97 = icmp eq i32 %.0466620, 8
  br i1 %97, label %98, label %104

98:                                               ; preds = %96
  %99 = zext i32 %.0462621 to i64
  %100 = getelementptr inbounds i8, ptr %46, i64 %99
  %101 = load i8, ptr %100, align 1, !tbaa !17
  %102 = icmp eq i8 %101, 46
  %103 = zext i1 %102 to i32
  %spec.select572 = add i32 %.0462621, %103
  br label %104

104:                                              ; preds = %98, %96
  %.1463 = phi i32 [ %.0462621, %96 ], [ %spec.select572, %98 ]
  %105 = zext i32 %.1463 to i64
  %106 = getelementptr inbounds i8, ptr %46, i64 %105
  %107 = load i8, ptr %106, align 1, !tbaa !17
  %.not553 = icmp eq i8 %89, %107
  br i1 %.not553, label %108, label %.loopexit603

108:                                              ; preds = %104
  %109 = add nuw nsw i32 %.0466620, 1
  br label %.backedge

.loopexit603.loopexit:                            ; preds = %91
  br label %.loopexit603

.loopexit603:                                     ; preds = %104, %91, %.loopexit603.loopexit, %.backedge..loopexit680_crit_edge
  %110 = phi i8 [ %.pre735.pre, %.backedge..loopexit680_crit_edge ], [ %94, %91 ], [ %107, %104 ], [ %94, %.loopexit603.loopexit ]
  %111 = phi i1 [ false, %.backedge..loopexit680_crit_edge ], [ true, %91 ], [ %90, %104 ], [ %90, %.loopexit603.loopexit ]
  %112 = icmp ne i32 %.5455, 0
  %113 = getelementptr inbounds i8, ptr %3, i64 8
  %114 = load i8, ptr %113, align 8
  %115 = icmp eq i8 %114, 32
  %or.cond5 = select i1 %112, i1 %115, i1 false
  %.not555 = icmp ne i8 %110, 0
  %116 = or i1 %111, %or.cond5
  %117 = select i1 %.not555, i1 true, i1 %116
  br i1 %117, label %.loopexit602.loopexit, label %.loopexit602

.loopexit602.loopexit:                            ; preds = %.loopexit603
  %118 = getelementptr inbounds i8, ptr %1, i64 88
  %119 = load i64, ptr %118, align 8, !tbaa !27
  %120 = trunc i64 %119 to i32
  %spec.select574 = tail call i32 @llvm.umin.i32(i32 %.2477, i32 3)
  %121 = zext nneg i32 %spec.select574 to i64
  %122 = getelementptr inbounds [12 x i8], ptr %3, i64 0, i64 %121
  store i8 126, ptr %122, align 1, !tbaa !17
  %123 = lshr i32 %120, 4
  %124 = lshr i32 %120, 8
  %125 = lshr i32 %120, 12
  %126 = tail call i32 @llvm.umin.i32(i32 %.2477, i32 3)
  %umin = zext nneg i32 %126 to i64
  %indvars.iv.next = add nuw nsw i64 %umin, 1
  %.0488 = and i32 %125, 15
  %127 = icmp ugt i32 %.0488, 9
  %128 = trunc nuw nsw i32 %.0488 to i8
  %129 = add nuw nsw i8 %128, 55
  %130 = or disjoint i8 %128, 48
  %.sink = select i1 %127, i8 %129, i8 %130
  %131 = getelementptr inbounds [12 x i8], ptr %3, i64 0, i64 %indvars.iv.next
  store i8 %.sink, ptr %131, align 1
  %indvars.iv.next.1 = add nuw nsw i64 %umin, 2
  %.0488.1 = and i32 %124, 15
  %132 = icmp ugt i32 %.0488.1, 9
  %133 = trunc nuw nsw i32 %.0488.1 to i8
  %134 = add nuw nsw i8 %133, 55
  %135 = trunc nuw nsw i32 %.0488.1 to i8
  %136 = or disjoint i8 %135, 48
  %.sink726 = select i1 %132, i8 %134, i8 %136
  %137 = getelementptr inbounds [12 x i8], ptr %3, i64 0, i64 %indvars.iv.next.1
  store i8 %.sink726, ptr %137, align 1
  %indvars.iv.next.2 = add nuw nsw i64 %umin, 3
  %.0488.2 = and i32 %123, 15
  %138 = icmp ugt i32 %.0488.2, 9
  %139 = trunc nuw nsw i32 %.0488.2 to i8
  %140 = add nuw nsw i8 %139, 55
  %141 = trunc nuw nsw i32 %.0488.2 to i8
  %142 = or disjoint i8 %141, 48
  %.sink727 = select i1 %138, i8 %140, i8 %142
  %143 = getelementptr inbounds [12 x i8], ptr %3, i64 0, i64 %indvars.iv.next.2
  store i8 %.sink727, ptr %143, align 1
  %indvars.iv.next.3 = or disjoint i64 %umin, 4
  %.0488.3 = and i32 %120, 15
  %144 = icmp ugt i32 %.0488.3, 9
  %145 = trunc nuw nsw i32 %.0488.3 to i8
  %146 = add nuw nsw i8 %145, 55
  %147 = trunc nuw nsw i32 %.0488.3 to i8
  %148 = or disjoint i8 %147, 48
  %.sink728 = select i1 %144, i8 %146, i8 %148
  %149 = getelementptr inbounds [12 x i8], ptr %3, i64 0, i64 %indvars.iv.next.3
  store i8 %.sink728, ptr %149, align 1
  br label %.loopexit602

.loopexit602:                                     ; preds = %.loopexit602.loopexit, %.loopexit603
  %150 = getelementptr inbounds i8, ptr %3, i64 11
  store i8 0, ptr %150, align 1, !tbaa !17
  %151 = load i8, ptr %3, align 8, !tbaa !17
  %152 = icmp eq i8 %151, -27
  %or.cond7 = and i1 %17, %152
  %spec.store.select = select i1 %or.cond7, i8 -113, i8 %151
  %153 = getelementptr inbounds i8, ptr %3, i64 1
  %154 = load i8, ptr %153, align 1, !tbaa !17
  %155 = getelementptr inbounds i8, ptr %3, i64 2
  %156 = getelementptr inbounds i8, ptr %3, i64 3
  %157 = load <8 x i8>, ptr %155, align 2
  %158 = getelementptr inbounds i8, ptr %3, i64 4
  %159 = getelementptr inbounds i8, ptr %3, i64 5
  %160 = getelementptr inbounds i8, ptr %3, i64 6
  %161 = getelementptr inbounds i8, ptr %3, i64 7
  %162 = load <8 x i8>, ptr %158, align 4
  %163 = insertelement <8 x i8> poison, i8 %spec.store.select, i64 0
  %164 = insertelement <8 x i8> %163, i8 %154, i64 1
  %165 = shufflevector <8 x i8> %164, <8 x i8> %157, <8 x i32> <i32 0, i32 1, i32 8, i32 9, i32 poison, i32 poison, i32 poison, i32 poison>
  %166 = shufflevector <8 x i8> %165, <8 x i8> %162, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
  %167 = add <8 x i8> %166, <i8 -97, i8 -97, i8 -97, i8 -97, i8 -97, i8 -97, i8 -97, i8 -97>
  %168 = icmp ult <8 x i8> %167, <i8 26, i8 26, i8 26, i8 26, i8 26, i8 26, i8 26, i8 26>
  %169 = add nsw <8 x i8> %166, <i8 -32, i8 -32, i8 -32, i8 -32, i8 -32, i8 -32, i8 -32, i8 -32>
  %170 = select <8 x i1> %168, <8 x i8> %169, <8 x i8> %166
  store <8 x i8> %170, ptr %3, align 8, !tbaa !17
  %171 = add i8 %114, -97
  %or.cond10.8 = icmp ult i8 %171, 26
  %172 = add nsw i8 %114, -32
  %spec.select575.8 = select i1 %or.cond10.8, i8 %172, i8 %114
  store i8 %spec.select575.8, ptr %113, align 8, !tbaa !17
  %173 = getelementptr inbounds i8, ptr %3, i64 9
  %174 = load i8, ptr %173, align 1, !tbaa !17
  %175 = add i8 %174, -97
  %or.cond10.9 = icmp ult i8 %175, 26
  %176 = add nsw i8 %174, -32
  %spec.select575.9 = select i1 %or.cond10.9, i8 %176, i8 %174
  store i8 %spec.select575.9, ptr %173, align 1, !tbaa !17
  %177 = getelementptr inbounds i8, ptr %3, i64 10
  %178 = load i8, ptr %177, align 2, !tbaa !17
  %179 = add i8 %178, -97
  %or.cond10.10 = icmp ult i8 %179, 26
  %180 = add nsw i8 %178, -32
  %spec.select575.10 = select i1 %or.cond10.10, i8 %180, i8 %178
  store i8 %spec.select575.10, ptr %177, align 2, !tbaa !17
  %181 = getelementptr inbounds i8, ptr %1, i64 8
  %182 = load i8, ptr %181, align 8, !tbaa !17
  %183 = extractelement <8 x i8> %170, i64 0
  %184 = extractelement <8 x i8> %170, i64 1
  %185 = extractelement <8 x i8> %170, i64 2
  %186 = extractelement <8 x i8> %170, i64 3
  %187 = extractelement <8 x i8> %170, i64 4
  %188 = extractelement <8 x i8> %170, i64 5
  %189 = extractelement <8 x i8> %170, i64 6
  %190 = extractelement <8 x i8> %170, i64 7
  switch i8 %182, label %.preheader600.1 [
    i8 0, label %268
    i8 46, label %.preheader598
  ]

.preheader600.1:                                  ; preds = %.loopexit602
  %191 = getelementptr inbounds i8, ptr %1, i64 9
  %192 = load i8, ptr %191, align 1, !tbaa !17
  switch i8 %192, label %.preheader600.2 [
    i8 46, label %206
    i8 0, label %206
  ]

.preheader600.2:                                  ; preds = %.preheader600.1
  %193 = getelementptr inbounds i8, ptr %1, i64 10
  %194 = load i8, ptr %193, align 1, !tbaa !17
  switch i8 %194, label %.preheader600.3 [
    i8 46, label %206
    i8 0, label %206
  ]

.preheader600.3:                                  ; preds = %.preheader600.2
  %195 = getelementptr inbounds i8, ptr %1, i64 11
  %196 = load i8, ptr %195, align 1, !tbaa !17
  switch i8 %196, label %.preheader600.4 [
    i8 46, label %206
    i8 0, label %206
  ]

.preheader600.4:                                  ; preds = %.preheader600.3
  %197 = getelementptr inbounds i8, ptr %1, i64 12
  %198 = load i8, ptr %197, align 1, !tbaa !17
  switch i8 %198, label %.preheader600.5 [
    i8 46, label %206
    i8 0, label %206
  ]

.preheader600.5:                                  ; preds = %.preheader600.4
  %199 = getelementptr inbounds i8, ptr %1, i64 13
  %200 = load i8, ptr %199, align 1, !tbaa !17
  switch i8 %200, label %.preheader600.6 [
    i8 46, label %206
    i8 0, label %206
  ]

.preheader600.6:                                  ; preds = %.preheader600.5
  %201 = getelementptr inbounds i8, ptr %1, i64 14
  %202 = load i8, ptr %201, align 1, !tbaa !17
  switch i8 %202, label %.preheader600.7 [
    i8 46, label %206
    i8 0, label %206
  ]

.preheader600.7:                                  ; preds = %.preheader600.6
  %203 = getelementptr inbounds i8, ptr %1, i64 15
  %204 = load i8, ptr %203, align 1, !tbaa !17
  switch i8 %204, label %205 [
    i8 46, label %206
    i8 0, label %206
  ]

205:                                              ; preds = %.preheader600.7
  %.phi.trans.insert736 = getelementptr inbounds i8, ptr %1, i64 16
  %.pre737 = load i8, ptr %.phi.trans.insert736, align 1, !tbaa !17
  br label %206

206:                                              ; preds = %205, %.preheader600.7, %.preheader600.7, %.preheader600.6, %.preheader600.6, %.preheader600.5, %.preheader600.5, %.preheader600.4, %.preheader600.4, %.preheader600.3, %.preheader600.3, %.preheader600.2, %.preheader600.2, %.preheader600.1, %.preheader600.1
  %207 = phi i8 [ 32, %.preheader600.1 ], [ 32, %.preheader600.1 ], [ 32, %.preheader600.2 ], [ 32, %.preheader600.2 ], [ 32, %.preheader600.3 ], [ 32, %.preheader600.3 ], [ 32, %.preheader600.4 ], [ 32, %.preheader600.4 ], [ 32, %.preheader600.5 ], [ 32, %.preheader600.5 ], [ 32, %.preheader600.6 ], [ 32, %.preheader600.6 ], [ 32, %.preheader600.7 ], [ 32, %.preheader600.7 ], [ %204, %205 ]
  %208 = phi i8 [ 32, %.preheader600.1 ], [ 32, %.preheader600.1 ], [ 32, %.preheader600.2 ], [ 32, %.preheader600.2 ], [ 32, %.preheader600.3 ], [ 32, %.preheader600.3 ], [ 32, %.preheader600.4 ], [ 32, %.preheader600.4 ], [ 32, %.preheader600.5 ], [ 32, %.preheader600.5 ], [ 32, %.preheader600.6 ], [ 32, %.preheader600.6 ], [ %202, %.preheader600.7 ], [ %202, %.preheader600.7 ], [ %202, %205 ]
  %209 = phi i8 [ 32, %.preheader600.1 ], [ 32, %.preheader600.1 ], [ 32, %.preheader600.2 ], [ 32, %.preheader600.2 ], [ 32, %.preheader600.3 ], [ 32, %.preheader600.3 ], [ 32, %.preheader600.4 ], [ 32, %.preheader600.4 ], [ 32, %.preheader600.5 ], [ 32, %.preheader600.5 ], [ %200, %.preheader600.6 ], [ %200, %.preheader600.6 ], [ %200, %.preheader600.7 ], [ %200, %.preheader600.7 ], [ %200, %205 ]
  %210 = phi i8 [ 32, %.preheader600.1 ], [ 32, %.preheader600.1 ], [ 32, %.preheader600.2 ], [ 32, %.preheader600.2 ], [ 32, %.preheader600.3 ], [ 32, %.preheader600.3 ], [ 32, %.preheader600.4 ], [ 32, %.preheader600.4 ], [ %198, %.preheader600.5 ], [ %198, %.preheader600.5 ], [ %198, %.preheader600.6 ], [ %198, %.preheader600.6 ], [ %198, %.preheader600.7 ], [ %198, %.preheader600.7 ], [ %198, %205 ]
  %211 = phi i8 [ 32, %.preheader600.1 ], [ 32, %.preheader600.1 ], [ 32, %.preheader600.2 ], [ 32, %.preheader600.2 ], [ 32, %.preheader600.3 ], [ 32, %.preheader600.3 ], [ %196, %.preheader600.4 ], [ %196, %.preheader600.4 ], [ %196, %.preheader600.5 ], [ %196, %.preheader600.5 ], [ %196, %.preheader600.6 ], [ %196, %.preheader600.6 ], [ %196, %.preheader600.7 ], [ %196, %.preheader600.7 ], [ %196, %205 ]
  %212 = phi i8 [ 32, %.preheader600.1 ], [ 32, %.preheader600.1 ], [ 32, %.preheader600.2 ], [ 32, %.preheader600.2 ], [ %194, %.preheader600.3 ], [ %194, %.preheader600.3 ], [ %194, %.preheader600.4 ], [ %194, %.preheader600.4 ], [ %194, %.preheader600.5 ], [ %194, %.preheader600.5 ], [ %194, %.preheader600.6 ], [ %194, %.preheader600.6 ], [ %194, %.preheader600.7 ], [ %194, %.preheader600.7 ], [ %194, %205 ]
  %213 = phi i8 [ 32, %.preheader600.1 ], [ 32, %.preheader600.1 ], [ %192, %.preheader600.2 ], [ %192, %.preheader600.2 ], [ %192, %.preheader600.3 ], [ %192, %.preheader600.3 ], [ %192, %.preheader600.4 ], [ %192, %.preheader600.4 ], [ %192, %.preheader600.5 ], [ %192, %.preheader600.5 ], [ %192, %.preheader600.6 ], [ %192, %.preheader600.6 ], [ %192, %.preheader600.7 ], [ %192, %.preheader600.7 ], [ %192, %205 ]
  %214 = phi i8 [ %192, %.preheader600.1 ], [ %192, %.preheader600.1 ], [ %194, %.preheader600.2 ], [ %194, %.preheader600.2 ], [ %196, %.preheader600.3 ], [ %196, %.preheader600.3 ], [ %198, %.preheader600.4 ], [ %198, %.preheader600.4 ], [ %200, %.preheader600.5 ], [ %200, %.preheader600.5 ], [ %202, %.preheader600.6 ], [ %202, %.preheader600.6 ], [ %204, %.preheader600.7 ], [ %204, %.preheader600.7 ], [ %.pre737, %205 ]
  %.8483.lcssa = phi i64 [ 1, %.preheader600.1 ], [ 1, %.preheader600.1 ], [ 2, %.preheader600.2 ], [ 2, %.preheader600.2 ], [ 3, %.preheader600.3 ], [ 3, %.preheader600.3 ], [ 4, %.preheader600.4 ], [ 4, %.preheader600.4 ], [ 5, %.preheader600.5 ], [ 5, %.preheader600.5 ], [ 6, %.preheader600.6 ], [ 6, %.preheader600.6 ], [ 7, %.preheader600.7 ], [ 7, %.preheader600.7 ], [ 8, %205 ]
  %.not557 = icmp eq i8 %214, 0
  br i1 %.not557, label %.loopexit599, label %.preheader598

.preheader598:                                    ; preds = %.loopexit602, %206
  %.8483.lcssa763 = phi i64 [ %.8483.lcssa, %206 ], [ 0, %.loopexit602 ]
  %215 = phi i8 [ %182, %206 ], [ 32, %.loopexit602 ]
  %216 = phi i8 [ %213, %206 ], [ 32, %.loopexit602 ]
  %217 = phi i8 [ %212, %206 ], [ 32, %.loopexit602 ]
  %218 = phi i8 [ %211, %206 ], [ 32, %.loopexit602 ]
  %219 = phi i8 [ %210, %206 ], [ 32, %.loopexit602 ]
  %220 = phi i8 [ %209, %206 ], [ 32, %.loopexit602 ]
  %221 = phi i8 [ %208, %206 ], [ 32, %.loopexit602 ]
  %222 = phi i8 [ %207, %206 ], [ 32, %.loopexit602 ]
  %indvars.iv.next695 = add nuw nsw i64 %.8483.lcssa763, 1
  %223 = getelementptr inbounds [13 x i8], ptr %181, i64 0, i64 %indvars.iv.next695
  %224 = load i8, ptr %223, align 1, !tbaa !17
  %225 = icmp eq i8 %224, 0
  br i1 %225, label %.loopexit599, label %226

226:                                              ; preds = %.preheader598
  %indvars.iv.next695.1 = add nuw nsw i64 %.8483.lcssa763, 2
  %227 = getelementptr inbounds [13 x i8], ptr %181, i64 0, i64 %indvars.iv.next695.1
  %228 = load i8, ptr %227, align 1, !tbaa !17
  %229 = icmp eq i8 %228, 0
  br i1 %229, label %.loopexit599, label %230

230:                                              ; preds = %226
  %indvars.iv.next695.2 = add nuw nsw i64 %.8483.lcssa763, 3
  %231 = getelementptr inbounds [13 x i8], ptr %181, i64 0, i64 %indvars.iv.next695.2
  %232 = load i8, ptr %231, align 1, !tbaa !17
  %233 = icmp eq i8 %232, 0
  %spec.select771 = select i1 %233, i8 32, i8 %232
  br label %.loopexit599

.loopexit599:                                     ; preds = %230, %.preheader598, %226, %206
  %234 = phi i8 [ %182, %206 ], [ %215, %226 ], [ %215, %.preheader598 ], [ %215, %230 ]
  %235 = phi i8 [ %213, %206 ], [ %216, %226 ], [ %216, %.preheader598 ], [ %216, %230 ]
  %236 = phi i8 [ %212, %206 ], [ %217, %226 ], [ %217, %.preheader598 ], [ %217, %230 ]
  %237 = phi i8 [ %211, %206 ], [ %218, %226 ], [ %218, %.preheader598 ], [ %218, %230 ]
  %238 = phi i8 [ %210, %206 ], [ %219, %226 ], [ %219, %.preheader598 ], [ %219, %230 ]
  %239 = phi i8 [ %209, %206 ], [ %220, %226 ], [ %220, %.preheader598 ], [ %220, %230 ]
  %240 = phi i8 [ %208, %206 ], [ %221, %226 ], [ %221, %.preheader598 ], [ %221, %230 ]
  %241 = phi i8 [ %207, %206 ], [ %222, %226 ], [ %222, %.preheader598 ], [ %222, %230 ]
  %242 = phi i8 [ 32, %206 ], [ 32, %226 ], [ 32, %.preheader598 ], [ %spec.select771, %230 ]
  %243 = phi i8 [ 32, %206 ], [ 32, %226 ], [ 32, %.preheader598 ], [ %228, %230 ]
  %244 = phi i8 [ 32, %206 ], [ %224, %226 ], [ 32, %.preheader598 ], [ %224, %230 ]
  %245 = add i8 %234, -97
  %or.cond13 = icmp ult i8 %245, 26
  %246 = add nsw i8 %234, -32
  %spec.select576 = select i1 %or.cond13, i8 %246, i8 %234
  %247 = add i8 %235, -97
  %or.cond13.1 = icmp ult i8 %247, 26
  %248 = add nsw i8 %235, -32
  %spec.select576.1 = select i1 %or.cond13.1, i8 %248, i8 %235
  store i8 %spec.select576.1, ptr %153, align 1, !tbaa !17
  %249 = add i8 %236, -97
  %or.cond13.2 = icmp ult i8 %249, 26
  %250 = add nsw i8 %236, -32
  %spec.select576.2 = select i1 %or.cond13.2, i8 %250, i8 %236
  store i8 %spec.select576.2, ptr %155, align 2, !tbaa !17
  %251 = add i8 %237, -97
  %or.cond13.3 = icmp ult i8 %251, 26
  %252 = add nsw i8 %237, -32
  %spec.select576.3 = select i1 %or.cond13.3, i8 %252, i8 %237
  store i8 %spec.select576.3, ptr %156, align 1, !tbaa !17
  %253 = add i8 %238, -97
  %or.cond13.4 = icmp ult i8 %253, 26
  %254 = add nsw i8 %238, -32
  %spec.select576.4 = select i1 %or.cond13.4, i8 %254, i8 %238
  store i8 %spec.select576.4, ptr %158, align 4, !tbaa !17
  %255 = add i8 %239, -97
  %or.cond13.5 = icmp ult i8 %255, 26
  %256 = add nsw i8 %239, -32
  %spec.select576.5 = select i1 %or.cond13.5, i8 %256, i8 %239
  store i8 %spec.select576.5, ptr %159, align 1, !tbaa !17
  %257 = add i8 %240, -97
  %or.cond13.6 = icmp ult i8 %257, 26
  %258 = add nsw i8 %240, -32
  %spec.select576.6 = select i1 %or.cond13.6, i8 %258, i8 %240
  store i8 %spec.select576.6, ptr %160, align 2, !tbaa !17
  %259 = add i8 %241, -97
  %or.cond13.7 = icmp ult i8 %259, 26
  %260 = add nsw i8 %241, -32
  %spec.select576.7 = select i1 %or.cond13.7, i8 %260, i8 %241
  store i8 %spec.select576.7, ptr %161, align 1, !tbaa !17
  %261 = add i8 %244, -97
  %or.cond13.8 = icmp ult i8 %261, 26
  %262 = add nsw i8 %244, -32
  %spec.select576.8 = select i1 %or.cond13.8, i8 %262, i8 %244
  store i8 %spec.select576.8, ptr %113, align 8, !tbaa !17
  %263 = add i8 %243, -97
  %or.cond13.9 = icmp ult i8 %263, 26
  %264 = add nsw i8 %243, -32
  %spec.select576.9 = select i1 %or.cond13.9, i8 %264, i8 %243
  store i8 %spec.select576.9, ptr %173, align 1, !tbaa !17
  %265 = add i8 %242, -97
  %or.cond13.10 = icmp ult i8 %265, 26
  %266 = add nsw i8 %242, -32
  %spec.select576.10 = select i1 %or.cond13.10, i8 %266, i8 %242
  store i8 %spec.select576.10, ptr %177, align 2, !tbaa !17
  %267 = icmp eq i8 %spec.select576, -27
  %spec.store.select577 = select i1 %267, i8 -113, i8 %spec.select576
  store i8 %spec.store.select577, ptr %3, align 8
  br label %268

268:                                              ; preds = %.loopexit602, %.loopexit599
  %269 = phi i8 [ %spec.select576.10, %.loopexit599 ], [ %spec.select575.10, %.loopexit602 ]
  %270 = phi i8 [ %spec.select576.9, %.loopexit599 ], [ %spec.select575.9, %.loopexit602 ]
  %271 = phi i8 [ %spec.select576.8, %.loopexit599 ], [ %spec.select575.8, %.loopexit602 ]
  %272 = phi i8 [ %spec.select576.7, %.loopexit599 ], [ %190, %.loopexit602 ]
  %273 = phi i8 [ %spec.select576.6, %.loopexit599 ], [ %189, %.loopexit602 ]
  %274 = phi i8 [ %spec.select576.5, %.loopexit599 ], [ %188, %.loopexit602 ]
  %275 = phi i8 [ %spec.select576.4, %.loopexit599 ], [ %187, %.loopexit602 ]
  %276 = phi i8 [ %spec.select576.3, %.loopexit599 ], [ %186, %.loopexit602 ]
  %277 = phi i8 [ %spec.select576.2, %.loopexit599 ], [ %185, %.loopexit602 ]
  %278 = phi i8 [ %spec.select576.1, %.loopexit599 ], [ %184, %.loopexit602 ]
  %279 = phi i8 [ %spec.store.select577, %.loopexit599 ], [ %183, %.loopexit602 ]
  %280 = tail call i8 @llvm.fshl.i8(i8 %279, i8 %279, i8 7)
  %281 = add i8 %278, %280
  %282 = tail call i8 @llvm.fshl.i8(i8 %281, i8 %281, i8 7)
  %283 = add i8 %277, %282
  %284 = tail call i8 @llvm.fshl.i8(i8 %283, i8 %283, i8 7)
  %285 = add i8 %276, %284
  %286 = tail call i8 @llvm.fshl.i8(i8 %285, i8 %285, i8 7)
  %287 = add i8 %275, %286
  %288 = tail call i8 @llvm.fshl.i8(i8 %287, i8 %287, i8 7)
  %289 = add i8 %274, %288
  %290 = tail call i8 @llvm.fshl.i8(i8 %289, i8 %289, i8 7)
  %291 = add i8 %273, %290
  %292 = tail call i8 @llvm.fshl.i8(i8 %291, i8 %291, i8 7)
  %293 = add i8 %272, %292
  %294 = tail call i8 @llvm.fshl.i8(i8 %293, i8 %293, i8 7)
  %295 = add i8 %271, %294
  %296 = tail call i8 @llvm.fshl.i8(i8 %295, i8 %295, i8 7)
  %297 = add i8 %270, %296
  %298 = tail call i8 @llvm.fshl.i8(i8 %297, i8 %297, i8 7)
  %299 = add i8 %269, %298
  %300 = trunc i32 %.0460 to i8
  %301 = or i8 %300, 64
  store i8 %301, ptr %43, align 1, !tbaa !17
  %.not558638 = icmp eq i32 %.0460, 0
  br i1 %.not558638, label %._crit_edge648, label %.lr.ph647

.lr.ph647:                                        ; preds = %268
  %302 = getelementptr inbounds i8, ptr %0, i64 80
  %303 = getelementptr inbounds i8, ptr %0, i64 128
  %304 = getelementptr inbounds i8, ptr %0, i64 12120
  br label %305

305:                                              ; preds = %.lr.ph647, %385
  %.1645 = phi i64 [ %.0, %.lr.ph647 ], [ %.3, %385 ]
  %.0421644 = phi i64 [ %19, %.lr.ph647 ], [ %.1422, %385 ]
  %.1426643 = phi i64 [ %.0425, %.lr.ph647 ], [ %.3428, %385 ]
  %.0432642 = phi i64 [ %21, %.lr.ph647 ], [ %.2434, %385 ]
  %.1461641 = phi i32 [ %.0460, %.lr.ph647 ], [ %386, %385 ]
  %.0489640 = phi ptr [ %40, %.lr.ph647 ], [ %.1490, %385 ]
  %.0495639 = phi ptr [ %43, %.lr.ph647 ], [ %.1496, %385 ]
  %306 = load i8, ptr %3, align 8, !tbaa !17
  %307 = icmp eq i8 %306, -27
  br i1 %307, label %308, label %309

308:                                              ; preds = %305
  store i8 -27, ptr %.0495639, align 1, !tbaa !17
  br label %309

309:                                              ; preds = %308, %305
  %310 = getelementptr inbounds i8, ptr %.0495639, i64 11
  store i8 15, ptr %310, align 1, !tbaa !17
  %311 = getelementptr inbounds i8, ptr %.0495639, i64 12
  store i8 0, ptr %311, align 1, !tbaa !17
  %312 = getelementptr inbounds i8, ptr %.0495639, i64 13
  store i8 %299, ptr %312, align 1, !tbaa !17
  %313 = getelementptr inbounds i8, ptr %.0495639, i64 26
  store i8 0, ptr %313, align 1, !tbaa !17
  %314 = getelementptr inbounds i8, ptr %.0495639, i64 27
  store i8 0, ptr %314, align 1, !tbaa !17
  %315 = mul i32 %.1461641, 13
  %316 = add i32 %315, -13
  br label %317

317:                                              ; preds = %309, %342
  %.0443637 = phi i8 [ 0, %309 ], [ %.2445, %342 ]
  %.4471636 = phi i32 [ %316, %309 ], [ %.5472, %342 ]
  %.11486635 = phi i32 [ 1, %309 ], [ %343, %342 ]
  switch i32 %.11486635, label %319 [
    i32 26, label %342
    i32 11, label %342
    i32 13, label %318
  ]

318:                                              ; preds = %317
  br label %342

319:                                              ; preds = %317
  %.not570 = icmp eq i8 %.0443637, 0
  br i1 %.not570, label %326, label %320

320:                                              ; preds = %319
  %321 = zext nneg i32 %.11486635 to i64
  %322 = getelementptr inbounds i8, ptr %.0495639, i64 %321
  store i8 -1, ptr %322, align 1, !tbaa !17
  %323 = add nuw nsw i32 %.11486635, 1
  %324 = zext nneg i32 %323 to i64
  %325 = getelementptr inbounds i8, ptr %.0495639, i64 %324
  store i8 -1, ptr %325, align 1, !tbaa !17
  %.pre738 = zext i32 %.4471636 to i64
  br label %336

326:                                              ; preds = %319
  %327 = load ptr, ptr %1, align 8, !tbaa !16
  %328 = zext i32 %.4471636 to i64
  %329 = getelementptr inbounds i8, ptr %327, i64 %328
  %330 = load i8, ptr %329, align 1, !tbaa !17
  %331 = zext nneg i32 %.11486635 to i64
  %332 = getelementptr inbounds i8, ptr %.0495639, i64 %331
  store i8 %330, ptr %332, align 1, !tbaa !17
  %333 = add nuw nsw i32 %.11486635, 1
  %334 = zext nneg i32 %333 to i64
  %335 = getelementptr inbounds i8, ptr %.0495639, i64 %334
  store i8 0, ptr %335, align 1, !tbaa !17
  br label %336

336:                                              ; preds = %326, %320
  %.pre-phi739 = phi i64 [ %328, %326 ], [ %.pre738, %320 ]
  %337 = load ptr, ptr %1, align 8, !tbaa !16
  %338 = getelementptr inbounds i8, ptr %337, i64 %.pre-phi739
  %339 = load i8, ptr %338, align 1, !tbaa !17
  %340 = icmp eq i8 %339, 0
  %spec.select578 = select i1 %340, i8 -1, i8 %.0443637
  %341 = add i32 %.4471636, 1
  br label %342

342:                                              ; preds = %317, %317, %336, %318
  %.12 = phi i32 [ %.11486635, %317 ], [ 12, %318 ], [ %.11486635, %336 ], [ %.11486635, %317 ]
  %.5472 = phi i32 [ %.4471636, %317 ], [ %.4471636, %318 ], [ %341, %336 ], [ %.4471636, %317 ]
  %.2445 = phi i8 [ %.0443637, %317 ], [ %.0443637, %318 ], [ %spec.select578, %336 ], [ %.0443637, %317 ]
  %343 = add nuw nsw i32 %.12, 2
  %344 = icmp ult i32 %.12, 30
  br i1 %344, label %317, label %345, !llvm.loop !28

345:                                              ; preds = %342
  %346 = getelementptr inbounds i8, ptr %.0495639, i64 32
  %347 = add i64 %.0421644, 32
  %348 = load i32, ptr %302, align 8, !tbaa !29
  %349 = zext i32 %348 to i64
  %.not563 = icmp ult i64 %347, %349
  br i1 %.not563, label %385, label %350

350:                                              ; preds = %345
  %351 = call i32 @_fx_utility_logical_sector_write(ptr noundef nonnull %0, i64 noundef %.0432642, ptr noundef %.0489640, i64 noundef 1, i8 noundef zeroext 3) #5
  %.not564 = icmp eq i32 %351, 0
  br i1 %.not564, label %352, label %.loopexit589

352:                                              ; preds = %350
  %353 = load i32, ptr %22, align 4, !tbaa !20
  %354 = zext i32 %353 to i64
  %.not565 = icmp ult i64 %.0432642, %354
  br i1 %.not565, label %378, label %355

355:                                              ; preds = %352
  %356 = load i32, ptr %303, align 8, !tbaa !21
  %357 = add i32 %356, -1
  %358 = zext i32 %357 to i64
  %359 = icmp ult i64 %.1426643, %358
  br i1 %359, label %360, label %363

360:                                              ; preds = %355
  %361 = add i64 %.0432642, 1
  %362 = add nuw nsw i64 %.1426643, 1
  br label %380

363:                                              ; preds = %355
  %364 = call i32 @_fx_utility_FAT_entry_read(ptr noundef nonnull %0, i64 noundef %.1645, ptr noundef nonnull %4) #5
  %.not567 = icmp eq i32 %364, 0
  br i1 %.not567, label %365, label %.loopexit589

365:                                              ; preds = %363
  %366 = load i64, ptr %4, align 8, !tbaa !30
  %367 = icmp ult i64 %366, 2
  br i1 %367, label %.loopexit589, label %368

368:                                              ; preds = %365
  %369 = load i64, ptr %304, align 8, !tbaa !31
  %.not568 = icmp ult i64 %366, %369
  br i1 %.not568, label %370, label %.loopexit589

370:                                              ; preds = %368
  %371 = load i32, ptr %22, align 4, !tbaa !20
  %372 = zext i32 %371 to i64
  %373 = add i64 %366, -2
  %374 = load i32, ptr %303, align 8, !tbaa !21
  %375 = zext i32 %374 to i64
  %376 = mul i64 %373, %375
  %377 = add i64 %376, %372
  br label %380

378:                                              ; preds = %352
  %379 = add nuw nsw i64 %.0432642, 1
  %.not566 = icmp ult i64 %379, %354
  br i1 %.not566, label %380, label %.loopexit589

380:                                              ; preds = %378, %360, %370
  %.1433 = phi i64 [ %361, %360 ], [ %377, %370 ], [ %379, %378 ]
  %.2427 = phi i64 [ %362, %360 ], [ 0, %370 ], [ %.1426643, %378 ]
  %.2 = phi i64 [ %.1645, %360 ], [ %366, %370 ], [ %.1645, %378 ]
  %381 = load ptr, ptr %36, align 8, !tbaa !22
  %382 = call i32 @_fx_utility_logical_sector_read(ptr noundef nonnull %0, i64 noundef %.1433, ptr noundef %381, i64 noundef 1, i8 noundef zeroext 3) #5
  %.not569 = icmp eq i32 %382, 0
  br i1 %.not569, label %383, label %.loopexit589

383:                                              ; preds = %380
  %384 = load ptr, ptr %36, align 8, !tbaa !22
  br label %385

385:                                              ; preds = %383, %345
  %.1496 = phi ptr [ %384, %383 ], [ %346, %345 ]
  %.1490 = phi ptr [ %384, %383 ], [ %.0489640, %345 ]
  %.2434 = phi i64 [ %.1433, %383 ], [ %.0432642, %345 ]
  %.3428 = phi i64 [ %.2427, %383 ], [ %.1426643, %345 ]
  %.1422 = phi i64 [ 0, %383 ], [ %347, %345 ]
  %.3 = phi i64 [ %.2, %383 ], [ %.1645, %345 ]
  %386 = add nsw i32 %.1461641, -1
  %387 = trunc i32 %386 to i8
  store i8 %387, ptr %.1496, align 1, !tbaa !17
  %.not558 = icmp eq i32 %386, 0
  br i1 %.not558, label %._crit_edge648, label %305, !llvm.loop !32

._crit_edge648:                                   ; preds = %385, %268
  %.0495.lcssa = phi ptr [ %43, %268 ], [ %.1496, %385 ]
  %.0489.lcssa = phi ptr [ %40, %268 ], [ %.1490, %385 ]
  %.0432.lcssa = phi i64 [ %21, %268 ], [ %.2434, %385 ]
  %388 = load i8, ptr %181, align 8, !tbaa !17
  %389 = icmp eq i8 %388, 0
  br i1 %389, label %.preheader590.preheader, label %.preheader595.preheader

.preheader595.preheader:                          ; preds = %._crit_edge648
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(11) %.0495.lcssa, i8 32, i64 11, i1 false), !tbaa !17
  %390 = load i8, ptr %181, align 1, !tbaa !17
  switch i8 %390, label %.preheader594.1 [
    i8 46, label %434
    i8 0, label %434
  ]

.preheader590.preheader:                          ; preds = %._crit_edge648
  %391 = load i8, ptr %3, align 8, !tbaa !17
  %392 = getelementptr inbounds i8, ptr %.0495.lcssa, i64 1
  store i8 %391, ptr %.0495.lcssa, align 1, !tbaa !17
  %393 = load i8, ptr %153, align 1, !tbaa !17
  %394 = getelementptr inbounds i8, ptr %.0495.lcssa, i64 2
  store i8 %393, ptr %392, align 1, !tbaa !17
  %395 = load i8, ptr %155, align 2, !tbaa !17
  %396 = getelementptr inbounds i8, ptr %.0495.lcssa, i64 3
  store i8 %395, ptr %394, align 1, !tbaa !17
  %397 = load i8, ptr %156, align 1, !tbaa !17
  %398 = getelementptr inbounds i8, ptr %.0495.lcssa, i64 4
  store i8 %397, ptr %396, align 1, !tbaa !17
  %399 = load i8, ptr %158, align 4, !tbaa !17
  %400 = getelementptr inbounds i8, ptr %.0495.lcssa, i64 5
  store i8 %399, ptr %398, align 1, !tbaa !17
  %401 = load i8, ptr %159, align 1, !tbaa !17
  %402 = getelementptr inbounds i8, ptr %.0495.lcssa, i64 6
  store i8 %401, ptr %400, align 1, !tbaa !17
  %403 = load i8, ptr %160, align 2, !tbaa !17
  %404 = getelementptr inbounds i8, ptr %.0495.lcssa, i64 7
  store i8 %403, ptr %402, align 1, !tbaa !17
  %405 = load i8, ptr %161, align 1, !tbaa !17
  %406 = getelementptr inbounds i8, ptr %.0495.lcssa, i64 8
  store i8 %405, ptr %404, align 1, !tbaa !17
  %407 = load i8, ptr %113, align 8, !tbaa !17
  %408 = getelementptr inbounds i8, ptr %.0495.lcssa, i64 9
  store i8 %407, ptr %406, align 1, !tbaa !17
  %409 = load i8, ptr %173, align 1, !tbaa !17
  %410 = getelementptr inbounds i8, ptr %.0495.lcssa, i64 10
  store i8 %409, ptr %408, align 1, !tbaa !17
  %411 = load i8, ptr %177, align 2, !tbaa !17
  store i8 %411, ptr %410, align 1, !tbaa !17
  br label %.loopexit591

.preheader594.1:                                  ; preds = %.preheader595.preheader
  store i8 %390, ptr %.0495.lcssa, align 1, !tbaa !17
  %412 = getelementptr inbounds i8, ptr %1, i64 9
  %413 = load i8, ptr %412, align 1, !tbaa !17
  switch i8 %413, label %.preheader594.2 [
    i8 46, label %434
    i8 0, label %434
  ]

.preheader594.2:                                  ; preds = %.preheader594.1
  %414 = getelementptr inbounds i8, ptr %.0495.lcssa, i64 1
  store i8 %413, ptr %414, align 1, !tbaa !17
  %415 = getelementptr inbounds i8, ptr %1, i64 10
  %416 = load i8, ptr %415, align 1, !tbaa !17
  switch i8 %416, label %.preheader594.3 [
    i8 46, label %434
    i8 0, label %434
  ]

.preheader594.3:                                  ; preds = %.preheader594.2
  %417 = getelementptr inbounds i8, ptr %.0495.lcssa, i64 2
  store i8 %416, ptr %417, align 1, !tbaa !17
  %418 = getelementptr inbounds i8, ptr %1, i64 11
  %419 = load i8, ptr %418, align 1, !tbaa !17
  switch i8 %419, label %.preheader594.4 [
    i8 46, label %434
    i8 0, label %434
  ]

.preheader594.4:                                  ; preds = %.preheader594.3
  %420 = getelementptr inbounds i8, ptr %.0495.lcssa, i64 3
  store i8 %419, ptr %420, align 1, !tbaa !17
  %421 = getelementptr inbounds i8, ptr %1, i64 12
  %422 = load i8, ptr %421, align 1, !tbaa !17
  switch i8 %422, label %.preheader594.5 [
    i8 46, label %434
    i8 0, label %434
  ]

.preheader594.5:                                  ; preds = %.preheader594.4
  %423 = getelementptr inbounds i8, ptr %.0495.lcssa, i64 4
  store i8 %422, ptr %423, align 1, !tbaa !17
  %424 = getelementptr inbounds i8, ptr %1, i64 13
  %425 = load i8, ptr %424, align 1, !tbaa !17
  switch i8 %425, label %.preheader594.6 [
    i8 46, label %434
    i8 0, label %434
  ]

.preheader594.6:                                  ; preds = %.preheader594.5
  %426 = getelementptr inbounds i8, ptr %.0495.lcssa, i64 5
  store i8 %425, ptr %426, align 1, !tbaa !17
  %427 = getelementptr inbounds i8, ptr %1, i64 14
  %428 = load i8, ptr %427, align 1, !tbaa !17
  switch i8 %428, label %.preheader594.7 [
    i8 46, label %434
    i8 0, label %434
  ]

.preheader594.7:                                  ; preds = %.preheader594.6
  %429 = getelementptr inbounds i8, ptr %.0495.lcssa, i64 6
  store i8 %428, ptr %429, align 1, !tbaa !17
  %430 = getelementptr inbounds i8, ptr %1, i64 15
  %431 = load i8, ptr %430, align 1, !tbaa !17
  switch i8 %431, label %432 [
    i8 46, label %434
    i8 0, label %434
  ]

432:                                              ; preds = %.preheader594.7
  %433 = getelementptr inbounds i8, ptr %.0495.lcssa, i64 7
  store i8 %431, ptr %433, align 1, !tbaa !17
  %.phi.trans.insert740 = getelementptr inbounds i8, ptr %1, i64 16
  %.pre741 = load i8, ptr %.phi.trans.insert740, align 1, !tbaa !17
  br label %434

434:                                              ; preds = %432, %.preheader594.7, %.preheader594.7, %.preheader594.6, %.preheader594.6, %.preheader594.5, %.preheader594.5, %.preheader594.4, %.preheader594.4, %.preheader594.3, %.preheader594.3, %.preheader594.2, %.preheader594.2, %.preheader594.1, %.preheader594.1, %.preheader595.preheader, %.preheader595.preheader
  %435 = phi i8 [ %390, %.preheader595.preheader ], [ %390, %.preheader595.preheader ], [ %413, %.preheader594.1 ], [ %413, %.preheader594.1 ], [ %416, %.preheader594.2 ], [ %416, %.preheader594.2 ], [ %419, %.preheader594.3 ], [ %419, %.preheader594.3 ], [ %422, %.preheader594.4 ], [ %422, %.preheader594.4 ], [ %425, %.preheader594.5 ], [ %425, %.preheader594.5 ], [ %428, %.preheader594.6 ], [ %428, %.preheader594.6 ], [ %431, %.preheader594.7 ], [ %431, %.preheader594.7 ], [ %.pre741, %432 ]
  %.15.lcssa = phi i64 [ 0, %.preheader595.preheader ], [ 0, %.preheader595.preheader ], [ 1, %.preheader594.1 ], [ 1, %.preheader594.1 ], [ 2, %.preheader594.2 ], [ 2, %.preheader594.2 ], [ 3, %.preheader594.3 ], [ 3, %.preheader594.3 ], [ 4, %.preheader594.4 ], [ 4, %.preheader594.4 ], [ 5, %.preheader594.5 ], [ 5, %.preheader594.5 ], [ 6, %.preheader594.6 ], [ 6, %.preheader594.6 ], [ 7, %.preheader594.7 ], [ 7, %.preheader594.7 ], [ 8, %432 ]
  %.not559 = icmp eq i8 %435, 0
  br i1 %.not559, label %.loopexit591, label %.preheader592

.preheader592:                                    ; preds = %434
  %indvars.iv.next710 = add nuw nsw i64 %.15.lcssa, 1
  %436 = getelementptr inbounds [13 x i8], ptr %181, i64 0, i64 %indvars.iv.next710
  %437 = load i8, ptr %436, align 1, !tbaa !17
  %438 = icmp eq i8 %437, 0
  br i1 %438, label %.loopexit591, label %439

439:                                              ; preds = %.preheader592
  %440 = getelementptr inbounds i8, ptr %.0495.lcssa, i64 8
  store i8 %437, ptr %440, align 1, !tbaa !17
  %indvars.iv.next710.1 = add nuw nsw i64 %.15.lcssa, 2
  %441 = getelementptr inbounds [13 x i8], ptr %181, i64 0, i64 %indvars.iv.next710.1
  %442 = load i8, ptr %441, align 1, !tbaa !17
  %443 = icmp eq i8 %442, 0
  br i1 %443, label %.loopexit591, label %444

444:                                              ; preds = %439
  %445 = getelementptr inbounds i8, ptr %.0495.lcssa, i64 9
  store i8 %442, ptr %445, align 1, !tbaa !17
  %indvars.iv.next710.2 = add nuw nsw i64 %.15.lcssa, 3
  %446 = getelementptr inbounds [13 x i8], ptr %181, i64 0, i64 %indvars.iv.next710.2
  %447 = load i8, ptr %446, align 1, !tbaa !17
  %448 = icmp eq i8 %447, 0
  br i1 %448, label %.loopexit591, label %449

449:                                              ; preds = %444
  %450 = getelementptr inbounds i8, ptr %.0495.lcssa, i64 10
  store i8 %447, ptr %450, align 1, !tbaa !17
  br label %.loopexit591

451:                                              ; preds = %39
  %452 = getelementptr inbounds i8, ptr %1, i64 28
  %453 = load i32, ptr %452, align 4, !tbaa !33
  %.not538 = icmp eq i32 %453, 0
  br i1 %.not538, label %.loopexit588, label %454

454:                                              ; preds = %451
  %455 = and i32 %453, 191
  %456 = or disjoint i32 %455, 64
  %457 = load i8, ptr %43, align 1, !tbaa !17
  %458 = zext i8 %457 to i32
  %459 = icmp eq i32 %456, %458
  br i1 %459, label %.lr.ph666, label %.loopexit588

.lr.ph666:                                        ; preds = %454
  %460 = getelementptr inbounds i8, ptr %0, i64 80
  %461 = getelementptr inbounds i8, ptr %0, i64 128
  %462 = getelementptr inbounds i8, ptr %0, i64 12120
  br label %463

463:                                              ; preds = %.lr.ph666, %508
  %.4665 = phi i64 [ %.0, %.lr.ph666 ], [ %.6, %508 ]
  %.2423664 = phi i64 [ %19, %.lr.ph666 ], [ %.3424, %508 ]
  %.4429663 = phi i64 [ %.0425, %.lr.ph666 ], [ %.6431, %508 ]
  %.3435662 = phi i64 [ %21, %.lr.ph666 ], [ %.5437, %508 ]
  %.8661 = phi i32 [ 0, %.lr.ph666 ], [ %509, %508 ]
  %.2491660 = phi ptr [ %40, %.lr.ph666 ], [ %.3492, %508 ]
  %.3498659 = phi ptr [ %43, %.lr.ph666 ], [ %.4499, %508 ]
  %464 = load ptr, ptr %1, align 8, !tbaa !16
  %465 = load i8, ptr %464, align 1, !tbaa !17
  %466 = icmp eq i8 %465, -27
  br i1 %466, label %467, label %468

467:                                              ; preds = %463
  store i8 -27, ptr %.3498659, align 1, !tbaa !17
  br label %468

468:                                              ; preds = %467, %463
  %469 = getelementptr inbounds i8, ptr %.3498659, i64 32
  %470 = add i64 %.2423664, 32
  %471 = load i32, ptr %460, align 8, !tbaa !29
  %472 = zext i32 %471 to i64
  %.not541 = icmp ult i64 %470, %472
  br i1 %.not541, label %508, label %473

473:                                              ; preds = %468
  %474 = call i32 @_fx_utility_logical_sector_write(ptr noundef nonnull %0, i64 noundef %.3435662, ptr noundef %.2491660, i64 noundef 1, i8 noundef zeroext 3) #5
  %.not542 = icmp eq i32 %474, 0
  br i1 %.not542, label %475, label %.loopexit589

475:                                              ; preds = %473
  %476 = load i32, ptr %22, align 4, !tbaa !20
  %477 = zext i32 %476 to i64
  %.not543 = icmp ult i64 %.3435662, %477
  br i1 %.not543, label %501, label %478

478:                                              ; preds = %475
  %479 = load i32, ptr %461, align 8, !tbaa !21
  %480 = add i32 %479, -1
  %481 = zext i32 %480 to i64
  %482 = icmp ult i64 %.4429663, %481
  br i1 %482, label %483, label %486

483:                                              ; preds = %478
  %484 = add i64 %.3435662, 1
  %485 = add nuw nsw i64 %.4429663, 1
  br label %503

486:                                              ; preds = %478
  %487 = call i32 @_fx_utility_FAT_entry_read(ptr noundef nonnull %0, i64 noundef %.4665, ptr noundef nonnull %4) #5
  %.not545 = icmp eq i32 %487, 0
  br i1 %.not545, label %488, label %.loopexit589

488:                                              ; preds = %486
  %489 = load i64, ptr %4, align 8, !tbaa !30
  %490 = icmp ult i64 %489, 2
  br i1 %490, label %.loopexit589, label %491

491:                                              ; preds = %488
  %492 = load i64, ptr %462, align 8, !tbaa !31
  %.not546 = icmp ult i64 %489, %492
  br i1 %.not546, label %493, label %.loopexit589

493:                                              ; preds = %491
  %494 = load i32, ptr %22, align 4, !tbaa !20
  %495 = zext i32 %494 to i64
  %496 = add i64 %489, -2
  %497 = load i32, ptr %461, align 8, !tbaa !21
  %498 = zext i32 %497 to i64
  %499 = mul i64 %496, %498
  %500 = add i64 %499, %495
  br label %503

501:                                              ; preds = %475
  %502 = add nuw nsw i64 %.3435662, 1
  %.not544 = icmp ult i64 %502, %477
  br i1 %.not544, label %503, label %.loopexit589

503:                                              ; preds = %501, %483, %493
  %.4436 = phi i64 [ %484, %483 ], [ %500, %493 ], [ %502, %501 ]
  %.5430 = phi i64 [ %485, %483 ], [ 0, %493 ], [ %.4429663, %501 ]
  %.5 = phi i64 [ %.4665, %483 ], [ %489, %493 ], [ %.4665, %501 ]
  %504 = load ptr, ptr %36, align 8, !tbaa !22
  %505 = call i32 @_fx_utility_logical_sector_read(ptr noundef nonnull %0, i64 noundef %.4436, ptr noundef %504, i64 noundef 1, i8 noundef zeroext 3) #5
  %.not547 = icmp eq i32 %505, 0
  br i1 %.not547, label %506, label %.loopexit589

506:                                              ; preds = %503
  %507 = load ptr, ptr %36, align 8, !tbaa !22
  br label %508

508:                                              ; preds = %468, %506
  %.4499 = phi ptr [ %507, %506 ], [ %469, %468 ]
  %.3492 = phi ptr [ %507, %506 ], [ %.2491660, %468 ]
  %.5437 = phi i64 [ %.4436, %506 ], [ %.3435662, %468 ]
  %.6431 = phi i64 [ %.5430, %506 ], [ %.4429663, %468 ]
  %.3424 = phi i64 [ 0, %506 ], [ %470, %468 ]
  %.6 = phi i64 [ %.5, %506 ], [ %.4665, %468 ]
  %509 = add nuw i32 %.8661, 1
  %510 = load i32, ptr %452, align 4, !tbaa !33
  %511 = icmp ult i32 %509, %510
  br i1 %511, label %463, label %.loopexit588, !llvm.loop !34

.loopexit588:                                     ; preds = %508, %454, %451
  %.5500 = phi ptr [ %43, %454 ], [ %43, %451 ], [ %.4499, %508 ]
  %.4493 = phi ptr [ %40, %454 ], [ %40, %451 ], [ %.3492, %508 ]
  %.6438 = phi i64 [ %21, %454 ], [ %21, %451 ], [ %.5437, %508 ]
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(11) %.5500, i8 32, i64 11, i1 false), !tbaa !17
  br label %.preheader585

.preheader585:                                    ; preds = %.loopexit588, %517
  %.17 = phi i32 [ %519, %517 ], [ 0, %.loopexit588 ]
  %512 = load ptr, ptr %1, align 8, !tbaa !16
  %513 = zext i32 %.17 to i64
  %514 = getelementptr inbounds i8, ptr %512, i64 %513
  %515 = load i8, ptr %514, align 1, !tbaa !17
  switch i8 %515, label %.preheader583.preheader [
    i8 46, label %517
    i8 0, label %.loopexit591
  ]

.preheader583.preheader:                          ; preds = %.preheader585
  %516 = load i8, ptr %512, align 1, !tbaa !17
  switch i8 %516, label %.preheader583.1 [
    i8 46, label %.loopexit584
    i8 0, label %.loopexit584
  ]

517:                                              ; preds = %.preheader585
  %518 = getelementptr inbounds i8, ptr %.5500, i64 %513
  store i8 46, ptr %518, align 1, !tbaa !17
  %519 = add i32 %.17, 1
  br label %.preheader585, !llvm.loop !35

.preheader583.1:                                  ; preds = %.preheader583.preheader
  %520 = add i8 %516, -97
  %or.cond18 = icmp ult i8 %520, 26
  %521 = add nsw i8 %516, -32
  %spec.select579 = select i1 %or.cond18, i8 %521, i8 %516
  store i8 %spec.select579, ptr %.5500, align 1, !tbaa !17
  %522 = load ptr, ptr %1, align 8, !tbaa !16
  %523 = getelementptr inbounds i8, ptr %522, i64 1
  %524 = load i8, ptr %523, align 1, !tbaa !17
  switch i8 %524, label %.preheader583.2 [
    i8 46, label %.loopexit584
    i8 0, label %.loopexit584
  ]

.preheader583.2:                                  ; preds = %.preheader583.1
  %525 = add i8 %524, -97
  %or.cond18.1 = icmp ult i8 %525, 26
  %526 = add nsw i8 %524, -32
  %spec.select579.1 = select i1 %or.cond18.1, i8 %526, i8 %524
  %527 = getelementptr inbounds i8, ptr %.5500, i64 1
  store i8 %spec.select579.1, ptr %527, align 1, !tbaa !17
  %528 = load ptr, ptr %1, align 8, !tbaa !16
  %529 = getelementptr inbounds i8, ptr %528, i64 2
  %530 = load i8, ptr %529, align 1, !tbaa !17
  switch i8 %530, label %.preheader583.3 [
    i8 46, label %.loopexit584
    i8 0, label %.loopexit584
  ]

.preheader583.3:                                  ; preds = %.preheader583.2
  %531 = add i8 %530, -97
  %or.cond18.2 = icmp ult i8 %531, 26
  %532 = add nsw i8 %530, -32
  %spec.select579.2 = select i1 %or.cond18.2, i8 %532, i8 %530
  %533 = getelementptr inbounds i8, ptr %.5500, i64 2
  store i8 %spec.select579.2, ptr %533, align 1, !tbaa !17
  %534 = load ptr, ptr %1, align 8, !tbaa !16
  %535 = getelementptr inbounds i8, ptr %534, i64 3
  %536 = load i8, ptr %535, align 1, !tbaa !17
  switch i8 %536, label %.preheader583.4 [
    i8 46, label %.loopexit584
    i8 0, label %.loopexit584
  ]

.preheader583.4:                                  ; preds = %.preheader583.3
  %537 = add i8 %536, -97
  %or.cond18.3 = icmp ult i8 %537, 26
  %538 = add nsw i8 %536, -32
  %spec.select579.3 = select i1 %or.cond18.3, i8 %538, i8 %536
  %539 = getelementptr inbounds i8, ptr %.5500, i64 3
  store i8 %spec.select579.3, ptr %539, align 1, !tbaa !17
  %540 = load ptr, ptr %1, align 8, !tbaa !16
  %541 = getelementptr inbounds i8, ptr %540, i64 4
  %542 = load i8, ptr %541, align 1, !tbaa !17
  switch i8 %542, label %.preheader583.5 [
    i8 46, label %.loopexit584
    i8 0, label %.loopexit584
  ]

.preheader583.5:                                  ; preds = %.preheader583.4
  %543 = add i8 %542, -97
  %or.cond18.4 = icmp ult i8 %543, 26
  %544 = add nsw i8 %542, -32
  %spec.select579.4 = select i1 %or.cond18.4, i8 %544, i8 %542
  %545 = getelementptr inbounds i8, ptr %.5500, i64 4
  store i8 %spec.select579.4, ptr %545, align 1, !tbaa !17
  %546 = load ptr, ptr %1, align 8, !tbaa !16
  %547 = getelementptr inbounds i8, ptr %546, i64 5
  %548 = load i8, ptr %547, align 1, !tbaa !17
  switch i8 %548, label %.preheader583.6 [
    i8 46, label %.loopexit584
    i8 0, label %.loopexit584
  ]

.preheader583.6:                                  ; preds = %.preheader583.5
  %549 = add i8 %548, -97
  %or.cond18.5 = icmp ult i8 %549, 26
  %550 = add nsw i8 %548, -32
  %spec.select579.5 = select i1 %or.cond18.5, i8 %550, i8 %548
  %551 = getelementptr inbounds i8, ptr %.5500, i64 5
  store i8 %spec.select579.5, ptr %551, align 1, !tbaa !17
  %552 = load ptr, ptr %1, align 8, !tbaa !16
  %553 = getelementptr inbounds i8, ptr %552, i64 6
  %554 = load i8, ptr %553, align 1, !tbaa !17
  switch i8 %554, label %.preheader583.7 [
    i8 46, label %.loopexit584
    i8 0, label %.loopexit584
  ]

.preheader583.7:                                  ; preds = %.preheader583.6
  %555 = add i8 %554, -97
  %or.cond18.6 = icmp ult i8 %555, 26
  %556 = add nsw i8 %554, -32
  %spec.select579.6 = select i1 %or.cond18.6, i8 %556, i8 %554
  %557 = getelementptr inbounds i8, ptr %.5500, i64 6
  store i8 %spec.select579.6, ptr %557, align 1, !tbaa !17
  %558 = load ptr, ptr %1, align 8, !tbaa !16
  %559 = getelementptr inbounds i8, ptr %558, i64 7
  %560 = load i8, ptr %559, align 1, !tbaa !17
  switch i8 %560, label %561 [
    i8 46, label %.loopexit584
    i8 0, label %.loopexit584
  ]

561:                                              ; preds = %.preheader583.7
  %562 = add i8 %560, -97
  %or.cond18.7 = icmp ult i8 %562, 26
  %563 = add nsw i8 %560, -32
  %spec.select579.7 = select i1 %or.cond18.7, i8 %563, i8 %560
  %564 = getelementptr inbounds i8, ptr %.5500, i64 7
  store i8 %spec.select579.7, ptr %564, align 1, !tbaa !17
  %.pre742.pre = load ptr, ptr %1, align 8, !tbaa !16
  %.phi.trans.insert745.phi.trans.insert = getelementptr inbounds i8, ptr %.pre742.pre, i64 8
  %.pre746.pre = load i8, ptr %.phi.trans.insert745.phi.trans.insert, align 1, !tbaa !17
  br label %.loopexit584

.loopexit584:                                     ; preds = %.preheader583.preheader, %.preheader583.preheader, %.preheader583.1, %.preheader583.1, %.preheader583.2, %.preheader583.2, %.preheader583.3, %.preheader583.3, %.preheader583.4, %.preheader583.4, %.preheader583.5, %.preheader583.5, %.preheader583.6, %.preheader583.6, %.preheader583.7, %.preheader583.7, %561
  %.pre746 = phi i8 [ %516, %.preheader583.preheader ], [ %516, %.preheader583.preheader ], [ %524, %.preheader583.1 ], [ %524, %.preheader583.1 ], [ %530, %.preheader583.2 ], [ %530, %.preheader583.2 ], [ %536, %.preheader583.3 ], [ %536, %.preheader583.3 ], [ %542, %.preheader583.4 ], [ %542, %.preheader583.4 ], [ %548, %.preheader583.5 ], [ %548, %.preheader583.5 ], [ %554, %.preheader583.6 ], [ %554, %.preheader583.6 ], [ %560, %.preheader583.7 ], [ %560, %.preheader583.7 ], [ %.pre746.pre, %561 ]
  %.pre742 = phi ptr [ %512, %.preheader583.preheader ], [ %512, %.preheader583.preheader ], [ %522, %.preheader583.1 ], [ %522, %.preheader583.1 ], [ %528, %.preheader583.2 ], [ %528, %.preheader583.2 ], [ %534, %.preheader583.3 ], [ %534, %.preheader583.3 ], [ %540, %.preheader583.4 ], [ %540, %.preheader583.4 ], [ %546, %.preheader583.5 ], [ %546, %.preheader583.5 ], [ %552, %.preheader583.6 ], [ %552, %.preheader583.6 ], [ %558, %.preheader583.7 ], [ %558, %.preheader583.7 ], [ %.pre742.pre, %561 ]
  %.19.ph = phi i32 [ 0, %.preheader583.preheader ], [ 0, %.preheader583.preheader ], [ 1, %.preheader583.1 ], [ 1, %.preheader583.1 ], [ 2, %.preheader583.2 ], [ 2, %.preheader583.2 ], [ 3, %.preheader583.3 ], [ 3, %.preheader583.3 ], [ 4, %.preheader583.4 ], [ 4, %.preheader583.4 ], [ 5, %.preheader583.5 ], [ 5, %.preheader583.5 ], [ 6, %.preheader583.6 ], [ 6, %.preheader583.6 ], [ 7, %.preheader583.7 ], [ 7, %.preheader583.7 ], [ 8, %561 ]
  %565 = icmp eq i8 %.pre746, 0
  br i1 %565, label %.loopexit591, label %.preheader

.preheader:                                       ; preds = %.loopexit584
  %.20675 = add nuw nsw i32 %.19.ph, 1
  %566 = zext nneg i32 %.20675 to i64
  %567 = getelementptr inbounds i8, ptr %.pre742, i64 %566
  %568 = load i8, ptr %567, align 1, !tbaa !17
  %569 = icmp eq i8 %568, 0
  br i1 %569, label %.loopexit591, label %570

570:                                              ; preds = %.preheader
  %571 = add i8 %568, -97
  %or.cond21 = icmp ult i8 %571, 26
  %572 = add nsw i8 %568, -32
  %spec.select580 = select i1 %or.cond21, i8 %572, i8 %568
  %573 = getelementptr inbounds i8, ptr %.5500, i64 8
  store i8 %spec.select580, ptr %573, align 1, !tbaa !17
  %574 = load ptr, ptr %1, align 8, !tbaa !16
  %575 = zext nneg i32 %.19.ph to i64
  %576 = getelementptr inbounds i8, ptr %574, i64 %575
  %577 = getelementptr inbounds i8, ptr %576, i64 2
  %578 = load i8, ptr %577, align 1, !tbaa !17
  %579 = icmp eq i8 %578, 0
  br i1 %579, label %.loopexit591, label %580

580:                                              ; preds = %570
  %581 = add i8 %578, -97
  %or.cond21.1 = icmp ult i8 %581, 26
  %582 = add nsw i8 %578, -32
  %spec.select580.1 = select i1 %or.cond21.1, i8 %582, i8 %578
  %583 = getelementptr inbounds i8, ptr %.5500, i64 9
  store i8 %spec.select580.1, ptr %583, align 1, !tbaa !17
  %584 = load ptr, ptr %1, align 8, !tbaa !16
  %585 = zext nneg i32 %.19.ph to i64
  %586 = getelementptr inbounds i8, ptr %584, i64 %585
  %587 = getelementptr inbounds i8, ptr %586, i64 3
  %588 = load i8, ptr %587, align 1, !tbaa !17
  %589 = icmp eq i8 %588, 0
  br i1 %589, label %.loopexit591, label %590

590:                                              ; preds = %580
  %591 = add i8 %588, -97
  %or.cond21.2 = icmp ult i8 %591, 26
  %592 = add nsw i8 %588, -32
  %spec.select580.2 = select i1 %or.cond21.2, i8 %592, i8 %588
  %593 = getelementptr inbounds i8, ptr %.5500, i64 10
  store i8 %spec.select580.2, ptr %593, align 1, !tbaa !17
  br label %.loopexit591

.loopexit591:                                     ; preds = %.preheader585, %.loopexit584, %590, %580, %570, %.preheader, %434, %449, %444, %439, %.preheader592, %.preheader590.preheader
  %.0495.lcssa.pn = phi ptr [ %.0495.lcssa, %.preheader590.preheader ], [ %.0495.lcssa, %.preheader592 ], [ %.0495.lcssa, %439 ], [ %.0495.lcssa, %444 ], [ %.0495.lcssa, %449 ], [ %.0495.lcssa, %434 ], [ %.5500, %.preheader ], [ %.5500, %570 ], [ %.5500, %580 ], [ %.5500, %590 ], [ %.5500, %.loopexit584 ], [ %.5500, %.preheader585 ]
  %.5494 = phi ptr [ %.0489.lcssa, %.preheader590.preheader ], [ %.0489.lcssa, %.preheader592 ], [ %.0489.lcssa, %439 ], [ %.0489.lcssa, %444 ], [ %.0489.lcssa, %449 ], [ %.0489.lcssa, %434 ], [ %.4493, %.preheader ], [ %.4493, %570 ], [ %.4493, %580 ], [ %.4493, %590 ], [ %.4493, %.loopexit584 ], [ %.4493, %.preheader585 ]
  %.7 = phi i64 [ %.0432.lcssa, %.preheader590.preheader ], [ %.0432.lcssa, %.preheader592 ], [ %.0432.lcssa, %439 ], [ %.0432.lcssa, %444 ], [ %.0432.lcssa, %449 ], [ %.0432.lcssa, %434 ], [ %.6438, %.preheader ], [ %.6438, %570 ], [ %.6438, %580 ], [ %.6438, %590 ], [ %.6438, %.loopexit584 ], [ %.6438, %.preheader585 ]
  %.6501 = getelementptr inbounds i8, ptr %.0495.lcssa.pn, i64 11
  %594 = getelementptr inbounds i8, ptr %1, i64 32
  %595 = load i8, ptr %594, align 8, !tbaa !36
  %596 = getelementptr inbounds i8, ptr %.0495.lcssa.pn, i64 12
  store i8 %595, ptr %.6501, align 1, !tbaa !17
  %597 = getelementptr inbounds i8, ptr %1, i64 33
  %598 = load i8, ptr %597, align 1, !tbaa !37
  %599 = getelementptr inbounds i8, ptr %.0495.lcssa.pn, i64 13
  store i8 %598, ptr %596, align 1, !tbaa !17
  %600 = getelementptr inbounds i8, ptr %1, i64 34
  %601 = load i8, ptr %600, align 2, !tbaa !38
  %602 = getelementptr inbounds i8, ptr %.0495.lcssa.pn, i64 14
  store i8 %601, ptr %599, align 1, !tbaa !17
  %603 = getelementptr inbounds i8, ptr %1, i64 36
  %604 = load i32, ptr %603, align 4, !tbaa !39
  call void @_fx_utility_16_unsigned_write(ptr noundef nonnull %602, i32 noundef %604) #5
  %605 = getelementptr inbounds i8, ptr %.0495.lcssa.pn, i64 16
  %606 = getelementptr inbounds i8, ptr %1, i64 40
  %607 = load i32, ptr %606, align 8, !tbaa !40
  call void @_fx_utility_16_unsigned_write(ptr noundef nonnull %605, i32 noundef %607) #5
  %608 = getelementptr inbounds i8, ptr %.0495.lcssa.pn, i64 18
  %609 = getelementptr inbounds i8, ptr %1, i64 44
  %610 = load i32, ptr %609, align 4, !tbaa !41
  call void @_fx_utility_16_unsigned_write(ptr noundef nonnull %608, i32 noundef %610) #5
  %611 = getelementptr inbounds i8, ptr %.0495.lcssa.pn, i64 20
  %612 = getelementptr inbounds i8, ptr %0, i64 144
  %613 = load i32, ptr %612, align 8, !tbaa !42
  %.not560 = icmp eq i32 %613, 0
  br i1 %.not560, label %619, label %614

614:                                              ; preds = %.loopexit591
  %615 = getelementptr inbounds i8, ptr %1, i64 56
  %616 = load i64, ptr %615, align 8, !tbaa !43
  %617 = lshr i64 %616, 16
  %618 = trunc i64 %617 to i32
  br label %619

619:                                              ; preds = %.loopexit591, %614
  %.sink772 = phi i32 [ %618, %614 ], [ 0, %.loopexit591 ]
  call void @_fx_utility_16_unsigned_write(ptr noundef nonnull %611, i32 noundef %.sink772) #5
  %620 = getelementptr inbounds i8, ptr %.0495.lcssa.pn, i64 22
  %621 = getelementptr inbounds i8, ptr %1, i64 48
  %622 = load i32, ptr %621, align 8, !tbaa !44
  call void @_fx_utility_16_unsigned_write(ptr noundef nonnull %620, i32 noundef %622) #5
  %623 = getelementptr inbounds i8, ptr %.0495.lcssa.pn, i64 24
  %624 = getelementptr inbounds i8, ptr %1, i64 52
  %625 = load i32, ptr %624, align 4, !tbaa !45
  call void @_fx_utility_16_unsigned_write(ptr noundef nonnull %623, i32 noundef %625) #5
  %626 = getelementptr inbounds i8, ptr %.0495.lcssa.pn, i64 26
  %627 = getelementptr inbounds i8, ptr %1, i64 56
  %628 = load i64, ptr %627, align 8, !tbaa !43
  %629 = trunc i64 %628 to i32
  call void @_fx_utility_16_unsigned_write(ptr noundef nonnull %626, i32 noundef %629) #5
  %630 = getelementptr inbounds i8, ptr %.0495.lcssa.pn, i64 28
  %631 = getelementptr inbounds i8, ptr %1, i64 64
  %632 = load i64, ptr %631, align 8, !tbaa !46
  call void @_fx_utility_32_unsigned_write(ptr noundef nonnull %630, i64 noundef %632) #5
  %633 = call i32 @_fx_utility_logical_sector_write(ptr noundef nonnull %0, i64 noundef %.7, ptr noundef %.5494, i64 noundef 1, i8 noundef zeroext 3) #5
  %.not561 = icmp eq i32 %633, 0
  br i1 %.not561, label %634, label %.loopexit589

634:                                              ; preds = %619
  %635 = getelementptr inbounds i8, ptr %0, i64 1456
  %636 = load i8, ptr %635, align 8, !tbaa !17
  %.not562 = icmp eq i8 %636, 0
  br i1 %.not562, label %.loopexit589, label %637

637:                                              ; preds = %634
  %638 = load i64, ptr %20, align 8, !tbaa !19
  %639 = getelementptr inbounds i8, ptr %0, i64 1136
  %640 = load i64, ptr %639, align 8, !tbaa !47
  %641 = icmp eq i64 %638, %640
  br i1 %641, label %642, label %.loopexit589

642:                                              ; preds = %637
  %643 = load i64, ptr %18, align 8, !tbaa !18
  %644 = getelementptr inbounds i8, ptr %0, i64 1144
  %645 = load i64, ptr %644, align 8, !tbaa !48
  %646 = icmp eq i64 %643, %645
  br i1 %646, label %647, label %.loopexit589

647:                                              ; preds = %642
  %648 = getelementptr inbounds i8, ptr %0, i64 1120
  %649 = load <2 x i64>, ptr %627, align 8, !tbaa !17
  store <2 x i64> %649, ptr %648, align 8, !tbaa !17
  %650 = load i8, ptr %594, align 8, !tbaa !36
  %651 = getelementptr inbounds i8, ptr %0, i64 1096
  store i8 %650, ptr %651, align 8, !tbaa !49
  %652 = getelementptr inbounds i8, ptr %0, i64 1112
  %653 = load <2 x i32>, ptr %621, align 8, !tbaa !50
  store <2 x i32> %653, ptr %652, align 8, !tbaa !50
  %654 = load i8, ptr %597, align 1, !tbaa !37
  %655 = getelementptr inbounds i8, ptr %0, i64 1097
  store i8 %654, ptr %655, align 1, !tbaa !51
  %656 = load i8, ptr %600, align 2, !tbaa !38
  %657 = getelementptr inbounds i8, ptr %0, i64 1098
  store i8 %656, ptr %657, align 2, !tbaa !52
  %658 = getelementptr inbounds i8, ptr %0, i64 1100
  %659 = load <2 x i32>, ptr %603, align 4, !tbaa !50
  store <2 x i32> %659, ptr %658, align 4, !tbaa !50
  br label %.loopexit589

.loopexit589:                                     ; preds = %380, %378, %365, %368, %363, %350, %503, %501, %488, %491, %486, %473, %634, %647, %642, %637, %619, %35
  %.0502 = phi i32 [ %38, %35 ], [ %633, %619 ], [ 0, %637 ], [ 0, %642 ], [ 0, %647 ], [ 0, %634 ], [ %505, %503 ], [ 8, %501 ], [ 8, %488 ], [ 8, %491 ], [ %487, %486 ], [ %474, %473 ], [ %382, %380 ], [ 8, %378 ], [ 8, %365 ], [ 8, %368 ], [ %364, %363 ], [ %351, %350 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %3) #5
  ret i32 %.0502
}

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

declare i32 @_fx_utility_logical_sector_read(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i8 noundef zeroext) local_unnamed_addr #2

declare i32 @_fx_utility_logical_sector_write(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i8 noundef zeroext) local_unnamed_addr #2

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

declare void @_fx_utility_16_unsigned_write(ptr noundef, i32 noundef) local_unnamed_addr #2

declare void @_fx_utility_32_unsigned_write(ptr noundef, i64 noundef) local_unnamed_addr #2

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i8 @llvm.fshl.i8(i8, i8, i8) #3

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

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

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 640}
!6 = !{!"FX_MEDIA_STRUCT", !7, i64 0, !10, i64 8, !10, i64 16, !7, i64 24, !11, i64 32, !7, i64 40, !10, i64 48, !10, i64 56, !7, i64 64, !7, i64 72, !11, i64 80, !11, i64 84, !11, i64 88, !12, i64 96, !7, i64 104, !11, i64 112, !11, i64 116, !11, i64 120, !11, i64 124, !11, i64 128, !11, i64 132, !11, i64 136, !11, i64 140, !11, i64 144, !7, i64 152, !11, i64 160, !7, i64 168, !7, i64 176, !11, i64 184, !7, i64 192, !7, i64 200, !10, i64 208, !11, i64 216, !11, i64 220, !10, i64 224, !7, i64 232, !7, i64 240, !7, i64 248, !11, i64 256, !11, i64 260, !11, i64 264, !11, i64 268, !11, i64 272, !11, i64 276, !11, i64 280, !10, i64 288, !10, i64 296, !10, i64 304, !10, i64 312, !7, i64 320, !10, i64 328, !10, i64 336, !7, i64 344, !7, i64 352, !7, i64 360, !7, i64 368, !7, i64 376, !7, i64 384, !7, i64 392, !7, i64 400, !7, i64 408, !7, i64 416, !7, i64 424, !7, i64 432, !7, i64 440, !7, i64 448, !7, i64 456, !7, i64 464, !7, i64 472, !7, i64 480, !7, i64 488, !7, i64 496, !7, i64 504, !7, i64 512, !7, i64 520, !7, i64 528, !7, i64 536, !7, i64 544, !7, i64 552, !7, i64 560, !7, i64 568, !7, i64 576, !7, i64 584, !7, i64 592, !7, i64 600, !7, i64 608, !7, i64 616, !7, i64 624, !7, i64 632, !7, i64 640, !7, i64 648, !7, i64 656, !7, i64 664, !7, i64 672, !7, i64 680, !7, i64 688, !7, i64 696, !7, i64 704, !7, i64 712, !7, i64 720, !7, i64 728, !7, i64 736, !7, i64 744, !7, i64 752, !7, i64 760, !7, i64 768, !7, i64 776, !7, i64 784, !7, i64 792, !7, i64 800, !7, i64 808, !7, i64 816, !13, i64 824, !11, i64 920, !14, i64 928, !14, i64 1064, !8, i64 1200, !8, i64 1456, !15, i64 1712, !8, i64 2368, !8, i64 2752, !7, i64 2880, !8, i64 2888, !8, i64 3912, !7, i64 12104, !7, i64 12112, !7, i64 12120, !7, i64 12128, !8, i64 12136}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!"int", !8, i64 0}
!12 = !{!"long long", !8, i64 0}
!13 = !{!"TX_MUTEX_STRUCT", !7, i64 0, !10, i64 8, !11, i64 16, !10, i64 24, !11, i64 32, !11, i64 36, !10, i64 40, !11, i64 48, !10, i64 56, !10, i64 64, !11, i64 72, !10, i64 80, !10, i64 88}
!14 = !{!"FX_DIR_ENTRY_STRUCT", !10, i64 0, !8, i64 8, !11, i64 24, !11, i64 28, !8, i64 32, !8, i64 33, !8, i64 34, !11, i64 36, !11, i64 40, !11, i64 44, !11, i64 48, !11, i64 52, !7, i64 56, !12, i64 64, !12, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !7, i64 104, !12, i64 112, !7, i64 120, !12, i64 128}
!15 = !{!"FX_PATH_STRUCT", !14, i64 0, !8, i64 136, !8, i64 392, !7, i64 648}
!16 = !{!14, !10, i64 0}
!17 = !{!8, !8, i64 0}
!18 = !{!14, !7, i64 80}
!19 = !{!14, !12, i64 72}
!20 = !{!6, !11, i64 124}
!21 = !{!6, !11, i64 128}
!22 = !{!6, !10, i64 16}
!23 = !{!14, !11, i64 24}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = distinct !{!26, !25}
!27 = !{!14, !7, i64 88}
!28 = distinct !{!28, !25}
!29 = !{!6, !11, i64 80}
!30 = !{!7, !7, i64 0}
!31 = !{!6, !7, i64 12120}
!32 = distinct !{!32, !25}
!33 = !{!14, !11, i64 28}
!34 = distinct !{!34, !25}
!35 = distinct !{!35, !25}
!36 = !{!14, !8, i64 32}
!37 = !{!14, !8, i64 33}
!38 = !{!14, !8, i64 34}
!39 = !{!14, !11, i64 36}
!40 = !{!14, !11, i64 40}
!41 = !{!14, !11, i64 44}
!42 = !{!6, !11, i64 144}
!43 = !{!14, !7, i64 56}
!44 = !{!14, !11, i64 48}
!45 = !{!14, !11, i64 52}
!46 = !{!14, !12, i64 64}
!47 = !{!6, !12, i64 1136}
!48 = !{!6, !7, i64 1144}
!49 = !{!6, !8, i64 1096}
!50 = !{!11, !11, i64 0}
!51 = !{!6, !8, i64 1097}
!52 = !{!6, !8, i64 1098}


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