; LLVM IR from mlcommons/tiny :: benchmark/interface/Middlewares/ST/filex/common/src/fx_unicode_directory_entry_43380e22 (read)

; 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_unicode_directory_entry_read(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) #0 {
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %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 i32, align 4
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca i64, align 8
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !5
  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 4, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #3
  store i64 0, ptr %23, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 4, 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
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  %34 = load ptr, ptr %10, align 8, !tbaa !5
  %35 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %35, ptr %31, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #3
  %36 = load ptr, ptr %8, align 8, !tbaa !5
  %37 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %36, i32 0, i32 88
  %38 = load i64, ptr %37, align 8, !tbaa !11
  %39 = add i64 %38, 1
  store i64 %39, ptr %37, align 8, !tbaa !11
  %40 = load i64, ptr %31, align 8, !tbaa !9
  %41 = mul i64 %40, 32
  store i64 %41, ptr %27, align 8, !tbaa !9
  %42 = load ptr, ptr %9, align 8, !tbaa !5
  %43 = icmp ne ptr %42, null
  br i1 %43, label %49, label %44

44:                                               ; preds = %6
  %45 = load ptr, ptr %8, align 8, !tbaa !5
  %46 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %45, i32 0, i32 23
  %47 = load i32, ptr %46, align 8, !tbaa !18
  %48 = icmp ne i32 %47, 0
  br i1 %48, label %49, label %186

49:                                               ; preds = %44, %6
  %50 = load ptr, ptr %8, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %50, i32 0, i32 10
  %52 = load i32, ptr %51, align 8, !tbaa !19
  %53 = zext i32 %52 to i64
  %54 = load ptr, ptr %8, align 8, !tbaa !5
  %55 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %54, i32 0, i32 19
  %56 = load i32, ptr %55, align 8, !tbaa !20
  %57 = zext i32 %56 to i64
  %58 = mul i64 %53, %57
  store i64 %58, ptr %28, align 8, !tbaa !9
  %59 = load i64, ptr %28, align 8, !tbaa !9
  %60 = icmp eq i64 %59, 0
  br i1 %60, label %61, label %62

61:                                               ; preds = %49
  store i32 2, ptr %7, align 4
  store i32 1, ptr %33, align 4
  br label %888

62:                                               ; preds = %49
  %63 = load i64, ptr %27, align 8, !tbaa !9
  %64 = load i64, ptr %28, align 8, !tbaa !9
  %65 = udiv i64 %63, %64
  %66 = trunc i64 %65 to i32
  store i32 %66, ptr %24, align 4, !tbaa !21
  %67 = load i64, ptr %27, align 8, !tbaa !9
  %68 = load i64, ptr %28, align 8, !tbaa !9
  %69 = urem i64 %67, %68
  store i64 %69, ptr %27, align 8, !tbaa !9
  %70 = load i64, ptr %27, align 8, !tbaa !9
  %71 = load ptr, ptr %8, align 8, !tbaa !5
  %72 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %71, i32 0, i32 10
  %73 = load i32, ptr %72, align 8, !tbaa !19
  %74 = zext i32 %73 to i64
  %75 = udiv i64 %70, %74
  %76 = trunc i64 %75 to i32
  store i32 %76, ptr %25, align 4, !tbaa !21
  %77 = load ptr, ptr %9, align 8, !tbaa !5
  %78 = icmp ne ptr %77, null
  br i1 %78, label %79, label %122

79:                                               ; preds = %62
  %80 = load ptr, ptr %9, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %80, i32 0, i32 17
  %82 = load i64, ptr %81, align 8, !tbaa !22
  %83 = icmp ne i64 %82, 0
  br i1 %83, label %84, label %117

84:                                               ; preds = %79
  %85 = load ptr, ptr %9, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %85, i32 0, i32 18
  %87 = load i64, ptr %86, align 8, !tbaa !23
  %88 = load i32, ptr %24, align 4, !tbaa !21
  %89 = zext i32 %88 to i64
  %90 = icmp ule i64 %87, %89
  br i1 %90, label %91, label %117

91:                                               ; preds = %84
  %92 = load ptr, ptr %9, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %92, i32 0, i32 19
  %94 = load i64, ptr %93, align 8, !tbaa !24
  %95 = load ptr, ptr %9, align 8, !tbaa !5
  %96 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %95, i32 0, i32 14
  %97 = load i64, ptr %96, align 8, !tbaa !25
  %98 = icmp eq i64 %94, %97
  br i1 %98, label %99, label %117

99:                                               ; preds = %91
  %100 = load ptr, ptr %9, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %100, i32 0, i32 20
  %102 = load i64, ptr %101, align 8, !tbaa !26
  %103 = load ptr, ptr %9, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %103, i32 0, i32 15
  %105 = load i64, ptr %104, align 8, !tbaa !27
  %106 = icmp eq i64 %102, %105
  br i1 %106, label %107, label %117

107:                                              ; preds = %99
  %108 = load ptr, ptr %9, align 8, !tbaa !5
  %109 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %108, i32 0, i32 17
  %110 = load i64, ptr %109, align 8, !tbaa !22
  store i64 %110, ptr %22, align 8, !tbaa !9
  %111 = load ptr, ptr %9, align 8, !tbaa !5
  %112 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %111, i32 0, i32 18
  %113 = load i64, ptr %112, align 8, !tbaa !23
  %114 = trunc i64 %113 to i32
  store i32 %114, ptr %14, align 4, !tbaa !21
  %115 = load ptr, ptr %9, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %115, i32 0, i32 17
  store i64 0, ptr %116, align 8, !tbaa !22
  br label %121

117:                                              ; preds = %99, %91, %84, %79
  %118 = load ptr, ptr %9, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %118, i32 0, i32 12
  %120 = load i64, ptr %119, align 8, !tbaa !28
  store i64 %120, ptr %22, align 8, !tbaa !9
  store i32 0, ptr %14, align 4, !tbaa !21
  br label %121

121:                                              ; preds = %117, %107
  br label %126

122:                                              ; preds = %62
  %123 = load ptr, ptr %8, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %123, i32 0, i32 27
  %125 = load i64, ptr %124, align 8, !tbaa !29
  store i64 %125, ptr %22, align 8, !tbaa !9
  store i32 0, ptr %14, align 4, !tbaa !21
  br label %126

126:                                              ; preds = %122, %121
  br label %127

127:                                              ; preds = %149, %126
  %128 = load i32, ptr %14, align 4, !tbaa !21
  %129 = load i32, ptr %24, align 4, !tbaa !21
  %130 = icmp ult i32 %128, %129
  br i1 %130, label %131, label %153

131:                                              ; preds = %127
  %132 = load i64, ptr %22, align 8, !tbaa !9
  %133 = icmp ult i64 %132, 2
  br i1 %133, label %140, label %134

134:                                              ; preds = %131
  %135 = load i64, ptr %22, align 8, !tbaa !9
  %136 = load ptr, ptr %8, align 8, !tbaa !5
  %137 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %136, i32 0, i32 126
  %138 = load i64, ptr %137, align 8, !tbaa !30
  %139 = icmp ugt i64 %135, %138
  br i1 %139, label %140, label %141

140:                                              ; preds = %134, %131
  store i32 8, ptr %7, align 4
  store i32 1, ptr %33, align 4
  br label %888

141:                                              ; preds = %134
  %142 = load ptr, ptr %8, align 8, !tbaa !5
  %143 = load i64, ptr %22, align 8, !tbaa !9
  %144 = call i32 @_fx_utility_FAT_entry_read(ptr noundef %142, i64 noundef %143, ptr noundef %23)
  store i32 %144, ptr %21, align 4, !tbaa !21
  %145 = load i32, ptr %21, align 4, !tbaa !21
  %146 = icmp ne i32 %145, 0
  br i1 %146, label %147, label %149

147:                                              ; preds = %141
  %148 = load i32, ptr %21, align 4, !tbaa !21
  store i32 %148, ptr %7, align 4
  store i32 1, ptr %33, align 4
  br label %888

149:                                              ; preds = %141
  %150 = load i64, ptr %23, align 8, !tbaa !9
  store i64 %150, ptr %22, align 8, !tbaa !9
  %151 = load i32, ptr %14, align 4, !tbaa !21
  %152 = add i32 %151, 1
  store i32 %152, ptr %14, align 4, !tbaa !21
  br label %127, !llvm.loop !31

153:                                              ; preds = %127
  %154 = load ptr, ptr %8, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %154, i32 0, i32 18
  %156 = load i32, ptr %155, align 4, !tbaa !33
  %157 = zext i32 %156 to i64
  %158 = load i64, ptr %22, align 8, !tbaa !9
  %159 = sub i64 %158, 2
  %160 = load ptr, ptr %8, align 8, !tbaa !5
  %161 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %160, i32 0, i32 19
  %162 = load i32, ptr %161, align 8, !tbaa !20
  %163 = zext i32 %162 to i64
  %164 = mul i64 %159, %163
  %165 = add i64 %157, %164
  %166 = load i32, ptr %25, align 4, !tbaa !21
  %167 = zext i32 %166 to i64
  %168 = add i64 %165, %167
  store i64 %168, ptr %26, align 8, !tbaa !9
  %169 = load ptr, ptr %8, align 8, !tbaa !5
  %170 = load i64, ptr %26, align 8, !tbaa !9
  %171 = load ptr, ptr %8, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %171, i32 0, i32 2
  %173 = load ptr, ptr %172, align 8, !tbaa !34
  %174 = call i32 @_fx_utility_logical_sector_read(ptr noundef %169, i64 noundef %170, ptr noundef %173, i64 noundef 1, i8 noundef zeroext 3)
  store i32 %174, ptr %21, align 4, !tbaa !21
  %175 = load i32, ptr %21, align 4, !tbaa !21
  %176 = icmp ne i32 %175, 0
  br i1 %176, label %177, label %179

177:                                              ; preds = %153
  %178 = load i32, ptr %21, align 4, !tbaa !21
  store i32 %178, ptr %7, align 4
  store i32 1, ptr %33, align 4
  br label %888

179:                                              ; preds = %153
  %180 = load i64, ptr %27, align 8, !tbaa !9
  %181 = load ptr, ptr %8, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %181, i32 0, i32 10
  %183 = load i32, ptr %182, align 8, !tbaa !19
  %184 = zext i32 %183 to i64
  %185 = urem i64 %180, %184
  store i64 %185, ptr %27, align 8, !tbaa !9
  br label %222

186:                                              ; preds = %44
  %187 = load i64, ptr %27, align 8, !tbaa !9
  %188 = load ptr, ptr %8, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %188, i32 0, i32 10
  %190 = load i32, ptr %189, align 8, !tbaa !19
  %191 = zext i32 %190 to i64
  %192 = udiv i64 %187, %191
  %193 = load ptr, ptr %8, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %193, i32 0, i32 16
  %195 = load i32, ptr %194, align 4, !tbaa !35
  %196 = zext i32 %195 to i64
  %197 = add i64 %192, %196
  store i64 %197, ptr %26, align 8, !tbaa !9
  %198 = load ptr, ptr %8, align 8, !tbaa !5
  %199 = load i64, ptr %26, align 8, !tbaa !9
  %200 = load ptr, ptr %8, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %200, i32 0, i32 2
  %202 = load ptr, ptr %201, align 8, !tbaa !34
  %203 = call i32 @_fx_utility_logical_sector_read(ptr noundef %198, i64 noundef %199, ptr noundef %202, i64 noundef 1, i8 noundef zeroext 3)
  store i32 %203, ptr %21, align 4, !tbaa !21
  %204 = load i32, ptr %21, align 4, !tbaa !21
  %205 = icmp ne i32 %204, 0
  br i1 %205, label %206, label %208

206:                                              ; preds = %186
  %207 = load i32, ptr %21, align 4, !tbaa !21
  store i32 %207, ptr %7, align 4
  store i32 1, ptr %33, align 4
  br label %888

208:                                              ; preds = %186
  store i64 0, ptr %22, align 8, !tbaa !9
  store i32 0, ptr %25, align 4, !tbaa !21
  store i32 0, ptr %24, align 4, !tbaa !21
  %209 = load i64, ptr %27, align 8, !tbaa !9
  %210 = load i64, ptr %26, align 8, !tbaa !9
  %211 = load ptr, ptr %8, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %211, i32 0, i32 16
  %213 = load i32, ptr %212, align 4, !tbaa !35
  %214 = zext i32 %213 to i64
  %215 = sub i64 %210, %214
  %216 = load ptr, ptr %8, align 8, !tbaa !5
  %217 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %216, i32 0, i32 10
  %218 = load i32, ptr %217, align 8, !tbaa !19
  %219 = zext i32 %218 to i64
  %220 = mul i64 %215, %219
  %221 = sub i64 %209, %220
  store i64 %221, ptr %27, align 8, !tbaa !9
  br label %222

222:                                              ; preds = %208, %179
  %223 = load ptr, ptr %8, align 8, !tbaa !5
  %224 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %223, i32 0, i32 2
  %225 = load ptr, ptr %224, align 8, !tbaa !34
  %226 = load i64, ptr %27, align 8, !tbaa !9
  %227 = trunc i64 %226 to i32
  %228 = zext i32 %227 to i64
  %229 = getelementptr inbounds i8, ptr %225, i64 %228
  store ptr %229, ptr %29, align 8, !tbaa !5
  %230 = load i64, ptr %26, align 8, !tbaa !9
  %231 = load ptr, ptr %11, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %231, i32 0, i32 14
  store i64 %230, ptr %232, align 8, !tbaa !25
  %233 = load i64, ptr %27, align 8, !tbaa !9
  %234 = load ptr, ptr %11, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %234, i32 0, i32 15
  store i64 %233, ptr %235, align 8, !tbaa !27
  %236 = load ptr, ptr %11, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %236, i32 0, i32 3
  store i32 0, ptr %237, align 4, !tbaa !36
  %238 = load ptr, ptr %11, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %238, i32 0, i32 1
  %240 = getelementptr inbounds [13 x i8], ptr %239, i64 0, i64 0
  store i8 0, ptr %240, align 8, !tbaa !37
  %241 = load ptr, ptr %11, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %241, i32 0, i32 0
  %243 = load ptr, ptr %242, align 8, !tbaa !38
  store ptr %243, ptr %30, align 8, !tbaa !5
  store i32 0, ptr %32, align 4, !tbaa !21
  store i32 0, ptr %19, align 4, !tbaa !21
  %244 = load ptr, ptr %29, align 8, !tbaa !5
  %245 = getelementptr inbounds i8, ptr %244, i64 11
  %246 = load i8, ptr %245, align 1, !tbaa !37
  %247 = zext i8 %246 to i32
  %248 = icmp eq i32 %247, 15
  br i1 %248, label %249, label %584

249:                                              ; preds = %222
  %250 = load ptr, ptr %29, align 8, !tbaa !5
  %251 = load i8, ptr %250, align 1, !tbaa !37
  %252 = zext i8 %251 to i32
  %253 = icmp ne i32 %252, 229
  br i1 %253, label %254, label %584

254:                                              ; preds = %249
  %255 = load ptr, ptr %29, align 8, !tbaa !5
  %256 = load i8, ptr %255, align 1, !tbaa !37
  %257 = zext i8 %256 to i32
  %258 = and i32 %257, 31
  store i32 %258, ptr %20, align 4, !tbaa !21
  %259 = load i32, ptr %20, align 4, !tbaa !21
  %260 = icmp eq i32 %259, 0
  br i1 %260, label %261, label %262

261:                                              ; preds = %254
  store i32 8, ptr %7, align 4
  store i32 1, ptr %33, align 4
  br label %888

262:                                              ; preds = %254
  %263 = load i32, ptr %20, align 4, !tbaa !21
  %264 = sub i32 %263, 1
  %265 = mul i32 %264, 13
  store i32 %265, ptr %14, align 4, !tbaa !21
  br label %266

266:                                              ; preds = %262
  %267 = load i32, ptr %14, align 4, !tbaa !21
  %268 = icmp uge i32 %267, 255
  br i1 %268, label %269, label %276

269:                                              ; preds = %266
  store i32 1, ptr %19, align 4, !tbaa !21
  %270 = load ptr, ptr %29, align 8, !tbaa !5
  %271 = load i8, ptr %270, align 1, !tbaa !37
  %272 = zext i8 %271 to i32
  %273 = and i32 %272, 31
  %274 = load ptr, ptr %11, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %274, i32 0, i32 3
  store i32 %273, ptr %275, align 4, !tbaa !36
  br label %302

