; LLVM IR from IOsonata/IOsonata :: fatfs (ff)

; 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.MKFS_PARM = type { i8, i8, i32, i32, i32 }
%struct.FATFS = type { i8, i8, i8, i8, i8, i16, i16, i16, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [512 x i8] }

@FatFs = external hidden global [1 x ptr], align 8
@f_mkfs.cst = external hidden constant [7 x i16], align 2
@f_mkfs.cst32 = external hidden constant [7 x i16], align 2
@f_mkfs.defopt = external hidden constant %struct.MKFS_PARM, align 4
@.str = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [20 x i8], align 1

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

; Function Attrs: nounwind uwtable
declare hidden i32 @get_ldnumber(ptr noundef) #1

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

; Function Attrs: nounwind uwtable
declare hidden void @st_dword(ptr noundef, i32 noundef) #1

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

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

declare i32 @disk_write(i8 noundef zeroext, ptr noundef, i32 noundef, i32 noundef) #4

; Function Attrs: nounwind uwtable
declare hidden void @st_word(ptr noundef, i16 noundef zeroext) #1

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

45:                                               ; preds = %4
  store i32 11, ptr %5, align 4
  store i32 1, ptr %41, align 4
  br label %777

46:                                               ; preds = %4
  %47 = load i32, ptr %38, align 4, !tbaa !9
  %48 = sext i32 %47 to i64
  %49 = getelementptr inbounds [1 x ptr], ptr @FatFs, i64 0, i64 %48
  %50 = load ptr, ptr %49, align 8, !tbaa !5
  %51 = icmp ne ptr %50, null
  br i1 %51, label %52, label %58

52:                                               ; preds = %46
  %53 = load i32, ptr %38, align 4, !tbaa !9
  %54 = sext i32 %53 to i64
  %55 = getelementptr inbounds [1 x ptr], ptr @FatFs, i64 0, i64 %54
  %56 = load ptr, ptr %55, align 8, !tbaa !5
  %57 = getelementptr inbounds %struct.FATFS, ptr %56, i32 0, i32 0
  store i8 0, ptr %57, align 4, !tbaa !11
  br label %58

58:                                               ; preds = %52, %46
  %59 = load i32, ptr %38, align 4, !tbaa !9
  %60 = trunc i32 %59 to i8
  store i8 %60, ptr %15, align 1, !tbaa !14
  store i8 0, ptr %16, align 1, !tbaa !14
  %61 = load ptr, ptr %7, align 8, !tbaa !5
  %62 = icmp ne ptr %61, null
  br i1 %62, label %64, label %63

63:                                               ; preds = %58
  store ptr @f_mkfs.defopt, ptr %7, align 8, !tbaa !5
  br label %64

64:                                               ; preds = %63, %58
  %65 = load i8, ptr %15, align 1, !tbaa !14
  %66 = call zeroext i8 @disk_initialize(i8 noundef zeroext %65)
  store i8 %66, ptr %39, align 1, !tbaa !14
  %67 = load i8, ptr %39, align 1, !tbaa !14
  %68 = zext i8 %67 to i32
  %69 = and i32 %68, 1
  %70 = icmp ne i32 %69, 0
  br i1 %70, label %71, label %72

71:                                               ; preds = %64
  store i32 3, ptr %5, align 4
  store i32 1, ptr %41, align 4
  br label %777

72:                                               ; preds = %64
  %73 = load i8, ptr %39, align 1, !tbaa !14
  %74 = zext i8 %73 to i32
  %75 = and i32 %74, 4
  %76 = icmp ne i32 %75, 0
  br i1 %76, label %77, label %78

77:                                               ; preds = %72
  store i32 10, ptr %5, align 4
  store i32 1, ptr %41, align 4
  br label %777

78:                                               ; preds = %72
  %79 = load ptr, ptr %7, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct.MKFS_PARM, ptr %79, i32 0, i32 2
  %81 = load i32, ptr %80, align 4, !tbaa !15
  store i32 %81, ptr %19, align 4, !tbaa !9
  %82 = load i32, ptr %19, align 4, !tbaa !9
  %83 = icmp eq i32 %82, 0
  br i1 %83, label %84, label %89

84:                                               ; preds = %78
  %85 = load i8, ptr %15, align 1, !tbaa !14
  %86 = call i32 @disk_ioctl(i8 noundef zeroext %85, i8 noundef zeroext 3, ptr noundef %19)
  %87 = icmp ne i32 %86, 0
  br i1 %87, label %88, label %89

88:                                               ; preds = %84
  store i32 1, ptr %19, align 4, !tbaa !9
  br label %89

89:                                               ; preds = %88, %84, %78
  %90 = load i32, ptr %19, align 4, !tbaa !9
  %91 = icmp eq i32 %90, 0
  br i1 %91, label %101, label %92

92:                                               ; preds = %89
  %93 = load i32, ptr %19, align 4, !tbaa !9
  %94 = icmp ugt i32 %93, 32768
  br i1 %94, label %101, label %95

95:                                               ; preds = %92
  %96 = load i32, ptr %19, align 4, !tbaa !9
  %97 = load i32, ptr %19, align 4, !tbaa !9
  %98 = sub i32 %97, 1
  %99 = and i32 %96, %98
  %100 = icmp ne i32 %99, 0
  br i1 %100, label %101, label %102

101:                                              ; preds = %95, %92, %89
  store i32 1, ptr %19, align 4, !tbaa !9
  br label %102

102:                                              ; preds = %101, %95
  store i16 512, ptr %17, align 2, !tbaa !17
  %103 = load ptr, ptr %7, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct.MKFS_PARM, ptr %103, i32 0, i32 0
  %105 = load i8, ptr %104, align 4, !tbaa !18
  %106 = zext i8 %105 to i32
  %107 = and i32 %106, 15
  %108 = trunc i32 %107 to i8
  store i8 %108, ptr %10, align 1, !tbaa !14
  %109 = load ptr, ptr %7, align 8, !tbaa !5
  %110 = getelementptr inbounds %struct.MKFS_PARM, ptr %109, i32 0, i32 1
  %111 = load i8, ptr %110, align 1, !tbaa !19
  %112 = zext i8 %111 to i32
  %113 = icmp sge i32 %112, 1
  br i1 %113, label %114, label %125

114:                                              ; preds = %102
  %115 = load ptr, ptr %7, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct.MKFS_PARM, ptr %115, i32 0, i32 1
  %117 = load i8, ptr %116, align 1, !tbaa !19
  %118 = zext i8 %117 to i32
  %119 = icmp sle i32 %118, 2
  br i1 %119, label %120, label %125

120:                                              ; preds = %114
  %121 = load ptr, ptr %7, align 8, !tbaa !5
  %122 = getelementptr inbounds %struct.MKFS_PARM, ptr %121, i32 0, i32 1
  %123 = load i8, ptr %122, align 1, !tbaa !19
  %124 = zext i8 %123 to i32
  br label %126

125:                                              ; preds = %114, %102
  br label %126

126:                                              ; preds = %125, %120
  %127 = phi i32 [ %124, %120 ], [ 1, %125 ]
  store i32 %127, ptr %35, align 4, !tbaa !9
  %128 = load ptr, ptr %7, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.MKFS_PARM, ptr %128, i32 0, i32 3
  %130 = load i32, ptr %129, align 4, !tbaa !20
  %131 = icmp uge i32 %130, 1
  br i1 %131, label %132, label %150

132:                                              ; preds = %126
  %133 = load ptr, ptr %7, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.MKFS_PARM, ptr %133, i32 0, i32 3
  %135 = load i32, ptr %134, align 4, !tbaa !20
  %136 = icmp ule i32 %135, 32768
  br i1 %136, label %137, label %150

137:                                              ; preds = %132
  %138 = load ptr, ptr %7, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.MKFS_PARM, ptr %138, i32 0, i32 3
  %140 = load i32, ptr %139, align 4, !tbaa !20
  %141 = load i16, ptr %17, align 2, !tbaa !17
  %142 = zext i16 %141 to i32
  %143 = sdiv i32 %142, 32
  %144 = urem i32 %140, %143
  %145 = icmp eq i32 %144, 0
  br i1 %145, label %146, label %150

146:                                              ; preds = %137
  %147 = load ptr, ptr %7, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.MKFS_PARM, ptr %147, i32 0, i32 3
  %149 = load i32, ptr %148, align 4, !tbaa !20
  br label %151

150:                                              ; preds = %137, %132, %126
  br label %151

151:                                              ; preds = %150, %146
  %152 = phi i32 [ %149, %146 ], [ 512, %150 ]
  store i32 %152, ptr %36, align 4, !tbaa !9
  %153 = load ptr, ptr %7, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.MKFS_PARM, ptr %153, i32 0, i32 4
  %155 = load i32, ptr %154, align 4, !tbaa !21
  %156 = icmp ule i32 %155, 16777216
  br i1 %156, label %157, label %171

157:                                              ; preds = %151
  %158 = load ptr, ptr %7, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.MKFS_PARM, ptr %158, i32 0, i32 4
  %160 = load i32, ptr %159, align 4, !tbaa !21
  %161 = load ptr, ptr %7, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.MKFS_PARM, ptr %161, i32 0, i32 4
  %163 = load i32, ptr %162, align 4, !tbaa !21
  %164 = sub i32 %163, 1
  %165 = and i32 %160, %164
  %166 = icmp eq i32 %165, 0
  br i1 %166, label %167, label %171

167:                                              ; preds = %157
  %168 = load ptr, ptr %7, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.MKFS_PARM, ptr %168, i32 0, i32 4
  %170 = load i32, ptr %169, align 4, !tbaa !21
  br label %172

171:                                              ; preds = %157, %151
  br label %172

172:                                              ; preds = %171, %167
  %173 = phi i32 [ %170, %167 ], [ 0, %171 ]
  store i32 %173, ptr %34, align 4, !tbaa !9
  %174 = load i16, ptr %17, align 2, !tbaa !17
  %175 = zext i16 %174 to i32
  %176 = load i32, ptr %34, align 4, !tbaa !9
  %177 = udiv i32 %176, %175
  store i32 %177, ptr %34, align 4, !tbaa !9
  %178 = load i32, ptr %9, align 4, !tbaa !9
  %179 = load i16, ptr %17, align 2, !tbaa !17
  %180 = zext i16 %179 to i32
  %181 = udiv i32 %178, %180
  store i32 %181, ptr %18, align 4, !tbaa !9
  %182 = load i32, ptr %18, align 4, !tbaa !9
  %183 = icmp eq i32 %182, 0
  br i1 %183, label %184, label %185

184:                                              ; preds = %172
  store i32 17, ptr %5, align 4
  store i32 1, ptr %41, align 4
  br label %777

185:                                              ; preds = %172
  %186 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %186, ptr %13, align 8, !tbaa !5
  %187 = load ptr, ptr %13, align 8, !tbaa !5
  %188 = icmp ne ptr %187, null
  br i1 %188, label %190, label %189

