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

; 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_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_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_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 }
%struct.TX_THREAD_STRUCT = type { i64, i64, ptr, ptr, ptr, i64, i64, i64, ptr, ptr, ptr, i32, i32, i32, i32, i32, ptr, ptr, i64, %struct.TX_TIMER_INTERNAL_STRUCT, ptr, ptr, ptr, ptr, i64, ptr, i32, i32, ptr, ptr, ptr, ptr, i32, i32, i32, i32, ptr, ptr, ptr, i64 }
%struct.TX_TIMER_INTERNAL_STRUCT = type { i64, i64, ptr, i64, ptr, ptr, ptr }

@_tx_thread_current_ptr = external global ptr, align 8

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

47:                                               ; preds = %5
  %48 = load ptr, ptr %10, align 8, !tbaa !5
  %49 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %48, i32 0, i32 0
  %50 = load ptr, ptr %49, align 8, !tbaa !18
  %51 = getelementptr inbounds i8, ptr %50, i64 0
  store i8 0, ptr %51, align 1, !tbaa !19
  br label %52

52:                                               ; preds = %47, %5
  %53 = load ptr, ptr %8, align 8, !tbaa !5
  %54 = load i8, ptr %53, align 1, !tbaa !19
  %55 = sext i8 %54 to i32
  %56 = icmp eq i32 %55, 92
  br i1 %56, label %62, label %57

57:                                               ; preds = %52
  %58 = load ptr, ptr %8, align 8, !tbaa !5
  %59 = load i8, ptr %58, align 1, !tbaa !19
  %60 = sext i8 %59 to i32
  %61 = icmp eq i32 %60, 47
  br i1 %61, label %62, label %63

62:                                               ; preds = %57, %52
  store ptr null, ptr %26, align 8, !tbaa !5
  br label %110

63:                                               ; preds = %57
  %64 = load ptr, ptr @_tx_thread_current_ptr, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.TX_THREAD_STRUCT, ptr %64, i32 0, i32 31
  %66 = load ptr, ptr %65, align 8, !tbaa !20
  %67 = icmp ne ptr %66, null
  br i1 %67, label %68, label %90

68:                                               ; preds = %63
  %69 = load ptr, ptr @_tx_thread_current_ptr, align 8, !tbaa !5
  %70 = getelementptr inbounds %struct.TX_THREAD_STRUCT, ptr %69, i32 0, i32 31
  %71 = load ptr, ptr %70, align 8, !tbaa !20
  %72 = getelementptr inbounds %struct.FX_PATH_STRUCT, ptr %71, i32 0, i32 0
  %73 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %72, i32 0, i32 0
  %74 = load ptr, ptr %73, align 8, !tbaa !23
  %75 = getelementptr inbounds i8, ptr %74, i64 0
  %76 = load i8, ptr %75, align 1, !tbaa !19
  %77 = icmp ne i8 %76, 0
  br i1 %77, label %78, label %88

78:                                               ; preds = %68
  %79 = load ptr, ptr @_tx_thread_current_ptr, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct.TX_THREAD_STRUCT, ptr %79, i32 0, i32 31
  %81 = load ptr, ptr %80, align 8, !tbaa !20
  %82 = getelementptr inbounds %struct.FX_PATH_STRUCT, ptr %81, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %25, ptr align 8 %82, i64 136, i1 false), !tbaa.struct !24
  %83 = load ptr, ptr @_tx_thread_current_ptr, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.TX_THREAD_STRUCT, ptr %83, i32 0, i32 31
  %85 = load ptr, ptr %84, align 8, !tbaa !20
  %86 = getelementptr inbounds %struct.FX_PATH_STRUCT, ptr %85, i32 0, i32 1
  %87 = getelementptr inbounds [256 x i8], ptr %86, i64 0, i64 0
  store ptr %87, ptr %31, align 8, !tbaa !5
  store ptr %25, ptr %26, align 8, !tbaa !5
  br label %89

88:                                               ; preds = %68
  store ptr null, ptr %26, align 8, !tbaa !5
  br label %89

89:                                               ; preds = %88, %78
  br label %109

90:                                               ; preds = %63
  %91 = load ptr, ptr %7, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %91, i32 0, i32 118
  %93 = getelementptr inbounds %struct.FX_PATH_STRUCT, ptr %92, i32 0, i32 0
  %94 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %93, i32 0, i32 0
  %95 = load ptr, ptr %94, align 8, !tbaa !27
  %96 = getelementptr inbounds i8, ptr %95, i64 0
  %97 = load i8, ptr %96, align 1, !tbaa !19
  %98 = icmp ne i8 %97, 0
  br i1 %98, label %99, label %107

99:                                               ; preds = %90
  %100 = load ptr, ptr %7, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %100, i32 0, i32 118
  %102 = getelementptr inbounds %struct.FX_PATH_STRUCT, ptr %101, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %25, ptr align 8 %102, i64 136, i1 false), !tbaa.struct !24
  %103 = load ptr, ptr %7, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %103, i32 0, i32 118
  %105 = getelementptr inbounds %struct.FX_PATH_STRUCT, ptr %104, i32 0, i32 1
  %106 = getelementptr inbounds [256 x i8], ptr %105, i64 0, i64 0
  store ptr %106, ptr %31, align 8, !tbaa !5
  store ptr %25, ptr %26, align 8, !tbaa !5
  br label %108

107:                                              ; preds = %90
  store ptr null, ptr %26, align 8, !tbaa !5
  br label %108

108:                                              ; preds = %107, %99
  br label %109

109:                                              ; preds = %108, %89
  br label %110

110:                                              ; preds = %109, %62
  %111 = load ptr, ptr %7, align 8, !tbaa !5
  %112 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %111, i32 0, i32 117
  %113 = getelementptr inbounds [256 x i8], ptr %112, i64 0, i64 0
  %114 = load i8, ptr %113, align 8, !tbaa !19
  %115 = icmp ne i8 %114, 0
  br i1 %115, label %116, label %454

116:                                              ; preds = %110
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #4
  store i32 0, ptr %16, align 4, !tbaa !25
  %117 = load ptr, ptr %8, align 8, !tbaa !5
  %118 = load i8, ptr %117, align 1, !tbaa !19
  %119 = sext i8 %118 to i32
  %120 = icmp eq i32 %119, 92
  br i1 %120, label %126, label %121

121:                                              ; preds = %116
  %122 = load ptr, ptr %8, align 8, !tbaa !5
  %123 = load i8, ptr %122, align 1, !tbaa !19
  %124 = sext i8 %123 to i32
  %125 = icmp eq i32 %124, 47
  br i1 %125, label %126, label %189

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

127:                                              ; preds = %168, %126
  %128 = load i32, ptr %16, align 4, !tbaa !25
  %129 = icmp ult i32 %128, 255
  br i1 %129, label %130, label %138

130:                                              ; preds = %127
  %131 = load ptr, ptr %8, align 8, !tbaa !5
  %132 = load i32, ptr %16, align 4, !tbaa !25
  %133 = zext i32 %132 to i64
  %134 = getelementptr inbounds i8, ptr %131, i64 %133
  %135 = load i8, ptr %134, align 1, !tbaa !19
  %136 = sext i8 %135 to i32
  %137 = icmp ne i32 %136, 0
  br label %138

138:                                              ; preds = %130, %127
  %139 = phi i1 [ false, %127 ], [ %137, %130 ]
  br i1 %139, label %140, label %171

140:                                              ; preds = %138
  %141 = load ptr, ptr %8, align 8, !tbaa !5
  %142 = load i32, ptr %16, align 4, !tbaa !25
  %143 = zext i32 %142 to i64
  %144 = getelementptr inbounds i8, ptr %141, i64 %143
  %145 = load i8, ptr %144, align 1, !tbaa !19
  store i8 %145, ptr %28, align 1, !tbaa !19
  %146 = load ptr, ptr %7, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %146, i32 0, i32 117
  %148 = load i32, ptr %16, align 4, !tbaa !25
  %149 = zext i32 %148 to i64
  %150 = getelementptr inbounds [256 x i8], ptr %147, i64 0, i64 %149
  %151 = load i8, ptr %150, align 1, !tbaa !19
  store i8 %151, ptr %35, align 1, !tbaa !19
  %152 = load i8, ptr %28, align 1, !tbaa !19
  %153 = sext i8 %152 to i32
  %154 = icmp eq i32 %153, 92
  br i1 %154, label %155, label %156

155:                                              ; preds = %140
  store i8 47, ptr %28, align 1, !tbaa !19
  br label %156

156:                                              ; preds = %155, %140
  %157 = load i8, ptr %35, align 1, !tbaa !19
  %158 = sext i8 %157 to i32
  %159 = icmp eq i32 %158, 92
  br i1 %159, label %160, label %161

160:                                              ; preds = %156
  store i8 47, ptr %35, align 1, !tbaa !19
  br label %161

161:                                              ; preds = %160, %156
  %162 = load i8, ptr %28, align 1, !tbaa !19
  %163 = sext i8 %162 to i32
  %164 = load i8, ptr %35, align 1, !tbaa !19
  %165 = sext i8 %164 to i32
  %166 = icmp ne i32 %163, %165
  br i1 %166, label %167, label %168

167:                                              ; preds = %161
  br label %171

168:                                              ; preds = %161
  %169 = load i32, ptr %16, align 4, !tbaa !25
  %170 = add i32 %169, 1
  store i32 %170, ptr %16, align 4, !tbaa !25
  br label %127, !llvm.loop !28

171:                                              ; preds = %167, %138
  %172 = load ptr, ptr %8, align 8, !tbaa !5
  %173 = load i32, ptr %16, align 4, !tbaa !25
  %174 = zext i32 %173 to i64
  %175 = getelementptr inbounds i8, ptr %172, i64 %174
  %176 = load i8, ptr %175, align 1, !tbaa !19
  %177 = sext i8 %176 to i32
  %178 = load ptr, ptr %7, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %178, i32 0, i32 117
  %180 = load i32, ptr %16, align 4, !tbaa !25
  %181 = zext i32 %180 to i64
  %182 = getelementptr inbounds [256 x i8], ptr %179, i64 0, i64 %181
  %183 = load i8, ptr %182, align 1, !tbaa !19
  %184 = sext i8 %183 to i32
  %185 = icmp ne i32 %177, %184
  br i1 %185, label %186, label %187

186:                                              ; preds = %171
  store i32 0, ptr %33, align 4, !tbaa !25
  br label %188

187:                                              ; preds = %171
  store i32 1, ptr %33, align 4, !tbaa !25
  br label %188

188:                                              ; preds = %187, %186
  br label %347

189:                                              ; preds = %121
  store i32 1, ptr %33, align 4, !tbaa !25
  %190 = load ptr, ptr %31, align 8, !tbaa !5
  %191 = icmp ne ptr %190, null
  br i1 %191, label %192, label %246

192:                                              ; preds = %189
  br label %193

193:                                              ; preds = %234, %192
  %194 = load i32, ptr %16, align 4, !tbaa !25
  %195 = icmp ult i32 %194, 255
  br i1 %195, label %196, label %204

196:                                              ; preds = %193
  %197 = load ptr, ptr %31, align 8, !tbaa !5
  %198 = load i32, ptr %16, align 4, !tbaa !25
  %199 = zext i32 %198 to i64
  %200 = getelementptr inbounds i8, ptr %197, i64 %199
  %201 = load i8, ptr %200, align 1, !tbaa !19
  %202 = sext i8 %201 to i32
  %203 = icmp ne i32 %202, 0
  br label %204

204:                                              ; preds = %196, %193
  %205 = phi i1 [ false, %193 ], [ %203, %196 ]
  br i1 %205, label %206, label %237

206:                                              ; preds = %204
  %207 = load ptr, ptr %7, align 8, !tbaa !5
  %208 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %207, i32 0, i32 117
  %209 = load i32, ptr %16, align 4, !tbaa !25
  %210 = zext i32 %209 to i64
  %211 = getelementptr inbounds [256 x i8], ptr %208, i64 0, i64 %210
  %212 = load i8, ptr %211, align 1, !tbaa !19
  store i8 %212, ptr %28, align 1, !tbaa !19
  %213 = load ptr, ptr %31, align 8, !tbaa !5
  %214 = load i32, ptr %16, align 4, !tbaa !25
  %215 = zext i32 %214 to i64
  %216 = getelementptr inbounds i8, ptr %213, i64 %215
  %217 = load i8, ptr %216, align 1, !tbaa !19
  store i8 %217, ptr %35, align 1, !tbaa !19
  %218 = load i8, ptr %28, align 1, !tbaa !19
  %219 = sext i8 %218 to i32
  %220 = icmp eq i32 %219, 92
  br i1 %220, label %221, label %222

221:                                              ; preds = %206
  store i8 47, ptr %28, align 1, !tbaa !19
  br label %222

222:                                              ; preds = %221, %206
  %223 = load i8, ptr %35, align 1, !tbaa !19
  %224 = sext i8 %223 to i32
  %225 = icmp eq i32 %224, 92
  br i1 %225, label %226, label %227

226:                                              ; preds = %222
  store i8 47, ptr %35, align 1, !tbaa !19
  br label %227

227:                                              ; preds = %226, %222
  %228 = load i8, ptr %28, align 1, !tbaa !19
  %229 = sext i8 %228 to i32
  %230 = load i8, ptr %35, align 1, !tbaa !19
  %231 = sext i8 %230 to i32
  %232 = icmp ne i32 %229, %231
  br i1 %232, label %233, label %234

233:                                              ; preds = %227
  br label %237

234:                                              ; preds = %227
  %235 = load i32, ptr %16, align 4, !tbaa !25
  %236 = add i32 %235, 1
  store i32 %236, ptr %16, align 4, !tbaa !25
  br label %193, !llvm.loop !30

237:                                              ; preds = %233, %204
  %238 = load ptr, ptr %31, align 8, !tbaa !5
  %239 = load i32, ptr %16, align 4, !tbaa !25
  %240 = zext i32 %239 to i64
  %241 = getelementptr inbounds i8, ptr %238, i64 %240
  %242 = load i8, ptr %241, align 1, !tbaa !19
  %243 = icmp ne i8 %242, 0
  br i1 %243, label %244, label %245

244:                                              ; preds = %237
  store i32 0, ptr %33, align 4, !tbaa !25
  br label %245

245:                                              ; preds = %244, %237
  br label %246

246:                                              ; preds = %245, %189
  %247 = load i32, ptr %33, align 4, !tbaa !25
  %248 = icmp ne i32 %247, 0
  br i1 %248, label %249, label %346