276:                                              ; preds = %266
  %277 = load ptr, ptr %11, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %277, i32 0, i32 1
  %279 = getelementptr inbounds [13 x i8], ptr %278, i64 0, i64 0
  store ptr %279, ptr %30, align 8, !tbaa !5
  %280 = load i32, ptr %14, align 4, !tbaa !21
  %281 = add i32 %280, 13
  %282 = add i32 %281, 1
  store i32 %282, ptr %15, align 4, !tbaa !21
  br label %283

283:                                              ; preds = %299, %276
  %284 = load ptr, ptr %11, align 8, !tbaa !5
  %285 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %284, i32 0, i32 0
  %286 = load ptr, ptr %285, align 8, !tbaa !38
  %287 = load i32, ptr %14, align 4, !tbaa !21
  %288 = zext i32 %287 to i64
  %289 = getelementptr inbounds i8, ptr %286, i64 %288
  store i8 0, ptr %289, align 1, !tbaa !37
  %290 = load i32, ptr %14, align 4, !tbaa !21
  %291 = add i32 %290, 1
  store i32 %291, ptr %14, align 4, !tbaa !21
  br label %292

292:                                              ; preds = %283
  %293 = load i32, ptr %14, align 4, !tbaa !21
  %294 = load i32, ptr %15, align 4, !tbaa !21
  %295 = icmp ult i32 %293, %294
  br i1 %295, label %296, label %299

296:                                              ; preds = %292
  %297 = load i32, ptr %14, align 4, !tbaa !21
  %298 = icmp ult i32 %297, 256
  br label %299

299:                                              ; preds = %296, %292
  %300 = phi i1 [ false, %292 ], [ %298, %296 ]
  br i1 %300, label %283, label %301, !llvm.loop !39

301:                                              ; preds = %299
  br label %302

302:                                              ; preds = %301, %269
  br label %303

303:                                              ; preds = %578, %302
  %304 = load ptr, ptr %29, align 8, !tbaa !5
  %305 = load i8, ptr %304, align 1, !tbaa !37
  %306 = zext i8 %305 to i32
  %307 = and i32 %306, 31
  store i32 %307, ptr %17, align 4, !tbaa !21
  %308 = load i32, ptr %17, align 4, !tbaa !21
  %309 = icmp eq i32 %308, 0
  br i1 %309, label %310, label %311

310:                                              ; preds = %303
  store i32 8, ptr %7, align 4
  store i32 1, ptr %33, align 4
  br label %888

311:                                              ; preds = %303
  %312 = load i32, ptr %17, align 4, !tbaa !21
  %313 = sub i32 %312, 1
  store i32 %313, ptr %17, align 4, !tbaa !21
  br label %314

314:                                              ; preds = %311
  %315 = load i32, ptr %19, align 4, !tbaa !21
  %316 = icmp eq i32 %315, 0
  br i1 %316, label %320, label %317

317:                                              ; preds = %314
  %318 = load i32, ptr %32, align 4, !tbaa !21
  %319 = icmp ne i32 %318, 0
  br i1 %319, label %320, label %475

320:                                              ; preds = %317, %314
  store i32 1, ptr %14, align 4, !tbaa !21
  store i32 0, ptr %15, align 4, !tbaa !21
  store i32 0, ptr %16, align 4, !tbaa !21
  br label %321

321:                                              ; preds = %471, %320
  %322 = load i32, ptr %14, align 4, !tbaa !21
  %323 = icmp ult i32 %322, 32
  br i1 %323, label %324, label %474

324:                                              ; preds = %321
  %325 = load i32, ptr %14, align 4, !tbaa !21
  %326 = icmp eq i32 %325, 11
  br i1 %326, label %330, label %327

327:                                              ; preds = %324
  %328 = load i32, ptr %14, align 4, !tbaa !21
  %329 = icmp eq i32 %328, 26
  br i1 %329, label %330, label %331

330:                                              ; preds = %327, %324
  br label %471

331:                                              ; preds = %327
  %332 = load i32, ptr %14, align 4, !tbaa !21
  %333 = icmp eq i32 %332, 13
  br i1 %333, label %334, label %335

334:                                              ; preds = %331
  store i32 12, ptr %14, align 4, !tbaa !21
  br label %471

335:                                              ; preds = %331
  %336 = load ptr, ptr %29, align 8, !tbaa !5
  %337 = load i32, ptr %14, align 4, !tbaa !21
  %338 = add i32 %337, 1
  %339 = zext i32 %338 to i64
  %340 = getelementptr inbounds i8, ptr %336, i64 %339
  %341 = load i8, ptr %340, align 1, !tbaa !37
  %342 = icmp ne i8 %341, 0
  br i1 %342, label %343, label %368

343:                                              ; preds = %335
  %344 = load ptr, ptr %29, align 8, !tbaa !5
  %345 = load i32, ptr %14, align 4, !tbaa !21
  %346 = add i32 %345, 1
  %347 = zext i32 %346 to i64
  %348 = getelementptr inbounds i8, ptr %344, i64 %347
  %349 = load i8, ptr %348, align 1, !tbaa !37
  %350 = zext i8 %349 to i32
  %351 = icmp ne i32 %350, 255
  br i1 %351, label %360, label %352

352:                                              ; preds = %343
  %353 = load ptr, ptr %29, align 8, !tbaa !5
  %354 = load i32, ptr %14, align 4, !tbaa !21
  %355 = zext i32 %354 to i64
  %356 = getelementptr inbounds i8, ptr %353, i64 %355
  %357 = load i8, ptr %356, align 1, !tbaa !37
  %358 = zext i8 %357 to i32
  %359 = icmp ne i32 %358, 255
  br i1 %359, label %360, label %367

360:                                              ; preds = %352, %343
  store i32 1, ptr %19, align 4, !tbaa !21
  %361 = load i32, ptr %20, align 4, !tbaa !21
  %362 = load ptr, ptr %11, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %362, i32 0, i32 3
  store i32 %361, ptr %363, align 4, !tbaa !36
  %364 = load ptr, ptr %11, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %364, i32 0, i32 0
  %366 = load ptr, ptr %365, align 8, !tbaa !38
  store ptr %366, ptr %30, align 8, !tbaa !5
  br label %367

367:                                              ; preds = %360, %352
  br label %368

368:                                              ; preds = %367, %335
  %369 = load ptr, ptr %29, align 8, !tbaa !5
  %370 = load i32, ptr %14, align 4, !tbaa !21
  %371 = zext i32 %370 to i64
  %372 = getelementptr inbounds i8, ptr %369, i64 %371
  %373 = load i8, ptr %372, align 1, !tbaa !37
  %374 = zext i8 %373 to i32
  %375 = icmp eq i32 %374, 0
  br i1 %375, label %376, label %385

376:                                              ; preds = %368
  %377 = load ptr, ptr %29, align 8, !tbaa !5
  %378 = load i32, ptr %14, align 4, !tbaa !21
  %379 = add i32 %378, 1
  %380 = zext i32 %379 to i64
  %381 = getelementptr inbounds i8, ptr %377, i64 %380
  %382 = load i8, ptr %381, align 1, !tbaa !37
  %383 = zext i8 %382 to i32
  %384 = icmp eq i32 %383, 0
  br i1 %384, label %402, label %385

385:                                              ; preds = %376, %368
  %386 = load ptr, ptr %29, align 8, !tbaa !5
  %387 = load i32, ptr %14, align 4, !tbaa !21
  %388 = zext i32 %387 to i64
  %389 = getelementptr inbounds i8, ptr %386, i64 %388
  %390 = load i8, ptr %389, align 1, !tbaa !37
  %391 = zext i8 %390 to i32
  %392 = icmp eq i32 %391, 255
  br i1 %392, label %393, label %403

393:                                              ; preds = %385
  %394 = load ptr, ptr %29, align 8, !tbaa !5
  %395 = load i32, ptr %14, align 4, !tbaa !21
  %396 = add i32 %395, 1
  %397 = zext i32 %396 to i64
  %398 = getelementptr inbounds i8, ptr %394, i64 %397
  %399 = load i8, ptr %398, align 1, !tbaa !37
  %400 = zext i8 %399 to i32
  %401 = icmp eq i32 %400, 255
  br i1 %401, label %402, label %403

402:                                              ; preds = %393, %376
  br label %471

403:                                              ; preds = %393, %385
  %404 = load i32, ptr %17, align 4, !tbaa !21
  %405 = mul i32 %404, 13
  %406 = load i32, ptr %15, align 4, !tbaa !21
  %407 = add i32 %405, %406
  %408 = icmp uge i32 %407, 255
  br i1 %408, label %409, label %416

409:                                              ; preds = %403
  store i32 1, ptr %19, align 4, !tbaa !21
  %410 = load i32, ptr %20, align 4, !tbaa !21
  %411 = load ptr, ptr %11, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %411, i32 0, i32 3
  store i32 %410, ptr %412, align 4, !tbaa !36
  %413 = load ptr, ptr %11, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %413, i32 0, i32 0
  %415 = load ptr, ptr %414, align 8, !tbaa !38
  store ptr %415, ptr %30, align 8, !tbaa !5
  br label %474

416:                                              ; preds = %403
  %417 = load i32, ptr %19, align 4, !tbaa !21
  %418 = icmp eq i32 %417, 0
  br i1 %418, label %419, label %434

419:                                              ; preds = %416
  %420 = load ptr, ptr %29, align 8, !tbaa !5
  %421 = load i32, ptr %14, align 4, !tbaa !21
  %422 = zext i32 %421 to i64
  %423 = getelementptr inbounds i8, ptr %420, i64 %422
  %424 = load i8, ptr %423, align 1, !tbaa !37
  %425 = load ptr, ptr %11, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %425, i32 0, i32 0
  %427 = load ptr, ptr %426, align 8, !tbaa !38
  %428 = load i32, ptr %17, align 4, !tbaa !21
  %429 = mul i32 13, %428
  %430 = load i32, ptr %15, align 4, !tbaa !21
  %431 = add i32 %429, %430
  %432 = zext i32 %431 to i64
  %433 = getelementptr inbounds i8, ptr %427, i64 %432
  store i8 %424, ptr %433, align 1, !tbaa !37
  br label %434

434:                                              ; preds = %419, %416
  %435 = load ptr, ptr %29, align 8, !tbaa !5
  %436 = load i32, ptr %14, align 4, !tbaa !21
  %437 = zext i32 %436 to i64
  %438 = getelementptr inbounds i8, ptr %435, i64 %437
  %439 = load i8, ptr %438, align 1, !tbaa !37
  %440 = load ptr, ptr %12, align 8, !tbaa !5
  %441 = load i32, ptr %16, align 4, !tbaa !21
  %442 = load i32, ptr %17, align 4, !tbaa !21
  %443 = mul i32 26, %442
  %444 = add i32 %441, %443
  %445 = load i32, ptr %15, align 4, !tbaa !21
  %446 = add i32 %444, %445
  %447 = zext i32 %446 to i64
  %448 = getelementptr inbounds i8, ptr %440, i64 %447
  store i8 %439, ptr %448, align 1, !tbaa !37
  %449 = load ptr, ptr %29, align 8, !tbaa !5
  %450 = load i32, ptr %14, align 4, !tbaa !21
  %451 = add i32 %450, 1
  %452 = zext i32 %451 to i64
  %453 = getelementptr inbounds i8, ptr %449, i64 %452
  %454 = load i8, ptr %453, align 1, !tbaa !37
  %455 = load ptr, ptr %12, align 8, !tbaa !5
  %456 = load i32, ptr %16, align 4, !tbaa !21
  %457 = load i32, ptr %17, align 4, !tbaa !21
  %458 = mul i32 26, %457
  %459 = add i32 %456, %458
  %460 = load i32, ptr %15, align 4, !tbaa !21
  %461 = add i32 %459, %460
  %462 = add i32 %461, 1
  %463 = zext i32 %462 to i64
  %464 = getelementptr inbounds i8, ptr %455, i64 %463
  store i8 %454, ptr %464, align 1, !tbaa !37
  %465 = load i32, ptr %16, align 4, !tbaa !21
  %466 = add i32 %465, 1
  store i32 %466, ptr %16, align 4, !tbaa !21
  %467 = load i32, ptr %32, align 4, !tbaa !21
  %468 = add i32 %467, 1
  store i32 %468, ptr %32, align 4, !tbaa !21
  %469 = load i32, ptr %15, align 4, !tbaa !21
  %470 = add i32 %469, 1
  store i32 %470, ptr %15, align 4, !tbaa !21
  br label %471

471:                                              ; preds = %434, %402, %334, %330
  %472 = load i32, ptr %14, align 4, !tbaa !21
  %473 = add i32 %472, 2
  store i32 %473, ptr %14, align 4, !tbaa !21
  br label %321, !llvm.loop !40

474:                                              ; preds = %409, %321
  br label %475

475:                                              ; preds = %474, %317
  %476 = load i64, ptr %27, align 8, !tbaa !9
  %477 = add i64 %476, 32
  %478 = load ptr, ptr %8, align 8, !tbaa !5
  %479 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %478, i32 0, i32 10
  %480 = load i32, ptr %479, align 8, !tbaa !19
  %481 = zext i32 %480 to i64
  %482 = icmp uge i64 %477, %481
  br i1 %482, label %483, label %565

483:                                              ; preds = %475
  %484 = load ptr, ptr %9, align 8, !tbaa !5
  %485 = icmp ne ptr %484, null
  br i1 %485, label %491, label %486

486:                                              ; preds = %483
  %487 = load ptr, ptr %8, align 8, !tbaa !5
  %488 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %487, i32 0, i32 23
  %489 = load i32, ptr %488, align 8, !tbaa !18
  %490 = icmp ne i32 %489, 0
  br i1 %490, label %491, label %538

491:                                              ; preds = %486, %483
  %492 = load i32, ptr %25, align 4, !tbaa !21
  %493 = load ptr, ptr %8, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %493, i32 0, i32 19
  %495 = load i32, ptr %494, align 8, !tbaa !20
  %496 = sub i32 %495, 1
  %497 = icmp ult i32 %492, %496
  br i1 %497, label %498, label %503

498:                                              ; preds = %491
  %499 = load i64, ptr %26, align 8, !tbaa !9
  %500 = add i64 %499, 1
  store i64 %500, ptr %26, align 8, !tbaa !9
  %501 = load i32, ptr %25, align 4, !tbaa !21
  %502 = add i32 %501, 1
  store i32 %502, ptr %25, align 4, !tbaa !21
  br label %537

503:                                              ; preds = %491
  %504 = load ptr, ptr %8, align 8, !tbaa !5
  %505 = load i64, ptr %22, align 8, !tbaa !9
  %506 = call i32 @_fx_utility_FAT_entry_read(ptr noundef %504, i64 noundef %505, ptr noundef %23)
  store i32 %506, ptr %21, align 4, !tbaa !21
  %507 = load i32, ptr %21, align 4, !tbaa !21
  %508 = icmp ne i32 %507, 0
  br i1 %508, label %509, label %511

509:                                              ; preds = %503
  %510 = load i32, ptr %21, align 4, !tbaa !21
  store i32 %510, ptr %7, align 4
  store i32 1, ptr %33, align 4
  br label %888

511:                                              ; preds = %503
  %512 = load i64, ptr %23, align 8, !tbaa !9
  store i64 %512, ptr %22, align 8, !tbaa !9
  %513 = load i64, ptr %22, align 8, !tbaa !9
  %514 = icmp ult i64 %513, 2
  br i1 %514, label %521, label %515

515:                                              ; preds = %511
  %516 = load i64, ptr %22, align 8, !tbaa !9
  %517 = load ptr, ptr %8, align 8, !tbaa !5
  %518 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %517, i32 0, i32 126
  %519 = load i64, ptr %518, align 8, !tbaa !30
  %520 = icmp ugt i64 %516, %519
  br i1 %520, label %521, label %522

521:                                              ; preds = %515, %511
  store i32 8, ptr %7, align 4
  store i32 1, ptr %33, align 4
  br label %888