189:                                              ; preds = %185
  store i32 17, ptr %5, align 4
  store i32 1, ptr %41, align 4
  br label %777

190:                                              ; preds = %185
  store i32 0, ptr %25, align 4, !tbaa !9
  store i32 0, ptr %26, align 4, !tbaa !9
  %191 = load i8, ptr %15, align 1, !tbaa !14
  %192 = call i32 @disk_ioctl(i8 noundef zeroext %191, i8 noundef zeroext 1, ptr noundef %25)
  %193 = icmp ne i32 %192, 0
  br i1 %193, label %194, label %195

194:                                              ; preds = %190
  store i32 1, ptr %5, align 4
  store i32 1, ptr %41, align 4
  br label %777

195:                                              ; preds = %190
  %196 = load i8, ptr %10, align 1, !tbaa !14
  %197 = zext i8 %196 to i32
  %198 = and i32 %197, 8
  %199 = icmp ne i32 %198, 0
  br i1 %199, label %208, label %200

200:                                              ; preds = %195
  %201 = load i32, ptr %25, align 4, !tbaa !9
  %202 = icmp ugt i32 %201, 63
  br i1 %202, label %203, label %207

203:                                              ; preds = %200
  store i32 63, ptr %26, align 4, !tbaa !9
  %204 = load i32, ptr %26, align 4, !tbaa !9
  %205 = load i32, ptr %25, align 4, !tbaa !9
  %206 = sub i32 %205, %204
  store i32 %206, ptr %25, align 4, !tbaa !9
  br label %207

207:                                              ; preds = %203, %200
  br label %208

208:                                              ; preds = %207, %195
  %209 = load i32, ptr %25, align 4, !tbaa !9
  %210 = icmp ult i32 %209, 128
  br i1 %210, label %211, label %212

211:                                              ; preds = %208
  store i32 14, ptr %5, align 4
  store i32 1, ptr %41, align 4
  br label %777

212:                                              ; preds = %208
  br label %213

213:                                              ; preds = %212
  %214 = load i32, ptr %34, align 4, !tbaa !9
  %215 = icmp ugt i32 %214, 128
  br i1 %215, label %216, label %217

216:                                              ; preds = %213
  store i32 128, ptr %34, align 4, !tbaa !9
  br label %217

217:                                              ; preds = %216, %213
  %218 = load i8, ptr %10, align 1, !tbaa !14
  %219 = zext i8 %218 to i32
  %220 = and i32 %219, 2
  %221 = icmp ne i32 %220, 0
  br i1 %221, label %222, label %229

222:                                              ; preds = %217
  %223 = load i8, ptr %10, align 1, !tbaa !14
  %224 = zext i8 %223 to i32
  %225 = and i32 %224, 1
  %226 = icmp ne i32 %225, 0
  br i1 %226, label %228, label %227

227:                                              ; preds = %222
  store i8 3, ptr %11, align 1, !tbaa !14
  br label %237

228:                                              ; preds = %222
  br label %229

229:                                              ; preds = %228, %217
  %230 = load i8, ptr %10, align 1, !tbaa !14
  %231 = zext i8 %230 to i32
  %232 = and i32 %231, 1
  %233 = icmp ne i32 %232, 0
  br i1 %233, label %235, label %234

234:                                              ; preds = %229
  store i32 19, ptr %5, align 4
  store i32 1, ptr %41, align 4
  br label %777

235:                                              ; preds = %229
  store i8 2, ptr %11, align 1, !tbaa !14
  br label %236

236:                                              ; preds = %235
  br label %237

237:                                              ; preds = %236, %227
  %238 = load i32, ptr %25, align 4, !tbaa !9
  %239 = add i32 %238, 1344339968
  store i32 %239, ptr %24, align 4, !tbaa !9
  br label %240

240:                                              ; preds = %497, %237
  %241 = load i32, ptr %34, align 4, !tbaa !9
  store i32 %241, ptr %21, align 4, !tbaa !9
  %242 = load i8, ptr %11, align 1, !tbaa !14
  %243 = zext i8 %242 to i32
  %244 = icmp eq i32 %243, 3
  br i1 %244, label %245, label %296

245:                                              ; preds = %240
  %246 = load i32, ptr %21, align 4, !tbaa !9
  %247 = icmp eq i32 %246, 0
  br i1 %247, label %248, label %275

248:                                              ; preds = %245
  %249 = load i32, ptr %25, align 4, !tbaa !9
  %250 = udiv i32 %249, 131072
  store i32 %250, ptr %23, align 4, !tbaa !9
  store i32 0, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %251

251:                                              ; preds = %269, %248
  %252 = load i32, ptr %37, align 4, !tbaa !9
  %253 = zext i32 %252 to i64
  %254 = getelementptr inbounds [7 x i16], ptr @f_mkfs.cst32, i64 0, i64 %253
  %255 = load i16, ptr %254, align 2, !tbaa !17
  %256 = zext i16 %255 to i32
  %257 = icmp ne i32 %256, 0
  br i1 %257, label %258, label %266

258:                                              ; preds = %251
  %259 = load i32, ptr %37, align 4, !tbaa !9
  %260 = zext i32 %259 to i64
  %261 = getelementptr inbounds [7 x i16], ptr @f_mkfs.cst32, i64 0, i64 %260
  %262 = load i16, ptr %261, align 2, !tbaa !17
  %263 = zext i16 %262 to i32
  %264 = load i32, ptr %23, align 4, !tbaa !9
  %265 = icmp ule i32 %263, %264
  br label %266

266:                                              ; preds = %258, %251
  %267 = phi i1 [ false, %251 ], [ %265, %258 ]
  br i1 %267, label %268, label %274

268:                                              ; preds = %266
  br label %269

269:                                              ; preds = %268
  %270 = load i32, ptr %37, align 4, !tbaa !9
  %271 = add i32 %270, 1
  store i32 %271, ptr %37, align 4, !tbaa !9
  %272 = load i32, ptr %21, align 4, !tbaa !9
  %273 = shl i32 %272, 1
  store i32 %273, ptr %21, align 4, !tbaa !9
  br label %251, !llvm.loop !22

274:                                              ; preds = %266
  br label %275

275:                                              ; preds = %274, %245
  %276 = load i32, ptr %25, align 4, !tbaa !9
  %277 = load i32, ptr %21, align 4, !tbaa !9
  %278 = udiv i32 %276, %277
  store i32 %278, ptr %20, align 4, !tbaa !9
  %279 = load i32, ptr %20, align 4, !tbaa !9
  %280 = mul i32 %279, 4
  %281 = add i32 %280, 8
  %282 = load i16, ptr %17, align 2, !tbaa !17
  %283 = zext i16 %282 to i32
  %284 = add i32 %281, %283
  %285 = sub i32 %284, 1
  %286 = load i16, ptr %17, align 2, !tbaa !17
  %287 = zext i16 %286 to i32
  %288 = udiv i32 %285, %287
  store i32 %288, ptr %32, align 4, !tbaa !9
  store i32 32, ptr %31, align 4, !tbaa !9
  store i32 0, ptr %33, align 4, !tbaa !9
  %289 = load i32, ptr %20, align 4, !tbaa !9
  %290 = icmp ule i32 %289, 65525
  br i1 %290, label %294, label %291

291:                                              ; preds = %275
  %292 = load i32, ptr %20, align 4, !tbaa !9
  %293 = icmp ugt i32 %292, 268435445
  br i1 %293, label %294, label %295

294:                                              ; preds = %291, %275
  store i32 14, ptr %5, align 4
  store i32 1, ptr %41, align 4
  br label %777

295:                                              ; preds = %291
  br label %356

296:                                              ; preds = %240
  %297 = load i32, ptr %21, align 4, !tbaa !9
  %298 = icmp eq i32 %297, 0
  br i1 %298, label %299, label %326

299:                                              ; preds = %296
  %300 = load i32, ptr %25, align 4, !tbaa !9
  %301 = udiv i32 %300, 4096
  store i32 %301, ptr %23, align 4, !tbaa !9
  store i32 0, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %302

302:                                              ; preds = %320, %299
  %303 = load i32, ptr %37, align 4, !tbaa !9
  %304 = zext i32 %303 to i64
  %305 = getelementptr inbounds [7 x i16], ptr @f_mkfs.cst, i64 0, i64 %304
  %306 = load i16, ptr %305, align 2, !tbaa !17
  %307 = zext i16 %306 to i32
  %308 = icmp ne i32 %307, 0
  br i1 %308, label %309, label %317

309:                                              ; preds = %302
  %310 = load i32, ptr %37, align 4, !tbaa !9
  %311 = zext i32 %310 to i64
  %312 = getelementptr inbounds [7 x i16], ptr @f_mkfs.cst, i64 0, i64 %311
  %313 = load i16, ptr %312, align 2, !tbaa !17
  %314 = zext i16 %313 to i32
  %315 = load i32, ptr %23, align 4, !tbaa !9
  %316 = icmp ule i32 %314, %315
  br label %317

317:                                              ; preds = %309, %302
  %318 = phi i1 [ false, %302 ], [ %316, %309 ]
  br i1 %318, label %319, label %325

319:                                              ; preds = %317
  br label %320

320:                                              ; preds = %319
  %321 = load i32, ptr %37, align 4, !tbaa !9
  %322 = add i32 %321, 1
  store i32 %322, ptr %37, align 4, !tbaa !9
  %323 = load i32, ptr %21, align 4, !tbaa !9
  %324 = shl i32 %323, 1
  store i32 %324, ptr %21, align 4, !tbaa !9
  br label %302, !llvm.loop !24

325:                                              ; preds = %317
  br label %326

326:                                              ; preds = %325, %296
  %327 = load i32, ptr %25, align 4, !tbaa !9
  %328 = load i32, ptr %21, align 4, !tbaa !9
  %329 = udiv i32 %327, %328
  store i32 %329, ptr %20, align 4, !tbaa !9
  %330 = load i32, ptr %20, align 4, !tbaa !9
  %331 = icmp ugt i32 %330, 4085
  br i1 %331, label %332, label %336

332:                                              ; preds = %326
  %333 = load i32, ptr %20, align 4, !tbaa !9
  %334 = mul i32 %333, 2
  %335 = add i32 %334, 4
  store i32 %335, ptr %23, align 4, !tbaa !9
  br label %342

336:                                              ; preds = %326
  store i8 1, ptr %11, align 1, !tbaa !14
  %337 = load i32, ptr %20, align 4, !tbaa !9
  %338 = mul i32 %337, 3
  %339 = add i32 %338, 1
  %340 = udiv i32 %339, 2
  %341 = add i32 %340, 3
  store i32 %341, ptr %23, align 4, !tbaa !9
  br label %342