249:                                              ; preds = %246
  %250 = load ptr, ptr %7, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %250, i32 0, i32 117
  %252 = load i32, ptr %16, align 4, !tbaa !25
  %253 = zext i32 %252 to i64
  %254 = getelementptr inbounds [256 x i8], ptr %251, i64 0, i64 %253
  %255 = load i8, ptr %254, align 1, !tbaa !19
  %256 = sext i8 %255 to i32
  %257 = icmp ne i32 %256, 92
  br i1 %257, label %258, label %268

258:                                              ; preds = %249
  %259 = load ptr, ptr %7, align 8, !tbaa !5
  %260 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %259, i32 0, i32 117
  %261 = load i32, ptr %16, align 4, !tbaa !25
  %262 = zext i32 %261 to i64
  %263 = getelementptr inbounds [256 x i8], ptr %260, i64 0, i64 %262
  %264 = load i8, ptr %263, align 1, !tbaa !19
  %265 = sext i8 %264 to i32
  %266 = icmp ne i32 %265, 47
  br i1 %266, label %267, label %268

267:                                              ; preds = %258
  store i32 0, ptr %33, align 4, !tbaa !25
  br label %271

268:                                              ; preds = %258, %249
  %269 = load i32, ptr %16, align 4, !tbaa !25
  %270 = add i32 %269, 1
  store i32 %270, ptr %16, align 4, !tbaa !25
  br label %271

271:                                              ; preds = %268, %267
  store i32 0, ptr %17, align 4, !tbaa !25
  br label %272

272:                                              ; preds = %316, %271
  %273 = load i32, ptr %16, align 4, !tbaa !25
  %274 = icmp ult i32 %273, 255
  br i1 %274, label %275, label %286

275:                                              ; preds = %272
  %276 = load ptr, ptr %8, align 8, !tbaa !5
  %277 = load i32, ptr %17, align 4, !tbaa !25
  %278 = zext i32 %277 to i64
  %279 = getelementptr inbounds i8, ptr %276, i64 %278
  %280 = load i8, ptr %279, align 1, !tbaa !19
  %281 = sext i8 %280 to i32
  %282 = icmp ne i32 %281, 0
  br i1 %282, label %283, label %286

283:                                              ; preds = %275
  %284 = load i32, ptr %33, align 4, !tbaa !25
  %285 = icmp ne i32 %284, 0
  br label %286

286:                                              ; preds = %283, %275, %272
  %287 = phi i1 [ false, %275 ], [ false, %272 ], [ %285, %283 ]
  br i1 %287, label %288, label %321

288:                                              ; preds = %286
  %289 = load ptr, ptr %8, align 8, !tbaa !5
  %290 = load i32, ptr %17, align 4, !tbaa !25
  %291 = zext i32 %290 to i64
  %292 = getelementptr inbounds i8, ptr %289, i64 %291
  %293 = load i8, ptr %292, align 1, !tbaa !19
  store i8 %293, ptr %28, align 1, !tbaa !19
  %294 = load ptr, ptr %7, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %294, i32 0, i32 117
  %296 = load i32, ptr %16, align 4, !tbaa !25
  %297 = zext i32 %296 to i64
  %298 = getelementptr inbounds [256 x i8], ptr %295, i64 0, i64 %297
  %299 = load i8, ptr %298, align 1, !tbaa !19
  store i8 %299, ptr %35, align 1, !tbaa !19
  %300 = load i8, ptr %28, align 1, !tbaa !19
  %301 = sext i8 %300 to i32
  %302 = icmp eq i32 %301, 92
  br i1 %302, label %303, label %304

303:                                              ; preds = %288
  store i8 47, ptr %28, align 1, !tbaa !19
  br label %304

304:                                              ; preds = %303, %288
  %305 = load i8, ptr %35, align 1, !tbaa !19
  %306 = sext i8 %305 to i32
  %307 = icmp eq i32 %306, 92
  br i1 %307, label %308, label %309

308:                                              ; preds = %304
  store i8 47, ptr %35, align 1, !tbaa !19
  br label %309

309:                                              ; preds = %308, %304
  %310 = load i8, ptr %28, align 1, !tbaa !19
  %311 = sext i8 %310 to i32
  %312 = load i8, ptr %35, align 1, !tbaa !19
  %313 = sext i8 %312 to i32
  %314 = icmp ne i32 %311, %313
  br i1 %314, label %315, label %316

315:                                              ; preds = %309
  br label %321

316:                                              ; preds = %309
  %317 = load i32, ptr %16, align 4, !tbaa !25
  %318 = add i32 %317, 1
  store i32 %318, ptr %16, align 4, !tbaa !25
  %319 = load i32, ptr %17, align 4, !tbaa !25
  %320 = add i32 %319, 1
  store i32 %320, ptr %17, align 4, !tbaa !25
  br label %272, !llvm.loop !31

321:                                              ; preds = %315, %286
  %322 = load i32, ptr %16, align 4, !tbaa !25
  %323 = icmp uge i32 %322, 256
  br i1 %323, label %324, label %325

324:                                              ; preds = %321
  store i32 0, ptr %33, align 4, !tbaa !25
  br label %345

325:                                              ; preds = %321
  %326 = load i32, ptr %33, align 4, !tbaa !25
  %327 = icmp ne i32 %326, 0
  br i1 %327, label %328, label %344

328:                                              ; preds = %325
  %329 = load ptr, ptr %8, align 8, !tbaa !5
  %330 = load i32, ptr %17, align 4, !tbaa !25
  %331 = zext i32 %330 to i64
  %332 = getelementptr inbounds i8, ptr %329, i64 %331
  %333 = load i8, ptr %332, align 1, !tbaa !19
  %334 = sext i8 %333 to i32
  %335 = load ptr, ptr %7, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %335, i32 0, i32 117
  %337 = load i32, ptr %16, align 4, !tbaa !25
  %338 = zext i32 %337 to i64
  %339 = getelementptr inbounds [256 x i8], ptr %336, i64 0, i64 %338
  %340 = load i8, ptr %339, align 1, !tbaa !19
  %341 = sext i8 %340 to i32
  %342 = icmp ne i32 %334, %341
  br i1 %342, label %343, label %344

343:                                              ; preds = %328
  store i32 0, ptr %33, align 4, !tbaa !25
  br label %344

344:                                              ; preds = %343, %328, %325
  br label %345

345:                                              ; preds = %344, %324
  br label %346

346:                                              ; preds = %345, %246
  br label %347

347:                                              ; preds = %346, %188
  %348 = load i32, ptr %33, align 4, !tbaa !25
  %349 = icmp ne i32 %348, 0
  br i1 %349, label %350, label %450

350:                                              ; preds = %347
  %351 = load ptr, ptr %9, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %351, i32 0, i32 0
  %353 = load ptr, ptr %352, align 8, !tbaa !18
  store ptr %353, ptr %34, align 8, !tbaa !5
  %354 = load ptr, ptr %9, align 8, !tbaa !5
  %355 = load ptr, ptr %7, align 8, !tbaa !5
  %356 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %355, i32 0, i32 115
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %354, ptr align 8 %356, i64 136, i1 false), !tbaa.struct !24
  %357 = load ptr, ptr %34, align 8, !tbaa !5
  %358 = load ptr, ptr %9, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %358, i32 0, i32 0
  store ptr %357, ptr %359, align 8, !tbaa !18
  store i32 0, ptr %30, align 4, !tbaa !25
  br label %360

360:                                              ; preds = %387, %350
  %361 = load i32, ptr %30, align 4, !tbaa !25
  %362 = icmp ult i32 %361, 256
  br i1 %362, label %363, label %390

363:                                              ; preds = %360
  %364 = load ptr, ptr %7, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %364, i32 0, i32 116
  %366 = load i32, ptr %30, align 4, !tbaa !25
  %367 = zext i32 %366 to i64
  %368 = getelementptr inbounds [256 x i8], ptr %365, i64 0, i64 %367
  %369 = load i8, ptr %368, align 1, !tbaa !19
  %370 = load ptr, ptr %34, align 8, !tbaa !5
  %371 = load i32, ptr %30, align 4, !tbaa !25
  %372 = zext i32 %371 to i64
  %373 = getelementptr inbounds i8, ptr %370, i64 %372
  store i8 %369, ptr %373, align 1, !tbaa !19
  %374 = load ptr, ptr %34, align 8, !tbaa !5
  %375 = load i32, ptr %30, align 4, !tbaa !25
  %376 = zext i32 %375 to i64
  %377 = getelementptr inbounds i8, ptr %374, i64 %376
  %378 = load i8, ptr %377, align 1, !tbaa !19
  %379 = sext i8 %378 to i32
  %380 = icmp eq i32 %379, 0
  br i1 %380, label %381, label %386

381:                                              ; preds = %363
  %382 = load i32, ptr %30, align 4, !tbaa !25
  %383 = icmp ult i32 %382, 255
  br i1 %383, label %384, label %385

384:                                              ; preds = %381
  br label %390

385:                                              ; preds = %381
  br label %386

386:                                              ; preds = %385, %363
  br label %387

387:                                              ; preds = %386
  %388 = load i32, ptr %30, align 4, !tbaa !25
  %389 = add i32 %388, 1
  store i32 %389, ptr %30, align 4, !tbaa !25
  br label %360, !llvm.loop !32

390:                                              ; preds = %384, %360
  %391 = load ptr, ptr %10, align 8, !tbaa !5
  %392 = icmp ne ptr %391, null
  br i1 %392, label %393, label %439

393:                                              ; preds = %390
  %394 = load ptr, ptr %7, align 8, !tbaa !5
  %395 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %394, i32 0, i32 113
  %396 = load i32, ptr %395, align 8, !tbaa !33
  %397 = icmp ne i32 %396, 0
  br i1 %397, label %398, label %439

398:                                              ; preds = %393
  %399 = load ptr, ptr %10, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %399, i32 0, i32 0
  %401 = load ptr, ptr %400, align 8, !tbaa !18
  store ptr %401, ptr %24, align 8, !tbaa !5
  %402 = load ptr, ptr %10, align 8, !tbaa !5
  %403 = load ptr, ptr %7, align 8, !tbaa !5
  %404 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %403, i32 0, i32 114
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %402, ptr align 8 %404, i64 136, i1 false), !tbaa.struct !24
  %405 = load ptr, ptr %24, align 8, !tbaa !5
  %406 = load ptr, ptr %10, align 8, !tbaa !5
  %407 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %406, i32 0, i32 0
  store ptr %405, ptr %407, align 8, !tbaa !18
  %408 = load ptr, ptr %7, align 8, !tbaa !5
  %409 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %408, i32 0, i32 114
  %410 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %409, i32 0, i32 0
  %411 = load ptr, ptr %410, align 8, !tbaa !34
  store ptr %411, ptr %23, align 8, !tbaa !5
  store i64 0, ptr %13, align 8, !tbaa !9
  br label %412

412:                                              ; preds = %435, %398
  %413 = load i64, ptr %13, align 8, !tbaa !9
  %414 = icmp ult i64 %413, 256
  br i1 %414, label %415, label %438

415:                                              ; preds = %412
  %416 = load ptr, ptr %23, align 8, !tbaa !5
  %417 = load i64, ptr %13, align 8, !tbaa !9
  %418 = getelementptr inbounds i8, ptr %416, i64 %417
  %419 = load i8, ptr %418, align 1, !tbaa !19
  %420 = load ptr, ptr %24, align 8, !tbaa !5
  %421 = load i64, ptr %13, align 8, !tbaa !9
  %422 = getelementptr inbounds i8, ptr %420, i64 %421
  store i8 %419, ptr %422, align 1, !tbaa !19
  %423 = load ptr, ptr %23, align 8, !tbaa !5
  %424 = load i64, ptr %13, align 8, !tbaa !9
  %425 = getelementptr inbounds i8, ptr %423, i64 %424
  %426 = load i8, ptr %425, align 1, !tbaa !19
  %427 = sext i8 %426 to i32
  %428 = icmp eq i32 %427, 0
  br i1 %428, label %429, label %434

429:                                              ; preds = %415
  %430 = load i64, ptr %13, align 8, !tbaa !9
  %431 = icmp ult i64 %430, 255
  br i1 %431, label %432, label %433

432:                                              ; preds = %429
  br label %438

433:                                              ; preds = %429
  br label %434

434:                                              ; preds = %433, %415
  br label %435

435:                                              ; preds = %434
  %436 = load i64, ptr %13, align 8, !tbaa !9
  %437 = add i64 %436, 1
  store i64 %437, ptr %13, align 8, !tbaa !9
  br label %412, !llvm.loop !35

438:                                              ; preds = %432, %412
  br label %439

439:                                              ; preds = %438, %393, %390
  %440 = load ptr, ptr %11, align 8, !tbaa !5
  %441 = icmp ne ptr %440, null
  br i1 %441, label %442, label %445

442:                                              ; preds = %439
  %443 = load ptr, ptr %34, align 8, !tbaa !5
  %444 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %443, ptr %444, align 8, !tbaa !5
  br label %445

445:                                              ; preds = %442, %439
  %446 = load ptr, ptr %7, align 8, !tbaa !5
  %447 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %446, i32 0, i32 111
  %448 = load i64, ptr %447, align 8, !tbaa !36
  %449 = add i64 %448, 1
  store i64 %449, ptr %447, align 8, !tbaa !36
  store i32 0, ptr %6, align 4
  store i32 1, ptr %36, align 4
  br label %451

450:                                              ; preds = %347
  store i32 0, ptr %36, align 4
  br label %451

451:                                              ; preds = %450, %445
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  %452 = load i32, ptr %36, align 4
  switch i32 %452, label %981 [
    i32 0, label %453
  ]

453:                                              ; preds = %451
  br label %454

454:                                              ; preds = %453, %110
  %455 = load ptr, ptr %7, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %455, i32 0, i32 117
  %457 = getelementptr inbounds [256 x i8], ptr %456, i64 0, i64 0
  store i8 0, ptr %457, align 8, !tbaa !19
  br label %458

458:                                              ; preds = %817, %454
  %459 = load ptr, ptr %11, align 8, !tbaa !5
  %460 = icmp ne ptr %459, null
  br i1 %460, label %461, label %464

461:                                              ; preds = %458
  %462 = load ptr, ptr %8, align 8, !tbaa !5
  %463 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %462, ptr %463, align 8, !tbaa !5
  br label %464