522:                                              ; preds = %515
  %523 = load i32, ptr %24, align 4, !tbaa !21
  %524 = add i32 %523, 1
  store i32 %524, ptr %24, align 4, !tbaa !21
  store i32 0, ptr %25, align 4, !tbaa !21
  %525 = load ptr, ptr %8, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %525, i32 0, i32 18
  %527 = load i32, ptr %526, align 4, !tbaa !33
  %528 = zext i32 %527 to i64
  %529 = load i64, ptr %22, align 8, !tbaa !9
  %530 = sub i64 %529, 2
  %531 = load ptr, ptr %8, align 8, !tbaa !5
  %532 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %531, i32 0, i32 19
  %533 = load i32, ptr %532, align 8, !tbaa !20
  %534 = zext i32 %533 to i64
  %535 = mul i64 %530, %534
  %536 = add i64 %528, %535
  store i64 %536, ptr %26, align 8, !tbaa !9
  br label %537

537:                                              ; preds = %522, %498
  br label %553

538:                                              ; preds = %486
  %539 = load i64, ptr %26, align 8, !tbaa !9
  %540 = add i64 %539, 1
  store i64 %540, ptr %26, align 8, !tbaa !9
  %541 = load i64, ptr %26, align 8, !tbaa !9
  %542 = load ptr, ptr %8, align 8, !tbaa !5
  %543 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %542, i32 0, i32 16
  %544 = load i32, ptr %543, align 4, !tbaa !35
  %545 = load ptr, ptr %8, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %545, i32 0, i32 17
  %547 = load i32, ptr %546, align 8, !tbaa !41
  %548 = add i32 %544, %547
  %549 = zext i32 %548 to i64
  %550 = icmp uge i64 %541, %549
  br i1 %550, label %551, label %552

551:                                              ; preds = %538
  store i32 8, ptr %7, align 4
  store i32 1, ptr %33, align 4
  br label %888

552:                                              ; preds = %538
  br label %553

553:                                              ; preds = %552, %537
  %554 = load ptr, ptr %8, align 8, !tbaa !5
  %555 = load i64, ptr %26, align 8, !tbaa !9
  %556 = load ptr, ptr %8, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %556, i32 0, i32 2
  %558 = load ptr, ptr %557, align 8, !tbaa !34
  %559 = call i32 @_fx_utility_logical_sector_read(ptr noundef %554, i64 noundef %555, ptr noundef %558, i64 noundef 1, i8 noundef zeroext 3)
  store i32 %559, ptr %21, align 4, !tbaa !21
  %560 = load i32, ptr %21, align 4, !tbaa !21
  %561 = icmp ne i32 %560, 0
  br i1 %561, label %562, label %564

562:                                              ; preds = %553
  %563 = load i32, ptr %21, align 4, !tbaa !21
  store i32 %563, ptr %7, align 4
  store i32 1, ptr %33, align 4
  br label %888

564:                                              ; preds = %553
  store i64 0, ptr %27, align 8, !tbaa !9
  br label %568

565:                                              ; preds = %475
  %566 = load i64, ptr %27, align 8, !tbaa !9
  %567 = add i64 %566, 32
  store i64 %567, ptr %27, align 8, !tbaa !9
  br label %568

568:                                              ; preds = %565, %564
  %569 = load ptr, ptr %8, align 8, !tbaa !5
  %570 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %569, i32 0, i32 2
  %571 = load ptr, ptr %570, align 8, !tbaa !34
  %572 = load i64, ptr %27, align 8, !tbaa !9
  %573 = trunc i64 %572 to i32
  %574 = zext i32 %573 to i64
  %575 = getelementptr inbounds i8, ptr %571, i64 %574
  store ptr %575, ptr %29, align 8, !tbaa !5
  %576 = load i64, ptr %31, align 8, !tbaa !9
  %577 = add i64 %576, 1
  store i64 %577, ptr %31, align 8, !tbaa !9
  br label %578

578:                                              ; preds = %568
  %579 = load i32, ptr %17, align 4, !tbaa !21
  %580 = icmp ugt i32 %579, 0
  br i1 %580, label %303, label %581, !llvm.loop !42

581:                                              ; preds = %578
  %582 = load ptr, ptr %11, align 8, !tbaa !5
  %583 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %582, i32 0, i32 2
  store i32 1, ptr %583, align 8, !tbaa !43
  br label %585

584:                                              ; preds = %249, %222
  store i32 1, ptr %19, align 4, !tbaa !21
  br label %585

585:                                              ; preds = %584, %581
  %586 = load i32, ptr %19, align 4, !tbaa !21
  %587 = icmp eq i32 %586, 1
  br i1 %587, label %588, label %591

588:                                              ; preds = %585
  %589 = load ptr, ptr %11, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %589, i32 0, i32 2
  store i32 0, ptr %590, align 8, !tbaa !43
  br label %591

591:                                              ; preds = %588, %585
  %592 = load i32, ptr %32, align 4, !tbaa !21
  %593 = zext i32 %592 to i64
  %594 = load ptr, ptr %13, align 8, !tbaa !5
  store i64 %593, ptr %594, align 8, !tbaa !9
  %595 = load ptr, ptr %30, align 8, !tbaa !5
  %596 = getelementptr inbounds i8, ptr %595, i64 0
  store i8 0, ptr %596, align 1, !tbaa !37
  store i32 0, ptr %18, align 4, !tbaa !21
  store i32 0, ptr %14, align 4, !tbaa !21
  store i32 0, ptr %15, align 4, !tbaa !21
  br label %597

597:                                              ; preds = %660, %591
  %598 = load i32, ptr %14, align 4, !tbaa !21
  %599 = icmp ult i32 %598, 11
  br i1 %599, label %600, label %663

600:                                              ; preds = %597
  %601 = load ptr, ptr %29, align 8, !tbaa !5
  %602 = load i32, ptr %14, align 4, !tbaa !21
  %603 = zext i32 %602 to i64
  %604 = getelementptr inbounds i8, ptr %601, i64 %603
  %605 = load i8, ptr %604, align 1, !tbaa !37
  %606 = sext i8 %605 to i32
  %607 = icmp eq i32 %606, 0
  br i1 %607, label %608, label %609

608:                                              ; preds = %600
  br label %663

609:                                              ; preds = %600
  %610 = load ptr, ptr %29, align 8, !tbaa !5
  %611 = load i32, ptr %14, align 4, !tbaa !21
  %612 = zext i32 %611 to i64
  %613 = getelementptr inbounds i8, ptr %610, i64 %612
  %614 = load i8, ptr %613, align 1, !tbaa !37
  %615 = sext i8 %614 to i32
  %616 = icmp eq i32 %615, 46
  br i1 %616, label %617, label %618

617:                                              ; preds = %609
  store i32 2, ptr %18, align 4, !tbaa !21
  br label %618

618:                                              ; preds = %617, %609
  %619 = load ptr, ptr %29, align 8, !tbaa !5
  %620 = load i32, ptr %14, align 4, !tbaa !21
  %621 = zext i32 %620 to i64
  %622 = getelementptr inbounds i8, ptr %619, i64 %621
  %623 = load i8, ptr %622, align 1, !tbaa !37
  %624 = sext i8 %623 to i32
  %625 = icmp eq i32 %624, 32
  br i1 %625, label %626, label %631

626:                                              ; preds = %618
  %627 = load i32, ptr %18, align 4, !tbaa !21
  %628 = icmp eq i32 %627, 0
  br i1 %628, label %629, label %630

629:                                              ; preds = %626
  store i32 1, ptr %18, align 4, !tbaa !21
  br label %630

630:                                              ; preds = %629, %626
  br label %660

631:                                              ; preds = %618
  %632 = load i32, ptr %14, align 4, !tbaa !21
  %633 = icmp eq i32 %632, 8
  br i1 %633, label %634, label %639

634:                                              ; preds = %631
  %635 = load i32, ptr %18, align 4, !tbaa !21
  %636 = icmp eq i32 %635, 0
  br i1 %636, label %637, label %638

637:                                              ; preds = %634
  store i32 1, ptr %18, align 4, !tbaa !21
  br label %638

638:                                              ; preds = %637, %634
  br label %639

639:                                              ; preds = %638, %631
  %640 = load i32, ptr %18, align 4, !tbaa !21
  %641 = icmp eq i32 %640, 1
  br i1 %641, label %642, label %648

642:                                              ; preds = %639
  %643 = load ptr, ptr %30, align 8, !tbaa !5
  %644 = load i32, ptr %15, align 4, !tbaa !21
  %645 = add i32 %644, 1
  store i32 %645, ptr %15, align 4, !tbaa !21
  %646 = zext i32 %644 to i64
  %647 = getelementptr inbounds i8, ptr %643, i64 %646
  store i8 46, ptr %647, align 1, !tbaa !37
  store i32 2, ptr %18, align 4, !tbaa !21
  br label %648

648:                                              ; preds = %642, %639
  %649 = load ptr, ptr %29, align 8, !tbaa !5
  %650 = load i32, ptr %14, align 4, !tbaa !21
  %651 = zext i32 %650 to i64
  %652 = getelementptr inbounds i8, ptr %649, i64 %651
  %653 = load i8, ptr %652, align 1, !tbaa !37
  %654 = load ptr, ptr %30, align 8, !tbaa !5
  %655 = load i32, ptr %15, align 4, !tbaa !21
  %656 = zext i32 %655 to i64
  %657 = getelementptr inbounds i8, ptr %654, i64 %656
  store i8 %653, ptr %657, align 1, !tbaa !37
  %658 = load i32, ptr %15, align 4, !tbaa !21
  %659 = add i32 %658, 1
  store i32 %659, ptr %15, align 4, !tbaa !21
  br label %660

660:                                              ; preds = %648, %630
  %661 = load i32, ptr %14, align 4, !tbaa !21
  %662 = add i32 %661, 1
  store i32 %662, ptr %14, align 4, !tbaa !21
  br label %597, !llvm.loop !44

663:                                              ; preds = %608, %597
  %664 = load ptr, ptr %11, align 8, !tbaa !5
  %665 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %664, i32 0, i32 2
  %666 = load i32, ptr %665, align 8, !tbaa !43
  %667 = icmp ne i32 %666, 0
  br i1 %667, label %668, label %681

668:                                              ; preds = %663
  %669 = load ptr, ptr %30, align 8, !tbaa !5
  %670 = getelementptr inbounds i8, ptr %669, i64 0
  %671 = load i8, ptr %670, align 1, !tbaa !37
  %672 = zext i8 %671 to i32
  %673 = icmp eq i32 %672, 229
  br i1 %673, label %674, label %681

674:                                              ; preds = %668
  %675 = load ptr, ptr %11, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %675, i32 0, i32 0
  %677 = load ptr, ptr %676, align 8, !tbaa !38
  %678 = getelementptr inbounds i8, ptr %677, i64 0
  store i8 -27, ptr %678, align 1, !tbaa !37
  %679 = load ptr, ptr %30, align 8, !tbaa !5
  %680 = getelementptr inbounds i8, ptr %679, i64 0
  store i8 0, ptr %680, align 1, !tbaa !37
  br label %681

681:                                              ; preds = %674, %668, %663
  %682 = load ptr, ptr %30, align 8, !tbaa !5
  %683 = getelementptr inbounds i8, ptr %682, i64 0
  %684 = load i8, ptr %683, align 1, !tbaa !37
  %685 = sext i8 %684 to i32
  %686 = icmp eq i32 %685, 0
  br i1 %686, label %687, label %711

687:                                              ; preds = %681
  %688 = load ptr, ptr %29, align 8, !tbaa !5
  %689 = getelementptr inbounds i8, ptr %688, i64 0
  %690 = load i8, ptr %689, align 1, !tbaa !37
  %691 = zext i8 %690 to i32
  %692 = icmp eq i32 %691, 32
  br i1 %692, label %693, label %711

693:                                              ; preds = %687
  store i32 0, ptr %15, align 4, !tbaa !21
  br label %694

694:                                              ; preds = %707, %693
  %695 = load i32, ptr %15, align 4, !tbaa !21
  %696 = icmp ult i32 %695, 11
  br i1 %696, label %697, label %710

697:                                              ; preds = %694
  %698 = load ptr, ptr %29, align 8, !tbaa !5
  %699 = load i32, ptr %15, align 4, !tbaa !21
  %700 = zext i32 %699 to i64
  %701 = getelementptr inbounds i8, ptr %698, i64 %700
  %702 = load i8, ptr %701, align 1, !tbaa !37
  %703 = load ptr, ptr %30, align 8, !tbaa !5
  %704 = load i32, ptr %15, align 4, !tbaa !21
  %705 = zext i32 %704 to i64
  %706 = getelementptr inbounds i8, ptr %703, i64 %705
  store i8 %702, ptr %706, align 1, !tbaa !37
  br label %707

707:                                              ; preds = %697
  %708 = load i32, ptr %15, align 4, !tbaa !21
  %709 = add i32 %708, 1
  store i32 %709, ptr %15, align 4, !tbaa !21
  br label %694, !llvm.loop !45

710:                                              ; preds = %694
  br label %711

711:                                              ; preds = %710, %687, %681
  %712 = load ptr, ptr %30, align 8, !tbaa !5
  %713 = load i32, ptr %15, align 4, !tbaa !21
  %714 = zext i32 %713 to i64
  %715 = getelementptr inbounds i8, ptr %712, i64 %714
  store i8 0, ptr %715, align 1, !tbaa !37
  %716 = load ptr, ptr %29, align 8, !tbaa !5
  %717 = getelementptr inbounds i8, ptr %716, i64 11
  store ptr %717, ptr %29, align 8, !tbaa !5
  %718 = load ptr, ptr %29, align 8, !tbaa !5
  %719 = getelementptr inbounds i8, ptr %718, i32 1
  store ptr %719, ptr %29, align 8, !tbaa !5
  %720 = load i8, ptr %718, align 1, !tbaa !37
  %721 = load ptr, ptr %11, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %721, i32 0, i32 4
  store i8 %720, ptr %722, align 8, !tbaa !46
  %723 = load ptr, ptr %29, align 8, !tbaa !5
  %724 = getelementptr inbounds i8, ptr %723, i32 1
  store ptr %724, ptr %29, align 8, !tbaa !5
  %725 = load i8, ptr %723, align 1, !tbaa !37
  %726 = load ptr, ptr %11, align 8, !tbaa !5
  %727 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %726, i32 0, i32 5
  store i8 %725, ptr %727, align 1, !tbaa !47
  %728 = load i32, ptr %19, align 4, !tbaa !21
  %729 = icmp ne i32 %728, 0
  br i1 %729, label %730, label %785

730:                                              ; preds = %711
  %731 = load ptr, ptr %11, align 8, !tbaa !5
  %732 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %731, i32 0, i32 5
  %733 = load i8, ptr %732, align 1, !tbaa !47
  %734 = zext i8 %733 to i32
  %735 = and i32 %734, 8
  %736 = icmp ne i32 %735, 0
  br i1 %736, label %737, label %785

737:                                              ; preds = %730
  store i32 0, ptr %15, align 4, !tbaa !21
  br label %738

738:                                              ; preds = %781, %737
  %739 = load i32, ptr %15, align 4, !tbaa !21
  %740 = icmp ule i32 %739, 11
  br i1 %740, label %741, label %749

741:                                              ; preds = %738
  %742 = load ptr, ptr %30, align 8, !tbaa !5
  %743 = load i32, ptr %15, align 4, !tbaa !21
  %744 = zext i32 %743 to i64
  %745 = getelementptr inbounds i8, ptr %742, i64 %744
  %746 = load i8, ptr %745, align 1, !tbaa !37
  %747 = sext i8 %746 to i32
  %748 = icmp ne i32 %747, 0
  br label %749

749:                                              ; preds = %741, %738
  %750 = phi i1 [ false, %738 ], [ %748, %741 ]
  br i1 %750, label %751, label %784

751:                                              ; preds = %749
  %752 = load ptr, ptr %30, align 8, !tbaa !5
  %753 = load i32, ptr %15, align 4, !tbaa !21
  %754 = zext i32 %753 to i64
  %755 = getelementptr inbounds i8, ptr %752, i64 %754
  %756 = load i8, ptr %755, align 1, !tbaa !37
  %757 = sext i8 %756 to i32
  %758 = icmp sge i32 %757, 65
  br i1 %758, label %759, label %780