342:                                              ; preds = %336, %332
  %343 = load i32, ptr %23, align 4, !tbaa !9
  %344 = load i16, ptr %17, align 2, !tbaa !17
  %345 = zext i16 %344 to i32
  %346 = add i32 %343, %345
  %347 = sub i32 %346, 1
  %348 = load i16, ptr %17, align 2, !tbaa !17
  %349 = zext i16 %348 to i32
  %350 = udiv i32 %347, %349
  store i32 %350, ptr %32, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  %351 = load i32, ptr %36, align 4, !tbaa !9
  %352 = mul i32 %351, 32
  %353 = load i16, ptr %17, align 2, !tbaa !17
  %354 = zext i16 %353 to i32
  %355 = udiv i32 %352, %354
  store i32 %355, ptr %33, align 4, !tbaa !9
  br label %356

356:                                              ; preds = %342, %295
  %357 = load i32, ptr %26, align 4, !tbaa !9
  %358 = load i32, ptr %31, align 4, !tbaa !9
  %359 = add i32 %357, %358
  store i32 %359, ptr %27, align 4, !tbaa !9
  %360 = load i32, ptr %27, align 4, !tbaa !9
  %361 = load i32, ptr %32, align 4, !tbaa !9
  %362 = load i32, ptr %35, align 4, !tbaa !9
  %363 = mul i32 %361, %362
  %364 = add i32 %360, %363
  %365 = load i32, ptr %33, align 4, !tbaa !9
  %366 = add i32 %364, %365
  store i32 %366, ptr %28, align 4, !tbaa !9
  %367 = load i32, ptr %28, align 4, !tbaa !9
  %368 = load i32, ptr %19, align 4, !tbaa !9
  %369 = add i32 %367, %368
  %370 = sub i32 %369, 1
  %371 = load i32, ptr %19, align 4, !tbaa !9
  %372 = sub i32 %371, 1
  %373 = xor i32 %372, -1
  %374 = and i32 %370, %373
  %375 = load i32, ptr %28, align 4, !tbaa !9
  %376 = sub i32 %374, %375
  store i32 %376, ptr %23, align 4, !tbaa !9
  %377 = load i8, ptr %11, align 1, !tbaa !14
  %378 = zext i8 %377 to i32
  %379 = icmp eq i32 %378, 3
  br i1 %379, label %380, label %387

380:                                              ; preds = %356
  %381 = load i32, ptr %23, align 4, !tbaa !9
  %382 = load i32, ptr %31, align 4, !tbaa !9
  %383 = add i32 %382, %381
  store i32 %383, ptr %31, align 4, !tbaa !9
  %384 = load i32, ptr %23, align 4, !tbaa !9
  %385 = load i32, ptr %27, align 4, !tbaa !9
  %386 = add i32 %385, %384
  store i32 %386, ptr %27, align 4, !tbaa !9
  br label %405

387:                                              ; preds = %356
  %388 = load i32, ptr %23, align 4, !tbaa !9
  %389 = load i32, ptr %35, align 4, !tbaa !9
  %390 = urem i32 %388, %389
  %391 = icmp ne i32 %390, 0
  br i1 %391, label %392, label %399

392:                                              ; preds = %387
  %393 = load i32, ptr %23, align 4, !tbaa !9
  %394 = add i32 %393, -1
  store i32 %394, ptr %23, align 4, !tbaa !9
  %395 = load i32, ptr %31, align 4, !tbaa !9
  %396 = add i32 %395, 1
  store i32 %396, ptr %31, align 4, !tbaa !9
  %397 = load i32, ptr %27, align 4, !tbaa !9
  %398 = add i32 %397, 1
  store i32 %398, ptr %27, align 4, !tbaa !9
  br label %399

399:                                              ; preds = %392, %387
  %400 = load i32, ptr %23, align 4, !tbaa !9
  %401 = load i32, ptr %35, align 4, !tbaa !9
  %402 = udiv i32 %400, %401
  %403 = load i32, ptr %32, align 4, !tbaa !9
  %404 = add i32 %403, %402
  store i32 %404, ptr %32, align 4, !tbaa !9
  br label %405

405:                                              ; preds = %399, %380
  %406 = load i32, ptr %25, align 4, !tbaa !9
  %407 = load i32, ptr %28, align 4, !tbaa !9
  %408 = load i32, ptr %21, align 4, !tbaa !9
  %409 = mul i32 %408, 16
  %410 = add i32 %407, %409
  %411 = load i32, ptr %26, align 4, !tbaa !9
  %412 = sub i32 %410, %411
  %413 = icmp ult i32 %406, %412
  br i1 %413, label %414, label %415

414:                                              ; preds = %405
  store i32 14, ptr %5, align 4
  store i32 1, ptr %41, align 4
  br label %777

415:                                              ; preds = %405
  %416 = load i32, ptr %25, align 4, !tbaa !9
  %417 = load i32, ptr %31, align 4, !tbaa !9
  %418 = sub i32 %416, %417
  %419 = load i32, ptr %32, align 4, !tbaa !9
  %420 = load i32, ptr %35, align 4, !tbaa !9
  %421 = mul i32 %419, %420
  %422 = sub i32 %418, %421
  %423 = load i32, ptr %33, align 4, !tbaa !9
  %424 = sub i32 %422, %423
  %425 = load i32, ptr %21, align 4, !tbaa !9
  %426 = udiv i32 %424, %425
  store i32 %426, ptr %20, align 4, !tbaa !9
  %427 = load i8, ptr %11, align 1, !tbaa !14
  %428 = zext i8 %427 to i32
  %429 = icmp eq i32 %428, 3
  br i1 %429, label %430, label %443

430:                                              ; preds = %415
  %431 = load i32, ptr %20, align 4, !tbaa !9
  %432 = icmp ule i32 %431, 65525
  br i1 %432, label %433, label %442

433:                                              ; preds = %430
  %434 = load i32, ptr %34, align 4, !tbaa !9
  %435 = icmp eq i32 %434, 0
  br i1 %435, label %436, label %441

436:                                              ; preds = %433
  %437 = load i32, ptr %21, align 4, !tbaa !9
  %438 = udiv i32 %437, 2
  store i32 %438, ptr %34, align 4, !tbaa !9
  %439 = icmp ne i32 %438, 0
  br i1 %439, label %440, label %441

440:                                              ; preds = %436
  br label %497

441:                                              ; preds = %436, %433
  store i32 14, ptr %5, align 4
  store i32 1, ptr %41, align 4
  br label %777

442:                                              ; preds = %430
  br label %443

443:                                              ; preds = %442, %415
  %444 = load i8, ptr %11, align 1, !tbaa !14
  %445 = zext i8 %444 to i32
  %446 = icmp eq i32 %445, 2
  br i1 %446, label %447, label %488

447:                                              ; preds = %443
  %448 = load i32, ptr %20, align 4, !tbaa !9
  %449 = icmp ugt i32 %448, 65525
  br i1 %449, label %450, label %475

450:                                              ; preds = %447
  %451 = load i32, ptr %34, align 4, !tbaa !9
  %452 = icmp eq i32 %451, 0
  br i1 %452, label %453, label %460

453:                                              ; preds = %450
  %454 = load i32, ptr %21, align 4, !tbaa !9
  %455 = mul i32 %454, 2
  %456 = icmp ule i32 %455, 64
  br i1 %456, label %457, label %460

457:                                              ; preds = %453
  %458 = load i32, ptr %21, align 4, !tbaa !9
  %459 = mul i32 %458, 2
  store i32 %459, ptr %34, align 4, !tbaa !9
  br label %497

460:                                              ; preds = %453, %450
  %461 = load i8, ptr %10, align 1, !tbaa !14
  %462 = zext i8 %461 to i32
  %463 = and i32 %462, 2
  %464 = icmp ne i32 %463, 0
  br i1 %464, label %465, label %466

465:                                              ; preds = %460
  store i8 3, ptr %11, align 1, !tbaa !14
  br label %497

466:                                              ; preds = %460
  %467 = load i32, ptr %34, align 4, !tbaa !9
  %468 = icmp eq i32 %467, 0
  br i1 %468, label %469, label %474

469:                                              ; preds = %466
  %470 = load i32, ptr %21, align 4, !tbaa !9
  %471 = mul i32 %470, 2
  store i32 %471, ptr %34, align 4, !tbaa !9
  %472 = icmp ule i32 %471, 128
  br i1 %472, label %473, label %474

473:                                              ; preds = %469
  br label %497

474:                                              ; preds = %469, %466
  store i32 14, ptr %5, align 4
  store i32 1, ptr %41, align 4
  br label %777

475:                                              ; preds = %447
  %476 = load i32, ptr %20, align 4, !tbaa !9
  %477 = icmp ule i32 %476, 4085
  br i1 %477, label %478, label %487

478:                                              ; preds = %475
  %479 = load i32, ptr %34, align 4, !tbaa !9
  %480 = icmp eq i32 %479, 0
  br i1 %480, label %481, label %486

481:                                              ; preds = %478
  %482 = load i32, ptr %21, align 4, !tbaa !9
  %483 = mul i32 %482, 2
  store i32 %483, ptr %34, align 4, !tbaa !9
  %484 = icmp ule i32 %483, 128
  br i1 %484, label %485, label %486

485:                                              ; preds = %481
  br label %497

486:                                              ; preds = %481, %478
  store i32 14, ptr %5, align 4
  store i32 1, ptr %41, align 4
  br label %777

487:                                              ; preds = %475
  br label %488

488:                                              ; preds = %487, %443
  %489 = load i8, ptr %11, align 1, !tbaa !14
  %490 = zext i8 %489 to i32
  %491 = icmp eq i32 %490, 1
  br i1 %491, label %492, label %496

492:                                              ; preds = %488
  %493 = load i32, ptr %20, align 4, !tbaa !9
  %494 = icmp ugt i32 %493, 4085
  br i1 %494, label %495, label %496

495:                                              ; preds = %492
  store i32 14, ptr %5, align 4
  store i32 1, ptr %41, align 4
  br label %777

496:                                              ; preds = %492, %488
  br label %498

497:                                              ; preds = %485, %473, %465, %457, %440
  br i1 true, label %240, label %498