464:                                              ; preds = %461, %458
  %465 = load ptr, ptr %8, align 8, !tbaa !5
  %466 = load ptr, ptr %27, align 8, !tbaa !5
  %467 = call ptr @_fx_directory_name_extract(ptr noundef %465, ptr noundef %466)
  store ptr %467, ptr %8, align 8, !tbaa !5
  %468 = load ptr, ptr %26, align 8, !tbaa !5
  %469 = icmp ne ptr %468, null
  br i1 %469, label %470, label %566

470:                                              ; preds = %464
  %471 = load ptr, ptr %26, align 8, !tbaa !5
  %472 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %471, i32 0, i32 17
  store i64 0, ptr %472, align 8, !tbaa !37
  store i64 0, ptr %12, align 8, !tbaa !9
  %473 = load ptr, ptr %26, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %473, i32 0, i32 12
  %475 = load i64, ptr %474, align 8, !tbaa !38
  store i64 %475, ptr %18, align 8, !tbaa !9
  br label %476

476:                                              ; preds = %506, %470
  %477 = load i64, ptr %18, align 8, !tbaa !9
  %478 = load ptr, ptr %7, align 8, !tbaa !5
  %479 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %478, i32 0, i32 126
  %480 = load i64, ptr %479, align 8, !tbaa !39
  %481 = icmp ult i64 %477, %480
  br i1 %481, label %482, label %508

482:                                              ; preds = %476
  %483 = load i64, ptr %12, align 8, !tbaa !9
  %484 = add i64 %483, 1
  store i64 %484, ptr %12, align 8, !tbaa !9
  %485 = load ptr, ptr %7, align 8, !tbaa !5
  %486 = load i64, ptr %18, align 8, !tbaa !9
  %487 = call i32 @_fx_utility_FAT_entry_read(ptr noundef %485, i64 noundef %486, ptr noundef %19)
  store i32 %487, ptr %15, align 4, !tbaa !25
  %488 = load i32, ptr %15, align 4, !tbaa !25
  %489 = icmp ne i32 %488, 0
  br i1 %489, label %490, label %492

490:                                              ; preds = %482
  %491 = load i32, ptr %15, align 4, !tbaa !25
  store i32 %491, ptr %6, align 4
  store i32 1, ptr %36, align 4
  br label %981

492:                                              ; preds = %482
  %493 = load i64, ptr %18, align 8, !tbaa !9
  %494 = icmp ult i64 %493, 2
  br i1 %494, label %505, label %495

495:                                              ; preds = %492
  %496 = load i64, ptr %18, align 8, !tbaa !9
  %497 = load i64, ptr %19, align 8, !tbaa !9
  %498 = icmp eq i64 %496, %497
  br i1 %498, label %505, label %499

499:                                              ; preds = %495
  %500 = load i64, ptr %12, align 8, !tbaa !9
  %501 = load ptr, ptr %7, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %501, i32 0, i32 14
  %503 = load i64, ptr %502, align 8, !tbaa !40
  %504 = icmp ugt i64 %500, %503
  br i1 %504, label %505, label %506

505:                                              ; preds = %499, %495, %492
  store i32 3, ptr %6, align 4
  store i32 1, ptr %36, align 4
  br label %981

506:                                              ; preds = %499
  %507 = load i64, ptr %19, align 8, !tbaa !9
  store i64 %507, ptr %18, align 8, !tbaa !9
  br label %476, !llvm.loop !41

508:                                              ; preds = %476
  %509 = load ptr, ptr %7, align 8, !tbaa !5
  %510 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %509, i32 0, i32 10
  %511 = load i32, ptr %510, align 8, !tbaa !42
  %512 = zext i32 %511 to i64
  %513 = load ptr, ptr %7, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %513, i32 0, i32 19
  %515 = load i32, ptr %514, align 8, !tbaa !43
  %516 = zext i32 %515 to i64
  %517 = mul i64 %512, %516
  %518 = load i64, ptr %12, align 8, !tbaa !9
  %519 = mul i64 %517, %518
  %520 = udiv i64 %519, 32
  store i64 %520, ptr %20, align 8, !tbaa !26
  %521 = load i64, ptr %20, align 8, !tbaa !26
  %522 = load ptr, ptr %26, align 8, !tbaa !5
  %523 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %522, i32 0, i32 13
  store i64 %521, ptr %523, align 8, !tbaa !44
  %524 = load ptr, ptr %10, align 8, !tbaa !5
  %525 = icmp ne ptr %524, null
  br i1 %525, label %526, label %565

526:                                              ; preds = %508
  %527 = load ptr, ptr %10, align 8, !tbaa !5
  %528 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %527, i32 0, i32 0
  %529 = load ptr, ptr %528, align 8, !tbaa !18
  store ptr %529, ptr %24, align 8, !tbaa !5
  %530 = load ptr, ptr %10, align 8, !tbaa !5
  %531 = load ptr, ptr %26, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %530, ptr align 8 %531, i64 136, i1 false), !tbaa.struct !24
  %532 = load ptr, ptr %24, align 8, !tbaa !5
  %533 = load ptr, ptr %10, align 8, !tbaa !5
  %534 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %533, i32 0, i32 0
  store ptr %532, ptr %534, align 8, !tbaa !18
  %535 = load ptr, ptr %26, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %535, i32 0, i32 0
  %537 = load ptr, ptr %536, align 8, !tbaa !18
  store ptr %537, ptr %23, align 8, !tbaa !5
  store i64 0, ptr %13, align 8, !tbaa !9
  br label %538

538:                                              ; preds = %561, %526
  %539 = load i64, ptr %13, align 8, !tbaa !9
  %540 = icmp ult i64 %539, 256
  br i1 %540, label %541, label %564

541:                                              ; preds = %538
  %542 = load ptr, ptr %23, align 8, !tbaa !5
  %543 = load i64, ptr %13, align 8, !tbaa !9
  %544 = getelementptr inbounds i8, ptr %542, i64 %543
  %545 = load i8, ptr %544, align 1, !tbaa !19
  %546 = load ptr, ptr %24, align 8, !tbaa !5
  %547 = load i64, ptr %13, align 8, !tbaa !9
  %548 = getelementptr inbounds i8, ptr %546, i64 %547
  store i8 %545, ptr %548, align 1, !tbaa !19
  %549 = load ptr, ptr %23, align 8, !tbaa !5
  %550 = load i64, ptr %13, align 8, !tbaa !9
  %551 = getelementptr inbounds i8, ptr %549, i64 %550
  %552 = load i8, ptr %551, align 1, !tbaa !19
  %553 = sext i8 %552 to i32
  %554 = icmp eq i32 %553, 0
  br i1 %554, label %555, label %560

555:                                              ; preds = %541
  %556 = load i64, ptr %13, align 8, !tbaa !9
  %557 = icmp ult i64 %556, 255
  br i1 %557, label %558, label %559

558:                                              ; preds = %555
  br label %564

559:                                              ; preds = %555
  br label %560

560:                                              ; preds = %559, %541
  br label %561

561:                                              ; preds = %560
  %562 = load i64, ptr %13, align 8, !tbaa !9
  %563 = add i64 %562, 1
  store i64 %563, ptr %13, align 8, !tbaa !9
  br label %538, !llvm.loop !45

564:                                              ; preds = %558, %538
  br label %565

565:                                              ; preds = %564, %508
  br label %571

566:                                              ; preds = %464
  %567 = load ptr, ptr %7, align 8, !tbaa !5
  %568 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %567, i32 0, i32 28
  %569 = load i32, ptr %568, align 8, !tbaa !46
  %570 = zext i32 %569 to i64
  store i64 %570, ptr %20, align 8, !tbaa !26
  br label %571

571:                                              ; preds = %566, %565
  store i64 0, ptr %12, align 8, !tbaa !9
  store i32 0, ptr %14, align 4, !tbaa !25
  br label %572

572:                                              ; preds = %754, %571
  %573 = load ptr, ptr %7, align 8, !tbaa !5
  %574 = load ptr, ptr %26, align 8, !tbaa !5
  %575 = load ptr, ptr %9, align 8, !tbaa !5
  %576 = call i32 @_fx_directory_entry_read(ptr noundef %573, ptr noundef %574, ptr noundef %12, ptr noundef %575)
  store i32 %576, ptr %15, align 4, !tbaa !25
  %577 = load i64, ptr %12, align 8, !tbaa !9
  %578 = add i64 %577, 1
  store i64 %578, ptr %12, align 8, !tbaa !9
  %579 = load i32, ptr %15, align 4, !tbaa !25
  %580 = icmp ne i32 %579, 0
  br i1 %580, label %581, label %583

581:                                              ; preds = %572
  %582 = load i32, ptr %15, align 4, !tbaa !25
  store i32 %582, ptr %6, align 4
  store i32 1, ptr %36, align 4
  br label %981

583:                                              ; preds = %572
  %584 = load ptr, ptr %9, align 8, !tbaa !5
  %585 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %584, i32 0, i32 0
  %586 = load ptr, ptr %585, align 8, !tbaa !18
  %587 = getelementptr inbounds i8, ptr %586, i64 0
  %588 = load i8, ptr %587, align 1, !tbaa !19
  %589 = zext i8 %588 to i32
  %590 = icmp eq i32 %589, 0
  br i1 %590, label %591, label %592

591:                                              ; preds = %583
  br label %756

592:                                              ; preds = %583
  %593 = load ptr, ptr %9, align 8, !tbaa !5
  %594 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %593, i32 0, i32 4
  %595 = load i8, ptr %594, align 8, !tbaa !47
  %596 = zext i8 %595 to i32
  %597 = and i32 %596, 8
  %598 = icmp ne i32 %597, 0
  br i1 %598, label %599, label %600

599:                                              ; preds = %592
  br label %746

600:                                              ; preds = %592
  %601 = load ptr, ptr %9, align 8, !tbaa !5
  %602 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %601, i32 0, i32 0
  %603 = load ptr, ptr %602, align 8, !tbaa !18
  %604 = getelementptr inbounds i8, ptr %603, i64 0
  %605 = load i8, ptr %604, align 1, !tbaa !19
  %606 = zext i8 %605 to i32
  %607 = icmp eq i32 %606, 229
  br i1 %607, label %608, label %616

608:                                              ; preds = %600
  %609 = load ptr, ptr %9, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %609, i32 0, i32 1
  %611 = getelementptr inbounds [13 x i8], ptr %610, i64 0, i64 0
  %612 = load i8, ptr %611, align 8, !tbaa !19
  %613 = sext i8 %612 to i32
  %614 = icmp eq i32 %613, 0
  br i1 %614, label %615, label %616

615:                                              ; preds = %608
  br label %746

616:                                              ; preds = %608, %600
  %617 = load ptr, ptr %27, align 8, !tbaa !5
  %618 = getelementptr inbounds i8, ptr %617, i64 0
  store ptr %618, ptr %22, align 8, !tbaa !5
  %619 = load ptr, ptr %9, align 8, !tbaa !5
  %620 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %619, i32 0, i32 0
  %621 = load ptr, ptr %620, align 8, !tbaa !18
  %622 = getelementptr inbounds i8, ptr %621, i64 0
  store ptr %622, ptr %21, align 8, !tbaa !5
  br label %623

623:                                              ; preds = %665, %616
  %624 = load ptr, ptr %21, align 8, !tbaa !5
  %625 = load i8, ptr %624, align 1, !tbaa !19
  store i8 %625, ptr %28, align 1, !tbaa !19
  %626 = load ptr, ptr %22, align 8, !tbaa !5
  %627 = load i8, ptr %626, align 1, !tbaa !19
  store i8 %627, ptr %29, align 1, !tbaa !19
  %628 = load i8, ptr %28, align 1, !tbaa !19
  %629 = sext i8 %628 to i32
  %630 = icmp sge i32 %629, 97
  br i1 %630, label %631, label %640

631:                                              ; preds = %623
  %632 = load i8, ptr %28, align 1, !tbaa !19
  %633 = sext i8 %632 to i32
  %634 = icmp sle i32 %633, 122
  br i1 %634, label %635, label %640

635:                                              ; preds = %631
  %636 = load i8, ptr %28, align 1, !tbaa !19
  %637 = sext i8 %636 to i32
  %638 = sub nsw i32 %637, 32
  %639 = trunc i32 %638 to i8
  store i8 %639, ptr %28, align 1, !tbaa !19
  br label %640

640:                                              ; preds = %635, %631, %623
  %641 = load i8, ptr %29, align 1, !tbaa !19
  %642 = sext i8 %641 to i32
  %643 = icmp sge i32 %642, 97
  br i1 %643, label %644, label %653

644:                                              ; preds = %640
  %645 = load i8, ptr %29, align 1, !tbaa !19
  %646 = sext i8 %645 to i32
  %647 = icmp sle i32 %646, 122
  br i1 %647, label %648, label %653

648:                                              ; preds = %644
  %649 = load i8, ptr %29, align 1, !tbaa !19
  %650 = sext i8 %649 to i32
  %651 = sub nsw i32 %650, 32
  %652 = trunc i32 %651 to i8
  store i8 %652, ptr %29, align 1, !tbaa !19
  br label %653

653:                                              ; preds = %648, %644, %640
  %654 = load i8, ptr %28, align 1, !tbaa !19
  %655 = sext i8 %654 to i32
  %656 = load i8, ptr %29, align 1, !tbaa !19
  %657 = sext i8 %656 to i32
  %658 = icmp ne i32 %655, %657
  br i1 %658, label %659, label %660

659:                                              ; preds = %653
  br label %669

660:                                              ; preds = %653
  %661 = load ptr, ptr %22, align 8, !tbaa !5
  %662 = getelementptr inbounds i8, ptr %661, i32 1
  store ptr %662, ptr %22, align 8, !tbaa !5
  %663 = load ptr, ptr %21, align 8, !tbaa !5
  %664 = getelementptr inbounds i8, ptr %663, i32 1
  store ptr %664, ptr %21, align 8, !tbaa !5
  br label %665

665:                                              ; preds = %660
  %666 = load ptr, ptr %21, align 8, !tbaa !5
  %667 = load i8, ptr %666, align 1, !tbaa !19
  %668 = icmp ne i8 %667, 0
  br i1 %668, label %623, label %669, !llvm.loop !48

669:                                              ; preds = %665, %659
  %670 = load ptr, ptr %21, align 8, !tbaa !5
  %671 = load i8, ptr %670, align 1, !tbaa !19
  %672 = sext i8 %671 to i32
  %673 = icmp eq i32 %672, 0
  br i1 %673, label %674, label %683