759:                                              ; preds = %751
  %760 = load ptr, ptr %30, align 8, !tbaa !5
  %761 = load i32, ptr %15, align 4, !tbaa !21
  %762 = zext i32 %761 to i64
  %763 = getelementptr inbounds i8, ptr %760, i64 %762
  %764 = load i8, ptr %763, align 1, !tbaa !37
  %765 = sext i8 %764 to i32
  %766 = icmp sle i32 %765, 90
  br i1 %766, label %767, label %780

767:                                              ; preds = %759
  %768 = load ptr, ptr %30, align 8, !tbaa !5
  %769 = load i32, ptr %15, align 4, !tbaa !21
  %770 = zext i32 %769 to i64
  %771 = getelementptr inbounds i8, ptr %768, i64 %770
  %772 = load i8, ptr %771, align 1, !tbaa !37
  %773 = sext i8 %772 to i32
  %774 = add nsw i32 %773, 32
  %775 = trunc i32 %774 to i8
  %776 = load ptr, ptr %30, align 8, !tbaa !5
  %777 = load i32, ptr %15, align 4, !tbaa !21
  %778 = zext i32 %777 to i64
  %779 = getelementptr inbounds i8, ptr %776, i64 %778
  store i8 %775, ptr %779, align 1, !tbaa !37
  br label %780

780:                                              ; preds = %767, %759, %751
  br label %781

781:                                              ; preds = %780
  %782 = load i32, ptr %15, align 4, !tbaa !21
  %783 = add i32 %782, 1
  store i32 %783, ptr %15, align 4, !tbaa !21
  br label %738, !llvm.loop !48

784:                                              ; preds = %749
  br label %785

785:                                              ; preds = %784, %730, %711
  %786 = load ptr, ptr %29, align 8, !tbaa !5
  %787 = getelementptr inbounds i8, ptr %786, i32 1
  store ptr %787, ptr %29, align 8, !tbaa !5
  %788 = load i8, ptr %786, align 1, !tbaa !37
  %789 = load ptr, ptr %11, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %789, i32 0, i32 6
  store i8 %788, ptr %790, align 2, !tbaa !49
  %791 = load ptr, ptr %29, align 8, !tbaa !5
  %792 = call i32 @_fx_utility_16_unsigned_read(ptr noundef %791)
  %793 = load ptr, ptr %11, align 8, !tbaa !5
  %794 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %793, i32 0, i32 7
  store i32 %792, ptr %794, align 4, !tbaa !50
  %795 = load ptr, ptr %29, align 8, !tbaa !5
  %796 = getelementptr inbounds i8, ptr %795, i64 2
  store ptr %796, ptr %29, align 8, !tbaa !5
  %797 = load ptr, ptr %29, align 8, !tbaa !5
  %798 = call i32 @_fx_utility_16_unsigned_read(ptr noundef %797)
  %799 = load ptr, ptr %11, align 8, !tbaa !5
  %800 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %799, i32 0, i32 8
  store i32 %798, ptr %800, align 8, !tbaa !51
  %801 = load ptr, ptr %29, align 8, !tbaa !5
  %802 = getelementptr inbounds i8, ptr %801, i64 2
  store ptr %802, ptr %29, align 8, !tbaa !5
  %803 = load ptr, ptr %29, align 8, !tbaa !5
  %804 = call i32 @_fx_utility_16_unsigned_read(ptr noundef %803)
  %805 = load ptr, ptr %11, align 8, !tbaa !5
  %806 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %805, i32 0, i32 9
  store i32 %804, ptr %806, align 4, !tbaa !52
  %807 = load ptr, ptr %29, align 8, !tbaa !5
  %808 = getelementptr inbounds i8, ptr %807, i64 2
  store ptr %808, ptr %29, align 8, !tbaa !5
  %809 = load ptr, ptr %8, align 8, !tbaa !5
  %810 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %809, i32 0, i32 23
  %811 = load i32, ptr %810, align 8, !tbaa !18
  %812 = icmp ne i32 %811, 0
  br i1 %812, label %813, label %823

813:                                              ; preds = %785
  %814 = load ptr, ptr %29, align 8, !tbaa !5
  %815 = call i32 @_fx_utility_16_unsigned_read(ptr noundef %814)
  %816 = zext i32 %815 to i64
  %817 = load ptr, ptr %11, align 8, !tbaa !5
  %818 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %817, i32 0, i32 12
  store i64 %816, ptr %818, align 8, !tbaa !28
  %819 = load ptr, ptr %11, align 8, !tbaa !5
  %820 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %819, i32 0, i32 12
  %821 = load i64, ptr %820, align 8, !tbaa !28
  %822 = shl i64 %821, 16
  store i64 %822, ptr %820, align 8, !tbaa !28
  br label %826

823:                                              ; preds = %785
  %824 = load ptr, ptr %11, align 8, !tbaa !5
  %825 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %824, i32 0, i32 12
  store i64 0, ptr %825, align 8, !tbaa !28
  br label %826

826:                                              ; preds = %823, %813
  %827 = load ptr, ptr %29, align 8, !tbaa !5
  %828 = getelementptr inbounds i8, ptr %827, i64 2
  store ptr %828, ptr %29, align 8, !tbaa !5
  %829 = load ptr, ptr %29, align 8, !tbaa !5
  %830 = call i32 @_fx_utility_16_unsigned_read(ptr noundef %829)
  %831 = load ptr, ptr %11, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %831, i32 0, i32 10
  store i32 %830, ptr %832, align 8, !tbaa !53
  %833 = load ptr, ptr %29, align 8, !tbaa !5
  %834 = getelementptr inbounds i8, ptr %833, i64 2
  store ptr %834, ptr %29, align 8, !tbaa !5
  %835 = load ptr, ptr %29, align 8, !tbaa !5
  %836 = call i32 @_fx_utility_16_unsigned_read(ptr noundef %835)
  %837 = load ptr, ptr %11, align 8, !tbaa !5
  %838 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %837, i32 0, i32 11
  store i32 %836, ptr %838, align 4, !tbaa !54
  %839 = load ptr, ptr %29, align 8, !tbaa !5
  %840 = getelementptr inbounds i8, ptr %839, i64 2
  store ptr %840, ptr %29, align 8, !tbaa !5
  %841 = load ptr, ptr %29, align 8, !tbaa !5
  %842 = call i32 @_fx_utility_16_unsigned_read(ptr noundef %841)
  %843 = zext i32 %842 to i64
  %844 = load ptr, ptr %11, align 8, !tbaa !5
  %845 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %844, i32 0, i32 12
  %846 = load i64, ptr %845, align 8, !tbaa !28
  %847 = add i64 %846, %843
  store i64 %847, ptr %845, align 8, !tbaa !28
  %848 = load ptr, ptr %29, align 8, !tbaa !5
  %849 = getelementptr inbounds i8, ptr %848, i64 2
  store ptr %849, ptr %29, align 8, !tbaa !5
  %850 = load ptr, ptr %29, align 8, !tbaa !5
  %851 = call i64 @_fx_utility_32_unsigned_read(ptr noundef %850)
  %852 = load ptr, ptr %11, align 8, !tbaa !5
  %853 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %852, i32 0, i32 13
  store i64 %851, ptr %853, align 8, !tbaa !55
  %854 = load ptr, ptr %11, align 8, !tbaa !5
  %855 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %854, i32 0, i32 17
  store i64 0, ptr %855, align 8, !tbaa !22
  %856 = load ptr, ptr %11, align 8, !tbaa !5
  %857 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %856, i32 0, i32 18
  store i64 0, ptr %857, align 8, !tbaa !23
  %858 = load ptr, ptr %11, align 8, !tbaa !5
  %859 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %858, i32 0, i32 19
  store i64 0, ptr %859, align 8, !tbaa !24
  %860 = load ptr, ptr %11, align 8, !tbaa !5
  %861 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %860, i32 0, i32 20
  store i64 0, ptr %861, align 8, !tbaa !26
  %862 = load i64, ptr %31, align 8, !tbaa !9
  %863 = load ptr, ptr %11, align 8, !tbaa !5
  %864 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %863, i32 0, i32 16
  store i64 %862, ptr %864, align 8, !tbaa !56
  %865 = load i64, ptr %31, align 8, !tbaa !9
  %866 = load ptr, ptr %10, align 8, !tbaa !5
  store i64 %865, ptr %866, align 8, !tbaa !9
  %867 = load ptr, ptr %9, align 8, !tbaa !5
  %868 = icmp ne ptr %867, null
  br i1 %868, label %869, label %887

869:                                              ; preds = %826
  %870 = load i64, ptr %22, align 8, !tbaa !9
  %871 = load ptr, ptr %9, align 8, !tbaa !5
  %872 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %871, i32 0, i32 17
  store i64 %870, ptr %872, align 8, !tbaa !22
  %873 = load i32, ptr %24, align 4, !tbaa !21
  %874 = zext i32 %873 to i64
  %875 = load ptr, ptr %9, align 8, !tbaa !5
  %876 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %875, i32 0, i32 18
  store i64 %874, ptr %876, align 8, !tbaa !23
  %877 = load ptr, ptr %9, align 8, !tbaa !5
  %878 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %877, i32 0, i32 14
  %879 = load i64, ptr %878, align 8, !tbaa !25
  %880 = load ptr, ptr %9, align 8, !tbaa !5
  %881 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %880, i32 0, i32 19
  store i64 %879, ptr %881, align 8, !tbaa !24
  %882 = load ptr, ptr %9, align 8, !tbaa !5
  %883 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %882, i32 0, i32 15
  %884 = load i64, ptr %883, align 8, !tbaa !27
  %885 = load ptr, ptr %9, align 8, !tbaa !5
  %886 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %885, i32 0, i32 20
  store i64 %884, ptr %886, align 8, !tbaa !26
  br label %887

887:                                              ; preds = %869, %826
  store i32 0, ptr %7, align 4
  store i32 1, ptr %33, align 4
  br label %888

888:                                              ; preds = %887, %562, %551, %521, %509, %310, %261, %206, %177, %147, %140, %61
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  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 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, 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
  %889 = load i32, ptr %7, align 4
  ret i32 %889
}

; 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_FAT_entry_read(ptr noundef, i64 noundef, ptr noundef) #2

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

declare i32 @_fx_utility_16_unsigned_read(ptr noundef) #2

declare i64 @_fx_utility_32_unsigned_read(ptr 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, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !10, i64 632}
!12 = !{!"FX_MEDIA_STRUCT", !10, i64 0, !6, i64 8, !6, i64 16, !10, i64 24, !13, i64 32, !10, i64 40, !6, i64 48, !6, i64 56, !10, i64 64, !10, i64 72, !13, i64 80, !13, i64 84, !13, i64 88, !14, i64 96, !10, i64 104, !13, i64 112, !13, i64 116, !13, i64 120, !13, i64 124, !13, i64 128, !13, i64 132, !13, i64 136, !13, i64 140, !13, i64 144, !10, i64 152, !13, i64 160, !10, i64 168, !10, i64 176, !13, i64 184, !10, i64 192, !10, i64 200, !6, i64 208, !13, i64 216, !13, i64 220, !6, i64 224, !10, i64 232, !10, i64 240, !10, i64 248, !13, i64 256, !13, i64 260, !13, i64 264, !13, i64 268, !13, i64 272, !13, i64 276, !13, i64 280, !6, i64 288, !6, i64 296, !6, i64 304, !6, i64 312, !10, i64 320, !6, i64 328, !6, i64 336, !10, i64 344, !10, i64 352, !10, i64 360, !10, i64 368, !10, i64 376, !10, i64 384, !10, i64 392, !10, i64 400, !10, i64 408, !10, i64 416, !10, i64 424, !10, i64 432, !10, i64 440, !10, i64 448, !10, i64 456, !10, i64 464, !10, i64 472, !10, i64 480, !10, i64 488, !10, i64 496, !10, i64 504, !10, i64 512, !10, i64 520, !10, i64 528, !10, i64 536, !10, i64 544, !10, i64 552, !10, i64 560, !10, i64 568, !10, i64 576, !10, i64 584, !10, i64 592, !10, i64 600, !10, i64 608, !10, i64 616, !10, i64 624, !10, i64 632, !10, i64 640, !10, i64 648, !10, i64 656, !10, i64 664, !10, i64 672, !10, i64 680, !10, i64 688, !10, i64 696, !10, i64 704, !10, i64 712, !10, i64 720, !10, i64 728, !10, i64 736, !10, i64 744, !10, i64 752, !10, i64 760, !10, i64 768, !10, i64 776, !10, i64 784, !10, i64 792, !10, i64 800, !10, i64 808, !10, i64 816, !15, i64 824, !13, i64 920, !16, i64 928, !16, i64 1064, !7, i64 1200, !7, i64 1456, !17, i64 1712, !7, i64 2368, !7, i64 2752, !10, i64 2880, !7, i64 2888, !7, i64 3912, !10, i64 12104, !10, i64 12112, !10, i64 12120, !10, i64 12128, !7, i64 12136}
!13 = !{!"int", !7, i64 0}
!14 = !{!"long long", !7, i64 0}
!15 = !{!"TX_MUTEX_STRUCT", !10, i64 0, !6, i64 8, !13, i64 16, !6, i64 24, !13, i64 32, !13, i64 36, !6, i64 40, !13, i64 48, !6, i64 56, !6, i64 64, !13, i64 72, !6, i64 80, !6, i64 88}
!16 = !{!"FX_DIR_ENTRY_STRUCT", !6, i64 0, !7, i64 8, !13, i64 24, !13, i64 28, !7, i64 32, !7, i64 33, !7, i64 34, !13, i64 36, !13, i64 40, !13, i64 44, !13, i64 48, !13, i64 52, !10, i64 56, !14, i64 64, !14, i64 72, !10, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !14, i64 112, !10, i64 120, !14, i64 128}
!17 = !{!"FX_PATH_STRUCT", !16, i64 0, !7, i64 136, !7, i64 392, !10, i64 648}
!18 = !{!12, !13, i64 144}
!19 = !{!12, !13, i64 80}
!20 = !{!12, !13, i64 128}
!21 = !{!13, !13, i64 0}
!22 = !{!16, !10, i64 96}
!23 = !{!16, !10, i64 104}
!24 = !{!16, !14, i64 112}
!25 = !{!16, !14, i64 72}
!26 = !{!16, !10, i64 120}
!27 = !{!16, !10, i64 80}
!28 = !{!16, !10, i64 56}
!29 = !{!12, !10, i64 176}
!30 = !{!12, !10, i64 12120}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = !{!12, !13, i64 124}
!34 = !{!12, !6, i64 16}
!35 = !{!12, !13, i64 116}
!36 = !{!16, !13, i64 28}
!37 = !{!7, !7, i64 0}
!38 = !{!16, !6, i64 0}
!39 = distinct !{!39, !32}
!40 = distinct !{!40, !32}
!41 = !{!12, !13, i64 120}
!42 = distinct !{!42, !32}
!43 = !{!16, !13, i64 24}
!44 = distinct !{!44, !32}
!45 = distinct !{!45, !32}
!46 = !{!16, !7, i64 32}
!47 = !{!16, !7, i64 33}
!48 = distinct !{!48, !32}
!49 = !{!16, !7, i64 34}
!50 = !{!16, !13, i64 36}
!51 = !{!16, !13, i64 40}
!52 = !{!16, !13, i64 44}
!53 = !{!16, !13, i64 48}
!54 = !{!16, !13, i64 52}
!55 = !{!16, !14, i64 64}
!56 = !{!16, !10, i64 88}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

; Function Attrs: nounwind uwtable
define dso_local i32 @_fx_unicode_directory_entry_read(ptr noundef %0, ptr noundef %1, ptr nocapture noundef %2, ptr nocapture noundef %3, ptr nocapture noundef writeonly %4, ptr nocapture noundef writeonly %5) local_unnamed_addr #0 {
  %7 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #5
  store i64 0, ptr %7, align 8, !tbaa !5
  %8 = load i64, ptr %2, align 8, !tbaa !5
  %9 = getelementptr inbounds i8, ptr %0, i64 632
  %10 = load i64, ptr %9, align 8, !tbaa !9
  %11 = add i64 %10, 1
  store i64 %11, ptr %9, align 8, !tbaa !9
  %12 = shl i64 %8, 5
  %.not = icmp eq ptr %1, null
  br i1 %.not, label %13, label %16