498:                                              ; preds = %497, %496
  %499 = load ptr, ptr %13, align 8, !tbaa !5
  %500 = load i16, ptr %17, align 2, !tbaa !17
  %501 = zext i16 %500 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %499, i8 0, i64 %501, i1 false)
  %502 = load ptr, ptr %13, align 8, !tbaa !5
  %503 = getelementptr inbounds i8, ptr %502, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %503, ptr align 1 @.str, i64 11, i1 false)
  %504 = load ptr, ptr %13, align 8, !tbaa !5
  %505 = getelementptr inbounds i8, ptr %504, i64 11
  %506 = load i16, ptr %17, align 2, !tbaa !17
  call void @st_word(ptr noundef %505, i16 noundef zeroext %506)
  %507 = load i32, ptr %21, align 4, !tbaa !9
  %508 = trunc i32 %507 to i8
  %509 = load ptr, ptr %13, align 8, !tbaa !5
  %510 = getelementptr inbounds i8, ptr %509, i64 13
  store i8 %508, ptr %510, align 1, !tbaa !14
  %511 = load ptr, ptr %13, align 8, !tbaa !5
  %512 = getelementptr inbounds i8, ptr %511, i64 14
  %513 = load i32, ptr %31, align 4, !tbaa !9
  %514 = trunc i32 %513 to i16
  call void @st_word(ptr noundef %512, i16 noundef zeroext %514)
  %515 = load i32, ptr %35, align 4, !tbaa !9
  %516 = trunc i32 %515 to i8
  %517 = load ptr, ptr %13, align 8, !tbaa !5
  %518 = getelementptr inbounds i8, ptr %517, i64 16
  store i8 %516, ptr %518, align 1, !tbaa !14
  %519 = load ptr, ptr %13, align 8, !tbaa !5
  %520 = getelementptr inbounds i8, ptr %519, i64 17
  %521 = load i8, ptr %11, align 1, !tbaa !14
  %522 = zext i8 %521 to i32
  %523 = icmp eq i32 %522, 3
  br i1 %523, label %524, label %525

524:                                              ; preds = %498
  br label %527

525:                                              ; preds = %498
  %526 = load i32, ptr %36, align 4, !tbaa !9
  br label %527

527:                                              ; preds = %525, %524
  %528 = phi i32 [ 0, %524 ], [ %526, %525 ]
  %529 = trunc i32 %528 to i16
  call void @st_word(ptr noundef %520, i16 noundef zeroext %529)
  %530 = load i32, ptr %25, align 4, !tbaa !9
  %531 = icmp ult i32 %530, 65536
  br i1 %531, label %532, label %537

532:                                              ; preds = %527
  %533 = load ptr, ptr %13, align 8, !tbaa !5
  %534 = getelementptr inbounds i8, ptr %533, i64 19
  %535 = load i32, ptr %25, align 4, !tbaa !9
  %536 = trunc i32 %535 to i16
  call void @st_word(ptr noundef %534, i16 noundef zeroext %536)
  br label %541

537:                                              ; preds = %527
  %538 = load ptr, ptr %13, align 8, !tbaa !5
  %539 = getelementptr inbounds i8, ptr %538, i64 32
  %540 = load i32, ptr %25, align 4, !tbaa !9
  call void @st_dword(ptr noundef %539, i32 noundef %540)
  br label %541

541:                                              ; preds = %537, %532
  %542 = load ptr, ptr %13, align 8, !tbaa !5
  %543 = getelementptr inbounds i8, ptr %542, i64 21
  store i8 -8, ptr %543, align 1, !tbaa !14
  %544 = load ptr, ptr %13, align 8, !tbaa !5
  %545 = getelementptr inbounds i8, ptr %544, i64 24
  call void @st_word(ptr noundef %545, i16 noundef zeroext 63)
  %546 = load ptr, ptr %13, align 8, !tbaa !5
  %547 = getelementptr inbounds i8, ptr %546, i64 26
  call void @st_word(ptr noundef %547, i16 noundef zeroext 255)
  %548 = load ptr, ptr %13, align 8, !tbaa !5
  %549 = getelementptr inbounds i8, ptr %548, i64 28
  %550 = load i32, ptr %26, align 4, !tbaa !9
  call void @st_dword(ptr noundef %549, i32 noundef %550)
  %551 = load i8, ptr %11, align 1, !tbaa !14
  %552 = zext i8 %551 to i32
  %553 = icmp eq i32 %552, 3
  br i1 %553, label %554, label %573

554:                                              ; preds = %541
  %555 = load ptr, ptr %13, align 8, !tbaa !5
  %556 = getelementptr inbounds i8, ptr %555, i64 67
  %557 = load i32, ptr %24, align 4, !tbaa !9
  call void @st_dword(ptr noundef %556, i32 noundef %557)
  %558 = load ptr, ptr %13, align 8, !tbaa !5
  %559 = getelementptr inbounds i8, ptr %558, i64 36
  %560 = load i32, ptr %32, align 4, !tbaa !9
  call void @st_dword(ptr noundef %559, i32 noundef %560)
  %561 = load ptr, ptr %13, align 8, !tbaa !5
  %562 = getelementptr inbounds i8, ptr %561, i64 44
  call void @st_dword(ptr noundef %562, i32 noundef 2)
  %563 = load ptr, ptr %13, align 8, !tbaa !5
  %564 = getelementptr inbounds i8, ptr %563, i64 48
  call void @st_word(ptr noundef %564, i16 noundef zeroext 1)
  %565 = load ptr, ptr %13, align 8, !tbaa !5
  %566 = getelementptr inbounds i8, ptr %565, i64 50
  call void @st_word(ptr noundef %566, i16 noundef zeroext 6)
  %567 = load ptr, ptr %13, align 8, !tbaa !5
  %568 = getelementptr inbounds i8, ptr %567, i64 64
  store i8 -128, ptr %568, align 1, !tbaa !14
  %569 = load ptr, ptr %13, align 8, !tbaa !5
  %570 = getelementptr inbounds i8, ptr %569, i64 66
  store i8 41, ptr %570, align 1, !tbaa !14
  %571 = load ptr, ptr %13, align 8, !tbaa !5
  %572 = getelementptr inbounds i8, ptr %571, i64 71
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %572, ptr align 1 @.str.1, i64 19, i1 false)
  br label %587

573:                                              ; preds = %541
  %574 = load ptr, ptr %13, align 8, !tbaa !5
  %575 = getelementptr inbounds i8, ptr %574, i64 39
  %576 = load i32, ptr %24, align 4, !tbaa !9
  call void @st_dword(ptr noundef %575, i32 noundef %576)
  %577 = load ptr, ptr %13, align 8, !tbaa !5
  %578 = getelementptr inbounds i8, ptr %577, i64 22
  %579 = load i32, ptr %32, align 4, !tbaa !9
  %580 = trunc i32 %579 to i16
  call void @st_word(ptr noundef %578, i16 noundef zeroext %580)
  %581 = load ptr, ptr %13, align 8, !tbaa !5
  %582 = getelementptr inbounds i8, ptr %581, i64 36
  store i8 -128, ptr %582, align 1, !tbaa !14
  %583 = load ptr, ptr %13, align 8, !tbaa !5
  %584 = getelementptr inbounds i8, ptr %583, i64 38
  store i8 41, ptr %584, align 1, !tbaa !14
  %585 = load ptr, ptr %13, align 8, !tbaa !5
  %586 = getelementptr inbounds i8, ptr %585, i64 43
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %586, ptr align 1 @.str.2, i64 19, i1 false)
  br label %587

587:                                              ; preds = %573, %554
  %588 = load ptr, ptr %13, align 8, !tbaa !5
  %589 = getelementptr inbounds i8, ptr %588, i64 510
  call void @st_word(ptr noundef %589, i16 noundef zeroext -21931)
  %590 = load i8, ptr %15, align 1, !tbaa !14
  %591 = load ptr, ptr %13, align 8, !tbaa !5
  %592 = load i32, ptr %26, align 4, !tbaa !9
  %593 = call i32 @disk_write(i8 noundef zeroext %590, ptr noundef %591, i32 noundef %592, i32 noundef 1)
  %594 = icmp ne i32 %593, 0
  br i1 %594, label %595, label %596

595:                                              ; preds = %587
  store i32 1, ptr %5, align 4
  store i32 1, ptr %41, align 4
  br label %777

596:                                              ; preds = %587
  %597 = load i8, ptr %11, align 1, !tbaa !14
  %598 = zext i8 %597 to i32
  %599 = icmp eq i32 %598, 3
  br i1 %599, label %600, label %631

600:                                              ; preds = %596
  %601 = load i8, ptr %15, align 1, !tbaa !14
  %602 = load ptr, ptr %13, align 8, !tbaa !5
  %603 = load i32, ptr %26, align 4, !tbaa !9
  %604 = add i32 %603, 6
  %605 = call i32 @disk_write(i8 noundef zeroext %601, ptr noundef %602, i32 noundef %604, i32 noundef 1)
  %606 = load ptr, ptr %13, align 8, !tbaa !5
  %607 = load i16, ptr %17, align 2, !tbaa !17
  %608 = zext i16 %607 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %606, i8 0, i64 %608, i1 false)
  %609 = load ptr, ptr %13, align 8, !tbaa !5
  %610 = getelementptr inbounds i8, ptr %609, i64 0
  call void @st_dword(ptr noundef %610, i32 noundef 1096897106)
  %611 = load ptr, ptr %13, align 8, !tbaa !5
  %612 = getelementptr inbounds i8, ptr %611, i64 484
  call void @st_dword(ptr noundef %612, i32 noundef 1631679090)
  %613 = load ptr, ptr %13, align 8, !tbaa !5
  %614 = getelementptr inbounds i8, ptr %613, i64 488
  %615 = load i32, ptr %20, align 4, !tbaa !9
  %616 = sub i32 %615, 1
  call void @st_dword(ptr noundef %614, i32 noundef %616)
  %617 = load ptr, ptr %13, align 8, !tbaa !5
  %618 = getelementptr inbounds i8, ptr %617, i64 492
  call void @st_dword(ptr noundef %618, i32 noundef 2)
  %619 = load ptr, ptr %13, align 8, !tbaa !5
  %620 = getelementptr inbounds i8, ptr %619, i64 510
  call void @st_word(ptr noundef %620, i16 noundef zeroext -21931)
  %621 = load i8, ptr %15, align 1, !tbaa !14
  %622 = load ptr, ptr %13, align 8, !tbaa !5
  %623 = load i32, ptr %26, align 4, !tbaa !9
  %624 = add i32 %623, 7
  %625 = call i32 @disk_write(i8 noundef zeroext %621, ptr noundef %622, i32 noundef %624, i32 noundef 1)
  %626 = load i8, ptr %15, align 1, !tbaa !14
  %627 = load ptr, ptr %13, align 8, !tbaa !5
  %628 = load i32, ptr %26, align 4, !tbaa !9
  %629 = add i32 %628, 1
  %630 = call i32 @disk_write(i8 noundef zeroext %626, ptr noundef %627, i32 noundef %629, i32 noundef 1)
  br label %631

631:                                              ; preds = %600, %596
  %632 = load ptr, ptr %13, align 8, !tbaa !5
  %633 = load i32, ptr %18, align 4, !tbaa !9
  %634 = load i16, ptr %17, align 2, !tbaa !17
  %635 = zext i16 %634 to i32
  %636 = mul i32 %633, %635
  %637 = zext i32 %636 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %632, i8 0, i64 %637, i1 false)
  %638 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %638, ptr %29, align 4, !tbaa !9
  store i32 0, ptr %37, align 4, !tbaa !9
  br label %639

639:                                              ; preds = %695, %631
  %640 = load i32, ptr %37, align 4, !tbaa !9
  %641 = load i32, ptr %35, align 4, !tbaa !9
  %642 = icmp ult i32 %640, %641
  br i1 %642, label %643, label %698