674:                                              ; preds = %669
  %675 = load ptr, ptr %22, align 8, !tbaa !5
  %676 = load i8, ptr %675, align 1, !tbaa !19
  %677 = sext i8 %676 to i32
  %678 = load ptr, ptr %21, align 8, !tbaa !5
  %679 = load i8, ptr %678, align 1, !tbaa !19
  %680 = sext i8 %679 to i32
  %681 = icmp eq i32 %677, %680
  br i1 %681, label %682, label %683

682:                                              ; preds = %674
  store i32 1, ptr %14, align 4, !tbaa !25
  br label %745

683:                                              ; preds = %674, %669
  %684 = load ptr, ptr %9, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %684, i32 0, i32 1
  %686 = getelementptr inbounds [13 x i8], ptr %685, i64 0, i64 0
  %687 = load i8, ptr %686, align 8, !tbaa !19
  %688 = sext i8 %687 to i32
  %689 = icmp ne i32 %688, 0
  br i1 %689, label %690, label %744

690:                                              ; preds = %683
  %691 = load ptr, ptr %27, align 8, !tbaa !5
  %692 = getelementptr inbounds i8, ptr %691, i64 0
  store ptr %692, ptr %22, align 8, !tbaa !5
  %693 = load ptr, ptr %9, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %693, i32 0, i32 1
  %695 = getelementptr inbounds [13 x i8], ptr %694, i64 0, i64 0
  store ptr %695, ptr %21, align 8, !tbaa !5
  br label %696

696:                                              ; preds = %725, %690
  %697 = load ptr, ptr %21, align 8, !tbaa !5
  %698 = load i8, ptr %697, align 1, !tbaa !19
  store i8 %698, ptr %28, align 1, !tbaa !19
  %699 = load ptr, ptr %22, align 8, !tbaa !5
  %700 = load i8, ptr %699, align 1, !tbaa !19
  store i8 %700, ptr %29, align 1, !tbaa !19
  %701 = load i8, ptr %29, align 1, !tbaa !19
  %702 = sext i8 %701 to i32
  %703 = icmp sge i32 %702, 97
  br i1 %703, label %704, label %713

704:                                              ; preds = %696
  %705 = load i8, ptr %29, align 1, !tbaa !19
  %706 = sext i8 %705 to i32
  %707 = icmp sle i32 %706, 122
  br i1 %707, label %708, label %713

708:                                              ; preds = %704
  %709 = load i8, ptr %29, align 1, !tbaa !19
  %710 = sext i8 %709 to i32
  %711 = sub nsw i32 %710, 32
  %712 = trunc i32 %711 to i8
  store i8 %712, ptr %29, align 1, !tbaa !19
  br label %713

713:                                              ; preds = %708, %704, %696
  %714 = load i8, ptr %28, align 1, !tbaa !19
  %715 = sext i8 %714 to i32
  %716 = load i8, ptr %29, align 1, !tbaa !19
  %717 = sext i8 %716 to i32
  %718 = icmp ne i32 %715, %717
  br i1 %718, label %719, label %720

719:                                              ; preds = %713
  br label %729

720:                                              ; preds = %713
  %721 = load ptr, ptr %22, align 8, !tbaa !5
  %722 = getelementptr inbounds i8, ptr %721, i32 1
  store ptr %722, ptr %22, align 8, !tbaa !5
  %723 = load ptr, ptr %21, align 8, !tbaa !5
  %724 = getelementptr inbounds i8, ptr %723, i32 1
  store ptr %724, ptr %21, align 8, !tbaa !5
  br label %725

725:                                              ; preds = %720
  %726 = load ptr, ptr %21, align 8, !tbaa !5
  %727 = load i8, ptr %726, align 1, !tbaa !19
  %728 = icmp ne i8 %727, 0
  br i1 %728, label %696, label %729, !llvm.loop !49

729:                                              ; preds = %725, %719
  %730 = load ptr, ptr %21, align 8, !tbaa !5
  %731 = load i8, ptr %730, align 1, !tbaa !19
  %732 = sext i8 %731 to i32
  %733 = icmp eq i32 %732, 0
  br i1 %733, label %734, label %743

734:                                              ; preds = %729
  %735 = load ptr, ptr %22, align 8, !tbaa !5
  %736 = load i8, ptr %735, align 1, !tbaa !19
  %737 = sext i8 %736 to i32
  %738 = load ptr, ptr %21, align 8, !tbaa !5
  %739 = load i8, ptr %738, align 1, !tbaa !19
  %740 = sext i8 %739 to i32
  %741 = icmp eq i32 %737, %740
  br i1 %741, label %742, label %743

742:                                              ; preds = %734
  store i32 1, ptr %14, align 4, !tbaa !25
  br label %743

743:                                              ; preds = %742, %734, %729
  br label %744

744:                                              ; preds = %743, %683
  br label %745

745:                                              ; preds = %744, %682
  br label %746

746:                                              ; preds = %745, %615, %599
  %747 = load i64, ptr %12, align 8, !tbaa !9
  %748 = load i64, ptr %20, align 8, !tbaa !26
  %749 = icmp ult i64 %747, %748
  br i1 %749, label %750, label %754

750:                                              ; preds = %746
  %751 = load i32, ptr %14, align 4, !tbaa !25
  %752 = icmp ne i32 %751, 0
  %753 = xor i1 %752, true
  br label %754

754:                                              ; preds = %750, %746
  %755 = phi i1 [ false, %746 ], [ %753, %750 ]
  br i1 %755, label %572, label %756, !llvm.loop !50

756:                                              ; preds = %754, %591
  %757 = load i32, ptr %14, align 4, !tbaa !25
  %758 = icmp ne i32 %757, 0
  br i1 %758, label %760, label %759

759:                                              ; preds = %756
  store i32 4, ptr %6, align 4
  store i32 1, ptr %36, align 4
  br label %981

760:                                              ; preds = %756
  %761 = load ptr, ptr %9, align 8, !tbaa !5
  %762 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %761, i32 0, i32 4
  %763 = load i8, ptr %762, align 8, !tbaa !47
  %764 = zext i8 %763 to i32
  %765 = and i32 %764, 16
  %766 = icmp ne i32 %765, 0
  br i1 %766, label %767, label %811

767:                                              ; preds = %760
  %768 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %25, ptr align 8 %768, i64 136, i1 false), !tbaa.struct !24
  store ptr %25, ptr %26, align 8, !tbaa !5
  %769 = load ptr, ptr %26, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %769, i32 0, i32 17
  store i64 0, ptr %770, align 8, !tbaa !37
  %771 = load ptr, ptr %26, align 8, !tbaa !5
  %772 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %771, i32 0, i32 12
  %773 = load i64, ptr %772, align 8, !tbaa !38
  %774 = icmp ne i64 %773, 0
  br i1 %774, label %810, label %775

775:                                              ; preds = %767
  %776 = load ptr, ptr %26, align 8, !tbaa !5
  %777 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %776, i32 0, i32 0
  %778 = load ptr, ptr %777, align 8, !tbaa !18
  %779 = getelementptr inbounds i8, ptr %778, i64 0
  store i8 0, ptr %779, align 1, !tbaa !19
  %780 = load ptr, ptr %10, align 8, !tbaa !5
  %781 = icmp ne ptr %780, null
  br i1 %781, label %782, label %809

782:                                              ; preds = %775
  %783 = load ptr, ptr %10, align 8, !tbaa !5
  %784 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %783, i32 0, i32 0
  %785 = load ptr, ptr %784, align 8, !tbaa !18
  store ptr %785, ptr %24, align 8, !tbaa !5
  %786 = load ptr, ptr %10, align 8, !tbaa !5
  %787 = load ptr, ptr %26, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %786, ptr align 8 %787, i64 136, i1 false), !tbaa.struct !24
  %788 = load ptr, ptr %24, align 8, !tbaa !5
  %789 = load ptr, ptr %10, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %789, i32 0, i32 0
  store ptr %788, ptr %790, align 8, !tbaa !18
  %791 = load ptr, ptr %26, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %791, i32 0, i32 0
  %793 = load ptr, ptr %792, align 8, !tbaa !18
  store ptr %793, ptr %23, align 8, !tbaa !5
  store i64 0, ptr %13, align 8, !tbaa !9
  br label %794

794:                                              ; preds = %805, %782
  %795 = load i64, ptr %13, align 8, !tbaa !9
  %796 = icmp ult i64 %795, 256
  br i1 %796, label %797, label %808

797:                                              ; preds = %794
  %798 = load ptr, ptr %23, align 8, !tbaa !5
  %799 = load i64, ptr %13, align 8, !tbaa !9
  %800 = getelementptr inbounds i8, ptr %798, i64 %799
  %801 = load i8, ptr %800, align 1, !tbaa !19
  %802 = load ptr, ptr %24, align 8, !tbaa !5
  %803 = load i64, ptr %13, align 8, !tbaa !9
  %804 = getelementptr inbounds i8, ptr %802, i64 %803
  store i8 %801, ptr %804, align 1, !tbaa !19
  br label %805

805:                                              ; preds = %797
  %806 = load i64, ptr %13, align 8, !tbaa !9
  %807 = add i64 %806, 1
  store i64 %807, ptr %13, align 8, !tbaa !9
  br label %794, !llvm.loop !51

808:                                              ; preds = %794
  br label %809

809:                                              ; preds = %808, %775
  store ptr null, ptr %26, align 8, !tbaa !5
  br label %810

810:                                              ; preds = %809, %767
  br label %816

811:                                              ; preds = %760
  %812 = load ptr, ptr %8, align 8, !tbaa !5
  %813 = icmp ne ptr %812, null
  br i1 %813, label %814, label %815

814:                                              ; preds = %811
  store i32 4, ptr %6, align 4
  store i32 1, ptr %36, align 4
  br label %981

815:                                              ; preds = %811
  br label %816

816:                                              ; preds = %815, %810
  br label %817

817:                                              ; preds = %816
  %818 = load ptr, ptr %8, align 8, !tbaa !5
  %819 = icmp ne ptr %818, null
  br i1 %819, label %458, label %820, !llvm.loop !52

820:                                              ; preds = %817
  store i32 0, ptr %16, align 4, !tbaa !25
  %821 = load ptr, ptr %32, align 8, !tbaa !5
  %822 = load i8, ptr %821, align 1, !tbaa !19
  %823 = sext i8 %822 to i32
  %824 = icmp ne i32 %823, 92
  br i1 %824, label %825, label %861

825:                                              ; preds = %820
  %826 = load ptr, ptr %32, align 8, !tbaa !5
  %827 = load i8, ptr %826, align 1, !tbaa !19
  %828 = sext i8 %827 to i32
  %829 = icmp ne i32 %828, 47
  br i1 %829, label %830, label %861

830:                                              ; preds = %825
  %831 = load ptr, ptr %31, align 8, !tbaa !5
  %832 = icmp ne ptr %831, null
  br i1 %832, label %833, label %861

833:                                              ; preds = %830
  br label %834

834:                                              ; preds = %847, %833
  %835 = load i32, ptr %16, align 4, !tbaa !25
  %836 = icmp ult i32 %835, 255
  br i1 %836, label %837, label %845

837:                                              ; preds = %834
  %838 = load ptr, ptr %31, align 8, !tbaa !5
  %839 = load i32, ptr %16, align 4, !tbaa !25
  %840 = zext i32 %839 to i64
  %841 = getelementptr inbounds i8, ptr %838, i64 %840
  %842 = load i8, ptr %841, align 1, !tbaa !19
  %843 = sext i8 %842 to i32
  %844 = icmp ne i32 %843, 0
  br label %845

845:                                              ; preds = %837, %834
  %846 = phi i1 [ false, %834 ], [ %844, %837 ]
  br i1 %846, label %847, label %860

847:                                              ; preds = %845
  %848 = load ptr, ptr %31, align 8, !tbaa !5
  %849 = load i32, ptr %16, align 4, !tbaa !25
  %850 = zext i32 %849 to i64
  %851 = getelementptr inbounds i8, ptr %848, i64 %850
  %852 = load i8, ptr %851, align 1, !tbaa !19
  %853 = load ptr, ptr %7, align 8, !tbaa !5
  %854 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %853, i32 0, i32 117
  %855 = load i32, ptr %16, align 4, !tbaa !25
  %856 = zext i32 %855 to i64
  %857 = getelementptr inbounds [256 x i8], ptr %854, i64 0, i64 %856
  store i8 %852, ptr %857, align 1, !tbaa !19
  %858 = load i32, ptr %16, align 4, !tbaa !25
  %859 = add i32 %858, 1
  store i32 %859, ptr %16, align 4, !tbaa !25
  br label %834, !llvm.loop !53

860:                                              ; preds = %845
  br label %861

861:                                              ; preds = %860, %830, %825, %820
  %862 = load ptr, ptr %32, align 8, !tbaa !5
  %863 = load i8, ptr %862, align 1, !tbaa !19
  %864 = sext i8 %863 to i32
  %865 = icmp ne i32 %864, 92
  br i1 %865, label %866, label %882

866:                                              ; preds = %861
  %867 = load ptr, ptr %32, align 8, !tbaa !5
  %868 = load i8, ptr %867, align 1, !tbaa !19
  %869 = sext i8 %868 to i32
  %870 = icmp ne i32 %869, 47
  br i1 %870, label %871, label %882

871:                                              ; preds = %866
  %872 = load i32, ptr %16, align 4, !tbaa !25
  %873 = icmp ult i32 %872, 255
  br i1 %873, label %874, label %881

874:                                              ; preds = %871
  %875 = load ptr, ptr %7, align 8, !tbaa !5
  %876 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %875, i32 0, i32 117
  %877 = load i32, ptr %16, align 4, !tbaa !25
  %878 = add i32 %877, 1
  store i32 %878, ptr %16, align 4, !tbaa !25
  %879 = zext i32 %877 to i64
  %880 = getelementptr inbounds [256 x i8], ptr %876, i64 0, i64 %879
  store i8 47, ptr %880, align 1, !tbaa !19
  br label %881

881:                                              ; preds = %874, %871
  br label %882

882:                                              ; preds = %881, %866, %861
  store i32 0, ptr %17, align 4, !tbaa !25
  br label %883

883:                                              ; preds = %896, %882
  %884 = load i32, ptr %16, align 4, !tbaa !25
  %885 = icmp ult i32 %884, 256
  br i1 %885, label %886, label %894

886:                                              ; preds = %883
  %887 = load ptr, ptr %32, align 8, !tbaa !5
  %888 = load i32, ptr %17, align 4, !tbaa !25
  %889 = zext i32 %888 to i64
  %890 = getelementptr inbounds i8, ptr %887, i64 %889
  %891 = load i8, ptr %890, align 1, !tbaa !19
  %892 = sext i8 %891 to i32
  %893 = icmp ne i32 %892, 0
  br label %894