13:                                               ; preds = %6
  %14 = getelementptr inbounds i8, ptr %0, i64 144
  %15 = load i32, ptr %14, align 8, !tbaa !17
  %.not360 = icmp eq i32 %15, 0
  br i1 %.not360, label %87, label %16

16:                                               ; preds = %13, %6
  %17 = getelementptr inbounds i8, ptr %0, i64 80
  %18 = load i32, ptr %17, align 8, !tbaa !18
  %19 = zext i32 %18 to i64
  %20 = getelementptr inbounds i8, ptr %0, i64 128
  %21 = load i32, ptr %20, align 8, !tbaa !19
  %22 = zext i32 %21 to i64
  %23 = mul nuw i64 %22, %19
  %24 = icmp eq i64 %23, 0
  br i1 %24, label %.loopexit413, label %25

25:                                               ; preds = %16
  %26 = udiv i64 %12, %23
  %27 = trunc i64 %26 to i32
  %28 = urem i64 %12, %23
  %29 = udiv i64 %28, %19
  %30 = trunc i64 %29 to i32
  br i1 %.not, label %55, label %31

31:                                               ; preds = %25
  %32 = getelementptr inbounds i8, ptr %1, i64 96
  %33 = load i64, ptr %32, align 8, !tbaa !20
  %.not363 = icmp eq i64 %33, 0
  br i1 %.not363, label %52, label %34

34:                                               ; preds = %31
  %35 = getelementptr inbounds i8, ptr %1, i64 104
  %36 = load i64, ptr %35, align 8, !tbaa !21
  %37 = and i64 %26, 4294967295
  %.not364 = icmp ugt i64 %36, %37
  br i1 %.not364, label %52, label %38

38:                                               ; preds = %34
  %39 = getelementptr inbounds i8, ptr %1, i64 112
  %40 = load i64, ptr %39, align 8, !tbaa !22
  %41 = getelementptr inbounds i8, ptr %1, i64 72
  %42 = load i64, ptr %41, align 8, !tbaa !23
  %43 = icmp eq i64 %40, %42
  br i1 %43, label %44, label %52

44:                                               ; preds = %38
  %45 = getelementptr inbounds i8, ptr %1, i64 120
  %46 = load i64, ptr %45, align 8, !tbaa !24
  %47 = getelementptr inbounds i8, ptr %1, i64 80
  %48 = load i64, ptr %47, align 8, !tbaa !25
  %49 = icmp eq i64 %46, %48
  br i1 %49, label %50, label %52

50:                                               ; preds = %44
  %51 = trunc nuw i64 %36 to i32
  store i64 0, ptr %32, align 8, !tbaa !20
  br label %58

52:                                               ; preds = %44, %38, %34, %31
  %53 = getelementptr inbounds i8, ptr %1, i64 56
  %54 = load i64, ptr %53, align 8, !tbaa !26
  br label %58

55:                                               ; preds = %25
  %56 = getelementptr inbounds i8, ptr %0, i64 176
  %57 = load i64, ptr %56, align 8, !tbaa !27
  br label %58

58:                                               ; preds = %50, %52, %55
  %.0311 = phi i32 [ %51, %50 ], [ 0, %52 ], [ 0, %55 ]
  %.0304 = phi i64 [ %33, %50 ], [ %54, %52 ], [ %57, %55 ]
  %59 = icmp ult i32 %.0311, %27
  br i1 %59, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %58
  %60 = getelementptr inbounds i8, ptr %0, i64 12120
  br label %61

61:                                               ; preds = %.lr.ph, %68
  %.1305424 = phi i64 [ %.0304, %.lr.ph ], [ %69, %68 ]
  %.1312423 = phi i32 [ %.0311, %.lr.ph ], [ %70, %68 ]
  %62 = icmp ult i64 %.1305424, 2
  br i1 %62, label %.loopexit413, label %63

63:                                               ; preds = %61
  %64 = load i64, ptr %60, align 8, !tbaa !28
  %65 = icmp ugt i64 %.1305424, %64
  br i1 %65, label %.loopexit413, label %66

66:                                               ; preds = %63
  %67 = call i32 @_fx_utility_FAT_entry_read(ptr noundef nonnull %0, i64 noundef %.1305424, ptr noundef nonnull %7) #5
  %.not381 = icmp eq i32 %67, 0
  br i1 %.not381, label %68, label %.loopexit413

68:                                               ; preds = %66
  %69 = load i64, ptr %7, align 8, !tbaa !5
  %70 = add nuw i32 %.1312423, 1
  %71 = icmp ult i32 %70, %27
  br i1 %71, label %61, label %._crit_edge.loopexit, !llvm.loop !29

._crit_edge.loopexit:                             ; preds = %68
  %.pre = load i32, ptr %20, align 8, !tbaa !19
  %.pre463 = zext i32 %.pre to i64
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %58
  %.pre-phi = phi i64 [ %.pre463, %._crit_edge.loopexit ], [ %22, %58 ]
  %.1305.lcssa = phi i64 [ %69, %._crit_edge.loopexit ], [ %.0304, %58 ]
  %72 = getelementptr inbounds i8, ptr %0, i64 124
  %73 = load i32, ptr %72, align 4, !tbaa !31
  %74 = zext i32 %73 to i64
  %75 = add i64 %.1305.lcssa, -2
  %76 = mul i64 %75, %.pre-phi
  %77 = and i64 %29, 4294967295
  %78 = add nuw nsw i64 %77, %74
  %79 = add i64 %78, %76
  %80 = getelementptr inbounds i8, ptr %0, i64 16
  %81 = load ptr, ptr %80, align 8, !tbaa !32
  %82 = call i32 @_fx_utility_logical_sector_read(ptr noundef nonnull %0, i64 noundef %79, ptr noundef %81, i64 noundef 1, i8 noundef zeroext 3) #5
  %.not365 = icmp eq i32 %82, 0
  br i1 %.not365, label %83, label %.loopexit413

83:                                               ; preds = %._crit_edge
  %84 = load i32, ptr %17, align 8, !tbaa !18
  %85 = zext i32 %84 to i64
  %86 = urem i64 %28, %85
  br label %105

87:                                               ; preds = %13
  %88 = getelementptr inbounds i8, ptr %0, i64 80
  %89 = load i32, ptr %88, align 8, !tbaa !18
  %90 = zext i32 %89 to i64
  %91 = udiv i64 %12, %90
  %92 = getelementptr inbounds i8, ptr %0, i64 116
  %93 = load i32, ptr %92, align 4, !tbaa !33
  %94 = zext i32 %93 to i64
  %95 = add i64 %91, %94
  %96 = getelementptr inbounds i8, ptr %0, i64 16
  %97 = load ptr, ptr %96, align 8, !tbaa !32
  %98 = tail call i32 @_fx_utility_logical_sector_read(ptr noundef nonnull %0, i64 noundef %95, ptr noundef %97, i64 noundef 1, i8 noundef zeroext 3) #5
  %.not361 = icmp eq i32 %98, 0
  br i1 %.not361, label %99, label %.loopexit413

99:                                               ; preds = %87
  %100 = load i32, ptr %92, align 4, !tbaa !33
  %101 = zext i32 %100 to i64
  %.neg = sub i64 %101, %95
  %102 = load i32, ptr %88, align 8, !tbaa !18
  %103 = zext i32 %102 to i64
  %.neg362 = mul i64 %.neg, %103
  %104 = add i64 %.neg362, %12
  br label %105

105:                                              ; preds = %99, %83
  %.2306 = phi i64 [ %.1305.lcssa, %83 ], [ 0, %99 ]
  %.0299 = phi i32 [ %27, %83 ], [ 0, %99 ]
  %.0295 = phi i32 [ %30, %83 ], [ 0, %99 ]
  %.0291 = phi i64 [ %79, %83 ], [ %95, %99 ]
  %.0288 = phi i64 [ %86, %83 ], [ %104, %99 ]
  %106 = getelementptr inbounds i8, ptr %0, i64 16
  %107 = load ptr, ptr %106, align 8, !tbaa !32
  %108 = and i64 %.0288, 4294967295
  %109 = getelementptr inbounds i8, ptr %107, i64 %108
  %110 = getelementptr inbounds i8, ptr %3, i64 72
  store i64 %.0291, ptr %110, align 8, !tbaa !23
  %111 = getelementptr inbounds i8, ptr %3, i64 80
  store i64 %.0288, ptr %111, align 8, !tbaa !25
  %112 = getelementptr inbounds i8, ptr %3, i64 28
  store i32 0, ptr %112, align 4, !tbaa !34
  %113 = getelementptr inbounds i8, ptr %3, i64 8
  store i8 0, ptr %113, align 8, !tbaa !35
  %114 = load ptr, ptr %3, align 8, !tbaa !36
  %115 = getelementptr inbounds i8, ptr %109, i64 11
  %116 = load i8, ptr %115, align 1, !tbaa !35
  %117 = icmp eq i8 %116, 15
  br i1 %117, label %118, label %.thread384

118:                                              ; preds = %105
  %119 = load i8, ptr %109, align 1, !tbaa !35
  %.not366 = icmp eq i8 %119, -27
  br i1 %.not366, label %.thread384, label %120

120:                                              ; preds = %118
  %121 = and i8 %119, 31
  %122 = zext nneg i8 %121 to i32
  %123 = icmp eq i8 %121, 0
  br i1 %123, label %.loopexit413, label %124

124:                                              ; preds = %120
  %125 = mul nuw nsw i32 %122, 13
  %126 = add nsw i32 %125, -13
  %127 = icmp ugt i32 %126, 254
  br i1 %127, label %130, label %.preheader414

.preheader414:                                    ; preds = %124
  %invariant.umin = call i32 @llvm.umin.i32(i32 %125, i32 255)
  %128 = zext nneg i32 %126 to i64
  %129 = zext nneg i32 %invariant.umin to i64
  br label %131

130:                                              ; preds = %124
  store i32 %122, ptr %112, align 4, !tbaa !34
  br label %.loopexit415

131:                                              ; preds = %.preheader414, %131
  %indvars.iv = phi i64 [ %128, %.preheader414 ], [ %indvars.iv.next, %131 ]
  %132 = load ptr, ptr %3, align 8, !tbaa !36
  %133 = getelementptr inbounds i8, ptr %132, i64 %indvars.iv
  store i8 0, ptr %133, align 1, !tbaa !35
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %134 = icmp ult i64 %indvars.iv, %129
  br i1 %134, label %131, label %.loopexit415, !llvm.loop !37

.loopexit415:                                     ; preds = %131, %130
  %.0317 = phi i32 [ 1, %130 ], [ 0, %131 ]
  %.0280 = phi ptr [ %114, %130 ], [ %113, %131 ]
  %135 = getelementptr inbounds i8, ptr %0, i64 80
  %136 = getelementptr inbounds i8, ptr %0, i64 144
  %137 = getelementptr inbounds i8, ptr %0, i64 128
  %138 = getelementptr inbounds i8, ptr %0, i64 12120
  %139 = getelementptr inbounds i8, ptr %0, i64 124
  %140 = getelementptr inbounds i8, ptr %0, i64 116
  %141 = getelementptr inbounds i8, ptr %0, i64 120
  br label %142

142:                                              ; preds = %241, %.loopexit415
  %.1318 = phi i32 [ %.0317, %.loopexit415 ], [ %.5322, %241 ]
  %.3307 = phi i64 [ %.2306, %.loopexit415 ], [ %.5309, %241 ]
  %.1300 = phi i32 [ %.0299, %.loopexit415 ], [ %.3302, %241 ]
  %.1296 = phi i32 [ %.0295, %.loopexit415 ], [ %.3298, %241 ]
  %.1292 = phi i64 [ %.0291, %.loopexit415 ], [ %.3294, %241 ]
  %.1289 = phi i64 [ %.0288, %.loopexit415 ], [ %.2290, %241 ]
  %.0285 = phi ptr [ %109, %.loopexit415 ], [ %243, %241 ]
  %.1281 = phi ptr [ %.0280, %.loopexit415 ], [ %.5, %241 ]
  %.0278 = phi i64 [ %8, %.loopexit415 ], [ %244, %241 ]
  %.0 = phi i32 [ 0, %.loopexit415 ], [ %.3, %241 ]
  %143 = load i8, ptr %.0285, align 1, !tbaa !35
  %144 = and i8 %143, 31
  %145 = icmp eq i8 %144, 0
  br i1 %145, label %.loopexit413, label %146

146:                                              ; preds = %142
  %147 = zext nneg i8 %144 to i32
  %148 = add nsw i32 %147, -1
  %149 = icmp eq i32 %.1318, 0
  %150 = icmp ne i32 %.0, 0
  %or.cond = select i1 %149, i1 true, i1 %150
  br i1 %or.cond, label %.preheader411, label %.loopexit412

.preheader411:                                    ; preds = %146
  %151 = mul nuw nsw i32 %148, 13
  %152 = mul nuw nsw i32 %148, 26
  br label %153

153:                                              ; preds = %.preheader411, %199
  %.1430 = phi i32 [ %.0, %.preheader411 ], [ %.2, %199 ]
  %.2282429 = phi ptr [ %.1281, %.preheader411 ], [ %.4284, %199 ]
  %.3314428 = phi i32 [ 1, %.preheader411 ], [ %200, %199 ]
  %.2319427 = phi i32 [ %.1318, %.preheader411 ], [ %.4321, %199 ]
  %.0329426 = phi i32 [ 0, %.preheader411 ], [ %.1330, %199 ]
  %.0331425 = phi i32 [ 0, %.preheader411 ], [ %.1332, %199 ]
  switch i32 %.3314428, label %155 [
    i32 26, label %199
    i32 11, label %199
    i32 13, label %154
  ]

154:                                              ; preds = %153
  br label %199

155:                                              ; preds = %153
  %156 = add nuw nsw i32 %.3314428, 1
  %157 = zext nneg i32 %156 to i64
  %158 = getelementptr inbounds i8, ptr %.0285, i64 %157
  %159 = load i8, ptr %158, align 1, !tbaa !35
  switch i8 %159, label %164 [
    i8 0, label %166
    i8 -1, label %160
  ]

160:                                              ; preds = %155
  %161 = zext nneg i32 %.3314428 to i64
  %162 = getelementptr inbounds i8, ptr %.0285, i64 %161
  %163 = load i8, ptr %162, align 1, !tbaa !35
  %.not369 = icmp eq i8 %163, -1
  br i1 %.not369, label %166, label %164

164:                                              ; preds = %155, %160
  store i32 %122, ptr %112, align 4, !tbaa !34
  %165 = load ptr, ptr %3, align 8, !tbaa !36
  br label %166

166:                                              ; preds = %155, %160, %164
  %.3320 = phi i32 [ 1, %164 ], [ %.2319427, %160 ], [ %.2319427, %155 ]
  %.3283 = phi ptr [ %165, %164 ], [ %.2282429, %160 ], [ %.2282429, %155 ]
  %167 = zext nneg i32 %.3314428 to i64
  %168 = getelementptr inbounds i8, ptr %.0285, i64 %167
  %169 = load i8, ptr %168, align 1, !tbaa !35
  switch i8 %169, label %.thread [
    i8 0, label %170
    i8 -1, label %173
  ]

170:                                              ; preds = %166
  %171 = load i8, ptr %158, align 1, !tbaa !35
  %172 = icmp eq i8 %171, 0
  br i1 %172, label %199, label %.thread

173:                                              ; preds = %166
  %174 = load i8, ptr %158, align 1, !tbaa !35
  %175 = icmp eq i8 %174, -1
  br i1 %175, label %199, label %.thread

.thread:                                          ; preds = %166, %170, %173
  %176 = add i32 %.0331425, %151
  %177 = icmp ugt i32 %176, 254
  br i1 %177, label %178, label %180

178:                                              ; preds = %.thread
  store i32 %122, ptr %112, align 4, !tbaa !34
  %179 = load ptr, ptr %3, align 8, !tbaa !36
  br label %.loopexit412

180:                                              ; preds = %.thread
  %181 = icmp eq i32 %.3320, 0
  br i1 %181, label %182, label %186