643:                                              ; preds = %639
  %644 = load i8, ptr %11, align 1, !tbaa !14
  %645 = zext i8 %644 to i32
  %646 = icmp eq i32 %645, 3
  br i1 %646, label %647, label %654

647:                                              ; preds = %643
  %648 = load ptr, ptr %13, align 8, !tbaa !5
  %649 = getelementptr inbounds i8, ptr %648, i64 0
  call void @st_dword(ptr noundef %649, i32 noundef -8)
  %650 = load ptr, ptr %13, align 8, !tbaa !5
  %651 = getelementptr inbounds i8, ptr %650, i64 4
  call void @st_dword(ptr noundef %651, i32 noundef -1)
  %652 = load ptr, ptr %13, align 8, !tbaa !5
  %653 = getelementptr inbounds i8, ptr %652, i64 8
  call void @st_dword(ptr noundef %653, i32 noundef 268435455)
  br label %662

654:                                              ; preds = %643
  %655 = load ptr, ptr %13, align 8, !tbaa !5
  %656 = getelementptr inbounds i8, ptr %655, i64 0
  %657 = load i8, ptr %11, align 1, !tbaa !14
  %658 = zext i8 %657 to i32
  %659 = icmp eq i32 %658, 1
  %660 = zext i1 %659 to i64
  %661 = select i1 %659, i32 16777208, i32 -8
  call void @st_dword(ptr noundef %656, i32 noundef %661)
  br label %662

662:                                              ; preds = %654, %647
  %663 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %663, ptr %22, align 4, !tbaa !9
  br label %664

664:                                              ; preds = %691, %662
  %665 = load i32, ptr %22, align 4, !tbaa !9
  %666 = load i32, ptr %18, align 4, !tbaa !9
  %667 = icmp ugt i32 %665, %666
  br i1 %667, label %668, label %670

668:                                              ; preds = %664
  %669 = load i32, ptr %18, align 4, !tbaa !9
  br label %672

670:                                              ; preds = %664
  %671 = load i32, ptr %22, align 4, !tbaa !9
  br label %672

672:                                              ; preds = %670, %668
  %673 = phi i32 [ %669, %668 ], [ %671, %670 ]
  store i32 %673, ptr %23, align 4, !tbaa !9
  %674 = load i8, ptr %15, align 1, !tbaa !14
  %675 = load ptr, ptr %13, align 8, !tbaa !5
  %676 = load i32, ptr %29, align 4, !tbaa !9
  %677 = load i32, ptr %23, align 4, !tbaa !9
  %678 = call i32 @disk_write(i8 noundef zeroext %674, ptr noundef %675, i32 noundef %676, i32 noundef %677)
  %679 = icmp ne i32 %678, 0
  br i1 %679, label %680, label %681

680:                                              ; preds = %672
  store i32 1, ptr %5, align 4
  store i32 1, ptr %41, align 4
  br label %777

681:                                              ; preds = %672
  %682 = load ptr, ptr %13, align 8, !tbaa !5
  %683 = load i16, ptr %17, align 2, !tbaa !17
  %684 = zext i16 %683 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %682, i8 0, i64 %684, i1 false)
  %685 = load i32, ptr %23, align 4, !tbaa !9
  %686 = load i32, ptr %29, align 4, !tbaa !9
  %687 = add i32 %686, %685
  store i32 %687, ptr %29, align 4, !tbaa !9
  %688 = load i32, ptr %23, align 4, !tbaa !9
  %689 = load i32, ptr %22, align 4, !tbaa !9
  %690 = sub i32 %689, %688
  store i32 %690, ptr %22, align 4, !tbaa !9
  br label %691

691:                                              ; preds = %681
  %692 = load i32, ptr %22, align 4, !tbaa !9
  %693 = icmp ne i32 %692, 0
  br i1 %693, label %664, label %694, !llvm.loop !25

694:                                              ; preds = %691
  br label %695

695:                                              ; preds = %694
  %696 = load i32, ptr %37, align 4, !tbaa !9
  %697 = add i32 %696, 1
  store i32 %697, ptr %37, align 4, !tbaa !9
  br label %639, !llvm.loop !26

698:                                              ; preds = %639
  %699 = load i8, ptr %11, align 1, !tbaa !14
  %700 = zext i8 %699 to i32
  %701 = icmp eq i32 %700, 3
  br i1 %701, label %702, label %704

702:                                              ; preds = %698
  %703 = load i32, ptr %21, align 4, !tbaa !9
  br label %706

704:                                              ; preds = %698
  %705 = load i32, ptr %33, align 4, !tbaa !9
  br label %706

706:                                              ; preds = %704, %702
  %707 = phi i32 [ %703, %702 ], [ %705, %704 ]
  store i32 %707, ptr %22, align 4, !tbaa !9
  br label %708

708:                                              ; preds = %732, %706
  %709 = load i32, ptr %22, align 4, !tbaa !9
  %710 = load i32, ptr %18, align 4, !tbaa !9
  %711 = icmp ugt i32 %709, %710
  br i1 %711, label %712, label %714

712:                                              ; preds = %708
  %713 = load i32, ptr %18, align 4, !tbaa !9
  br label %716

714:                                              ; preds = %708
  %715 = load i32, ptr %22, align 4, !tbaa !9
  br label %716

716:                                              ; preds = %714, %712
  %717 = phi i32 [ %713, %712 ], [ %715, %714 ]
  store i32 %717, ptr %23, align 4, !tbaa !9
  %718 = load i8, ptr %15, align 1, !tbaa !14
  %719 = load ptr, ptr %13, align 8, !tbaa !5
  %720 = load i32, ptr %29, align 4, !tbaa !9
  %721 = load i32, ptr %23, align 4, !tbaa !9
  %722 = call i32 @disk_write(i8 noundef zeroext %718, ptr noundef %719, i32 noundef %720, i32 noundef %721)
  %723 = icmp ne i32 %722, 0
  br i1 %723, label %724, label %725

724:                                              ; preds = %716
  store i32 1, ptr %5, align 4
  store i32 1, ptr %41, align 4
  br label %777

725:                                              ; preds = %716
  %726 = load i32, ptr %23, align 4, !tbaa !9
  %727 = load i32, ptr %29, align 4, !tbaa !9
  %728 = add i32 %727, %726
  store i32 %728, ptr %29, align 4, !tbaa !9
  %729 = load i32, ptr %23, align 4, !tbaa !9
  %730 = load i32, ptr %22, align 4, !tbaa !9
  %731 = sub i32 %730, %729
  store i32 %731, ptr %22, align 4, !tbaa !9
  br label %732

732:                                              ; preds = %725
  %733 = load i32, ptr %22, align 4, !tbaa !9
  %734 = icmp ne i32 %733, 0
  br i1 %734, label %708, label %735, !llvm.loop !27

735:                                              ; preds = %732
  %736 = load i8, ptr %11, align 1, !tbaa !14
  %737 = zext i8 %736 to i32
  %738 = icmp eq i32 %737, 3
  br i1 %738, label %739, label %740

739:                                              ; preds = %735
  store i8 12, ptr %12, align 1, !tbaa !14
  br label %752

740:                                              ; preds = %735
  %741 = load i32, ptr %25, align 4, !tbaa !9
  %742 = icmp uge i32 %741, 65536
  br i1 %742, label %743, label %744

743:                                              ; preds = %740
  store i8 6, ptr %12, align 1, !tbaa !14
  br label %751

744:                                              ; preds = %740
  %745 = load i8, ptr %11, align 1, !tbaa !14
  %746 = zext i8 %745 to i32
  %747 = icmp eq i32 %746, 2
  %748 = zext i1 %747 to i64
  %749 = select i1 %747, i32 4, i32 1
  %750 = trunc i32 %749 to i8
  store i8 %750, ptr %12, align 1, !tbaa !14
  br label %751

751:                                              ; preds = %744, %743
  br label %752

752:                                              ; preds = %751, %739
  %753 = load i8, ptr %10, align 1, !tbaa !14
  %754 = zext i8 %753 to i32
  %755 = and i32 %754, 8
  %756 = icmp ne i32 %755, 0
  br i1 %756, label %771, label %757

757:                                              ; preds = %752
  %758 = load i32, ptr %25, align 4, !tbaa !9
  %759 = getelementptr inbounds [2 x i32], ptr %30, i64 0, i64 0
  store i32 %758, ptr %759, align 4, !tbaa !9
  %760 = getelementptr inbounds [2 x i32], ptr %30, i64 0, i64 1
  store i32 0, ptr %760, align 4, !tbaa !9
  %761 = load i8, ptr %15, align 1, !tbaa !14
  %762 = getelementptr inbounds [2 x i32], ptr %30, i64 0, i64 0
  %763 = load i8, ptr %12, align 1, !tbaa !14
  %764 = load ptr, ptr %13, align 8, !tbaa !5
  %765 = call i32 @create_partition(i8 noundef zeroext %761, ptr noundef %762, i8 noundef zeroext %763, ptr noundef %764)
  store i32 %765, ptr %40, align 4, !tbaa !9
  %766 = load i32, ptr %40, align 4, !tbaa !9
  %767 = icmp ne i32 %766, 0
  br i1 %767, label %768, label %770

768:                                              ; preds = %757
  %769 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %769, ptr %5, align 4
  store i32 1, ptr %41, align 4
  br label %777

770:                                              ; preds = %757
  br label %771

771:                                              ; preds = %770, %752
  %772 = load i8, ptr %15, align 1, !tbaa !14
  %773 = call i32 @disk_ioctl(i8 noundef zeroext %772, i8 noundef zeroext 0, ptr noundef null)
  %774 = icmp ne i32 %773, 0
  br i1 %774, label %775, label %776

775:                                              ; preds = %771
  store i32 1, ptr %5, align 4
  store i32 1, ptr %41, align 4
  br label %777

776:                                              ; preds = %771
  store i32 0, ptr %5, align 4
  store i32 1, ptr %41, align 4
  br label %777

777:                                              ; preds = %776, %775, %768, %724, %680, %595, %495, %486, %474, %441, %414, %294, %234, %211, %194, %189, %184, %77, %71, %45
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 2, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #5
  %778 = load i32, ptr %5, align 4
  ret i32 %778
}

declare zeroext i8 @disk_initialize(i8 noundef zeroext) #4

declare i32 @disk_ioctl(i8 noundef zeroext, i8 noundef zeroext, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare hidden i32 @create_partition(i8 noundef zeroext, ptr noundef, i8 noundef zeroext, ptr noundef) #1

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !7, i64 0}
!12 = !{!"", !7, i64 0, !7, i64 1, !7, i64 2, !7, i64 3, !7, i64 4, !13, i64 6, !13, i64 8, !13, i64 10, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !7, i64 52}
!13 = !{!"short", !7, i64 0}
!14 = !{!7, !7, i64 0}
!15 = !{!16, !10, i64 4}
!16 = !{!"", !7, i64 0, !7, i64 1, !10, i64 4, !10, i64 8, !10, i64 12}
!17 = !{!13, !13, i64 0}
!18 = !{!16, !7, i64 0}
!19 = !{!16, !7, i64 1}
!20 = !{!16, !10, i64 8}
!21 = !{!16, !10, i64 12}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}
!24 = distinct !{!24, !23}
!25 = distinct !{!25, !23}
!26 = distinct !{!26, !23}
!27 = distinct !{!27, !23}


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