894:                                              ; preds = %886, %883
  %895 = phi i1 [ false, %883 ], [ %893, %886 ]
  br i1 %895, label %896, label %911

896:                                              ; preds = %894
  %897 = load ptr, ptr %32, align 8, !tbaa !5
  %898 = load i32, ptr %17, align 4, !tbaa !25
  %899 = zext i32 %898 to i64
  %900 = getelementptr inbounds i8, ptr %897, i64 %899
  %901 = load i8, ptr %900, align 1, !tbaa !19
  %902 = load ptr, ptr %7, align 8, !tbaa !5
  %903 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %902, i32 0, i32 117
  %904 = load i32, ptr %16, align 4, !tbaa !25
  %905 = zext i32 %904 to i64
  %906 = getelementptr inbounds [256 x i8], ptr %903, i64 0, i64 %905
  store i8 %901, ptr %906, align 1, !tbaa !19
  %907 = load i32, ptr %16, align 4, !tbaa !25
  %908 = add i32 %907, 1
  store i32 %908, ptr %16, align 4, !tbaa !25
  %909 = load i32, ptr %17, align 4, !tbaa !25
  %910 = add i32 %909, 1
  store i32 %910, ptr %17, align 4, !tbaa !25
  br label %883, !llvm.loop !54

911:                                              ; preds = %894
  %912 = load i32, ptr %16, align 4, !tbaa !25
  %913 = icmp ult i32 %912, 256
  br i1 %913, label %914, label %920

914:                                              ; preds = %911
  %915 = load ptr, ptr %7, align 8, !tbaa !5
  %916 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %915, i32 0, i32 117
  %917 = load i32, ptr %16, align 4, !tbaa !25
  %918 = zext i32 %917 to i64
  %919 = getelementptr inbounds [256 x i8], ptr %916, i64 0, i64 %918
  store i8 0, ptr %919, align 1, !tbaa !19
  br label %924

920:                                              ; preds = %911
  %921 = load ptr, ptr %7, align 8, !tbaa !5
  %922 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %921, i32 0, i32 117
  %923 = getelementptr inbounds [256 x i8], ptr %922, i64 0, i64 0
  store i8 0, ptr %923, align 8, !tbaa !19
  br label %924

924:                                              ; preds = %920, %914
  %925 = load ptr, ptr %26, align 8, !tbaa !5
  %926 = icmp ne ptr %925, null
  br i1 %926, label %927, label %933

927:                                              ; preds = %924
  %928 = load ptr, ptr %7, align 8, !tbaa !5
  %929 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %928, i32 0, i32 114
  %930 = load ptr, ptr %26, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %929, ptr align 8 %930, i64 136, i1 false), !tbaa.struct !24
  %931 = load ptr, ptr %7, align 8, !tbaa !5
  %932 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %931, i32 0, i32 113
  store i32 1, ptr %932, align 8, !tbaa !33
  br label %936

933:                                              ; preds = %924
  %934 = load ptr, ptr %7, align 8, !tbaa !5
  %935 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %934, i32 0, i32 113
  store i32 0, ptr %935, align 8, !tbaa !33
  br label %936

936:                                              ; preds = %933, %927
  %937 = load ptr, ptr %7, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %937, i32 0, i32 115
  %939 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %938, ptr align 8 %939, i64 136, i1 false), !tbaa.struct !24
  %940 = load ptr, ptr %7, align 8, !tbaa !5
  %941 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %940, i32 0, i32 116
  %942 = getelementptr inbounds [256 x i8], ptr %941, i64 0, i64 0
  %943 = load ptr, ptr %7, align 8, !tbaa !5
  %944 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %943, i32 0, i32 115
  %945 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %944, i32 0, i32 0
  store ptr %942, ptr %945, align 8, !tbaa !55
  store i32 0, ptr %30, align 4, !tbaa !25
  br label %946

946:                                              ; preds = %977, %936
  %947 = load i32, ptr %30, align 4, !tbaa !25
  %948 = icmp ult i32 %947, 256
  br i1 %948, label %949, label %980

949:                                              ; preds = %946
  %950 = load ptr, ptr %9, align 8, !tbaa !5
  %951 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %950, i32 0, i32 0
  %952 = load ptr, ptr %951, align 8, !tbaa !18
  %953 = load i32, ptr %30, align 4, !tbaa !25
  %954 = zext i32 %953 to i64
  %955 = getelementptr inbounds i8, ptr %952, i64 %954
  %956 = load i8, ptr %955, align 1, !tbaa !19
  %957 = load ptr, ptr %7, align 8, !tbaa !5
  %958 = getelementptr inbounds %struct.FX_MEDIA_STRUCT, ptr %957, i32 0, i32 116
  %959 = load i32, ptr %30, align 4, !tbaa !25
  %960 = zext i32 %959 to i64
  %961 = getelementptr inbounds [256 x i8], ptr %958, i64 0, i64 %960
  store i8 %956, ptr %961, align 1, !tbaa !19
  %962 = load ptr, ptr %9, align 8, !tbaa !5
  %963 = getelementptr inbounds %struct.FX_DIR_ENTRY_STRUCT, ptr %962, i32 0, i32 0
  %964 = load ptr, ptr %963, align 8, !tbaa !18
  %965 = load i32, ptr %30, align 4, !tbaa !25
  %966 = zext i32 %965 to i64
  %967 = getelementptr inbounds i8, ptr %964, i64 %966
  %968 = load i8, ptr %967, align 1, !tbaa !19
  %969 = sext i8 %968 to i32
  %970 = icmp eq i32 %969, 0
  br i1 %970, label %971, label %976

971:                                              ; preds = %949
  %972 = load i32, ptr %30, align 4, !tbaa !25
  %973 = icmp ult i32 %972, 255
  br i1 %973, label %974, label %975

974:                                              ; preds = %971
  br label %980

975:                                              ; preds = %971
  br label %976

976:                                              ; preds = %975, %949
  br label %977

977:                                              ; preds = %976
  %978 = load i32, ptr %30, align 4, !tbaa !25
  %979 = add i32 %978, 1
  store i32 %979, ptr %30, align 4, !tbaa !25
  br label %946, !llvm.loop !56

980:                                              ; preds = %974, %946
  store i32 0, ptr %6, align 4
  store i32 1, ptr %36, align 4
  br label %981

981:                                              ; preds = %980, %814, %759, %581, %505, %490, %451
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 136, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  %982 = load i32, ptr %6, align 4
  ret i32 %982
}

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

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

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

declare ptr @_fx_directory_name_extract(ptr noundef, ptr noundef) #3

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