182:                                              ; preds = %180
  %183 = load ptr, ptr %3, align 8, !tbaa !36
  %184 = zext nneg i32 %176 to i64
  %185 = getelementptr inbounds i8, ptr %183, i64 %184
  store i8 %169, ptr %185, align 1, !tbaa !35
  %.pre452 = load i8, ptr %168, align 1, !tbaa !35
  br label %186

186:                                              ; preds = %182, %180
  %187 = phi i8 [ %.pre452, %182 ], [ %169, %180 ]
  %188 = add i32 %.0331425, %152
  %189 = add i32 %188, %.0329426
  %190 = zext i32 %189 to i64
  %191 = getelementptr inbounds i8, ptr %4, i64 %190
  store i8 %187, ptr %191, align 1, !tbaa !35
  %192 = load i8, ptr %158, align 1, !tbaa !35
  %193 = add i32 %189, 1
  %194 = zext i32 %193 to i64
  %195 = getelementptr inbounds i8, ptr %4, i64 %194
  store i8 %192, ptr %195, align 1, !tbaa !35
  %196 = add i32 %.0329426, 1
  %197 = add i32 %.1430, 1
  %198 = add i32 %.0331425, 1
  br label %199

199:                                              ; preds = %153, %153, %170, %173, %186, %154
  %.1332 = phi i32 [ %.0331425, %153 ], [ %.0331425, %154 ], [ %.0331425, %170 ], [ %.0331425, %173 ], [ %198, %186 ], [ %.0331425, %153 ]
  %.1330 = phi i32 [ %.0329426, %153 ], [ %.0329426, %154 ], [ %.0329426, %170 ], [ %.0329426, %173 ], [ %196, %186 ], [ %.0329426, %153 ]
  %.4321 = phi i32 [ %.2319427, %153 ], [ %.2319427, %154 ], [ %.3320, %170 ], [ %.3320, %173 ], [ %.3320, %186 ], [ %.2319427, %153 ]
  %.4315 = phi i32 [ %.3314428, %153 ], [ 12, %154 ], [ %.3314428, %170 ], [ %.3314428, %173 ], [ %.3314428, %186 ], [ %.3314428, %153 ]
  %.4284 = phi ptr [ %.2282429, %153 ], [ %.2282429, %154 ], [ %.3283, %170 ], [ %.3283, %173 ], [ %.3283, %186 ], [ %.2282429, %153 ]
  %.2 = phi i32 [ %.1430, %153 ], [ %.1430, %154 ], [ %.1430, %170 ], [ %.1430, %173 ], [ %197, %186 ], [ %.1430, %153 ]
  %200 = add nuw nsw i32 %.4315, 2
  %201 = icmp ult i32 %.4315, 30
  br i1 %201, label %153, label %.loopexit412, !llvm.loop !38

.loopexit412:                                     ; preds = %199, %178, %146
  %.5322 = phi i32 [ 1, %178 ], [ 1, %146 ], [ %.4321, %199 ]
  %.5 = phi ptr [ %179, %178 ], [ %.1281, %146 ], [ %.4284, %199 ]
  %.3 = phi i32 [ %.1430, %178 ], [ 0, %146 ], [ %.2, %199 ]
  %202 = add i64 %.1289, 32
  %203 = load i32, ptr %135, align 8, !tbaa !18
  %204 = zext i32 %203 to i64
  %.not370 = icmp ult i64 %202, %204
  br i1 %.not370, label %241, label %205

205:                                              ; preds = %.loopexit412
  br i1 %.not, label %206, label %208

206:                                              ; preds = %205
  %207 = load i32, ptr %136, align 8, !tbaa !17
  %.not371 = icmp eq i32 %207, 0
  br i1 %.not371, label %232, label %208

208:                                              ; preds = %206, %205
  %209 = load i32, ptr %137, align 8, !tbaa !19
  %210 = add i32 %209, -1
  %211 = icmp ult i32 %.1296, %210
  br i1 %211, label %212, label %215

212:                                              ; preds = %208
  %213 = add i64 %.1292, 1
  %214 = add nuw i32 %.1296, 1
  br label %238

215:                                              ; preds = %208
  %216 = call i32 @_fx_utility_FAT_entry_read(ptr noundef nonnull %0, i64 noundef %.3307, ptr noundef nonnull %7) #5
  %.not373 = icmp eq i32 %216, 0
  br i1 %.not373, label %217, label %.loopexit413

217:                                              ; preds = %215
  %218 = load i64, ptr %7, align 8, !tbaa !5
  %219 = icmp ult i64 %218, 2
  br i1 %219, label %.loopexit413, label %220

220:                                              ; preds = %217
  %221 = load i64, ptr %138, align 8, !tbaa !28
  %222 = icmp ugt i64 %218, %221
  br i1 %222, label %.loopexit413, label %223

223:                                              ; preds = %220
  %224 = add i32 %.1300, 1
  %225 = load i32, ptr %139, align 4, !tbaa !31
  %226 = zext i32 %225 to i64
  %227 = add i64 %218, -2
  %228 = load i32, ptr %137, align 8, !tbaa !19
  %229 = zext i32 %228 to i64
  %230 = mul i64 %227, %229
  %231 = add i64 %230, %226
  br label %238

232:                                              ; preds = %206
  %233 = add i64 %.1292, 1
  %234 = load i32, ptr %140, align 4, !tbaa !33
  %235 = load i32, ptr %141, align 8, !tbaa !39
  %236 = add i32 %235, %234
  %237 = zext i32 %236 to i64
  %.not372 = icmp ult i64 %233, %237
  br i1 %.not372, label %238, label %.loopexit413

238:                                              ; preds = %232, %212, %223
  %.4308 = phi i64 [ %.3307, %212 ], [ %218, %223 ], [ %.3307, %232 ]
  %.2301 = phi i32 [ %.1300, %212 ], [ %224, %223 ], [ %.1300, %232 ]
  %.2297 = phi i32 [ %214, %212 ], [ 0, %223 ], [ %.1296, %232 ]
  %.2293 = phi i64 [ %213, %212 ], [ %231, %223 ], [ %233, %232 ]
  %239 = load ptr, ptr %106, align 8, !tbaa !32
  %240 = call i32 @_fx_utility_logical_sector_read(ptr noundef nonnull %0, i64 noundef %.2293, ptr noundef %239, i64 noundef 1, i8 noundef zeroext 3) #5
  %.not374 = icmp eq i32 %240, 0
  br i1 %.not374, label %241, label %.loopexit413

241:                                              ; preds = %.loopexit412, %238
  %.5309 = phi i64 [ %.4308, %238 ], [ %.3307, %.loopexit412 ]
  %.3302 = phi i32 [ %.2301, %238 ], [ %.1300, %.loopexit412 ]
  %.3298 = phi i32 [ %.2297, %238 ], [ %.1296, %.loopexit412 ]
  %.3294 = phi i64 [ %.2293, %238 ], [ %.1292, %.loopexit412 ]
  %.2290 = phi i64 [ 0, %238 ], [ %202, %.loopexit412 ]
  %242 = load ptr, ptr %106, align 8, !tbaa !32
  %243 = getelementptr inbounds i8, ptr %242, i64 %.2290
  %244 = add i64 %.0278, 1
  %.not375 = icmp eq i32 %148, 0
  br i1 %.not375, label %245, label %142, !llvm.loop !40

245:                                              ; preds = %241
  %246 = getelementptr inbounds i8, ptr %3, i64 24
  store i32 1, ptr %246, align 8, !tbaa !41
  %247 = icmp eq i32 %.5322, 1
  br i1 %247, label %.thread384, label %249

.thread384:                                       ; preds = %105, %118, %245
  %.4405 = phi i32 [ %.3, %245 ], [ 0, %118 ], [ 0, %105 ]
  %.1279403 = phi i64 [ %244, %245 ], [ %8, %118 ], [ %8, %105 ]
  %.6401 = phi ptr [ %.5, %245 ], [ %114, %118 ], [ %114, %105 ]
  %.1286399 = phi ptr [ %243, %245 ], [ %109, %118 ], [ %109, %105 ]
  %.4303397 = phi i32 [ %.3302, %245 ], [ %.0299, %118 ], [ %.0299, %105 ]
  %.6310395 = phi i64 [ %.5309, %245 ], [ %.2306, %118 ], [ %.2306, %105 ]
  %248 = getelementptr inbounds i8, ptr %3, i64 24
  store i32 0, ptr %248, align 8, !tbaa !41
  br label %249

249:                                              ; preds = %.thread384, %245
  %.4404 = phi i32 [ %.4405, %.thread384 ], [ %.3, %245 ]
  %.1279402 = phi i64 [ %.1279403, %.thread384 ], [ %244, %245 ]
  %.6400 = phi ptr [ %.6401, %.thread384 ], [ %.5, %245 ]
  %.1286398 = phi ptr [ %.1286399, %.thread384 ], [ %243, %245 ]
  %.4303396 = phi i32 [ %.4303397, %.thread384 ], [ %.3302, %245 ]
  %.6310394 = phi i64 [ %.6310395, %.thread384 ], [ %.5309, %245 ]
  %.6323392 = phi i32 [ 1, %.thread384 ], [ %.5322, %245 ]
  %250 = zext i32 %.4404 to i64
  store i64 %250, ptr %5, align 8, !tbaa !5
  store i8 0, ptr %.6400, align 1, !tbaa !35
  %251 = load i8, ptr %.1286398, align 1, !tbaa !35
  switch i8 %251, label %.thread406.fold.split [
    i8 0, label %380
    i8 46, label %.thread406
    i8 32, label %252
  ]

.thread406.fold.split:                            ; preds = %249
  br label %.thread406

.thread406:                                       ; preds = %.thread406.fold.split, %249
  %.1325408 = phi i32 [ 2, %249 ], [ 0, %.thread406.fold.split ]
  store i8 %251, ptr %.6400, align 1, !tbaa !35
  br label %252

252:                                              ; preds = %249, %.thread406
  %.4335 = phi i32 [ 1, %.thread406 ], [ 0, %249 ]
  %.4328 = phi i32 [ %.1325408, %.thread406 ], [ 1, %249 ]
  %253 = getelementptr inbounds i8, ptr %.1286398, i64 1
  %254 = load i8, ptr %253, align 1, !tbaa !35
  switch i8 %254, label %.thread406.1 [
    i8 0, label %380
    i8 46, label %.thread406.1.thread
    i8 32, label %255
  ]

255:                                              ; preds = %252
  %spec.store.select.1 = call i32 @llvm.umax.i32(i32 %.4328, i32 1)
  br label %265

.thread406.1:                                     ; preds = %252
  %256 = icmp eq i32 %.4328, 1
  br i1 %256, label %257, label %.thread406.1.thread

257:                                              ; preds = %.thread406.1
  %258 = add nuw nsw i32 %.4335, 1
  %259 = zext nneg i32 %.4335 to i64
  %260 = getelementptr inbounds i8, ptr %.6400, i64 %259
  store i8 46, ptr %260, align 1, !tbaa !35
  %.pre453 = load i8, ptr %253, align 1, !tbaa !35
  br label %.thread406.1.thread

.thread406.1.thread:                              ; preds = %252, %257, %.thread406.1
  %261 = phi i8 [ %.pre453, %257 ], [ %254, %.thread406.1 ], [ %254, %252 ]
  %.3334.1 = phi i32 [ %258, %257 ], [ %.4335, %.thread406.1 ], [ %.4335, %252 ]
  %.3327.1 = phi i32 [ 2, %257 ], [ %.4328, %.thread406.1 ], [ 2, %252 ]
  %262 = zext nneg i32 %.3334.1 to i64
  %263 = getelementptr inbounds i8, ptr %.6400, i64 %262
  store i8 %261, ptr %263, align 1, !tbaa !35
  %264 = add nuw nsw i32 %.3334.1, 1
  br label %265

265:                                              ; preds = %.thread406.1.thread, %255
  %.4335.1 = phi i32 [ %.4335, %255 ], [ %264, %.thread406.1.thread ]
  %.4328.1 = phi i32 [ %spec.store.select.1, %255 ], [ %.3327.1, %.thread406.1.thread ]
  %266 = getelementptr inbounds i8, ptr %.1286398, i64 2
  %267 = load i8, ptr %266, align 1, !tbaa !35
  switch i8 %267, label %.thread406.2 [
    i8 0, label %380
    i8 46, label %.thread406.2.thread
    i8 32, label %268
  ]

268:                                              ; preds = %265
  %spec.store.select.2 = call i32 @llvm.umax.i32(i32 %.4328.1, i32 1)
  br label %278

.thread406.2:                                     ; preds = %265
  %269 = icmp eq i32 %.4328.1, 1
  br i1 %269, label %270, label %.thread406.2.thread

270:                                              ; preds = %.thread406.2
  %271 = add nuw nsw i32 %.4335.1, 1
  %272 = zext nneg i32 %.4335.1 to i64
  %273 = getelementptr inbounds i8, ptr %.6400, i64 %272
  store i8 46, ptr %273, align 1, !tbaa !35
  %.pre454 = load i8, ptr %266, align 1, !tbaa !35
  br label %.thread406.2.thread

.thread406.2.thread:                              ; preds = %265, %270, %.thread406.2
  %274 = phi i8 [ %.pre454, %270 ], [ %267, %.thread406.2 ], [ %267, %265 ]
  %.3334.2 = phi i32 [ %271, %270 ], [ %.4335.1, %.thread406.2 ], [ %.4335.1, %265 ]
  %.3327.2 = phi i32 [ 2, %270 ], [ %.4328.1, %.thread406.2 ], [ 2, %265 ]
  %275 = zext nneg i32 %.3334.2 to i64
  %276 = getelementptr inbounds i8, ptr %.6400, i64 %275
  store i8 %274, ptr %276, align 1, !tbaa !35
  %277 = add nuw nsw i32 %.3334.2, 1
  br label %278

278:                                              ; preds = %.thread406.2.thread, %268
  %.4335.2 = phi i32 [ %.4335.1, %268 ], [ %277, %.thread406.2.thread ]
  %.4328.2 = phi i32 [ %spec.store.select.2, %268 ], [ %.3327.2, %.thread406.2.thread ]
  %279 = getelementptr inbounds i8, ptr %.1286398, i64 3
  %280 = load i8, ptr %279, align 1, !tbaa !35
  switch i8 %280, label %.thread406.3 [
    i8 0, label %380
    i8 46, label %.thread406.3.thread
    i8 32, label %281
  ]

281:                                              ; preds = %278
  %spec.store.select.3 = call i32 @llvm.umax.i32(i32 %.4328.2, i32 1)
  br label %291

.thread406.3:                                     ; preds = %278
  %282 = icmp eq i32 %.4328.2, 1
  br i1 %282, label %283, label %.thread406.3.thread

283:                                              ; preds = %.thread406.3
  %284 = add nuw nsw i32 %.4335.2, 1
  %285 = zext nneg i32 %.4335.2 to i64
  %286 = getelementptr inbounds i8, ptr %.6400, i64 %285
  store i8 46, ptr %286, align 1, !tbaa !35
  %.pre455 = load i8, ptr %279, align 1, !tbaa !35
  br label %.thread406.3.thread

.thread406.3.thread:                              ; preds = %278, %283, %.thread406.3
  %287 = phi i8 [ %.pre455, %283 ], [ %280, %.thread406.3 ], [ %280, %278 ]
  %.3334.3 = phi i32 [ %284, %283 ], [ %.4335.2, %.thread406.3 ], [ %.4335.2, %278 ]
  %.3327.3 = phi i32 [ 2, %283 ], [ %.4328.2, %.thread406.3 ], [ 2, %278 ]
  %288 = zext nneg i32 %.3334.3 to i64
  %289 = getelementptr inbounds i8, ptr %.6400, i64 %288
  store i8 %287, ptr %289, align 1, !tbaa !35
  %290 = add nuw nsw i32 %.3334.3, 1
  br label %291

291:                                              ; preds = %.thread406.3.thread, %281
  %.4335.3 = phi i32 [ %.4335.2, %281 ], [ %290, %.thread406.3.thread ]
  %.4328.3 = phi i32 [ %spec.store.select.3, %281 ], [ %.3327.3, %.thread406.3.thread ]
  %292 = getelementptr inbounds i8, ptr %.1286398, i64 4
  %293 = load i8, ptr %292, align 1, !tbaa !35
  switch i8 %293, label %.thread406.4 [
    i8 0, label %380
    i8 46, label %.thread406.4.thread
    i8 32, label %294
  ]