@FatFs = external hidden local_unnamed_addr global [1 x ptr], align 8
@f_mkfs.cst = external hidden local_unnamed_addr constant [7 x i16], align 2
@f_mkfs.cst32 = external hidden local_unnamed_addr constant [7 x i16], align 2
@f_mkfs.defopt = external hidden local_unnamed_addr constant %struct.MKFS_PARM, align 4
@.str = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [20 x i8], align 1

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

; Function Attrs: nounwind uwtable
declare hidden i32 @get_ldnumber(ptr noundef) local_unnamed_addr #1

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

; Function Attrs: nounwind uwtable
declare hidden void @st_dword(ptr noundef, i32 noundef) local_unnamed_addr #1

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

; 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) #3

declare i32 @disk_write(i8 noundef zeroext, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare hidden void @st_word(ptr noundef, i16 noundef zeroext) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local i32 @f_mkfs(ptr noundef %0, ptr noundef readonly %1, ptr noundef %2, i32 noundef %3) local_unnamed_addr #1 {
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca [2 x i32], align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #6
  %9 = call i32 @get_ldnumber(ptr noundef nonnull %5)
  %10 = icmp slt i32 %9, 0
  br i1 %10, label %.loopexit, label %11

11:                                               ; preds = %4
  %12 = zext nneg i32 %9 to i64
  %13 = getelementptr inbounds [1 x ptr], ptr @FatFs, i64 0, i64 %12
  %14 = load ptr, ptr %13, align 8, !tbaa !5
  %.not = icmp eq ptr %14, null
  br i1 %.not, label %16, label %15

15:                                               ; preds = %11
  store i8 0, ptr %14, align 4, !tbaa !9
  br label %16

16:                                               ; preds = %15, %11
  %17 = trunc i32 %9 to i8
  %.not291 = icmp eq ptr %1, null
  %spec.store.select = select i1 %.not291, ptr @f_mkfs.defopt, ptr %1
  %18 = call zeroext i8 @disk_initialize(i8 noundef zeroext %17) #6
  %19 = zext i8 %18 to i32
  %20 = and i32 %19, 1
  %.not292 = icmp eq i32 %20, 0
  br i1 %.not292, label %21, label %.loopexit

21:                                               ; preds = %16
  %22 = and i32 %19, 4
  %.not293 = icmp eq i32 %22, 0
  br i1 %.not293, label %23, label %.loopexit

23:                                               ; preds = %21
  %24 = getelementptr inbounds i8, ptr %spec.store.select, i64 4
  %25 = load i32, ptr %24, align 4, !tbaa !13
  store i32 %25, ptr %6, align 4, !tbaa !15
  %26 = icmp eq i32 %25, 0
  br i1 %26, label %27, label %30

27:                                               ; preds = %23
  %28 = call i32 @disk_ioctl(i8 noundef zeroext %17, i8 noundef zeroext 3, ptr noundef nonnull %6) #6
  %.not294 = icmp eq i32 %28, 0
  br i1 %.not294, label %._crit_edge415, label %29

._crit_edge415:                                   ; preds = %27
  %.pre = load i32, ptr %6, align 4
  br label %30

29:                                               ; preds = %27
  store i32 1, ptr %6, align 4, !tbaa !15
  br label %30

30:                                               ; preds = %._crit_edge415, %29, %23
  %31 = phi i32 [ %.pre, %._crit_edge415 ], [ 1, %29 ], [ %25, %23 ]
  %32 = add i32 %31, -1
  %or.cond = icmp ult i32 %32, 32768
  %33 = call range(i32 0, 17) i32 @llvm.ctpop.i32(i32 %31)
  %.not295 = icmp ult i32 %33, 2
  %or.cond317 = select i1 %or.cond, i1 %.not295, i1 false
  br i1 %or.cond317, label %35, label %34

34:                                               ; preds = %30
  store i32 1, ptr %6, align 4, !tbaa !15
  br label %35

35:                                               ; preds = %30, %34
  %36 = load i8, ptr %spec.store.select, align 4, !tbaa !16
  %37 = and i8 %36, 15
  %38 = getelementptr inbounds i8, ptr %spec.store.select, i64 1
  %39 = load i8, ptr %38, align 1, !tbaa !17
  %40 = add i8 %39, -1
  %or.cond318 = icmp ult i8 %40, 2
  %narrow = select i1 %or.cond318, i8 %39, i8 1
  %41 = zext i8 %narrow to i32
  %42 = getelementptr inbounds i8, ptr %spec.store.select, i64 8
  %43 = load i32, ptr %42, align 4, !tbaa !18
  %44 = add i32 %43, -1
  %or.cond319 = icmp ult i32 %44, 32768
  %45 = and i32 %43, 15
  %46 = icmp eq i32 %45, 0
  %or.cond321 = and i1 %or.cond319, %46
  %47 = select i1 %or.cond321, i32 %43, i32 512
  %48 = getelementptr inbounds i8, ptr %spec.store.select, i64 12
  %49 = load i32, ptr %48, align 4, !tbaa !19
  %50 = icmp ult i32 %49, 16777217
  %51 = call range(i32 0, 26) i32 @llvm.ctpop.i32(i32 %49)
  %52 = icmp ult i32 %51, 2
  %or.cond323 = select i1 %50, i1 %52, i1 false
  %53 = lshr i32 %49, 9
  %54 = call i32 @llvm.umin.i32(i32 %53, i32 128)
  %55 = lshr i32 %3, 9
  %56 = icmp ult i32 %3, 512
  %.not298 = icmp eq ptr %2, null
  %or.cond332 = or i1 %.not298, %56
  br i1 %or.cond332, label %.loopexit, label %57

57:                                               ; preds = %35
  store i32 0, ptr %7, align 4, !tbaa !15
  %58 = call i32 @disk_ioctl(i8 noundef zeroext %17, i8 noundef zeroext 1, ptr noundef nonnull %7) #6
  %.not299 = icmp eq i32 %58, 0
  br i1 %.not299, label %59, label %.loopexit

59:                                               ; preds = %57
  %60 = zext nneg i8 %37 to i32
  %61 = icmp ult i8 %37, 8
  %62 = load i32, ptr %7, align 4
  %63 = icmp ugt i32 %62, 63
  %or.cond10 = select i1 %61, i1 %63, i1 false
  br i1 %or.cond10, label %64, label %66

64:                                               ; preds = %59
  %65 = add i32 %62, -63
  store i32 %65, ptr %7, align 4, !tbaa !15
  br label %66

66:                                               ; preds = %64, %59
  %67 = phi i32 [ %65, %64 ], [ %62, %59 ]
  %.0262 = phi i32 [ 63, %64 ], [ 0, %59 ]
  %68 = icmp ult i32 %67, 128
  br i1 %68, label %.loopexit, label %69

69:                                               ; preds = %66
  %70 = and i32 %60, 2
  %.not300 = icmp ne i32 %70, 0
  %71 = and i32 %60, 1
  %.not301 = icmp ne i32 %71, 0
  %72 = and i32 %60, 3
  %or.cond324 = icmp eq i32 %72, 2
  %brmerge337 = or i1 %or.cond324, %.not301
  br i1 %brmerge337, label %.preheader, label %.loopexit

.preheader:                                       ; preds = %69
  %spec.store.select2 = select i1 %or.cond323, i32 %54, i32 0
  %73 = add i32 %67, 1344339968
  %74 = lshr i32 %67, 12
  %75 = load i16, ptr @f_mkfs.cst, align 2
  %.not303362 = icmp eq i16 %75, 0
  %76 = zext i16 %75 to i32
  %.not304363 = icmp ult i32 %74, %76
  %or.cond326364 = or i1 %.not303362, %.not304363
  %77 = lshr exact i32 %47, 4
  %78 = lshr i32 %67, 17
  %79 = load i16, ptr @f_mkfs.cst32, align 2
  %.not305367 = icmp eq i16 %79, 0
  %80 = zext i16 %79 to i32
  %.not306368 = icmp ult i32 %78, %80
  %or.cond325369 = or i1 %.not305367, %.not306368
  %81 = load i32, ptr %6, align 4
  %82 = add i32 %81, -1
  %83 = sub i32 0, %81
  %spec.select444 = select i1 %or.cond324, i8 3, i8 2
  br label %84

84:                                               ; preds = %.backedge, %.preheader
  %.0244 = phi i32 [ %spec.store.select2, %.preheader ], [ %.0244.be, %.backedge ]
  %.1 = phi i8 [ %spec.select444, %.preheader ], [ %.1.be, %.backedge ]
  %85 = icmp eq i8 %.1, 3
  %86 = icmp ne i32 %.0244, 0
  %.0244.mux = select i1 %86, i32 %.0244, i32 1
  br i1 %85, label %87, label %98

87:                                               ; preds = %84
  %brmerge383 = select i1 %86, i1 true, i1 %or.cond325369
  br i1 %brmerge383, label %.critedge, label %.lr.ph372

.lr.ph372:                                        ; preds = %87, %.lr.ph372
  %.0240371 = phi i32 [ %88, %.lr.ph372 ], [ 0, %87 ]
  %.0255370 = phi i32 [ %89, %.lr.ph372 ], [ 1, %87 ]
  %88 = add i32 %.0240371, 1
  %89 = shl i32 %.0255370, 1
  %90 = zext i32 %88 to i64
  %91 = getelementptr inbounds [7 x i16], ptr @f_mkfs.cst32, i64 0, i64 %90
  %92 = load i16, ptr %91, align 2, !tbaa !20
  %.not305 = icmp eq i16 %92, 0
  %93 = zext i16 %92 to i32
  %.not306 = icmp ult i32 %78, %93
  %or.cond325 = or i1 %.not305, %.not306
  br i1 %or.cond325, label %.critedge, label %.lr.ph372, !llvm.loop !21

.critedge:                                        ; preds = %.lr.ph372, %87
  %.1256 = phi i32 [ %.0244.mux, %87 ], [ %89, %.lr.ph372 ]
  %94 = udiv i32 %67, %.1256
  %95 = shl nuw nsw i32 %94, 2
  %96 = add nuw i32 %95, 519
  %97 = add i32 %94, -268435446
  %or.cond4 = icmp ult i32 %97, -268369920
  br i1 %or.cond4, label %.loopexit, label %117

98:                                               ; preds = %84
  %brmerge385 = select i1 %86, i1 true, i1 %or.cond326364
  br i1 %brmerge385, label %.critedge6, label %.lr.ph

.lr.ph:                                           ; preds = %98, %.lr.ph
  %.1241366 = phi i32 [ %99, %.lr.ph ], [ 0, %98 ]
  %.2257365 = phi i32 [ %100, %.lr.ph ], [ 1, %98 ]
  %99 = add i32 %.1241366, 1
  %100 = shl i32 %.2257365, 1
  %101 = zext i32 %99 to i64
  %102 = getelementptr inbounds [7 x i16], ptr @f_mkfs.cst, i64 0, i64 %101
  %103 = load i16, ptr %102, align 2, !tbaa !20
  %.not303 = icmp eq i16 %103, 0
  %104 = zext i16 %103 to i32
  %.not304 = icmp ult i32 %74, %104
  %or.cond326 = or i1 %.not303, %.not304
  br i1 %or.cond326, label %.critedge6, label %.lr.ph, !llvm.loop !23

.critedge6:                                       ; preds = %.lr.ph, %98
  %.3258 = phi i32 [ %.0244.mux, %98 ], [ %100, %.lr.ph ]
  %105 = udiv i32 %67, %.3258
  %106 = icmp ugt i32 %105, 4085
  br i1 %106, label %107, label %110

107:                                              ; preds = %.critedge6
  %108 = shl i32 %105, 1
  %109 = add i32 %108, 4
  br label %115

110:                                              ; preds = %.critedge6
  %111 = mul nuw nsw i32 %105, 3
  %112 = add nuw nsw i32 %111, 1
  %113 = lshr i32 %112, 1
  %114 = add nuw nsw i32 %113, 3
  br label %115

115:                                              ; preds = %110, %107
  %.0265 = phi i32 [ %109, %107 ], [ %114, %110 ]
  %.2 = phi i8 [ %.1, %107 ], [ 1, %110 ]
  %116 = add i32 %.0265, 511
  br label %117

117:                                              ; preds = %.critedge, %115
  %.4259 = phi i32 [ %.1256, %.critedge ], [ %.3258, %115 ]
  %.0249 = phi i32 [ 32, %.critedge ], [ 1, %115 ]
  %.0247.in = phi i32 [ %96, %.critedge ], [ %116, %115 ]
  %.0246 = phi i32 [ 0, %.critedge ], [ %77, %115 ]
  %.3 = phi i8 [ 3, %.critedge ], [ %.2, %115 ]
  %.0247 = lshr i32 %.0247.in, 9
  %118 = add nuw nsw i32 %.0249, %.0262
  %119 = mul nuw nsw i32 %.0247, %41
  %120 = add nuw nsw i32 %.0246, %118
  %121 = add nuw nsw i32 %120, %119
  %122 = add i32 %82, %121
  %123 = and i32 %122, %83
  %124 = sub i32 %123, %121
  %125 = icmp eq i8 %.3, 3
  br i1 %125, label %132, label %126

126:                                              ; preds = %117
  %127 = urem i32 %124, %41
  %.not307 = icmp ne i32 %127, 0
  %128 = sext i1 %.not307 to i32
  %.1266 = add i32 %124, %128
  %129 = zext i1 %.not307 to i32
  %130 = udiv i32 %.1266, %41
  %131 = add i32 %130, %.0247
  br label %132

132:                                              ; preds = %117, %126
  %.pn = phi i32 [ %129, %126 ], [ %124, %117 ]
  %.1248 = phi i32 [ %131, %126 ], [ %.0247, %117 ]
  %.2251 = add i32 %.pn, %.0249
  %133 = shl i32 %.4259, 4
  %134 = sub i32 %133, %.0262
  %135 = add i32 %134, %121
  %136 = icmp ult i32 %67, %135
  br i1 %136, label %.loopexit, label %137

137:                                              ; preds = %132
  %138 = mul i32 %.1248, %41
  %139 = add i32 %.0246, %.2251
  %140 = add i32 %139, %138
  %141 = sub i32 %67, %140
  %142 = udiv i32 %141, %.4259
  %143 = icmp ult i32 %142, 65526
  %or.cond12 = select i1 %125, i1 %143, i1 false
  br i1 %or.cond12, label %144, label %147

144:                                              ; preds = %137
  %145 = icmp ne i32 %.0244, 0
  %146 = lshr i32 %.4259, 1
  %.not316 = icmp ult i32 %.4259, 2
  %or.cond327 = or i1 %145, %.not316
  br i1 %or.cond327, label %.loopexit, label %.backedge

147:                                              ; preds = %137
  %148 = icmp eq i8 %.3, 2
  br i1 %148, label %149, label %163

149:                                              ; preds = %147
  %150 = icmp ugt i32 %142, 65525
  br i1 %150, label %151, label %157

151:                                              ; preds = %149
  %152 = icmp eq i32 %.0244, 0
  %153 = shl i32 %.4259, 1
  %154 = icmp ult i32 %153, 65
  %or.cond334 = and i1 %152, %154
  %brmerge = or i1 %.not300, %or.cond334
  %.mux = select i1 %or.cond334, i32 %153, i32 %.0244
  %.3.mux = select i1 %or.cond334, i8 2, i8 3
  br i1 %brmerge, label %.backedge, label %155

.backedge:                                        ; preds = %151, %159, %155, %144
  %.0244.be = phi i32 [ %146, %144 ], [ %153, %155 ], [ %161, %159 ], [ %.mux, %151 ]
  %.1.be = phi i8 [ 3, %144 ], [ 2, %155 ], [ 2, %159 ], [ %.3.mux, %151 ]
  br label %84

155:                                              ; preds = %151
  %156 = icmp ult i32 %153, 129
  %or.cond329 = and i1 %152, %156
  br i1 %or.cond329, label %.backedge, label %.loopexit

157:                                              ; preds = %149
  %158 = icmp ult i32 %142, 4086
  br i1 %158, label %159, label %.thread

159:                                              ; preds = %157
  %160 = icmp eq i32 %.0244, 0
  %161 = shl i32 %.4259, 1
  %162 = icmp ult i32 %161, 129
  %or.cond331 = and i1 %160, %162
  br i1 %or.cond331, label %.backedge, label %.loopexit

163:                                              ; preds = %147
  %164 = icmp eq i8 %.3, 1
  %165 = icmp ugt i32 %142, 4085
  %or.cond8 = select i1 %164, i1 %165, i1 false
  br i1 %or.cond8, label %.loopexit, label %.thread

.thread:                                          ; preds = %157, %163
  %166 = phi i1 [ %164, %163 ], [ false, %157 ]
  %.1261353 = add i32 %.pn, %118
  %167 = getelementptr i8, ptr %2, i64 11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(501) %167, i8 0, i64 501, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(11) %2, ptr noundef nonnull align 1 dereferenceable(11) @.str, i64 11, i1 false)
  %168 = getelementptr inbounds i8, ptr %2, i64 11
  call void @st_word(ptr noundef nonnull %168, i16 noundef zeroext 512)
  %169 = trunc i32 %.4259 to i8
  %170 = getelementptr inbounds i8, ptr %2, i64 13
  store i8 %169, ptr %170, align 1, !tbaa !24
  %171 = getelementptr inbounds i8, ptr %2, i64 14
  %172 = trunc i32 %.2251 to i16
  call void @st_word(ptr noundef nonnull %171, i16 noundef zeroext %172)
  %173 = getelementptr inbounds i8, ptr %2, i64 16
  store i8 %narrow, ptr %173, align 1, !tbaa !24
  %174 = getelementptr inbounds i8, ptr %2, i64 17
  %175 = trunc nuw i32 %47 to i16
  %176 = select i1 %125, i16 0, i16 %175
  call void @st_word(ptr noundef nonnull %174, i16 noundef zeroext %176)
  %177 = load i32, ptr %7, align 4, !tbaa !15
  %178 = icmp ult i32 %177, 65536
  br i1 %178, label %179, label %182