declare i32 @_fx_directory_entry_read(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { "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 #4 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !10, i64 648}
!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 = !{!16, !6, i64 0}
!19 = !{!7, !7, i64 0}
!20 = !{!21, !6, i64 272}
!21 = !{!"TX_THREAD_STRUCT", !10, i64 0, !10, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !13, i64 88, !13, i64 92, !13, i64 96, !13, i64 100, !13, i64 104, !6, i64 112, !6, i64 120, !10, i64 128, !22, i64 136, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !10, i64 224, !6, i64 232, !13, i64 240, !13, i64 244, !6, i64 248, !6, i64 256, !6, i64 264, !6, i64 272, !13, i64 280, !13, i64 284, !13, i64 288, !13, i64 292, !6, i64 296, !6, i64 304, !6, i64 312, !10, i64 320}
!22 = !{!"TX_TIMER_INTERNAL_STRUCT", !10, i64 0, !10, i64 8, !6, i64 16, !10, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!23 = !{!17, !6, i64 0}
!24 = !{i64 0, i64 8, !5, i64 8, i64 13, !19, i64 24, i64 4, !25, i64 28, i64 4, !25, i64 32, i64 1, !19, i64 33, i64 1, !19, i64 34, i64 1, !19, i64 36, i64 4, !25, i64 40, i64 4, !25, i64 44, i64 4, !25, i64 48, i64 4, !25, i64 52, i64 4, !25, i64 56, i64 8, !9, i64 64, i64 8, !26, i64 72, i64 8, !26, i64 80, i64 8, !9, i64 88, i64 8, !9, i64 96, i64 8, !9, i64 104, i64 8, !9, i64 112, i64 8, !26, i64 120, i64 8, !9, i64 128, i64 8, !26}
!25 = !{!13, !13, i64 0}
!26 = !{!14, !14, i64 0}
!27 = !{!12, !6, i64 1712}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = distinct !{!30, !29}
!31 = distinct !{!31, !29}
!32 = distinct !{!32, !29}
!33 = !{!12, !13, i64 920}
!34 = !{!12, !6, i64 928}
!35 = distinct !{!35, !29}
!36 = !{!12, !10, i64 816}
!37 = !{!16, !10, i64 96}
!38 = !{!16, !10, i64 56}
!39 = !{!12, !10, i64 12120}
!40 = !{!12, !10, i64 104}
!41 = distinct !{!41, !29}
!42 = !{!12, !13, i64 80}
!43 = !{!12, !13, i64 128}
!44 = !{!16, !14, i64 64}
!45 = distinct !{!45, !29}
!46 = !{!12, !13, i64 184}
!47 = !{!16, !7, i64 32}
!48 = distinct !{!48, !29}
!49 = distinct !{!49, !29}
!50 = distinct !{!50, !29}
!51 = distinct !{!51, !29}
!52 = distinct !{!52, !29}
!53 = distinct !{!53, !29}
!54 = distinct !{!54, !29}
!55 = !{!12, !6, i64 1064}
!56 = distinct !{!56, !29}


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

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

@_tx_thread_current_ptr = external local_unnamed_addr global ptr, align 8

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

13:                                               ; preds = %5
  %14 = load ptr, ptr %3, align 8, !tbaa !17
  store i8 0, ptr %14, align 1, !tbaa !18
  br label %15

15:                                               ; preds = %13, %5
  %16 = load i8, ptr %1, align 1, !tbaa !18
  switch i8 %16, label %17 [
    i8 92, label %32
    i8 47, label %32
  ]

17:                                               ; preds = %15
  %18 = load ptr, ptr @_tx_thread_current_ptr, align 8, !tbaa !19
  %19 = getelementptr inbounds i8, ptr %18, i64 272
  %20 = load ptr, ptr %19, align 8, !tbaa !20
  %.not360 = icmp eq ptr %20, null
  br i1 %.not360, label %26, label %21

21:                                               ; preds = %17
  %22 = load ptr, ptr %20, align 8, !tbaa !23
  %23 = load i8, ptr %22, align 1, !tbaa !18
  %.not362 = icmp eq i8 %23, 0
  br i1 %.not362, label %32, label %24

24:                                               ; preds = %21
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %8, ptr noundef nonnull align 8 dereferenceable(136) %20, i64 136, i1 false), !tbaa.struct !24
  %25 = getelementptr inbounds i8, ptr %20, i64 136
  br label %32

26:                                               ; preds = %17
  %27 = getelementptr inbounds i8, ptr %0, i64 1712
  %28 = load ptr, ptr %27, align 8, !tbaa !27
  %29 = load i8, ptr %28, align 1, !tbaa !18
  %.not361 = icmp eq i8 %29, 0
  br i1 %.not361, label %32, label %30

30:                                               ; preds = %26
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %8, ptr noundef nonnull align 8 dereferenceable(136) %27, i64 136, i1 false), !tbaa.struct !24
  %31 = getelementptr inbounds i8, ptr %0, i64 1848
  br label %32

32:                                               ; preds = %26, %21, %15, %15, %24, %30
  %.0312 = phi ptr [ %8, %24 ], [ %8, %30 ], [ null, %15 ], [ null, %15 ], [ null, %21 ], [ null, %26 ]
  %.0303 = phi ptr [ %25, %24 ], [ %31, %30 ], [ null, %15 ], [ null, %15 ], [ null, %21 ], [ null, %26 ]
  %33 = getelementptr inbounds i8, ptr %0, i64 1456
  %34 = load i8, ptr %33, align 8, !tbaa !18
  %.not363 = icmp eq i8 %34, 0
  br i1 %.not363, label %.critedge403, label %35

35:                                               ; preds = %32
  switch i8 %16, label %59 [
    i8 92, label %.preheader643
    i8 47, label %.preheader643
  ]

.preheader643:                                    ; preds = %35, %35
  br label %36

36:                                               ; preds = %53, %.preheader643
  %indvars.iv = phi i64 [ 0, %.preheader643 ], [ %indvars.iv.next.1, %53 ]
  %37 = getelementptr inbounds i8, ptr %1, i64 %indvars.iv
  %38 = load i8, ptr %37, align 1, !tbaa !18
  %.not374 = icmp eq i8 %38, 0
  br i1 %.not374, label %.critedge, label %39

39:                                               ; preds = %36
  %40 = getelementptr inbounds [256 x i8], ptr %33, i64 0, i64 %indvars.iv
  %41 = load i8, ptr %40, align 1, !tbaa !18
  %42 = icmp eq i8 %38, 92
  %spec.store.select = select i1 %42, i8 47, i8 %38
  %43 = icmp eq i8 %41, 92
  %spec.store.select21 = select i1 %43, i8 47, i8 %41
  %.not375 = icmp eq i8 %spec.store.select, %spec.store.select21
  br i1 %.not375, label %44, label %.critedge

44:                                               ; preds = %39
  %indvars.iv.next = or disjoint i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv, 254
  br i1 %exitcond.not, label %.critedge, label %45, !llvm.loop !28

45:                                               ; preds = %44
  %46 = getelementptr inbounds i8, ptr %1, i64 %indvars.iv.next
  %47 = load i8, ptr %46, align 1, !tbaa !18
  %.not374.1 = icmp eq i8 %47, 0
  br i1 %.not374.1, label %.critedge, label %48

48:                                               ; preds = %45
  %49 = getelementptr inbounds [256 x i8], ptr %33, i64 0, i64 %indvars.iv.next
  %50 = load i8, ptr %49, align 1, !tbaa !18
  %51 = icmp eq i8 %47, 92
  %spec.store.select.1 = select i1 %51, i8 47, i8 %47
  %52 = icmp eq i8 %50, 92
  %spec.store.select21.1 = select i1 %52, i8 47, i8 %50
  %.not375.1 = icmp eq i8 %spec.store.select.1, %spec.store.select21.1
  br i1 %.not375.1, label %53, label %.critedge

53:                                               ; preds = %48
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  br label %36

.critedge:                                        ; preds = %48, %45, %44, %39, %36
  %.0326.lcssa = phi i64 [ 255, %44 ], [ %indvars.iv, %39 ], [ %indvars.iv, %36 ], [ %indvars.iv.next, %45 ], [ %indvars.iv.next, %48 ]
  %54 = and i64 %.0326.lcssa, 4294967295
  %55 = getelementptr inbounds i8, ptr %1, i64 %54
  %56 = load i8, ptr %55, align 1, !tbaa !18
  %57 = getelementptr inbounds [256 x i8], ptr %33, i64 0, i64 %54
  %58 = load i8, ptr %57, align 1, !tbaa !18
  %.not376.not = icmp eq i8 %56, %58
  br i1 %.not376.not, label %107, label %.critedge403

59:                                               ; preds = %35
  %.not364 = icmp eq ptr %.0303, null
  br i1 %.not364, label %.thread, label %.preheader447

.preheader447:                                    ; preds = %59, %75
  %indvars.iv511 = phi i64 [ %indvars.iv.next512.1, %75 ], [ 0, %59 ]
  %60 = getelementptr inbounds i8, ptr %.0303, i64 %indvars.iv511
  %61 = load i8, ptr %60, align 1, !tbaa !18
  %.not365 = icmp eq i8 %61, 0
  br i1 %.not365, label %.split.loop.exit, label %62

62:                                               ; preds = %.preheader447
  %63 = getelementptr inbounds [256 x i8], ptr %33, i64 0, i64 %indvars.iv511
  %64 = load i8, ptr %63, align 1, !tbaa !18
  %65 = icmp eq i8 %64, 92
  %spec.store.select3 = select i1 %65, i8 47, i8 %64
  %66 = icmp eq i8 %61, 92
  %spec.store.select22 = select i1 %66, i8 47, i8 %61
  %.not366 = icmp eq i8 %spec.store.select3, %spec.store.select22
  br i1 %.not366, label %67, label %.split.loop.exit575

67:                                               ; preds = %62
  %indvars.iv.next512 = or disjoint i64 %indvars.iv511, 1
  %exitcond514.not = icmp eq i64 %indvars.iv511, 254
  br i1 %exitcond514.not, label %.split.loop.exit577, label %.preheader447.1, !llvm.loop !30

.preheader447.1:                                  ; preds = %67
  %68 = getelementptr inbounds i8, ptr %.0303, i64 %indvars.iv.next512
  %69 = load i8, ptr %68, align 1, !tbaa !18
  %.not365.1 = icmp eq i8 %69, 0
  br i1 %.not365.1, label %.split.loop.exit, label %70

70:                                               ; preds = %.preheader447.1
  %71 = getelementptr inbounds [256 x i8], ptr %33, i64 0, i64 %indvars.iv.next512
  %72 = load i8, ptr %71, align 1, !tbaa !18
  %73 = icmp eq i8 %72, 92
  %spec.store.select3.1 = select i1 %73, i8 47, i8 %72
  %74 = icmp eq i8 %69, 92
  %spec.store.select22.1 = select i1 %74, i8 47, i8 %69
  %.not366.1 = icmp eq i8 %spec.store.select3.1, %spec.store.select22.1
  br i1 %.not366.1, label %75, label %.split.loop.exit575

75:                                               ; preds = %70
  %indvars.iv.next512.1 = add nuw nsw i64 %indvars.iv511, 2
  br label %.preheader447

.split.loop.exit:                                 ; preds = %.preheader447.1, %.preheader447
  %indvars.iv511.lcssa = phi i64 [ %indvars.iv511, %.preheader447 ], [ %indvars.iv.next512, %.preheader447.1 ]
  %76 = trunc nuw nsw i64 %indvars.iv511.lcssa to i32
  br label %.split.loop.exit577

.split.loop.exit575:                              ; preds = %70, %62
  %indvars.iv511.lcssa641 = phi i64 [ %indvars.iv511, %62 ], [ %indvars.iv.next512, %70 ]
  %77 = trunc nuw nsw i64 %indvars.iv511.lcssa641 to i32
  br label %.split.loop.exit577

.split.loop.exit577:                              ; preds = %67, %.split.loop.exit575, %.split.loop.exit
  %.1327.lcssa = phi i32 [ %76, %.split.loop.exit ], [ %77, %.split.loop.exit575 ], [ 255, %67 ]
  %78 = zext nneg i32 %.1327.lcssa to i64
  %79 = getelementptr inbounds i8, ptr %.0303, i64 %78
  %80 = load i8, ptr %79, align 1, !tbaa !18
  %.not367.not = icmp eq i8 %80, 0
  br i1 %.not367.not, label %..thread_crit_edge, label %.critedge403

..thread_crit_edge:                               ; preds = %.split.loop.exit577
  %.phi.trans.insert = getelementptr inbounds [256 x i8], ptr %33, i64 0, i64 %78
  %.pre = load i8, ptr %.phi.trans.insert, align 1, !tbaa !18
  br label %.thread

.thread:                                          ; preds = %59, %..thread_crit_edge
  %81 = phi i8 [ %.pre, %..thread_crit_edge ], [ %34, %59 ]
  %.2328410 = phi i32 [ %.1327.lcssa, %..thread_crit_edge ], [ 0, %59 ]
  switch i8 %81, label %.critedge403 [
    i8 92, label %82
    i8 47, label %82
  ]

82:                                               ; preds = %.thread, %.thread
  %83 = add nuw nsw i32 %.2328410, 1
  %84 = icmp ugt i32 %.2328410, 253
  br i1 %84, label %.critedge5, label %.lr.ph.split.preheader

.lr.ph.split.preheader:                           ; preds = %82
  %85 = zext nneg i32 %83 to i64
  %86 = sub nuw nsw i32 254, %.2328410
  br label %.lr.ph.split

.lr.ph.split:                                     ; preds = %.lr.ph.split.preheader, %95
  %indvars.iv515 = phi i64 [ %85, %.lr.ph.split.preheader ], [ %indvars.iv.next516, %95 ]
  %.0324466 = phi i32 [ 0, %.lr.ph.split.preheader ], [ %96, %95 ]
  %87 = zext nneg i32 %.0324466 to i64
  %88 = getelementptr inbounds i8, ptr %1, i64 %87
  %89 = load i8, ptr %88, align 1, !tbaa !18
  %.not487 = icmp eq i8 %89, 0
  br i1 %.not487, label %.critedge5.loopexit.split.loop.exit, label %90

90:                                               ; preds = %.lr.ph.split
  %91 = getelementptr inbounds [256 x i8], ptr %33, i64 0, i64 %indvars.iv515
  %92 = load i8, ptr %91, align 1, !tbaa !18
  %93 = icmp eq i8 %89, 92
  %spec.store.select6 = select i1 %93, i8 47, i8 %89
  %94 = icmp eq i8 %92, 92
  %spec.store.select25 = select i1 %94, i8 47, i8 %92
  %.not371 = icmp eq i8 %spec.store.select6, %spec.store.select25
  br i1 %.not371, label %95, label %.critedge5.loopexit.split.loop.exit583

95:                                               ; preds = %90
  %indvars.iv.next516 = add nuw nsw i64 %indvars.iv515, 1
  %96 = add nuw nsw i32 %.0324466, 1
  %exitcond518.not = icmp eq i32 %96, %86
  br i1 %exitcond518.not, label %.critedge5, label %.lr.ph.split, !llvm.loop !31

.critedge5.loopexit.split.loop.exit:              ; preds = %.lr.ph.split
  %97 = trunc nuw nsw i64 %indvars.iv515 to i32
  br label %.critedge5

.critedge5.loopexit.split.loop.exit583:           ; preds = %90
  %98 = trunc nuw nsw i64 %indvars.iv515 to i32
  br label %.critedge5

.critedge5:                                       ; preds = %95, %.critedge5.loopexit.split.loop.exit, %.critedge5.loopexit.split.loop.exit583, %82
  %.4.lcssa = phi i32 [ %83, %82 ], [ %97, %.critedge5.loopexit.split.loop.exit ], [ %98, %.critedge5.loopexit.split.loop.exit583 ], [ 255, %95 ]
  %.0324.lcssa = phi i32 [ 0, %82 ], [ %.0324466, %.critedge5.loopexit.split.loop.exit ], [ %.0324466, %.critedge5.loopexit.split.loop.exit583 ], [ %86, %95 ]
  %99 = icmp ugt i32 %.4.lcssa, 255
  br i1 %99, label %.critedge403, label %100

100:                                              ; preds = %.critedge5
  %101 = zext nneg i32 %.0324.lcssa to i64
  %102 = getelementptr inbounds i8, ptr %1, i64 %101
  %103 = load i8, ptr %102, align 1, !tbaa !18
  %104 = zext nneg i32 %.4.lcssa to i64
  %105 = getelementptr inbounds [256 x i8], ptr %33, i64 0, i64 %104
  %106 = load i8, ptr %105, align 1, !tbaa !18
  %.not373.not = icmp eq i8 %103, %106
  br i1 %.not373.not, label %107, label %.critedge403

107:                                              ; preds = %.critedge, %100
  %108 = load ptr, ptr %2, align 8, !tbaa !17
  %109 = getelementptr inbounds i8, ptr %0, i64 1064
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %2, ptr noundef nonnull align 8 dereferenceable(136) %109, i64 136, i1 false), !tbaa.struct !24
  store ptr %108, ptr %2, align 8, !tbaa !17
  %110 = getelementptr inbounds i8, ptr %0, i64 1200
  br label %111

111:                                              ; preds = %111, %107
  %indvars.iv519 = phi i64 [ 0, %107 ], [ %indvars.iv.next520, %111 ]
  %112 = getelementptr inbounds [256 x i8], ptr %110, i64 0, i64 %indvars.iv519
  %113 = load i8, ptr %112, align 1, !tbaa !18
  %114 = getelementptr inbounds i8, ptr %108, i64 %indvars.iv519
  store i8 %113, ptr %114, align 1, !tbaa !18
  %115 = icmp eq i8 %113, 0
  %indvars.iv.next520 = add nuw nsw i64 %indvars.iv519, 1
  %exitcond522.not = icmp eq i64 %indvars.iv.next520, 256
  %or.cond587 = select i1 %115, i1 true, i1 %exitcond522.not
  br i1 %or.cond587, label %116, label %111, !llvm.loop !32

116:                                              ; preds = %111
  br i1 %.not, label %.loopexit446, label %117

117:                                              ; preds = %116
  %118 = getelementptr inbounds i8, ptr %0, i64 920
  %119 = load i32, ptr %118, align 8, !tbaa !33
  %.not378 = icmp eq i32 %119, 0
  br i1 %.not378, label %.loopexit446, label %120

120:                                              ; preds = %117
  %121 = load ptr, ptr %3, align 8, !tbaa !17
  %122 = getelementptr inbounds i8, ptr %0, i64 928
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %3, ptr noundef nonnull align 8 dereferenceable(136) %122, i64 136, i1 false), !tbaa.struct !24
  store ptr %121, ptr %3, align 8, !tbaa !17
  %123 = load ptr, ptr %122, align 8, !tbaa !34
  br label %124

124:                                              ; preds = %124, %120
  %.0309476 = phi i64 [ 0, %120 ], [ %129, %124 ]
  %125 = getelementptr inbounds i8, ptr %123, i64 %.0309476
  %126 = load i8, ptr %125, align 1, !tbaa !18
  %127 = getelementptr inbounds i8, ptr %121, i64 %.0309476
  store i8 %126, ptr %127, align 1, !tbaa !18
  %128 = icmp eq i8 %126, 0
  %129 = add nuw nsw i64 %.0309476, 1
  %exitcond523.not = icmp eq i64 %129, 256
  %or.cond588 = select i1 %128, i1 true, i1 %exitcond523.not
  br i1 %or.cond588, label %.loopexit446, label %124, !llvm.loop !35

.loopexit446:                                     ; preds = %124, %117, %116
  %.not379 = icmp eq ptr %4, null
  br i1 %.not379, label %131, label %130

130:                                              ; preds = %.loopexit446
  store ptr %108, ptr %4, align 8, !tbaa !19
  br label %131

131:                                              ; preds = %130, %.loopexit446
  %132 = getelementptr inbounds i8, ptr %0, i64 816
  %133 = load i64, ptr %132, align 8, !tbaa !36
  %134 = add i64 %133, 1
  store i64 %134, ptr %132, align 8, !tbaa !36
  br label %.thread427

.critedge403:                                     ; preds = %.thread, %.critedge5, %.split.loop.exit577, %.critedge, %100, %32
  store i8 0, ptr %33, align 8, !tbaa !18
  %.not380 = icmp eq ptr %4, null
  %135 = getelementptr inbounds i8, ptr %0, i64 12120
  %136 = getelementptr inbounds i8, ptr %0, i64 104
  %137 = getelementptr inbounds i8, ptr %0, i64 80
  %138 = getelementptr inbounds i8, ptr %0, i64 128
  %139 = getelementptr inbounds i8, ptr %0, i64 184
  %140 = getelementptr inbounds i8, ptr %2, i64 32
  %141 = getelementptr inbounds i8, ptr %2, i64 8
  %142 = getelementptr inbounds i8, ptr %8, i64 96
  %143 = getelementptr inbounds i8, ptr %8, i64 56
  br label %144

144:                                              ; preds = %.loopexit, %.critedge403
  %.1313 = phi ptr [ %.0312, %.critedge403 ], [ %.2314, %.loopexit ]
  %.0302 = phi ptr [ %1, %.critedge403 ], [ %147, %.loopexit ]
  br i1 %.not380, label %146, label %145

145:                                              ; preds = %144
  store ptr %.0302, ptr %4, align 8, !tbaa !19
  br label %146

146:                                              ; preds = %145, %144
  %147 = call ptr @_fx_directory_name_extract(ptr noundef nonnull %.0302, ptr noundef nonnull %12) #4
  %.not381 = icmp eq ptr %.1313, null
  br i1 %.not381, label %187, label %148

148:                                              ; preds = %146
  %149 = getelementptr inbounds i8, ptr %.1313, i64 96
  store i64 0, ptr %149, align 8, !tbaa !37
  store i64 0, ptr %6, align 8, !tbaa !5
  %150 = getelementptr inbounds i8, ptr %.1313, i64 56
  %151 = load i64, ptr %150, align 8, !tbaa !38
  br label %152

152:                                              ; preds = %164, %148
  %153 = phi i64 [ 0, %148 ], [ %165, %164 ]
  %.0323 = phi i64 [ %151, %148 ], [ %162, %164 ]
  %154 = load i64, ptr %135, align 8, !tbaa !39
  %155 = icmp ult i64 %.0323, %154
  br i1 %155, label %156, label %168