294:                                              ; preds = %291
  %spec.store.select.4 = call i32 @llvm.umax.i32(i32 %.4328.3, i32 1)
  br label %304

.thread406.4:                                     ; preds = %291
  %295 = icmp eq i32 %.4328.3, 1
  br i1 %295, label %296, label %.thread406.4.thread

296:                                              ; preds = %.thread406.4
  %297 = add nuw nsw i32 %.4335.3, 1
  %298 = zext nneg i32 %.4335.3 to i64
  %299 = getelementptr inbounds i8, ptr %.6400, i64 %298
  store i8 46, ptr %299, align 1, !tbaa !35
  %.pre456 = load i8, ptr %292, align 1, !tbaa !35
  br label %.thread406.4.thread

.thread406.4.thread:                              ; preds = %291, %296, %.thread406.4
  %300 = phi i8 [ %.pre456, %296 ], [ %293, %.thread406.4 ], [ %293, %291 ]
  %.3334.4 = phi i32 [ %297, %296 ], [ %.4335.3, %.thread406.4 ], [ %.4335.3, %291 ]
  %.3327.4 = phi i32 [ 2, %296 ], [ %.4328.3, %.thread406.4 ], [ 2, %291 ]
  %301 = zext nneg i32 %.3334.4 to i64
  %302 = getelementptr inbounds i8, ptr %.6400, i64 %301
  store i8 %300, ptr %302, align 1, !tbaa !35
  %303 = add nuw nsw i32 %.3334.4, 1
  br label %304

304:                                              ; preds = %.thread406.4.thread, %294
  %.4335.4 = phi i32 [ %.4335.3, %294 ], [ %303, %.thread406.4.thread ]
  %.4328.4 = phi i32 [ %spec.store.select.4, %294 ], [ %.3327.4, %.thread406.4.thread ]
  %305 = getelementptr inbounds i8, ptr %.1286398, i64 5
  %306 = load i8, ptr %305, align 1, !tbaa !35
  switch i8 %306, label %.thread406.5 [
    i8 0, label %380
    i8 46, label %.thread406.5.thread
    i8 32, label %307
  ]

307:                                              ; preds = %304
  %spec.store.select.5 = call i32 @llvm.umax.i32(i32 %.4328.4, i32 1)
  br label %317

.thread406.5:                                     ; preds = %304
  %308 = icmp eq i32 %.4328.4, 1
  br i1 %308, label %309, label %.thread406.5.thread

309:                                              ; preds = %.thread406.5
  %310 = add nuw nsw i32 %.4335.4, 1
  %311 = zext nneg i32 %.4335.4 to i64
  %312 = getelementptr inbounds i8, ptr %.6400, i64 %311
  store i8 46, ptr %312, align 1, !tbaa !35
  %.pre457 = load i8, ptr %305, align 1, !tbaa !35
  br label %.thread406.5.thread

.thread406.5.thread:                              ; preds = %304, %309, %.thread406.5
  %313 = phi i8 [ %.pre457, %309 ], [ %306, %.thread406.5 ], [ %306, %304 ]
  %.3334.5 = phi i32 [ %310, %309 ], [ %.4335.4, %.thread406.5 ], [ %.4335.4, %304 ]
  %.3327.5 = phi i32 [ 2, %309 ], [ %.4328.4, %.thread406.5 ], [ 2, %304 ]
  %314 = zext nneg i32 %.3334.5 to i64
  %315 = getelementptr inbounds i8, ptr %.6400, i64 %314
  store i8 %313, ptr %315, align 1, !tbaa !35
  %316 = add nuw nsw i32 %.3334.5, 1
  br label %317

317:                                              ; preds = %.thread406.5.thread, %307
  %.4335.5 = phi i32 [ %.4335.4, %307 ], [ %316, %.thread406.5.thread ]
  %.4328.5 = phi i32 [ %spec.store.select.5, %307 ], [ %.3327.5, %.thread406.5.thread ]
  %318 = getelementptr inbounds i8, ptr %.1286398, i64 6
  %319 = load i8, ptr %318, align 1, !tbaa !35
  switch i8 %319, label %.thread406.6 [
    i8 0, label %380
    i8 46, label %.thread406.6.thread
    i8 32, label %320
  ]

320:                                              ; preds = %317
  %spec.store.select.6 = call i32 @llvm.umax.i32(i32 %.4328.5, i32 1)
  br label %330

.thread406.6:                                     ; preds = %317
  %321 = icmp eq i32 %.4328.5, 1
  br i1 %321, label %322, label %.thread406.6.thread

322:                                              ; preds = %.thread406.6
  %323 = add nuw nsw i32 %.4335.5, 1
  %324 = zext nneg i32 %.4335.5 to i64
  %325 = getelementptr inbounds i8, ptr %.6400, i64 %324
  store i8 46, ptr %325, align 1, !tbaa !35
  %.pre458 = load i8, ptr %318, align 1, !tbaa !35
  br label %.thread406.6.thread

.thread406.6.thread:                              ; preds = %317, %322, %.thread406.6
  %326 = phi i8 [ %.pre458, %322 ], [ %319, %.thread406.6 ], [ %319, %317 ]
  %.3334.6 = phi i32 [ %323, %322 ], [ %.4335.5, %.thread406.6 ], [ %.4335.5, %317 ]
  %.3327.6 = phi i32 [ 2, %322 ], [ %.4328.5, %.thread406.6 ], [ 2, %317 ]
  %327 = zext nneg i32 %.3334.6 to i64
  %328 = getelementptr inbounds i8, ptr %.6400, i64 %327
  store i8 %326, ptr %328, align 1, !tbaa !35
  %329 = add nuw nsw i32 %.3334.6, 1
  br label %330

330:                                              ; preds = %.thread406.6.thread, %320
  %.4335.6 = phi i32 [ %.4335.5, %320 ], [ %329, %.thread406.6.thread ]
  %.4328.6 = phi i32 [ %spec.store.select.6, %320 ], [ %.3327.6, %.thread406.6.thread ]
  %331 = getelementptr inbounds i8, ptr %.1286398, i64 7
  %332 = load i8, ptr %331, align 1, !tbaa !35
  switch i8 %332, label %.thread406.7 [
    i8 0, label %380
    i8 46, label %.thread406.7.thread
    i8 32, label %333
  ]

333:                                              ; preds = %330
  %spec.store.select.7 = call i32 @llvm.umax.i32(i32 %.4328.6, i32 1)
  br label %343

.thread406.7:                                     ; preds = %330
  %334 = icmp eq i32 %.4328.6, 1
  br i1 %334, label %335, label %.thread406.7.thread

335:                                              ; preds = %.thread406.7
  %336 = add nuw nsw i32 %.4335.6, 1
  %337 = zext nneg i32 %.4335.6 to i64
  %338 = getelementptr inbounds i8, ptr %.6400, i64 %337
  store i8 46, ptr %338, align 1, !tbaa !35
  %.pre459 = load i8, ptr %331, align 1, !tbaa !35
  br label %.thread406.7.thread

.thread406.7.thread:                              ; preds = %330, %335, %.thread406.7
  %339 = phi i8 [ %.pre459, %335 ], [ %332, %.thread406.7 ], [ %332, %330 ]
  %.3334.7 = phi i32 [ %336, %335 ], [ %.4335.6, %.thread406.7 ], [ %.4335.6, %330 ]
  %.3327.7 = phi i32 [ 2, %335 ], [ %.4328.6, %.thread406.7 ], [ 2, %330 ]
  %340 = zext nneg i32 %.3334.7 to i64
  %341 = getelementptr inbounds i8, ptr %.6400, i64 %340
  store i8 %339, ptr %341, align 1, !tbaa !35
  %342 = add nuw nsw i32 %.3334.7, 1
  br label %343

343:                                              ; preds = %.thread406.7.thread, %333
  %.4335.7 = phi i32 [ %.4335.6, %333 ], [ %342, %.thread406.7.thread ]
  %.4328.7 = phi i32 [ %spec.store.select.7, %333 ], [ %.3327.7, %.thread406.7.thread ]
  %344 = getelementptr inbounds i8, ptr %.1286398, i64 8
  %345 = load i8, ptr %344, align 1, !tbaa !35
  switch i8 %345, label %.thread406.8 [
    i8 0, label %380
    i8 46, label %.thread406.8.thread
    i8 32, label %346
  ]

346:                                              ; preds = %343
  %spec.store.select.8 = call i32 @llvm.umax.i32(i32 %.4328.7, i32 1)
  br label %356

.thread406.8:                                     ; preds = %343
  %347 = icmp ult i32 %.4328.7, 2
  br i1 %347, label %348, label %.thread406.8.thread

348:                                              ; preds = %.thread406.8
  %349 = add nuw nsw i32 %.4335.7, 1
  %350 = zext nneg i32 %.4335.7 to i64
  %351 = getelementptr inbounds i8, ptr %.6400, i64 %350
  store i8 46, ptr %351, align 1, !tbaa !35
  %.pre460 = load i8, ptr %344, align 1, !tbaa !35
  br label %.thread406.8.thread

.thread406.8.thread:                              ; preds = %343, %348, %.thread406.8
  %352 = phi i8 [ %.pre460, %348 ], [ %345, %.thread406.8 ], [ %345, %343 ]
  %.3334.8 = phi i32 [ %349, %348 ], [ %.4335.7, %.thread406.8 ], [ %.4335.7, %343 ]
  %353 = zext nneg i32 %.3334.8 to i64
  %354 = getelementptr inbounds i8, ptr %.6400, i64 %353
  store i8 %352, ptr %354, align 1, !tbaa !35
  %355 = add nuw nsw i32 %.3334.8, 1
  br label %356

356:                                              ; preds = %.thread406.8.thread, %346
  %.4335.8 = phi i32 [ %.4335.7, %346 ], [ %355, %.thread406.8.thread ]
  %.4328.8 = phi i32 [ %spec.store.select.8, %346 ], [ 2, %.thread406.8.thread ]
  %357 = getelementptr inbounds i8, ptr %.1286398, i64 9
  %358 = load i8, ptr %357, align 1, !tbaa !35
  switch i8 %358, label %.thread406.9 [
    i8 0, label %380
    i8 46, label %.thread406.9.thread
    i8 32, label %368
  ]

.thread406.9:                                     ; preds = %356
  %359 = icmp eq i32 %.4328.8, 1
  br i1 %359, label %360, label %.thread406.9.thread

360:                                              ; preds = %.thread406.9
  %361 = add nuw nsw i32 %.4335.8, 1
  %362 = zext nneg i32 %.4335.8 to i64
  %363 = getelementptr inbounds i8, ptr %.6400, i64 %362
  store i8 46, ptr %363, align 1, !tbaa !35
  %.pre461 = load i8, ptr %357, align 1, !tbaa !35
  br label %.thread406.9.thread

.thread406.9.thread:                              ; preds = %356, %360, %.thread406.9
  %364 = phi i8 [ %.pre461, %360 ], [ %358, %.thread406.9 ], [ %358, %356 ]
  %.3334.9 = phi i32 [ %361, %360 ], [ %.4335.8, %.thread406.9 ], [ %.4335.8, %356 ]
  %365 = zext nneg i32 %.3334.9 to i64
  %366 = getelementptr inbounds i8, ptr %.6400, i64 %365
  store i8 %364, ptr %366, align 1, !tbaa !35
  %367 = add nuw nsw i32 %.3334.9, 1
  br label %368

368:                                              ; preds = %356, %.thread406.9.thread
  %.4335.9 = phi i32 [ %367, %.thread406.9.thread ], [ %.4335.8, %356 ]
  %.4328.9 = phi i32 [ 2, %.thread406.9.thread ], [ %.4328.8, %356 ]
  %369 = getelementptr inbounds i8, ptr %.1286398, i64 10
  %370 = load i8, ptr %369, align 1, !tbaa !35
  switch i8 %370, label %.thread406.10 [
    i8 0, label %380
    i8 46, label %.thread406.10.thread
    i8 32, label %380
  ]

.thread406.10:                                    ; preds = %368
  %371 = icmp eq i32 %.4328.9, 1
  br i1 %371, label %372, label %.thread406.10.thread

372:                                              ; preds = %.thread406.10
  %373 = add nuw nsw i32 %.4335.9, 1
  %374 = zext nneg i32 %.4335.9 to i64
  %375 = getelementptr inbounds i8, ptr %.6400, i64 %374
  store i8 46, ptr %375, align 1, !tbaa !35
  %.pre462 = load i8, ptr %369, align 1, !tbaa !35
  br label %.thread406.10.thread

.thread406.10.thread:                             ; preds = %368, %372, %.thread406.10
  %376 = phi i8 [ %.pre462, %372 ], [ %370, %.thread406.10 ], [ %370, %368 ]
  %.3334.10 = phi i32 [ %373, %372 ], [ %.4335.9, %.thread406.10 ], [ %.4335.9, %368 ]
  %377 = zext nneg i32 %.3334.10 to i64
  %378 = getelementptr inbounds i8, ptr %.6400, i64 %377
  store i8 %376, ptr %378, align 1, !tbaa !35
  %379 = add nuw nsw i32 %.3334.10, 1
  br label %380

380:                                              ; preds = %.thread406.10.thread, %368, %368, %356, %343, %330, %317, %304, %291, %278, %265, %252, %249
  %.2333.lcssa = phi i32 [ 0, %249 ], [ %.4335, %252 ], [ %.4335.1, %265 ], [ %.4335.2, %278 ], [ %.4335.3, %291 ], [ %.4335.4, %304 ], [ %.4335.5, %317 ], [ %.4335.6, %330 ], [ %.4335.7, %343 ], [ %.4335.8, %356 ], [ %.4335.9, %368 ], [ %379, %.thread406.10.thread ], [ %.4335.9, %368 ]
  %381 = getelementptr inbounds i8, ptr %3, i64 24
  %382 = load i32, ptr %381, align 8, !tbaa !41
  %.not376 = icmp ne i32 %382, 0
  %.pr = load i8, ptr %.6400, align 1, !tbaa !35
  %383 = icmp eq i8 %.pr, -27
  %or.cond481 = select i1 %.not376, i1 %383, i1 false
  br i1 %or.cond481, label %.thread409, label %thread-pre-split

.thread409:                                       ; preds = %380
  %384 = load ptr, ptr %3, align 8, !tbaa !36
  store i8 -27, ptr %384, align 1, !tbaa !35
  store i8 0, ptr %.6400, align 1, !tbaa !35
  br label %386

thread-pre-split:                                 ; preds = %380
  %385 = icmp eq i8 %.pr, 0
  br i1 %385, label %386, label %.loopexit

386:                                              ; preds = %.thread409, %thread-pre-split
  %387 = load i8, ptr %.1286398, align 1, !tbaa !35
  %388 = icmp eq i8 %387, 32
  br i1 %388, label %.preheader410.preheader, label %.loopexit