179:                                              ; preds = %.thread
  %180 = getelementptr inbounds i8, ptr %2, i64 19
  %181 = trunc nuw i32 %177 to i16
  call void @st_word(ptr noundef nonnull %180, i16 noundef zeroext %181)
  br label %184

182:                                              ; preds = %.thread
  %183 = getelementptr inbounds i8, ptr %2, i64 32
  call void @st_dword(ptr noundef nonnull %183, i32 noundef %177)
  br label %184

184:                                              ; preds = %182, %179
  %185 = getelementptr inbounds i8, ptr %2, i64 21
  store i8 -8, ptr %185, align 1, !tbaa !24
  %186 = getelementptr inbounds i8, ptr %2, i64 24
  call void @st_word(ptr noundef nonnull %186, i16 noundef zeroext 63)
  %187 = getelementptr inbounds i8, ptr %2, i64 26
  call void @st_word(ptr noundef nonnull %187, i16 noundef zeroext 255)
  %188 = getelementptr inbounds i8, ptr %2, i64 28
  call void @st_dword(ptr noundef nonnull %188, i32 noundef %.0262)
  br i1 %125, label %189, label %198

189:                                              ; preds = %184
  %190 = getelementptr inbounds i8, ptr %2, i64 67
  call void @st_dword(ptr noundef nonnull %190, i32 noundef %73)
  %191 = getelementptr inbounds i8, ptr %2, i64 36
  call void @st_dword(ptr noundef nonnull %191, i32 noundef %.1248)
  %192 = getelementptr inbounds i8, ptr %2, i64 44
  call void @st_dword(ptr noundef nonnull %192, i32 noundef 2)
  %193 = getelementptr inbounds i8, ptr %2, i64 48
  call void @st_word(ptr noundef nonnull %193, i16 noundef zeroext 1)
  %194 = getelementptr inbounds i8, ptr %2, i64 50
  call void @st_word(ptr noundef nonnull %194, i16 noundef zeroext 6)
  %195 = getelementptr inbounds i8, ptr %2, i64 64
  store i8 -128, ptr %195, align 1, !tbaa !24
  %196 = getelementptr inbounds i8, ptr %2, i64 66
  store i8 41, ptr %196, align 1, !tbaa !24
  %197 = getelementptr inbounds i8, ptr %2, i64 71
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(19) %197, ptr noundef nonnull align 1 dereferenceable(19) @.str.1, i64 19, i1 false)
  br label %205

198:                                              ; preds = %184
  %199 = getelementptr inbounds i8, ptr %2, i64 39
  call void @st_dword(ptr noundef nonnull %199, i32 noundef %73)
  %200 = getelementptr inbounds i8, ptr %2, i64 22
  %201 = trunc i32 %.1248 to i16
  call void @st_word(ptr noundef nonnull %200, i16 noundef zeroext %201)
  %202 = getelementptr inbounds i8, ptr %2, i64 36
  store i8 -128, ptr %202, align 1, !tbaa !24
  %203 = getelementptr inbounds i8, ptr %2, i64 38
  store i8 41, ptr %203, align 1, !tbaa !24
  %204 = getelementptr inbounds i8, ptr %2, i64 43
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(19) %204, ptr noundef nonnull align 1 dereferenceable(19) @.str.2, i64 19, i1 false)
  br label %205