156:                                              ; preds = %152
  %157 = add i64 %153, 1
  store i64 %157, ptr %6, align 8, !tbaa !5
  %158 = call i32 @_fx_utility_FAT_entry_read(ptr noundef nonnull %0, i64 noundef %.0323, ptr noundef nonnull %7) #4
  %.not400 = icmp eq i32 %158, 0
  br i1 %.not400, label %159, label %.thread427

159:                                              ; preds = %156
  %160 = icmp ult i64 %.0323, 2
  br i1 %160, label %.thread427, label %161

161:                                              ; preds = %159
  %162 = load i64, ptr %7, align 8, !tbaa !5
  %163 = icmp eq i64 %.0323, %162
  br i1 %163, label %.thread427, label %164

164:                                              ; preds = %161
  %165 = load i64, ptr %6, align 8, !tbaa !5
  %166 = load i64, ptr %136, align 8, !tbaa !40
  %167 = icmp ugt i64 %165, %166
  br i1 %167, label %.thread427, label %152, !llvm.loop !41

168:                                              ; preds = %152
  %169 = load i32, ptr %137, align 8, !tbaa !42
  %170 = zext i32 %169 to i64
  %171 = load i32, ptr %138, align 8, !tbaa !43
  %172 = zext i32 %171 to i64
  %173 = mul nuw i64 %172, %170
  %174 = mul i64 %173, %153
  %175 = lshr i64 %174, 5
  %176 = getelementptr inbounds i8, ptr %.1313, i64 64
  store i64 %175, ptr %176, align 8, !tbaa !44
  br i1 %.not, label %.loopexit442, label %177

177:                                              ; preds = %168
  %178 = load ptr, ptr %3, align 8, !tbaa !17
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %3, ptr noundef nonnull align 8 dereferenceable(136) %.1313, i64 136, i1 false), !tbaa.struct !24
  store ptr %178, ptr %3, align 8, !tbaa !17
  %179 = load ptr, ptr %.1313, align 8, !tbaa !17
  br label %180

180:                                              ; preds = %180, %177
  %.1310477 = phi i64 [ 0, %177 ], [ %185, %180 ]
  %181 = getelementptr inbounds i8, ptr %179, i64 %.1310477
  %182 = load i8, ptr %181, align 1, !tbaa !18
  %183 = getelementptr inbounds i8, ptr %178, i64 %.1310477
  store i8 %182, ptr %183, align 1, !tbaa !18
  %184 = icmp ne i8 %182, 0
  %185 = add nuw nsw i64 %.1310477, 1
  %186 = icmp ult i64 %.1310477, 255
  %or.cond483 = and i1 %184, %186
  br i1 %or.cond483, label %180, label %.loopexit442, !llvm.loop !45

187:                                              ; preds = %146
  %188 = load i32, ptr %139, align 8, !tbaa !46
  %189 = zext i32 %188 to i64
  br label %.loopexit442

.loopexit442:                                     ; preds = %180, %168, %187
  %.0322 = phi i64 [ %175, %168 ], [ %189, %187 ], [ %175, %180 ]
  store i64 0, ptr %6, align 8, !tbaa !5
  br label %190

190:                                              ; preds = %.loopexit554, %.loopexit442
  %191 = call i32 @_fx_directory_entry_read(ptr noundef %0, ptr noundef %.1313, ptr noundef nonnull %6, ptr noundef %2) #4
  %192 = load i64, ptr %6, align 8, !tbaa !5
  %193 = add i64 %192, 1
  store i64 %193, ptr %6, align 8, !tbaa !5
  %.not382 = icmp eq i32 %191, 0
  br i1 %.not382, label %194, label %.thread427

194:                                              ; preds = %190
  %195 = load ptr, ptr %2, align 8, !tbaa !17
  %196 = load i8, ptr %195, align 1, !tbaa !18
  %197 = icmp eq i8 %196, 0
  br i1 %197, label %.thread427, label %198

198:                                              ; preds = %194
  %199 = load i8, ptr %140, align 8, !tbaa !47
  %200 = and i8 %199, 8
  %.not383 = icmp eq i8 %200, 0
  br i1 %.not383, label %201, label %.loopexit554

201:                                              ; preds = %198
  %202 = icmp eq i8 %196, -27
  br i1 %202, label %203, label %.preheader617

203:                                              ; preds = %201
  %204 = load i8, ptr %141, align 8, !tbaa !18
  %205 = icmp eq i8 %204, 0
  br i1 %205, label %.loopexit554, label %.preheader617

.preheader617:                                    ; preds = %203, %201
  br label %206

206:                                              ; preds = %.preheader617, %212
  %.pr = phi i8 [ %215, %212 ], [ %196, %.preheader617 ]
  %.0318 = phi ptr [ %214, %212 ], [ %195, %.preheader617 ]
  %.0315 = phi ptr [ %213, %212 ], [ %12, %.preheader617 ]
  %207 = load i8, ptr %.0315, align 1, !tbaa !18
  %208 = add i8 %.pr, -97
  %or.cond = icmp ult i8 %208, 26
  %209 = add nsw i8 %.pr, -32
  %spec.select404 = select i1 %or.cond, i8 %209, i8 %.pr
  %210 = add i8 %207, -97
  %or.cond11 = icmp ult i8 %210, 26
  %211 = add nsw i8 %207, -32
  %.0306 = select i1 %or.cond11, i8 %211, i8 %207
  %.not384 = icmp eq i8 %spec.select404, %.0306
  br i1 %.not384, label %212, label %.loopexit555

212:                                              ; preds = %206
  %213 = getelementptr inbounds i8, ptr %.0315, i64 1
  %214 = getelementptr inbounds i8, ptr %.0318, i64 1
  %215 = load i8, ptr %214, align 1, !tbaa !18
  %.not385 = icmp eq i8 %215, 0
  br i1 %.not385, label %.thread414, label %206, !llvm.loop !48

.thread414:                                       ; preds = %212
  %216 = load i8, ptr %213, align 1, !tbaa !18
  %217 = icmp eq i8 %216, 0
  br i1 %217, label %.thread430, label %.loopexit555

.loopexit555:                                     ; preds = %206, %.thread414
  %218 = load i8, ptr %141, align 8, !tbaa !18
  %.not386 = icmp eq i8 %218, 0
  br i1 %.not386, label %.loopexit554, label %.preheader440

.preheader440:                                    ; preds = %.loopexit555, %222
  %.pr419 = phi i8 [ %225, %222 ], [ %218, %.loopexit555 ]
  %.2320 = phi ptr [ %224, %222 ], [ %141, %.loopexit555 ]
  %.2317 = phi ptr [ %223, %222 ], [ %12, %.loopexit555 ]
  %219 = load i8, ptr %.2317, align 1, !tbaa !18
  %220 = add i8 %219, -97
  %or.cond14 = icmp ult i8 %220, 26
  %221 = add nsw i8 %219, -32
  %spec.select405 = select i1 %or.cond14, i8 %221, i8 %219
  %.not387 = icmp eq i8 %.pr419, %spec.select405
  br i1 %.not387, label %222, label %.loopexit554

222:                                              ; preds = %.preheader440
  %223 = getelementptr inbounds i8, ptr %.2317, i64 1
  %224 = getelementptr inbounds i8, ptr %.2320, i64 1
  %225 = load i8, ptr %224, align 1, !tbaa !18
  %.not388 = icmp eq i8 %225, 0
  br i1 %.not388, label %.thread420, label %.preheader440, !llvm.loop !49

.thread420:                                       ; preds = %222
  %226 = load i8, ptr %223, align 1, !tbaa !18
  %227 = icmp eq i8 %226, 0
  %spec.select406 = zext i1 %227 to i32
  br label %.loopexit554

.loopexit554:                                     ; preds = %.preheader440, %.thread420, %.loopexit555, %203, %198
  %.1331 = phi i32 [ 0, %198 ], [ 0, %203 ], [ 0, %.loopexit555 ], [ %spec.select406, %.thread420 ], [ 0, %.preheader440 ]
  %228 = icmp ult i64 %193, %.0322
  %.not389 = icmp eq i32 %.1331, 0
  %229 = select i1 %228, i1 %.not389, i1 false
  br i1 %229, label %190, label %230, !llvm.loop !50

230:                                              ; preds = %.loopexit554
  br i1 %.not389, label %.thread427, label %.thread430

.thread430:                                       ; preds = %.thread414, %230
  %231 = and i8 %199, 16
  %.not391 = icmp eq i8 %231, 0
  br i1 %.not391, label %287, label %232

232:                                              ; preds = %.thread430
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %8, ptr noundef nonnull align 8 dereferenceable(136) %2, i64 136, i1 false), !tbaa.struct !24
  store i64 0, ptr %142, align 8, !tbaa !37
  %233 = load i64, ptr %143, align 8, !tbaa !38
  %.not393 = icmp eq i64 %233, 0
  br i1 %.not393, label %234, label %.loopexit

234:                                              ; preds = %232
  %235 = load ptr, ptr %8, align 8, !tbaa !17
  store i8 0, ptr %235, align 1, !tbaa !18
  br i1 %.not, label %.loopexit, label %vector.memcheck

vector.memcheck:                                  ; preds = %234
  %236 = load ptr, ptr %3, align 8, !tbaa !17
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %3, ptr noundef nonnull align 8 dereferenceable(136) %8, i64 136, i1 false), !tbaa.struct !24
  store ptr %236, ptr %3, align 8, !tbaa !17
  %237 = load ptr, ptr %8, align 8, !tbaa !17
  %238 = ptrtoint ptr %237 to i64
  %239 = ptrtoint ptr %236 to i64
  %240 = sub i64 %239, %238
  %diff.check = icmp ult i64 %240, 32
  br i1 %diff.check, label %scalar.ph, label %vector.body

vector.body:                                      ; preds = %vector.memcheck
  %241 = getelementptr inbounds i8, ptr %237, i64 16
  %wide.load = load <16 x i8>, ptr %237, align 1, !tbaa !18
  %wide.load615 = load <16 x i8>, ptr %241, align 1, !tbaa !18
  %242 = getelementptr inbounds i8, ptr %236, i64 16
  store <16 x i8> %wide.load, ptr %236, align 1, !tbaa !18
  store <16 x i8> %wide.load615, ptr %242, align 1, !tbaa !18
  %243 = getelementptr inbounds i8, ptr %237, i64 32
  %244 = getelementptr inbounds i8, ptr %237, i64 48
  %wide.load.1 = load <16 x i8>, ptr %243, align 1, !tbaa !18
  %wide.load615.1 = load <16 x i8>, ptr %244, align 1, !tbaa !18
  %245 = getelementptr inbounds i8, ptr %236, i64 32
  %246 = getelementptr inbounds i8, ptr %236, i64 48
  store <16 x i8> %wide.load.1, ptr %245, align 1, !tbaa !18
  store <16 x i8> %wide.load615.1, ptr %246, align 1, !tbaa !18
  %247 = getelementptr inbounds i8, ptr %237, i64 64
  %248 = getelementptr inbounds i8, ptr %237, i64 80
  %wide.load.2 = load <16 x i8>, ptr %247, align 1, !tbaa !18
  %wide.load615.2 = load <16 x i8>, ptr %248, align 1, !tbaa !18
  %249 = getelementptr inbounds i8, ptr %236, i64 64
  %250 = getelementptr inbounds i8, ptr %236, i64 80
  store <16 x i8> %wide.load.2, ptr %249, align 1, !tbaa !18
  store <16 x i8> %wide.load615.2, ptr %250, align 1, !tbaa !18
  %251 = getelementptr inbounds i8, ptr %237, i64 96
  %252 = getelementptr inbounds i8, ptr %237, i64 112
  %wide.load.3 = load <16 x i8>, ptr %251, align 1, !tbaa !18
  %wide.load615.3 = load <16 x i8>, ptr %252, align 1, !tbaa !18
  %253 = getelementptr inbounds i8, ptr %236, i64 96
  %254 = getelementptr inbounds i8, ptr %236, i64 112
  store <16 x i8> %wide.load.3, ptr %253, align 1, !tbaa !18
  store <16 x i8> %wide.load615.3, ptr %254, align 1, !tbaa !18
  %255 = getelementptr inbounds i8, ptr %237, i64 128
  %256 = getelementptr inbounds i8, ptr %237, i64 144
  %wide.load.4 = load <16 x i8>, ptr %255, align 1, !tbaa !18
  %wide.load615.4 = load <16 x i8>, ptr %256, align 1, !tbaa !18
  %257 = getelementptr inbounds i8, ptr %236, i64 128
  %258 = getelementptr inbounds i8, ptr %236, i64 144
  store <16 x i8> %wide.load.4, ptr %257, align 1, !tbaa !18
  store <16 x i8> %wide.load615.4, ptr %258, align 1, !tbaa !18
  %259 = getelementptr inbounds i8, ptr %237, i64 160
  %260 = getelementptr inbounds i8, ptr %237, i64 176
  %wide.load.5 = load <16 x i8>, ptr %259, align 1, !tbaa !18
  %wide.load615.5 = load <16 x i8>, ptr %260, align 1, !tbaa !18
  %261 = getelementptr inbounds i8, ptr %236, i64 160
  %262 = getelementptr inbounds i8, ptr %236, i64 176
  store <16 x i8> %wide.load.5, ptr %261, align 1, !tbaa !18
  store <16 x i8> %wide.load615.5, ptr %262, align 1, !tbaa !18
  %263 = getelementptr inbounds i8, ptr %237, i64 192
  %264 = getelementptr inbounds i8, ptr %237, i64 208
  %wide.load.6 = load <16 x i8>, ptr %263, align 1, !tbaa !18
  %wide.load615.6 = load <16 x i8>, ptr %264, align 1, !tbaa !18
  %265 = getelementptr inbounds i8, ptr %236, i64 192
  %266 = getelementptr inbounds i8, ptr %236, i64 208
  store <16 x i8> %wide.load.6, ptr %265, align 1, !tbaa !18
  store <16 x i8> %wide.load615.6, ptr %266, align 1, !tbaa !18
  %267 = getelementptr inbounds i8, ptr %237, i64 224
  %268 = getelementptr inbounds i8, ptr %237, i64 240
  %wide.load.7 = load <16 x i8>, ptr %267, align 1, !tbaa !18
  %wide.load615.7 = load <16 x i8>, ptr %268, align 1, !tbaa !18
  %269 = getelementptr inbounds i8, ptr %236, i64 224
  %270 = getelementptr inbounds i8, ptr %236, i64 240
  store <16 x i8> %wide.load.7, ptr %269, align 1, !tbaa !18
  store <16 x i8> %wide.load615.7, ptr %270, align 1, !tbaa !18
  br label %.loopexit

scalar.ph:                                        ; preds = %vector.memcheck, %scalar.ph
  %.2311478 = phi i64 [ %286, %scalar.ph ], [ 0, %vector.memcheck ]
  %271 = getelementptr inbounds i8, ptr %237, i64 %.2311478
  %272 = load i8, ptr %271, align 1, !tbaa !18
  %273 = getelementptr inbounds i8, ptr %236, i64 %.2311478
  store i8 %272, ptr %273, align 1, !tbaa !18
  %274 = or disjoint i64 %.2311478, 1
  %275 = getelementptr inbounds i8, ptr %237, i64 %274
  %276 = load i8, ptr %275, align 1, !tbaa !18
  %277 = getelementptr inbounds i8, ptr %236, i64 %274
  store i8 %276, ptr %277, align 1, !tbaa !18
  %278 = or disjoint i64 %.2311478, 2
  %279 = getelementptr inbounds i8, ptr %237, i64 %278
  %280 = load i8, ptr %279, align 1, !tbaa !18
  %281 = getelementptr inbounds i8, ptr %236, i64 %278
  store i8 %280, ptr %281, align 1, !tbaa !18
  %282 = or disjoint i64 %.2311478, 3
  %283 = getelementptr inbounds i8, ptr %237, i64 %282
  %284 = load i8, ptr %283, align 1, !tbaa !18
  %285 = getelementptr inbounds i8, ptr %236, i64 %282
  store i8 %284, ptr %285, align 1, !tbaa !18
  %286 = add nuw nsw i64 %.2311478, 4
  %exitcond524.not.3 = icmp eq i64 %286, 256
  br i1 %exitcond524.not.3, label %.loopexit, label %scalar.ph, !llvm.loop !51

287:                                              ; preds = %.thread430
  %.not392 = icmp eq ptr %147, null
  br i1 %.not392, label %.thread433, label %.thread427

.loopexit:                                        ; preds = %scalar.ph, %vector.body, %234, %232
  %.2314 = phi ptr [ %8, %232 ], [ null, %234 ], [ null, %vector.body ], [ null, %scalar.ph ]
  %.not394 = icmp eq ptr %147, null
  br i1 %.not394, label %.thread433, label %144, !llvm.loop !53

.thread433:                                       ; preds = %.loopexit, %287
  %.2314436 = phi ptr [ %.1313, %287 ], [ %.2314, %.loopexit ]
  %288 = load i8, ptr %1, align 1, !tbaa !18
  %.not395 = icmp eq i8 %288, 92
  br i1 %.not395, label %.lr.ph481.preheader, label %289

289:                                              ; preds = %.thread433
  %290 = icmp ne i8 %288, 47
  %291 = icmp ne ptr %.0303, null
  %or.cond16 = select i1 %290, i1 %291, i1 false
  br i1 %or.cond16, label %.preheader, label %.critedge18.thread546

.preheader:                                       ; preds = %289, %305
  %.5 = phi i32 [ %307, %305 ], [ 0, %289 ]
  %292 = zext nneg i32 %.5 to i64
  %293 = getelementptr inbounds i8, ptr %.0303, i64 %292
  %294 = load i8, ptr %293, align 1, !tbaa !18
  %.not396 = icmp eq i8 %294, 0
  br i1 %.not396, label %.critedge18, label %.preheader.1

.preheader.1:                                     ; preds = %.preheader
  %295 = getelementptr inbounds [256 x i8], ptr %33, i64 0, i64 %292
  store i8 %294, ptr %295, align 1, !tbaa !18
  %296 = add nuw nsw i32 %.5, 1
  %297 = zext nneg i32 %296 to i64
  %298 = getelementptr inbounds i8, ptr %.0303, i64 %297
  %299 = load i8, ptr %298, align 1, !tbaa !18
  %.not396.1 = icmp eq i8 %299, 0
  br i1 %.not396.1, label %.critedge18, label %.preheader.2

.preheader.2:                                     ; preds = %.preheader.1
  %300 = getelementptr inbounds [256 x i8], ptr %33, i64 0, i64 %297
  store i8 %299, ptr %300, align 1, !tbaa !18
  %301 = add nuw nsw i32 %.5, 2
  %302 = zext nneg i32 %301 to i64
  %303 = getelementptr inbounds i8, ptr %.0303, i64 %302
  %304 = load i8, ptr %303, align 1, !tbaa !18
  %.not396.2 = icmp eq i8 %304, 0
  br i1 %.not396.2, label %.critedge18, label %305

305:                                              ; preds = %.preheader.2
  %306 = getelementptr inbounds [256 x i8], ptr %33, i64 0, i64 %302
  store i8 %304, ptr %306, align 1, !tbaa !18
  %307 = add nuw nsw i32 %.5, 3
  %exitcond525.not.2 = icmp eq i32 %307, 255
  br i1 %exitcond525.not.2, label %.critedge18, label %.preheader

.critedge18:                                      ; preds = %305, %.preheader.2, %.preheader.1, %.preheader
  %.6.ph.ph = phi i32 [ %.5, %.preheader ], [ %296, %.preheader.1 ], [ %301, %.preheader.2 ], [ 255, %305 ]
  %.pr437.pre = load i8, ptr %1, align 1, !tbaa !18
  %.not397 = icmp eq i8 %.pr437.pre, 92
  br i1 %.not397, label %.critedge18.thread, label %.critedge18.thread546

.critedge18.thread546:                            ; preds = %289, %.critedge18
  %.6.ph551 = phi i32 [ %.6.ph.ph, %.critedge18 ], [ 0, %289 ]
  %.pr437550 = phi i8 [ %.pr437.pre, %.critedge18 ], [ %288, %289 ]
  %308 = icmp ne i8 %.pr437550, 47
  %309 = icmp ult i32 %.6.ph551, 255
  %or.cond36 = and i1 %309, %308
  br i1 %or.cond36, label %310, label %.critedge18.thread

310:                                              ; preds = %.critedge18.thread546
  %311 = add nuw nsw i32 %.6.ph551, 1
  %312 = zext nneg i32 %.6.ph551 to i64
  %313 = getelementptr inbounds [256 x i8], ptr %33, i64 0, i64 %312
  store i8 47, ptr %313, align 1, !tbaa !18
  br label %.lr.ph481.preheader

.critedge18.thread:                               ; preds = %.critedge18.thread546, %.critedge18
  %.7 = phi i32 [ %.6.ph551, %.critedge18.thread546 ], [ %.6.ph.ph, %.critedge18 ]
  %314 = icmp ult i32 %.7, 256
  br i1 %314, label %.lr.ph481.preheader, label %.critedge407

.lr.ph481.preheader:                              ; preds = %.thread433, %310, %.critedge18.thread
  %.7553 = phi i32 [ %.7, %.critedge18.thread ], [ 0, %.thread433 ], [ %311, %310 ]
  %315 = zext nneg i32 %.7553 to i64
  %316 = sub nuw nsw i32 256, %.7553
  br label %.lr.ph481

.lr.ph481:                                        ; preds = %.lr.ph481.preheader, %320
  %indvars.iv526 = phi i64 [ %315, %.lr.ph481.preheader ], [ %indvars.iv.next527, %320 ]
  %.1325480 = phi i32 [ 0, %.lr.ph481.preheader ], [ %322, %320 ]
  %317 = zext nneg i32 %.1325480 to i64
  %318 = getelementptr inbounds i8, ptr %1, i64 %317
  %319 = load i8, ptr %318, align 1, !tbaa !18
  %.not398 = icmp eq i8 %319, 0
  br i1 %.not398, label %.critedge20, label %320

320:                                              ; preds = %.lr.ph481
  %321 = getelementptr inbounds [256 x i8], ptr %33, i64 0, i64 %indvars.iv526
  store i8 %319, ptr %321, align 1, !tbaa !18
  %indvars.iv.next527 = add nuw nsw i64 %indvars.iv526, 1
  %322 = add nuw nsw i32 %.1325480, 1
  %exitcond529.not = icmp eq i32 %322, %316
  br i1 %exitcond529.not, label %.critedge407, label %.lr.ph481, !llvm.loop !54

.critedge20:                                      ; preds = %.lr.ph481
  %323 = and i64 %indvars.iv526, 4294967295
  %324 = getelementptr inbounds [256 x i8], ptr %33, i64 0, i64 %323
  store i8 0, ptr %324, align 1, !tbaa !18
  br label %325

.critedge407:                                     ; preds = %320, %.critedge18.thread
  store i8 0, ptr %33, align 8, !tbaa !18
  br label %325

325:                                              ; preds = %.critedge407, %.critedge20
  %.not399 = icmp eq ptr %.2314436, null
  br i1 %.not399, label %328, label %326

326:                                              ; preds = %325
  %327 = getelementptr inbounds i8, ptr %0, i64 928
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %327, ptr noundef nonnull align 8 dereferenceable(136) %.2314436, i64 136, i1 false), !tbaa.struct !24
  br label %328

328:                                              ; preds = %325, %326
  %.sink = phi i32 [ 1, %326 ], [ 0, %325 ]
  %329 = getelementptr inbounds i8, ptr %0, i64 920
  store i32 %.sink, ptr %329, align 8
  %330 = getelementptr inbounds i8, ptr %0, i64 1064
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %330, ptr noundef nonnull align 8 dereferenceable(136) %2, i64 136, i1 false), !tbaa.struct !24
  %331 = getelementptr inbounds i8, ptr %0, i64 1200
  store ptr %331, ptr %330, align 8, !tbaa !55
  %.pre535 = load ptr, ptr %2, align 8, !tbaa !17
  br label %332

332:                                              ; preds = %332, %328
  %333 = phi ptr [ %.pre535, %328 ], [ %337, %332 ]
  %indvars.iv530 = phi i64 [ 0, %328 ], [ %indvars.iv.next531, %332 ]
  %334 = getelementptr inbounds i8, ptr %333, i64 %indvars.iv530
  %335 = load i8, ptr %334, align 1, !tbaa !18
  %336 = getelementptr inbounds [256 x i8], ptr %331, i64 0, i64 %indvars.iv530
  store i8 %335, ptr %336, align 1, !tbaa !18
  %337 = load ptr, ptr %2, align 8, !tbaa !17
  %338 = getelementptr inbounds i8, ptr %337, i64 %indvars.iv530
  %339 = load i8, ptr %338, align 1, !tbaa !18
  %340 = icmp eq i8 %339, 0
  %indvars.iv.next531 = add nuw nsw i64 %indvars.iv530, 1
  %exitcond533.not = icmp eq i64 %indvars.iv.next531, 256
  %or.cond589 = select i1 %340, i1 true, i1 %exitcond533.not
  br i1 %or.cond589, label %.thread427, label %332, !llvm.loop !56

.thread427:                                       ; preds = %230, %159, %161, %164, %156, %194, %190, %332, %131, %287
  %.1 = phi i32 [ 0, %131 ], [ 4, %287 ], [ 0, %332 ], [ 4, %194 ], [ %191, %190 ], [ 3, %159 ], [ 3, %161 ], [ 3, %164 ], [ %158, %156 ], [ 4, %230 ]
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %8) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #4
  ret i32 %.1
}

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

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

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

declare ptr @_fx_directory_name_extract(ptr noundef, ptr noundef) local_unnamed_addr #3

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

declare i32 @_fx_directory_entry_read(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { "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 #4 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !6, i64 648}
!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 = !{!15, !11, i64 0}
!18 = !{!7, !7, i64 0}
!19 = !{!11, !11, i64 0}
!20 = !{!21, !11, i64 272}
!21 = !{!"TX_THREAD_STRUCT", !6, i64 0, !6, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !11, i64 64, !11, i64 72, !11, i64 80, !12, i64 88, !12, i64 92, !12, i64 96, !12, i64 100, !12, i64 104, !11, i64 112, !11, i64 120, !6, i64 128, !22, i64 136, !11, i64 192, !11, i64 200, !11, i64 208, !11, i64 216, !6, i64 224, !11, i64 232, !12, i64 240, !12, i64 244, !11, i64 248, !11, i64 256, !11, i64 264, !11, i64 272, !12, i64 280, !12, i64 284, !12, i64 288, !12, i64 292, !11, i64 296, !11, i64 304, !11, i64 312, !6, i64 320}
!22 = !{!"TX_TIMER_INTERNAL_STRUCT", !6, i64 0, !6, i64 8, !11, i64 16, !6, i64 24, !11, i64 32, !11, i64 40, !11, i64 48}
!23 = !{!16, !11, i64 0}
!24 = !{i64 0, i64 8, !19, i64 8, i64 13, !18, i64 24, i64 4, !25, i64 28, i64 4, !25, i64 32, i64 1, !18, i64 33, i64 1, !18, i64 34, i64 1, !18, i64 36, i64 4, !25, i64 40, i64 4, !25, i64 44, i64 4, !25, i64 48, i64 4, !25, i64 52, i64 4, !25, i64 56, i64 8, !5, i64 64, i64 8, !26, i64 72, i64 8, !26, i64 80, i64 8, !5, i64 88, i64 8, !5, i64 96, i64 8, !5, i64 104, i64 8, !5, i64 112, i64 8, !26, i64 120, i64 8, !5, i64 128, i64 8, !26}
!25 = !{!12, !12, i64 0}
!26 = !{!13, !13, i64 0}
!27 = !{!10, !11, i64 1712}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = distinct !{!30, !29}
!31 = distinct !{!31, !29}
!32 = distinct !{!32, !29}
!33 = !{!10, !12, i64 920}
!34 = !{!10, !11, i64 928}
!35 = distinct !{!35, !29}
!36 = !{!10, !6, i64 816}
!37 = !{!15, !6, i64 96}
!38 = !{!15, !6, i64 56}
!39 = !{!10, !6, i64 12120}
!40 = !{!10, !6, i64 104}
!41 = distinct !{!41, !29}
!42 = !{!10, !12, i64 80}
!43 = !{!10, !12, i64 128}
!44 = !{!15, !13, i64 64}
!45 = distinct !{!45, !29}
!46 = !{!10, !12, i64 184}
!47 = !{!15, !7, i64 32}
!48 = distinct !{!48, !29}
!49 = distinct !{!49, !29}
!50 = distinct !{!50, !29}
!51 = distinct !{!51, !29, !52}
!52 = !{!"llvm.loop.isvectorized", i32 1}
!53 = distinct !{!53, !29}
!54 = distinct !{!54, !29}
!55 = !{!10, !11, i64 1064}
!56 = distinct !{!56, !29}


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