.preheader410.preheader:                          ; preds = %386
  store i8 32, ptr %.6400, align 1, !tbaa !35
  %389 = getelementptr inbounds i8, ptr %.1286398, i64 1
  %390 = load i8, ptr %389, align 1, !tbaa !35
  %391 = getelementptr inbounds i8, ptr %.6400, i64 1
  store i8 %390, ptr %391, align 1, !tbaa !35
  %392 = getelementptr inbounds i8, ptr %.1286398, i64 2
  %393 = load i8, ptr %392, align 1, !tbaa !35
  %394 = getelementptr inbounds i8, ptr %.6400, i64 2
  store i8 %393, ptr %394, align 1, !tbaa !35
  %395 = getelementptr inbounds i8, ptr %.1286398, i64 3
  %396 = load i8, ptr %395, align 1, !tbaa !35
  %397 = getelementptr inbounds i8, ptr %.6400, i64 3
  store i8 %396, ptr %397, align 1, !tbaa !35
  %398 = getelementptr inbounds i8, ptr %.1286398, i64 4
  %399 = load i8, ptr %398, align 1, !tbaa !35
  %400 = getelementptr inbounds i8, ptr %.6400, i64 4
  store i8 %399, ptr %400, align 1, !tbaa !35
  %401 = getelementptr inbounds i8, ptr %.1286398, i64 5
  %402 = load i8, ptr %401, align 1, !tbaa !35
  %403 = getelementptr inbounds i8, ptr %.6400, i64 5
  store i8 %402, ptr %403, align 1, !tbaa !35
  %404 = getelementptr inbounds i8, ptr %.1286398, i64 6
  %405 = load i8, ptr %404, align 1, !tbaa !35
  %406 = getelementptr inbounds i8, ptr %.6400, i64 6
  store i8 %405, ptr %406, align 1, !tbaa !35
  %407 = getelementptr inbounds i8, ptr %.1286398, i64 7
  %408 = load i8, ptr %407, align 1, !tbaa !35
  %409 = getelementptr inbounds i8, ptr %.6400, i64 7
  store i8 %408, ptr %409, align 1, !tbaa !35
  %410 = getelementptr inbounds i8, ptr %.1286398, i64 8
  %411 = load i8, ptr %410, align 1, !tbaa !35
  %412 = getelementptr inbounds i8, ptr %.6400, i64 8
  store i8 %411, ptr %412, align 1, !tbaa !35
  %413 = getelementptr inbounds i8, ptr %.1286398, i64 9
  %414 = load i8, ptr %413, align 1, !tbaa !35
  %415 = getelementptr inbounds i8, ptr %.6400, i64 9
  store i8 %414, ptr %415, align 1, !tbaa !35
  %416 = getelementptr inbounds i8, ptr %.1286398, i64 10
  %417 = load i8, ptr %416, align 1, !tbaa !35
  %418 = getelementptr inbounds i8, ptr %.6400, i64 10
  store i8 %417, ptr %418, align 1, !tbaa !35
  br label %.loopexit

.loopexit:                                        ; preds = %.preheader410.preheader, %386, %thread-pre-split
  %.6337 = phi i32 [ %.2333.lcssa, %386 ], [ %.2333.lcssa, %thread-pre-split ], [ 11, %.preheader410.preheader ]
  %419 = zext nneg i32 %.6337 to i64
  %420 = getelementptr inbounds i8, ptr %.6400, i64 %419
  store i8 0, ptr %420, align 1, !tbaa !35
  %421 = getelementptr inbounds i8, ptr %.1286398, i64 11
  %422 = getelementptr inbounds i8, ptr %.1286398, i64 12
  %423 = load i8, ptr %421, align 1, !tbaa !35
  %424 = getelementptr inbounds i8, ptr %3, i64 32
  store i8 %423, ptr %424, align 8, !tbaa !42
  %425 = getelementptr inbounds i8, ptr %.1286398, i64 13
  %426 = load i8, ptr %422, align 1, !tbaa !35
  %427 = getelementptr inbounds i8, ptr %3, i64 33
  store i8 %426, ptr %427, align 1, !tbaa !43
  %.not377 = icmp eq i32 %.6323392, 0
  %428 = and i8 %426, 8
  %.not378 = icmp eq i8 %428, 0
  %or.cond382 = select i1 %.not377, i1 true, i1 %.not378
  br i1 %or.cond382, label %.critedge, label %.preheader.preheader

.preheader.preheader:                             ; preds = %.loopexit
  %429 = load i8, ptr %.6400, align 1, !tbaa !35
  %.not379 = icmp eq i8 %429, 0
  br i1 %.not379, label %.critedge, label %430

430:                                              ; preds = %.preheader.preheader
  %431 = add i8 %429, -65
  %or.cond383 = icmp ult i8 %431, 26
  br i1 %or.cond383, label %432, label %.preheader.1

432:                                              ; preds = %430
  %433 = or disjoint i8 %429, 32
  store i8 %433, ptr %.6400, align 1, !tbaa !35
  br label %.preheader.1

.preheader.1:                                     ; preds = %430, %432
  %434 = getelementptr inbounds i8, ptr %.6400, i64 1
  %435 = load i8, ptr %434, align 1, !tbaa !35
  %.not379.1 = icmp eq i8 %435, 0
  br i1 %.not379.1, label %.critedge, label %436

436:                                              ; preds = %.preheader.1
  %437 = add i8 %435, -65
  %or.cond383.1 = icmp ult i8 %437, 26
  br i1 %or.cond383.1, label %438, label %.preheader.2

438:                                              ; preds = %436
  %439 = or disjoint i8 %435, 32
  store i8 %439, ptr %434, align 1, !tbaa !35
  br label %.preheader.2

.preheader.2:                                     ; preds = %438, %436
  %440 = getelementptr inbounds i8, ptr %.6400, i64 2
  %441 = load i8, ptr %440, align 1, !tbaa !35
  %.not379.2 = icmp eq i8 %441, 0
  br i1 %.not379.2, label %.critedge, label %442

442:                                              ; preds = %.preheader.2
  %443 = add i8 %441, -65
  %or.cond383.2 = icmp ult i8 %443, 26
  br i1 %or.cond383.2, label %444, label %.preheader.3

444:                                              ; preds = %442
  %445 = or disjoint i8 %441, 32
  store i8 %445, ptr %440, align 1, !tbaa !35
  br label %.preheader.3

.preheader.3:                                     ; preds = %444, %442
  %446 = getelementptr inbounds i8, ptr %.6400, i64 3
  %447 = load i8, ptr %446, align 1, !tbaa !35
  %.not379.3 = icmp eq i8 %447, 0
  br i1 %.not379.3, label %.critedge, label %448

448:                                              ; preds = %.preheader.3
  %449 = add i8 %447, -65
  %or.cond383.3 = icmp ult i8 %449, 26
  br i1 %or.cond383.3, label %450, label %.preheader.4

450:                                              ; preds = %448
  %451 = or disjoint i8 %447, 32
  store i8 %451, ptr %446, align 1, !tbaa !35
  br label %.preheader.4

.preheader.4:                                     ; preds = %450, %448
  %452 = getelementptr inbounds i8, ptr %.6400, i64 4
  %453 = load i8, ptr %452, align 1, !tbaa !35
  %.not379.4 = icmp eq i8 %453, 0
  br i1 %.not379.4, label %.critedge, label %454

454:                                              ; preds = %.preheader.4
  %455 = add i8 %453, -65
  %or.cond383.4 = icmp ult i8 %455, 26
  br i1 %or.cond383.4, label %456, label %.preheader.5

456:                                              ; preds = %454
  %457 = or disjoint i8 %453, 32
  store i8 %457, ptr %452, align 1, !tbaa !35
  br label %.preheader.5

.preheader.5:                                     ; preds = %456, %454
  %458 = getelementptr inbounds i8, ptr %.6400, i64 5
  %459 = load i8, ptr %458, align 1, !tbaa !35
  %.not379.5 = icmp eq i8 %459, 0
  br i1 %.not379.5, label %.critedge, label %460

460:                                              ; preds = %.preheader.5
  %461 = add i8 %459, -65
  %or.cond383.5 = icmp ult i8 %461, 26
  br i1 %or.cond383.5, label %462, label %.preheader.6

462:                                              ; preds = %460
  %463 = or disjoint i8 %459, 32
  store i8 %463, ptr %458, align 1, !tbaa !35
  br label %.preheader.6

.preheader.6:                                     ; preds = %462, %460
  %464 = getelementptr inbounds i8, ptr %.6400, i64 6
  %465 = load i8, ptr %464, align 1, !tbaa !35
  %.not379.6 = icmp eq i8 %465, 0
  br i1 %.not379.6, label %.critedge, label %466

466:                                              ; preds = %.preheader.6
  %467 = add i8 %465, -65
  %or.cond383.6 = icmp ult i8 %467, 26
  br i1 %or.cond383.6, label %468, label %.preheader.7

468:                                              ; preds = %466
  %469 = or disjoint i8 %465, 32
  store i8 %469, ptr %464, align 1, !tbaa !35
  br label %.preheader.7

.preheader.7:                                     ; preds = %468, %466
  %470 = getelementptr inbounds i8, ptr %.6400, i64 7
  %471 = load i8, ptr %470, align 1, !tbaa !35
  %.not379.7 = icmp eq i8 %471, 0
  br i1 %.not379.7, label %.critedge, label %472

472:                                              ; preds = %.preheader.7
  %473 = add i8 %471, -65
  %or.cond383.7 = icmp ult i8 %473, 26
  br i1 %or.cond383.7, label %474, label %.preheader.8

474:                                              ; preds = %472
  %475 = or disjoint i8 %471, 32
  store i8 %475, ptr %470, align 1, !tbaa !35
  br label %.preheader.8

.preheader.8:                                     ; preds = %474, %472
  %476 = getelementptr inbounds i8, ptr %.6400, i64 8
  %477 = load i8, ptr %476, align 1, !tbaa !35
  %.not379.8 = icmp eq i8 %477, 0
  br i1 %.not379.8, label %.critedge, label %478

478:                                              ; preds = %.preheader.8
  %479 = add i8 %477, -65
  %or.cond383.8 = icmp ult i8 %479, 26
  br i1 %or.cond383.8, label %480, label %.preheader.9

480:                                              ; preds = %478
  %481 = or disjoint i8 %477, 32
  store i8 %481, ptr %476, align 1, !tbaa !35
  br label %.preheader.9

.preheader.9:                                     ; preds = %480, %478
  %482 = getelementptr inbounds i8, ptr %.6400, i64 9
  %483 = load i8, ptr %482, align 1, !tbaa !35
  %.not379.9 = icmp eq i8 %483, 0
  br i1 %.not379.9, label %.critedge, label %484

484:                                              ; preds = %.preheader.9
  %485 = add i8 %483, -65
  %or.cond383.9 = icmp ult i8 %485, 26
  br i1 %or.cond383.9, label %486, label %.preheader.10

486:                                              ; preds = %484
  %487 = or disjoint i8 %483, 32
  store i8 %487, ptr %482, align 1, !tbaa !35
  br label %.preheader.10

.preheader.10:                                    ; preds = %486, %484
  %488 = getelementptr inbounds i8, ptr %.6400, i64 10
  %489 = load i8, ptr %488, align 1, !tbaa !35
  %.not379.10 = icmp eq i8 %489, 0
  br i1 %.not379.10, label %.critedge, label %490

490:                                              ; preds = %.preheader.10
  %491 = add i8 %489, -65
  %or.cond383.10 = icmp ult i8 %491, 26
  br i1 %or.cond383.10, label %492, label %.preheader.11

492:                                              ; preds = %490
  %493 = or disjoint i8 %489, 32
  store i8 %493, ptr %488, align 1, !tbaa !35
  br label %.preheader.11

.preheader.11:                                    ; preds = %492, %490
  %494 = getelementptr inbounds i8, ptr %.6400, i64 11
  %495 = load i8, ptr %494, align 1, !tbaa !35
  %496 = add i8 %495, -65
  %or.cond383.11 = icmp ult i8 %496, 26
  br i1 %or.cond383.11, label %497, label %.critedge

497:                                              ; preds = %.preheader.11
  %498 = or disjoint i8 %495, 32
  store i8 %498, ptr %494, align 1, !tbaa !35
  br label %.critedge

.critedge:                                        ; preds = %.preheader.preheader, %.preheader.1, %.preheader.2, %.preheader.3, %.preheader.4, %.preheader.5, %.preheader.6, %.preheader.7, %.preheader.8, %.preheader.9, %.preheader.10, %.preheader.11, %497, %.loopexit
  %499 = getelementptr inbounds i8, ptr %.1286398, i64 14
  %500 = load i8, ptr %425, align 1, !tbaa !35
  %501 = getelementptr inbounds i8, ptr %3, i64 34
  store i8 %500, ptr %501, align 2, !tbaa !44
  %502 = call i32 @_fx_utility_16_unsigned_read(ptr noundef nonnull %499) #5
  %503 = getelementptr inbounds i8, ptr %3, i64 36
  store i32 %502, ptr %503, align 4, !tbaa !45
  %504 = getelementptr inbounds i8, ptr %.1286398, i64 16
  %505 = call i32 @_fx_utility_16_unsigned_read(ptr noundef nonnull %504) #5
  %506 = getelementptr inbounds i8, ptr %3, i64 40
  store i32 %505, ptr %506, align 8, !tbaa !46
  %507 = getelementptr inbounds i8, ptr %.1286398, i64 18
  %508 = call i32 @_fx_utility_16_unsigned_read(ptr noundef nonnull %507) #5
  %509 = getelementptr inbounds i8, ptr %3, i64 44
  store i32 %508, ptr %509, align 4, !tbaa !47
  %510 = getelementptr inbounds i8, ptr %0, i64 144
  %511 = load i32, ptr %510, align 8, !tbaa !17
  %.not380 = icmp eq i32 %511, 0
  br i1 %.not380, label %517, label %512

512:                                              ; preds = %.critedge
  %513 = getelementptr inbounds i8, ptr %.1286398, i64 20
  %514 = call i32 @_fx_utility_16_unsigned_read(ptr noundef nonnull %513) #5
  %515 = zext i32 %514 to i64
  %516 = shl nuw nsw i64 %515, 16
  br label %517

517:                                              ; preds = %.critedge, %512
  %.sink = phi i64 [ %516, %512 ], [ 0, %.critedge ]
  %518 = getelementptr inbounds i8, ptr %3, i64 56
  store i64 %.sink, ptr %518, align 8
  %519 = getelementptr inbounds i8, ptr %.1286398, i64 22
  %520 = call i32 @_fx_utility_16_unsigned_read(ptr noundef nonnull %519) #5
  %521 = getelementptr inbounds i8, ptr %3, i64 48
  store i32 %520, ptr %521, align 8, !tbaa !48
  %522 = getelementptr inbounds i8, ptr %.1286398, i64 24
  %523 = call i32 @_fx_utility_16_unsigned_read(ptr noundef nonnull %522) #5
  %524 = getelementptr inbounds i8, ptr %3, i64 52
  store i32 %523, ptr %524, align 4, !tbaa !49
  %525 = getelementptr inbounds i8, ptr %.1286398, i64 26
  %526 = call i32 @_fx_utility_16_unsigned_read(ptr noundef nonnull %525) #5
  %527 = zext i32 %526 to i64
  %528 = load i64, ptr %518, align 8, !tbaa !26
  %529 = add i64 %528, %527
  store i64 %529, ptr %518, align 8, !tbaa !26
  %530 = getelementptr inbounds i8, ptr %.1286398, i64 28
  %531 = call i64 @_fx_utility_32_unsigned_read(ptr noundef nonnull %530) #5
  %532 = getelementptr inbounds i8, ptr %3, i64 64
  store i64 %531, ptr %532, align 8, !tbaa !50
  %533 = getelementptr inbounds i8, ptr %3, i64 96
  %534 = getelementptr inbounds i8, ptr %3, i64 88
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %533, i8 0, i64 32, i1 false)
  store i64 %.1279402, ptr %534, align 8, !tbaa !51
  store i64 %.1279402, ptr %2, align 8, !tbaa !5
  br i1 %.not, label %.loopexit413, label %535

535:                                              ; preds = %517
  %536 = getelementptr inbounds i8, ptr %1, i64 96
  store i64 %.6310394, ptr %536, align 8, !tbaa !20
  %537 = zext i32 %.4303396 to i64
  %538 = getelementptr inbounds i8, ptr %1, i64 104
  store i64 %537, ptr %538, align 8, !tbaa !21
  %539 = getelementptr inbounds i8, ptr %1, i64 72
  %540 = getelementptr inbounds i8, ptr %1, i64 112
  %541 = load <2 x i64>, ptr %539, align 8, !tbaa !35
  store <2 x i64> %541, ptr %540, align 8, !tbaa !35
  br label %.loopexit413

.loopexit413:                                     ; preds = %66, %61, %63, %238, %232, %217, %220, %215, %142, %517, %535, %120, %87, %._crit_edge, %16
  %.0287 = phi i32 [ 2, %16 ], [ %82, %._crit_edge ], [ %98, %87 ], [ 8, %120 ], [ 0, %535 ], [ 0, %517 ], [ %240, %238 ], [ 8, %232 ], [ 8, %217 ], [ 8, %220 ], [ %216, %215 ], [ 8, %142 ], [ %67, %66 ], [ 8, %61 ], [ 8, %63 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #5
  ret i32 %.0287
}

; 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_FAT_entry_read(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

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_16_unsigned_read(ptr noundef) local_unnamed_addr #2

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


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