205:                                              ; preds = %198, %189
  %206 = getelementptr inbounds i8, ptr %2, i64 510
  call void @st_word(ptr noundef nonnull %206, i16 noundef zeroext -21931)
  %207 = call i32 @disk_write(i8 noundef zeroext %17, ptr noundef nonnull %2, i32 noundef %.0262, i32 noundef 1) #6
  %.not308 = icmp eq i32 %207, 0
  br i1 %.not308, label %208, label %.loopexit

208:                                              ; preds = %205
  br i1 %125, label %209, label %.thread416

209:                                              ; preds = %208
  %210 = add nuw nsw i32 %.0262, 6
  %211 = call i32 @disk_write(i8 noundef zeroext %17, ptr noundef nonnull %2, i32 noundef %210, i32 noundef 1) #6
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(512) %2, i8 0, i64 512, i1 false)
  call void @st_dword(ptr noundef nonnull %2, i32 noundef 1096897106)
  %212 = getelementptr inbounds i8, ptr %2, i64 484
  call void @st_dword(ptr noundef nonnull %212, i32 noundef 1631679090)
  %213 = getelementptr inbounds i8, ptr %2, i64 488
  %214 = add i32 %142, -1
  call void @st_dword(ptr noundef nonnull %213, i32 noundef %214)
  %215 = getelementptr inbounds i8, ptr %2, i64 492
  call void @st_dword(ptr noundef nonnull %215, i32 noundef 2)
  call void @st_word(ptr noundef nonnull %206, i16 noundef zeroext -21931)
  %216 = add nuw nsw i32 %.0262, 7
  %217 = call i32 @disk_write(i8 noundef zeroext %17, ptr noundef nonnull %2, i32 noundef %216, i32 noundef 1) #6
  %218 = add nuw nsw i32 %.0262, 1
  %219 = call i32 @disk_write(i8 noundef zeroext %17, ptr noundef nonnull %2, i32 noundef %218, i32 noundef 1) #6
  %220 = and i32 %3, -512
  %221 = zext i32 %220 to i64
  call void @llvm.memset.p0.i64(ptr nonnull align 1 %2, i8 0, i64 %221, i1 false)
  %.not387 = icmp eq i8 %narrow, 0
  br i1 %.not387, label %._crit_edge.preheader, label %.lr.ph380.split.us.preheader

.thread416:                                       ; preds = %208
  %222 = and i32 %3, -512
  %223 = zext i32 %222 to i64
  call void @llvm.memset.p0.i64(ptr nonnull align 1 %2, i8 0, i64 %223, i1 false)
  %.not387417 = icmp eq i8 %narrow, 0
  br i1 %.not387417, label %._crit_edge.preheader, label %.lr.ph380.split.preheader

.lr.ph380.split.preheader:                        ; preds = %.thread416
  %224 = select i1 %166, i32 16777208, i32 -8
  br label %.lr.ph380.split

.lr.ph380.split.us.preheader:                     ; preds = %209
  %225 = getelementptr inbounds i8, ptr %2, i64 4
  %226 = getelementptr inbounds i8, ptr %2, i64 8
  br label %.lr.ph380.split.us

.lr.ph380.split.us:                               ; preds = %.lr.ph380.split.us.preheader, %233
  %.2242379.us = phi i32 [ %234, %233 ], [ 0, %.lr.ph380.split.us.preheader ]
  %.0252378.us = phi i32 [ %231, %233 ], [ %.1261353, %.lr.ph380.split.us.preheader ]
  call void @st_dword(ptr noundef nonnull %2, i32 noundef -8)
  call void @st_dword(ptr noundef nonnull %225, i32 noundef -1)
  call void @st_dword(ptr noundef nonnull %226, i32 noundef 268435455)
  br label %227

227:                                              ; preds = %230, %.lr.ph380.split.us
  %.0263.us = phi i32 [ %.1248, %.lr.ph380.split.us ], [ %232, %230 ]
  %.1253.us = phi i32 [ %.0252378.us, %.lr.ph380.split.us ], [ %231, %230 ]
  %228 = call i32 @llvm.umin.i32(i32 %.0263.us, i32 %55)
  %229 = call i32 @disk_write(i8 noundef zeroext %17, ptr noundef nonnull %2, i32 noundef %.1253.us, i32 noundef %228) #6
  %.not314.us = icmp eq i32 %229, 0
  br i1 %.not314.us, label %230, label %.loopexit

230:                                              ; preds = %227
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(512) %2, i8 0, i64 512, i1 false)
  %231 = add i32 %.1253.us, %228
  %232 = sub i32 %.0263.us, %228
  %.not315.us = icmp eq i32 %232, 0
  br i1 %.not315.us, label %233, label %227, !llvm.loop !25

233:                                              ; preds = %230
  %234 = add nuw nsw i32 %.2242379.us, 1
  %exitcond414.not = icmp eq i32 %234, %41
  br i1 %exitcond414.not, label %._crit_edge.preheader, label %.lr.ph380.split.us, !llvm.loop !26

.lr.ph380.split:                                  ; preds = %.lr.ph380.split.preheader, %241
  %.2242379 = phi i32 [ %242, %241 ], [ 0, %.lr.ph380.split.preheader ]
  %.0252378 = phi i32 [ %239, %241 ], [ %.1261353, %.lr.ph380.split.preheader ]
  call void @st_dword(ptr noundef nonnull %2, i32 noundef %224)
  br label %235

235:                                              ; preds = %238, %.lr.ph380.split
  %.0263 = phi i32 [ %.1248, %.lr.ph380.split ], [ %240, %238 ]
  %.1253 = phi i32 [ %.0252378, %.lr.ph380.split ], [ %239, %238 ]
  %236 = call i32 @llvm.umin.i32(i32 %.0263, i32 %55)
  %237 = call i32 @disk_write(i8 noundef zeroext %17, ptr noundef nonnull %2, i32 noundef %.1253, i32 noundef %236) #6
  %.not314 = icmp eq i32 %237, 0
  br i1 %.not314, label %238, label %.loopexit

238:                                              ; preds = %235
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(512) %2, i8 0, i64 512, i1 false)
  %239 = add i32 %.1253, %236
  %240 = sub i32 %.0263, %236
  %.not315 = icmp eq i32 %240, 0
  br i1 %.not315, label %241, label %235, !llvm.loop !25

241:                                              ; preds = %238
  %242 = add nuw nsw i32 %.2242379, 1
  %exitcond.not = icmp eq i32 %242, %41
  br i1 %exitcond.not, label %._crit_edge.preheader, label %.lr.ph380.split, !llvm.loop !26

._crit_edge.preheader:                            ; preds = %241, %233, %.thread416, %209
  %.1264.ph = phi i32 [ %.0246, %.thread416 ], [ %.4259, %209 ], [ %.4259, %233 ], [ %.0246, %241 ]
  %.2254.ph = phi i32 [ %.1261353, %.thread416 ], [ %.1261353, %209 ], [ %231, %233 ], [ %239, %241 ]
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.preheader, %245
  %.1264 = phi i32 [ %247, %245 ], [ %.1264.ph, %._crit_edge.preheader ]
  %.2254 = phi i32 [ %246, %245 ], [ %.2254.ph, %._crit_edge.preheader ]
  %243 = call i32 @llvm.umin.i32(i32 %.1264, i32 %55)
  %244 = call i32 @disk_write(i8 noundef zeroext %17, ptr noundef %2, i32 noundef %.2254, i32 noundef %243) #6
  %.not309 = icmp eq i32 %244, 0
  br i1 %.not309, label %245, label %.loopexit

245:                                              ; preds = %._crit_edge
  %246 = add i32 %.2254, %243
  %247 = sub i32 %.1264, %243
  %.not310 = icmp eq i32 %247, 0
  br i1 %.not310, label %248, label %._crit_edge, !llvm.loop !27

248:                                              ; preds = %245
  br i1 %61, label %249, label %255

249:                                              ; preds = %248
  %250 = load i32, ptr %7, align 4
  %251 = icmp ugt i32 %250, 65535
  %252 = select i1 %148, i8 4, i8 1
  %spec.select = select i1 %251, i8 6, i8 %252
  %.0243 = select i1 %125, i8 12, i8 %spec.select
  store i32 %250, ptr %8, align 4, !tbaa !15
  %253 = getelementptr inbounds i8, ptr %8, i64 4
  store i32 0, ptr %253, align 4, !tbaa !15
  %254 = call i32 @create_partition(i8 noundef zeroext %17, ptr noundef nonnull %8, i8 noundef zeroext %.0243, ptr noundef %2)
  %.not312 = icmp eq i32 %254, 0
  br i1 %.not312, label %255, label %.loopexit

255:                                              ; preds = %249, %248
  %256 = call i32 @disk_ioctl(i8 noundef zeroext %17, i8 noundef zeroext 0, ptr noundef null) #6
  %.not313 = icmp ne i32 %256, 0
  %. = zext i1 %.not313 to i32
  br label %.loopexit

.loopexit:                                        ; preds = %159, %155, %144, %132, %.critedge, %235, %227, %._crit_edge, %69, %255, %249, %205, %163, %66, %57, %35, %21, %16, %4
  %.0 = phi i32 [ 11, %4 ], [ 3, %16 ], [ 10, %21 ], [ 17, %35 ], [ 1, %57 ], [ 14, %66 ], [ 14, %163 ], [ 1, %205 ], [ %254, %249 ], [ %., %255 ], [ 19, %69 ], [ 1, %._crit_edge ], [ 1, %227 ], [ 1, %235 ], [ 14, %.critedge ], [ 14, %132 ], [ 14, %144 ], [ 14, %155 ], [ 14, %159 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #6
  ret i32 %.0
}

declare zeroext i8 @disk_initialize(i8 noundef zeroext) local_unnamed_addr #4

declare i32 @disk_ioctl(i8 noundef zeroext, i8 noundef zeroext, ptr noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare hidden i32 @create_partition(i8 noundef zeroext, ptr noundef, i8 noundef zeroext, ptr noundef) local_unnamed_addr #1

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !7, i64 0}
!10 = !{!"", !7, i64 0, !7, i64 1, !7, i64 2, !7, i64 3, !7, i64 4, !11, i64 6, !11, i64 8, !11, i64 10, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !7, i64 52}
!11 = !{!"short", !7, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !12, i64 4}
!14 = !{!"", !7, i64 0, !7, i64 1, !12, i64 4, !12, i64 8, !12, i64 12}
!15 = !{!12, !12, i64 0}
!16 = !{!14, !7, i64 0}
!17 = !{!14, !7, i64 1}
!18 = !{!14, !12, i64 8}
!19 = !{!14, !12, i64 12}
!20 = !{!11, !11, i64 0}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = distinct !{!23, !22}
!24 = !{!7, !7, i64 0}
!25 = distinct !{!25, !22}
!26 = distinct !{!26, !22}
!27 = distinct !{!27, !22}


; Effective O3 passes: ADCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass