; LLVM IR from NotManyIdeasDev/double-pendulum-sim :: double-pendulum-sim/Libraries/raygui-2.8/examples/custom_file_dialog (GuiFileDialog)

; 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.Color = type { i8, i8, i8, i8 }
%struct.Rectangle = type { float, float, float, float }
%struct.GuiFileDialogState = type { %struct.Vector2, %struct.Vector2, i8, i8, [256 x i8], i32, i8, i32, i8, [256 x i8], i8, i8, i32, i32, ptr, i32, [256 x i8], [256 x i8], [256 x i8], i32 }
%struct.Vector2 = type { float, float }

@.str.5 = external hidden unnamed_addr constant [6 x i8], align 1
@dirFilesIcon = external dso_local global ptr, align 8
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [7 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @GuiSetStyle(i32 noundef, i32 noundef, i32 noundef) #0

; 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 nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @GuiGetStyle(i32 noundef, i32 noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local zeroext i1 @GuiWindowBox(<2 x float>, <2 x float>, ptr noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local zeroext i1 @GuiButton(<2 x float>, <2 x float>, ptr noundef) #2

declare i32 @Fade(i32, float noundef) #3

declare i32 @GetColor(i32 noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local void @GuiLabel(<2 x float>, <2 x float>, ptr noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local i32 @GuiComboBox(<2 x float>, <2 x float>, ptr noundef, i32 noundef) #2

declare ptr @TextFormat(ptr noundef, ...) #3

; Function Attrs: nounwind uwtable
declare dso_local zeroext i1 @GuiTextBox(<2 x float>, <2 x float>, ptr noundef, i32 noundef, i1 noundef zeroext) #2

; Function Attrs: nounwind uwtable
declare dso_local i32 @GuiListViewEx(<2 x float>, <2 x float>, ptr noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef) #2

; Function Attrs: nounwind allocsize(0)
declare noalias ptr @malloc(i64 noundef) #4

; Function Attrs: nounwind
declare void @free(ptr noundef) #5

; Function Attrs: nounwind allocsize(0,1)
declare noalias ptr @calloc(i64 noundef, i64 noundef) #6

declare void @DrawRectangle(i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32) #3

declare i32 @GetScreenWidth() #3

declare i32 @GetScreenHeight() #3

; Function Attrs: nounwind
declare ptr @strcpy(ptr noundef, ptr noundef) #5

declare zeroext i1 @DirectoryExists(ptr noundef) #3

declare zeroext i1 @FileExists(ptr noundef) #3

; Function Attrs: nounwind uwtable
define dso_local void @GuiFileDialog(ptr noundef %0) #2 {
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca %struct.Color, align 1
  %9 = alloca %struct.Color, align 1
  %10 = alloca %struct.Rectangle, align 4
  %11 = alloca %struct.Rectangle, align 4
  %12 = alloca %struct.Rectangle, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca %struct.Rectangle, align 4
  %16 = alloca %struct.Rectangle, align 4
  %17 = alloca %struct.Rectangle, align 4
  %18 = alloca i32, align 4
  %19 = alloca %struct.Rectangle, align 4
  %20 = alloca %struct.Rectangle, align 4
  %21 = alloca %struct.Rectangle, align 4
  %22 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %23 = load ptr, ptr %2, align 8, !tbaa !5
  %24 = getelementptr inbounds %struct.GuiFileDialogState, ptr %23, i32 0, i32 2
  %25 = load i8, ptr %24, align 8, !tbaa !9, !range !15, !noundef !16
  %26 = trunc i8 %25 to i1
  br i1 %26, label %27, label %654

27:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #8
  %28 = load ptr, ptr %2, align 8, !tbaa !5
  %29 = getelementptr inbounds %struct.GuiFileDialogState, ptr %28, i32 0, i32 1
  %30 = getelementptr inbounds %struct.Vector2, ptr %29, i32 0, i32 0
  %31 = load float, ptr %30, align 8, !tbaa !17
  %32 = fptosi float %31 to i32
  store i32 %32, ptr %3, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #8
  %33 = load ptr, ptr %2, align 8, !tbaa !5
  %34 = getelementptr inbounds %struct.GuiFileDialogState, ptr %33, i32 0, i32 1
  %35 = getelementptr inbounds %struct.Vector2, ptr %34, i32 0, i32 1
  %36 = load float, ptr %35, align 4, !tbaa !19
  %37 = fptosi float %36 to i32
  store i32 %37, ptr %4, align 4, !tbaa !18
  %38 = load ptr, ptr @dirFilesIcon, align 8, !tbaa !5
  %39 = icmp eq ptr %38, null
  br i1 %39, label %40, label %56

40:                                               ; preds = %27
  %41 = call noalias ptr @malloc(i64 noundef 8192) #9
  store ptr %41, ptr @dirFilesIcon, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #8
  store i32 0, ptr %5, align 4, !tbaa !18
  br label %42

42:                                               ; preds = %52, %40
  %43 = load i32, ptr %5, align 4, !tbaa !18
  %44 = icmp slt i32 %43, 1024
  br i1 %44, label %46, label %45

45:                                               ; preds = %42
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #8
  br label %55

46:                                               ; preds = %42
  %47 = call noalias ptr @calloc(i64 noundef 1024, i64 noundef 1) #10
  %48 = load ptr, ptr @dirFilesIcon, align 8, !tbaa !5
  %49 = load i32, ptr %5, align 4, !tbaa !18
  %50 = sext i32 %49 to i64
  %51 = getelementptr inbounds ptr, ptr %48, i64 %50
  store ptr %47, ptr %51, align 8, !tbaa !5
  br label %52

52:                                               ; preds = %46
  %53 = load i32, ptr %5, align 4, !tbaa !18
  %54 = add nsw i32 %53, 1
  store i32 %54, ptr %5, align 4, !tbaa !18
  br label %42, !llvm.loop !20

55:                                               ; preds = %45
  br label %56

56:                                               ; preds = %55, %27
  %57 = load ptr, ptr %2, align 8, !tbaa !5
  %58 = getelementptr inbounds %struct.GuiFileDialogState, ptr %57, i32 0, i32 14
  %59 = load ptr, ptr %58, align 8, !tbaa !22
  %60 = icmp eq ptr %59, null
  br i1 %60, label %61, label %112

61:                                               ; preds = %56
  %62 = load ptr, ptr %2, align 8, !tbaa !5
  %63 = getelementptr inbounds %struct.GuiFileDialogState, ptr %62, i32 0, i32 4
  %64 = getelementptr inbounds [256 x i8], ptr %63, i64 0, i64 0
  %65 = load ptr, ptr %2, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.GuiFileDialogState, ptr %65, i32 0, i32 15
  %67 = load ptr, ptr %2, align 8, !tbaa !5
  %68 = getelementptr inbounds %struct.GuiFileDialogState, ptr %67, i32 0, i32 16
  %69 = getelementptr inbounds [256 x i8], ptr %68, i64 0, i64 0
  %70 = call ptr @ReadDirectoryFiles(ptr noundef %64, ptr noundef %66, ptr noundef %69)
  %71 = load ptr, ptr %2, align 8, !tbaa !5
  %72 = getelementptr inbounds %struct.GuiFileDialogState, ptr %71, i32 0, i32 14
  store ptr %70, ptr %72, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #8
  store i32 0, ptr %6, align 4, !tbaa !18
  br label %73

73:                                               ; preds = %107, %61
  %74 = load i32, ptr %6, align 4, !tbaa !18
  %75 = load ptr, ptr %2, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.GuiFileDialogState, ptr %75, i32 0, i32 15
  %77 = load i32, ptr %76, align 8, !tbaa !23
  %78 = icmp slt i32 %74, %77
  br i1 %78, label %80, label %79

79:                                               ; preds = %73
  store i32 5, ptr %7, align 4
  br label %110

80:                                               ; preds = %73
  %81 = load ptr, ptr %2, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct.GuiFileDialogState, ptr %81, i32 0, i32 9
  %83 = getelementptr inbounds [256 x i8], ptr %82, i64 0, i64 0
  %84 = load ptr, ptr %2, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.GuiFileDialogState, ptr %84, i32 0, i32 14
  %86 = load ptr, ptr %85, align 8, !tbaa !22
  %87 = load i32, ptr %6, align 4, !tbaa !18
  %88 = sext i32 %87 to i64
  %89 = getelementptr inbounds ptr, ptr %86, i64 %88
  %90 = load ptr, ptr %89, align 8, !tbaa !5
  %91 = call i32 @strcmp(ptr noundef %83, ptr noundef %90) #11
  %92 = icmp eq i32 %91, 0
  br i1 %92, label %93, label %106

93:                                               ; preds = %80
  %94 = load ptr, ptr %2, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.GuiFileDialogState, ptr %94, i32 0, i32 7
  %96 = load i32, ptr %95, align 4, !tbaa !24
  %97 = load i32, ptr %6, align 4, !tbaa !18
  %98 = icmp ne i32 %96, %97
  br i1 %98, label %99, label %105

99:                                               ; preds = %93
  %100 = load i32, ptr %6, align 4, !tbaa !18
  %101 = load ptr, ptr %2, align 8, !tbaa !5
  %102 = getelementptr inbounds %struct.GuiFileDialogState, ptr %101, i32 0, i32 7
  store i32 %100, ptr %102, align 4, !tbaa !24
  %103 = load ptr, ptr %2, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct.GuiFileDialogState, ptr %103, i32 0, i32 5
  store i32 %100, ptr %104, align 4, !tbaa !25
  br label %105

105:                                              ; preds = %99, %93
  store i32 5, ptr %7, align 4
  br label %110

106:                                              ; preds = %80
  br label %107

107:                                              ; preds = %106
  %108 = load i32, ptr %6, align 4, !tbaa !18
  %109 = add nsw i32 %108, 1
  store i32 %109, ptr %6, align 4, !tbaa !18
  br label %73, !llvm.loop !26

110:                                              ; preds = %105, %79
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #8
  br label %111

111:                                              ; preds = %110
  br label %112

112:                                              ; preds = %111, %56
  %113 = call i32 @GetScreenWidth()
  %114 = call i32 @GetScreenHeight()
  %115 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 19)
  %116 = call i32 @GetColor(i32 noundef %115)
  store i32 %116, ptr %9, align 1
  %117 = load i32, ptr %9, align 1
  %118 = call i32 @Fade(i32 %117, float noundef 0x3FEB333340000000)
  store i32 %118, ptr %8, align 1
  %119 = load i32, ptr %8, align 1
  call void @DrawRectangle(i32 noundef 0, i32 noundef 0, i32 noundef %113, i32 noundef %114, i32 %119)
  %120 = getelementptr inbounds %struct.Rectangle, ptr %10, i32 0, i32 0
  %121 = load ptr, ptr %2, align 8, !tbaa !5
  %122 = getelementptr inbounds %struct.GuiFileDialogState, ptr %121, i32 0, i32 0
  %123 = getelementptr inbounds %struct.Vector2, ptr %122, i32 0, i32 0
  %124 = load float, ptr %123, align 8, !tbaa !27
  %125 = fadd float %124, 0.000000e+00
  store float %125, ptr %120, align 4, !tbaa !28
  %126 = getelementptr inbounds %struct.Rectangle, ptr %10, i32 0, i32 1
  %127 = load ptr, ptr %2, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.GuiFileDialogState, ptr %127, i32 0, i32 0
  %129 = getelementptr inbounds %struct.Vector2, ptr %128, i32 0, i32 1
  %130 = load float, ptr %129, align 4, !tbaa !30
  %131 = fadd float %130, 0.000000e+00
  store float %131, ptr %126, align 4, !tbaa !31
  %132 = getelementptr inbounds %struct.Rectangle, ptr %10, i32 0, i32 2
  %133 = load i32, ptr %3, align 4, !tbaa !18
  %134 = sitofp i32 %133 to float
  store float %134, ptr %132, align 4, !tbaa !32
  %135 = getelementptr inbounds %struct.Rectangle, ptr %10, i32 0, i32 3
  %136 = load i32, ptr %4, align 4, !tbaa !18
  %137 = sitofp i32 %136 to float
  store float %137, ptr %135, align 4, !tbaa !33
  %138 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %10, i32 0, i32 0
  %139 = load <2 x float>, ptr %138, align 4
  %140 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %10, i32 0, i32 1
  %141 = load <2 x float>, ptr %140, align 4
  %142 = call zeroext i1 @GuiWindowBox(<2 x float> %139, <2 x float> %141, ptr noundef @.str.10)
  %143 = xor i1 %142, true
  %144 = load ptr, ptr %2, align 8, !tbaa !5
  %145 = getelementptr inbounds %struct.GuiFileDialogState, ptr %144, i32 0, i32 2
  %146 = zext i1 %143 to i8
  store i8 %146, ptr %145, align 8, !tbaa !9
  %147 = getelementptr inbounds %struct.Rectangle, ptr %11, i32 0, i32 0
  %148 = load ptr, ptr %2, align 8, !tbaa !5
  %149 = getelementptr inbounds %struct.GuiFileDialogState, ptr %148, i32 0, i32 0
  %150 = getelementptr inbounds %struct.Vector2, ptr %149, i32 0, i32 0
  %151 = load float, ptr %150, align 8, !tbaa !27
  %152 = load i32, ptr %3, align 4, !tbaa !18
  %153 = sitofp i32 %152 to float
  %154 = fadd float %151, %153
  %155 = fsub float %154, 5.000000e+01
  store float %155, ptr %147, align 4, !tbaa !28
  %156 = getelementptr inbounds %struct.Rectangle, ptr %11, i32 0, i32 1
  %157 = load ptr, ptr %2, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.GuiFileDialogState, ptr %157, i32 0, i32 0
  %159 = getelementptr inbounds %struct.Vector2, ptr %158, i32 0, i32 1
  %160 = load float, ptr %159, align 4, !tbaa !30
  %161 = fadd float %160, 3.500000e+01
  store float %161, ptr %156, align 4, !tbaa !31
  %162 = getelementptr inbounds %struct.Rectangle, ptr %11, i32 0, i32 2
  store float 4.000000e+01, ptr %162, align 4, !tbaa !32
  %163 = getelementptr inbounds %struct.Rectangle, ptr %11, i32 0, i32 3
  store float 2.500000e+01, ptr %163, align 4, !tbaa !33
  %164 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %11, i32 0, i32 0
  %165 = load <2 x float>, ptr %164, align 4
  %166 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %11, i32 0, i32 1
  %167 = load <2 x float>, ptr %166, align 4
  %168 = call zeroext i1 @GuiButton(<2 x float> %165, <2 x float> %167, ptr noundef @.str.11)
  br i1 %168, label %169, label %192

169:                                              ; preds = %112
  %170 = load ptr, ptr %2, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.GuiFileDialogState, ptr %170, i32 0, i32 4
  %172 = getelementptr inbounds [256 x i8], ptr %171, i64 0, i64 0
  %173 = load ptr, ptr %2, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.GuiFileDialogState, ptr %173, i32 0, i32 4
  %175 = getelementptr inbounds [256 x i8], ptr %174, i64 0, i64 0
  %176 = call ptr @GetPrevDirectoryPath(ptr noundef %175)
  %177 = call ptr @strcpy(ptr noundef %172, ptr noundef %176) #8
  %178 = load ptr, ptr %2, align 8, !tbaa !5
  call void @FD_RELOAD_DIRPATH(ptr noundef %178)
  %179 = load ptr, ptr %2, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.GuiFileDialogState, ptr %179, i32 0, i32 7
  store i32 -1, ptr %180, align 4, !tbaa !24
  %181 = load ptr, ptr %2, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.GuiFileDialogState, ptr %181, i32 0, i32 9
  %183 = getelementptr inbounds [256 x i8], ptr %182, i64 0, i64 0
  %184 = call ptr @strcpy(ptr noundef %183, ptr noundef @.str.8) #8
  %185 = load ptr, ptr %2, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.GuiFileDialogState, ptr %185, i32 0, i32 18
  %187 = getelementptr inbounds [256 x i8], ptr %186, i64 0, i64 0
  %188 = load ptr, ptr %2, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.GuiFileDialogState, ptr %188, i32 0, i32 9
  %190 = getelementptr inbounds [256 x i8], ptr %189, i64 0, i64 0
  %191 = call ptr @strcpy(ptr noundef %187, ptr noundef %190) #8
  br label %192

192:                                              ; preds = %169, %112
  %193 = getelementptr inbounds %struct.Rectangle, ptr %12, i32 0, i32 0
  %194 = load ptr, ptr %2, align 8, !tbaa !5
  %195 = getelementptr inbounds %struct.GuiFileDialogState, ptr %194, i32 0, i32 0
  %196 = getelementptr inbounds %struct.Vector2, ptr %195, i32 0, i32 0
  %197 = load float, ptr %196, align 8, !tbaa !27
  %198 = fadd float %197, 1.000000e+01
  store float %198, ptr %193, align 4, !tbaa !28
  %199 = getelementptr inbounds %struct.Rectangle, ptr %12, i32 0, i32 1
  %200 = load ptr, ptr %2, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.GuiFileDialogState, ptr %200, i32 0, i32 0
  %202 = getelementptr inbounds %struct.Vector2, ptr %201, i32 0, i32 1
  %203 = load float, ptr %202, align 4, !tbaa !30
  %204 = fadd float %203, 3.500000e+01
  store float %204, ptr %199, align 4, !tbaa !31
  %205 = getelementptr inbounds %struct.Rectangle, ptr %12, i32 0, i32 2
  %206 = load i32, ptr %3, align 4, !tbaa !18
  %207 = sub nsw i32 %206, 65
  %208 = sitofp i32 %207 to float
  store float %208, ptr %205, align 4, !tbaa !32
  %209 = getelementptr inbounds %struct.Rectangle, ptr %12, i32 0, i32 3
  store float 2.500000e+01, ptr %209, align 4, !tbaa !33
  %210 = load ptr, ptr %2, align 8, !tbaa !5
  %211 = getelementptr inbounds %struct.GuiFileDialogState, ptr %210, i32 0, i32 4
  %212 = getelementptr inbounds [256 x i8], ptr %211, i64 0, i64 0
  %213 = load ptr, ptr %2, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.GuiFileDialogState, ptr %213, i32 0, i32 3
  %215 = load i8, ptr %214, align 1, !tbaa !34, !range !15, !noundef !16
  %216 = trunc i8 %215 to i1
  %217 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %12, i32 0, i32 0
  %218 = load <2 x float>, ptr %217, align 4
  %219 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %12, i32 0, i32 1
  %220 = load <2 x float>, ptr %219, align 4
  %221 = call zeroext i1 @GuiTextBox(<2 x float> %218, <2 x float> %220, ptr noundef %212, i32 noundef 256, i1 noundef zeroext %216)
  br i1 %221, label %222, label %259

222:                                              ; preds = %192
  %223 = load ptr, ptr %2, align 8, !tbaa !5
  %224 = getelementptr inbounds %struct.GuiFileDialogState, ptr %223, i32 0, i32 3
  %225 = load i8, ptr %224, align 1, !tbaa !34, !range !15, !noundef !16
  %226 = trunc i8 %225 to i1
  br i1 %226, label %227, label %250

227:                                              ; preds = %222
  %228 = load ptr, ptr %2, align 8, !tbaa !5
  %229 = getelementptr inbounds %struct.GuiFileDialogState, ptr %228, i32 0, i32 4
  %230 = getelementptr inbounds [256 x i8], ptr %229, i64 0, i64 0
  %231 = call zeroext i1 @DirectoryExists(ptr noundef %230)
  br i1 %231, label %232, label %241

232:                                              ; preds = %227
  %233 = load ptr, ptr %2, align 8, !tbaa !5
  call void @FD_RELOAD_DIRPATH(ptr noundef %233)
  %234 = load ptr, ptr %2, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.GuiFileDialogState, ptr %234, i32 0, i32 17
  %236 = getelementptr inbounds [256 x i8], ptr %235, i64 0, i64 0
  %237 = load ptr, ptr %2, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.GuiFileDialogState, ptr %237, i32 0, i32 4
  %239 = getelementptr inbounds [256 x i8], ptr %238, i64 0, i64 0
  %240 = call ptr @strcpy(ptr noundef %236, ptr noundef %239) #8
  br label %249

241:                                              ; preds = %227
  %242 = load ptr, ptr %2, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.GuiFileDialogState, ptr %242, i32 0, i32 4
  %244 = getelementptr inbounds [256 x i8], ptr %243, i64 0, i64 0
  %245 = load ptr, ptr %2, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.GuiFileDialogState, ptr %245, i32 0, i32 17
  %247 = getelementptr inbounds [256 x i8], ptr %246, i64 0, i64 0
  %248 = call ptr @strcpy(ptr noundef %244, ptr noundef %247) #8
  br label %249

249:                                              ; preds = %241, %232
  br label %250

250:                                              ; preds = %249, %222
  %251 = load ptr, ptr %2, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.GuiFileDialogState, ptr %251, i32 0, i32 3
  %253 = load i8, ptr %252, align 1, !tbaa !34, !range !15, !noundef !16
  %254 = trunc i8 %253 to i1
  %255 = xor i1 %254, true
  %256 = load ptr, ptr %2, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.GuiFileDialogState, ptr %256, i32 0, i32 3
  %258 = zext i1 %255 to i8
  store i8 %258, ptr %257, align 1, !tbaa !34
  br label %259

259:                                              ; preds = %250, %192
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #8
  %260 = call i32 @GuiGetStyle(i32 noundef 12, i32 noundef 14)
  store i32 %260, ptr %13, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #8
  %261 = call i32 @GuiGetStyle(i32 noundef 12, i32 noundef 16)
  store i32 %261, ptr %14, align 4, !tbaa !18
  call void @GuiSetStyle(i32 noundef 12, i32 noundef 14, i32 noundef 0)
  call void @GuiSetStyle(i32 noundef 12, i32 noundef 16, i32 noundef 24)
  %262 = getelementptr inbounds %struct.Rectangle, ptr %15, i32 0, i32 0
  %263 = load ptr, ptr %2, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.GuiFileDialogState, ptr %263, i32 0, i32 0
  %265 = getelementptr inbounds %struct.Vector2, ptr %264, i32 0, i32 0
  %266 = load float, ptr %265, align 8, !tbaa !27
  %267 = fadd float %266, 1.000000e+01
  store float %267, ptr %262, align 4, !tbaa !28
  %268 = getelementptr inbounds %struct.Rectangle, ptr %15, i32 0, i32 1
  %269 = load ptr, ptr %2, align 8, !tbaa !5
  %270 = getelementptr inbounds %struct.GuiFileDialogState, ptr %269, i32 0, i32 0
  %271 = getelementptr inbounds %struct.Vector2, ptr %270, i32 0, i32 1
  %272 = load float, ptr %271, align 4, !tbaa !30
  %273 = fadd float %272, 7.000000e+01
  store float %273, ptr %268, align 4, !tbaa !31
  %274 = getelementptr inbounds %struct.Rectangle, ptr %15, i32 0, i32 2
  %275 = load i32, ptr %3, align 4, !tbaa !18
  %276 = sub nsw i32 %275, 20
  %277 = sitofp i32 %276 to float
  store float %277, ptr %274, align 4, !tbaa !32
  %278 = getelementptr inbounds %struct.Rectangle, ptr %15, i32 0, i32 3
  %279 = load i32, ptr %4, align 4, !tbaa !18
  %280 = sub nsw i32 %279, 135
  %281 = sitofp i32 %280 to float
  store float %281, ptr %278, align 4, !tbaa !33
  %282 = load ptr, ptr @dirFilesIcon, align 8, !tbaa !5
  %283 = load ptr, ptr %2, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.GuiFileDialogState, ptr %283, i32 0, i32 15
  %285 = load i32, ptr %284, align 8, !tbaa !23
  %286 = load ptr, ptr %2, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.GuiFileDialogState, ptr %286, i32 0, i32 13
  %288 = load ptr, ptr %2, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.GuiFileDialogState, ptr %288, i32 0, i32 5
  %290 = load ptr, ptr %2, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.GuiFileDialogState, ptr %290, i32 0, i32 7
  %292 = load i32, ptr %291, align 4, !tbaa !24
  %293 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %15, i32 0, i32 0
  %294 = load <2 x float>, ptr %293, align 4
  %295 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %15, i32 0, i32 1
  %296 = load <2 x float>, ptr %295, align 4
  %297 = call i32 @GuiListViewEx(<2 x float> %294, <2 x float> %296, ptr noundef %282, i32 noundef %285, ptr noundef %287, ptr noundef %289, i32 noundef %292)
  %298 = load ptr, ptr %2, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.GuiFileDialogState, ptr %298, i32 0, i32 7
  store i32 %297, ptr %299, align 4, !tbaa !24
  %300 = load i32, ptr %13, align 4, !tbaa !18
  call void @GuiSetStyle(i32 noundef 12, i32 noundef 14, i32 noundef %300)
  %301 = load i32, ptr %14, align 4, !tbaa !18
  call void @GuiSetStyle(i32 noundef 12, i32 noundef 16, i32 noundef %301)
  %302 = load ptr, ptr %2, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.GuiFileDialogState, ptr %302, i32 0, i32 7
  %304 = load i32, ptr %303, align 4, !tbaa !24
  %305 = icmp sge i32 %304, 0
  br i1 %305, label %306, label %406

306:                                              ; preds = %259
  %307 = load ptr, ptr %2, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.GuiFileDialogState, ptr %307, i32 0, i32 7
  %309 = load i32, ptr %308, align 4, !tbaa !24
  %310 = load ptr, ptr %2, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.GuiFileDialogState, ptr %310, i32 0, i32 19
  %312 = load i32, ptr %311, align 4, !tbaa !35
  %313 = icmp ne i32 %309, %312
  br i1 %313, label %314, label %406

314:                                              ; preds = %306
  %315 = load ptr, ptr %2, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.GuiFileDialogState, ptr %315, i32 0, i32 9
  %317 = getelementptr inbounds [256 x i8], ptr %316, i64 0, i64 0
  %318 = load ptr, ptr %2, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.GuiFileDialogState, ptr %318, i32 0, i32 14
  %320 = load ptr, ptr %319, align 8, !tbaa !22
  %321 = load ptr, ptr %2, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct.GuiFileDialogState, ptr %321, i32 0, i32 7
  %323 = load i32, ptr %322, align 4, !tbaa !24
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds ptr, ptr %320, i64 %324
  %326 = load ptr, ptr %325, align 8, !tbaa !5
  %327 = call ptr @strcpy(ptr noundef %317, ptr noundef %326) #8
  %328 = load ptr, ptr %2, align 8, !tbaa !5
  %329 = getelementptr inbounds %struct.GuiFileDialogState, ptr %328, i32 0, i32 4
  %330 = getelementptr inbounds [256 x i8], ptr %329, i64 0, i64 0
  %331 = load ptr, ptr %2, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.GuiFileDialogState, ptr %331, i32 0, i32 9
  %333 = getelementptr inbounds [256 x i8], ptr %332, i64 0, i64 0
  %334 = call ptr (ptr, ...) @TextFormat(ptr noundef @.str.5, ptr noundef %330, ptr noundef %333)
  %335 = call zeroext i1 @DirectoryExists(ptr noundef %334)
  br i1 %335, label %336, label %400

336:                                              ; preds = %314
  %337 = load ptr, ptr %2, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.GuiFileDialogState, ptr %337, i32 0, i32 9
  %339 = getelementptr inbounds [256 x i8], ptr %338, i64 0, i64 0
  %340 = call zeroext i1 @TextIsEqual(ptr noundef %339, ptr noundef @.str.12)
  br i1 %340, label %341, label %350

341:                                              ; preds = %336
  %342 = load ptr, ptr %2, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.GuiFileDialogState, ptr %342, i32 0, i32 4
  %344 = getelementptr inbounds [256 x i8], ptr %343, i64 0, i64 0
  %345 = load ptr, ptr %2, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.GuiFileDialogState, ptr %345, i32 0, i32 4
  %347 = getelementptr inbounds [256 x i8], ptr %346, i64 0, i64 0
  %348 = call ptr @GetPrevDirectoryPath(ptr noundef %347)
  %349 = call ptr @strcpy(ptr noundef %344, ptr noundef %348) #8
  br label %371

350:                                              ; preds = %336
  %351 = load ptr, ptr %2, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.GuiFileDialogState, ptr %351, i32 0, i32 4
  %353 = getelementptr inbounds [256 x i8], ptr %352, i64 0, i64 0
  %354 = load ptr, ptr %2, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.GuiFileDialogState, ptr %354, i32 0, i32 4
  %356 = getelementptr inbounds [256 x i8], ptr %355, i64 0, i64 0
  %357 = call i32 @strcmp(ptr noundef %356, ptr noundef @.str.13) #11
  %358 = icmp eq i32 %357, 0
  br i1 %358, label %359, label %360

359:                                              ; preds = %350
  br label %364

360:                                              ; preds = %350
  %361 = load ptr, ptr %2, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.GuiFileDialogState, ptr %361, i32 0, i32 4
  %363 = getelementptr inbounds [256 x i8], ptr %362, i64 0, i64 0
  br label %364

364:                                              ; preds = %360, %359
  %365 = phi ptr [ @.str.14, %359 ], [ %363, %360 ]
  %366 = load ptr, ptr %2, align 8, !tbaa !5
  %367 = getelementptr inbounds %struct.GuiFileDialogState, ptr %366, i32 0, i32 9
  %368 = getelementptr inbounds [256 x i8], ptr %367, i64 0, i64 0
  %369 = call ptr (ptr, ...) @TextFormat(ptr noundef @.str.5, ptr noundef %365, ptr noundef %368)
  %370 = call ptr @strcpy(ptr noundef %353, ptr noundef %369) #8
  br label %371

371:                                              ; preds = %364, %341
  %372 = load ptr, ptr %2, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.GuiFileDialogState, ptr %372, i32 0, i32 17
  %374 = getelementptr inbounds [256 x i8], ptr %373, i64 0, i64 0
  %375 = load ptr, ptr %2, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.GuiFileDialogState, ptr %375, i32 0, i32 4
  %377 = getelementptr inbounds [256 x i8], ptr %376, i64 0, i64 0
  %378 = call ptr @strcpy(ptr noundef %374, ptr noundef %377) #8
  %379 = load ptr, ptr %2, align 8, !tbaa !5
  call void @FD_RELOAD_DIRPATH(ptr noundef %379)
  %380 = load ptr, ptr %2, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.GuiFileDialogState, ptr %380, i32 0, i32 17
  %382 = getelementptr inbounds [256 x i8], ptr %381, i64 0, i64 0
  %383 = load ptr, ptr %2, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.GuiFileDialogState, ptr %383, i32 0, i32 4
  %385 = getelementptr inbounds [256 x i8], ptr %384, i64 0, i64 0
  %386 = call ptr @strcpy(ptr noundef %382, ptr noundef %385) #8
  %387 = load ptr, ptr %2, align 8, !tbaa !5
  %388 = getelementptr inbounds %struct.GuiFileDialogState, ptr %387, i32 0, i32 7
  store i32 -1, ptr %388, align 4, !tbaa !24
  %389 = load ptr, ptr %2, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.GuiFileDialogState, ptr %389, i32 0, i32 9
  %391 = getelementptr inbounds [256 x i8], ptr %390, i64 0, i64 0
  %392 = call ptr @strcpy(ptr noundef %391, ptr noundef @.str.8) #8
  %393 = load ptr, ptr %2, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.GuiFileDialogState, ptr %393, i32 0, i32 18
  %395 = getelementptr inbounds [256 x i8], ptr %394, i64 0, i64 0
  %396 = load ptr, ptr %2, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.GuiFileDialogState, ptr %396, i32 0, i32 9
  %398 = getelementptr inbounds [256 x i8], ptr %397, i64 0, i64 0
  %399 = call ptr @strcpy(ptr noundef %395, ptr noundef %398) #8
  br label %400

400:                                              ; preds = %371, %314
  %401 = load ptr, ptr %2, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.GuiFileDialogState, ptr %401, i32 0, i32 7
  %403 = load i32, ptr %402, align 4, !tbaa !24
  %404 = load ptr, ptr %2, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct.GuiFileDialogState, ptr %404, i32 0, i32 19
  store i32 %403, ptr %405, align 4, !tbaa !35
  br label %406

406:                                              ; preds = %400, %306, %259
  %407 = getelementptr inbounds %struct.Rectangle, ptr %16, i32 0, i32 0
  %408 = load ptr, ptr %2, align 8, !tbaa !5
  %409 = getelementptr inbounds %struct.GuiFileDialogState, ptr %408, i32 0, i32 0
  %410 = getelementptr inbounds %struct.Vector2, ptr %409, i32 0, i32 0
  %411 = load float, ptr %410, align 8, !tbaa !27
  %412 = fadd float %411, 1.000000e+01
  store float %412, ptr %407, align 4, !tbaa !28
  %413 = getelementptr inbounds %struct.Rectangle, ptr %16, i32 0, i32 1
  %414 = load ptr, ptr %2, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.GuiFileDialogState, ptr %414, i32 0, i32 0
  %416 = getelementptr inbounds %struct.Vector2, ptr %415, i32 0, i32 1
  %417 = load float, ptr %416, align 4, !tbaa !30
  %418 = load i32, ptr %4, align 4, !tbaa !18
  %419 = sitofp i32 %418 to float
  %420 = fadd float %417, %419
  %421 = fsub float %420, 6.000000e+01
  store float %421, ptr %413, align 4, !tbaa !31
  %422 = getelementptr inbounds %struct.Rectangle, ptr %16, i32 0, i32 2
  store float 6.800000e+01, ptr %422, align 4, !tbaa !32
  %423 = getelementptr inbounds %struct.Rectangle, ptr %16, i32 0, i32 3
  store float 2.500000e+01, ptr %423, align 4, !tbaa !33
  %424 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %16, i32 0, i32 0
  %425 = load <2 x float>, ptr %424, align 4
  %426 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %16, i32 0, i32 1
  %427 = load <2 x float>, ptr %426, align 4
  call void @GuiLabel(<2 x float> %425, <2 x float> %427, ptr noundef @.str.15)
  %428 = getelementptr inbounds %struct.Rectangle, ptr %17, i32 0, i32 0
  %429 = load ptr, ptr %2, align 8, !tbaa !5
  %430 = getelementptr inbounds %struct.GuiFileDialogState, ptr %429, i32 0, i32 0
  %431 = getelementptr inbounds %struct.Vector2, ptr %430, i32 0, i32 0
  %432 = load float, ptr %431, align 8, !tbaa !27
  %433 = fadd float %432, 7.500000e+01
  store float %433, ptr %428, align 4, !tbaa !28
  %434 = getelementptr inbounds %struct.Rectangle, ptr %17, i32 0, i32 1
  %435 = load ptr, ptr %2, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.GuiFileDialogState, ptr %435, i32 0, i32 0
  %437 = getelementptr inbounds %struct.Vector2, ptr %436, i32 0, i32 1
  %438 = load float, ptr %437, align 4, !tbaa !30
  %439 = load i32, ptr %4, align 4, !tbaa !18
  %440 = sitofp i32 %439 to float
  %441 = fadd float %438, %440
  %442 = fsub float %441, 6.000000e+01
  store float %442, ptr %434, align 4, !tbaa !31
  %443 = getelementptr inbounds %struct.Rectangle, ptr %17, i32 0, i32 2
  %444 = load i32, ptr %3, align 4, !tbaa !18
  %445 = sub nsw i32 %444, 200
  %446 = sitofp i32 %445 to float
  store float %446, ptr %443, align 4, !tbaa !32
  %447 = getelementptr inbounds %struct.Rectangle, ptr %17, i32 0, i32 3
  store float 2.500000e+01, ptr %447, align 4, !tbaa !33
  %448 = load ptr, ptr %2, align 8, !tbaa !5
  %449 = getelementptr inbounds %struct.GuiFileDialogState, ptr %448, i32 0, i32 9
  %450 = getelementptr inbounds [256 x i8], ptr %449, i64 0, i64 0
  %451 = load ptr, ptr %2, align 8, !tbaa !5
  %452 = getelementptr inbounds %struct.GuiFileDialogState, ptr %451, i32 0, i32 8
  %453 = load i8, ptr %452, align 8, !tbaa !36, !range !15, !noundef !16
  %454 = trunc i8 %453 to i1
  %455 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %17, i32 0, i32 0
  %456 = load <2 x float>, ptr %455, align 4
  %457 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %17, i32 0, i32 1
  %458 = load <2 x float>, ptr %457, align 4
  %459 = call zeroext i1 @GuiTextBox(<2 x float> %456, <2 x float> %458, ptr noundef %450, i32 noundef 128, i1 noundef zeroext %454)
  br i1 %459, label %460, label %530

460:                                              ; preds = %406
  %461 = load ptr, ptr %2, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.GuiFileDialogState, ptr %461, i32 0, i32 9
  %463 = getelementptr inbounds [256 x i8], ptr %462, i64 0, i64 0
  %464 = load i8, ptr %463, align 1, !tbaa !37
  %465 = icmp ne i8 %464, 0
  br i1 %465, label %466, label %521

466:                                              ; preds = %460
  %467 = load ptr, ptr %2, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.GuiFileDialogState, ptr %467, i32 0, i32 4
  %469 = getelementptr inbounds [256 x i8], ptr %468, i64 0, i64 0
  %470 = load ptr, ptr %2, align 8, !tbaa !5
  %471 = getelementptr inbounds %struct.GuiFileDialogState, ptr %470, i32 0, i32 9
  %472 = getelementptr inbounds [256 x i8], ptr %471, i64 0, i64 0
  %473 = call ptr (ptr, ...) @TextFormat(ptr noundef @.str.5, ptr noundef %469, ptr noundef %472)
  %474 = call zeroext i1 @FileExists(ptr noundef %473)
  br i1 %474, label %475, label %512

475:                                              ; preds = %466
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  store i32 0, ptr %18, align 4, !tbaa !18
  br label %476

476:                                              ; preds = %507, %475
  %477 = load i32, ptr %18, align 4, !tbaa !18
  %478 = load ptr, ptr %2, align 8, !tbaa !5
  %479 = getelementptr inbounds %struct.GuiFileDialogState, ptr %478, i32 0, i32 15
  %480 = load i32, ptr %479, align 8, !tbaa !23
  %481 = icmp slt i32 %477, %480
  br i1 %481, label %483, label %482

482:                                              ; preds = %476
  store i32 8, ptr %7, align 4
  br label %510

483:                                              ; preds = %476
  %484 = load ptr, ptr %2, align 8, !tbaa !5
  %485 = getelementptr inbounds %struct.GuiFileDialogState, ptr %484, i32 0, i32 9
  %486 = getelementptr inbounds [256 x i8], ptr %485, i64 0, i64 0
  %487 = load ptr, ptr %2, align 8, !tbaa !5
  %488 = getelementptr inbounds %struct.GuiFileDialogState, ptr %487, i32 0, i32 14
  %489 = load ptr, ptr %488, align 8, !tbaa !22
  %490 = load i32, ptr %18, align 4, !tbaa !18
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds ptr, ptr %489, i64 %491
  %493 = load ptr, ptr %492, align 8, !tbaa !5
  %494 = call zeroext i1 @TextIsEqual(ptr noundef %486, ptr noundef %493)
  br i1 %494, label %495, label %506

495:                                              ; preds = %483
  %496 = load i32, ptr %18, align 4, !tbaa !18
  %497 = load ptr, ptr %2, align 8, !tbaa !5
  %498 = getelementptr inbounds %struct.GuiFileDialogState, ptr %497, i32 0, i32 7
  store i32 %496, ptr %498, align 4, !tbaa !24
  %499 = load ptr, ptr %2, align 8, !tbaa !5
  %500 = getelementptr inbounds %struct.GuiFileDialogState, ptr %499, i32 0, i32 18
  %501 = getelementptr inbounds [256 x i8], ptr %500, i64 0, i64 0
  %502 = load ptr, ptr %2, align 8, !tbaa !5
  %503 = getelementptr inbounds %struct.GuiFileDialogState, ptr %502, i32 0, i32 9
  %504 = getelementptr inbounds [256 x i8], ptr %503, i64 0, i64 0
  %505 = call ptr @strcpy(ptr noundef %501, ptr noundef %504) #8
  store i32 8, ptr %7, align 4
  br label %510

506:                                              ; preds = %483
  br label %507

507:                                              ; preds = %506
  %508 = load i32, ptr %18, align 4, !tbaa !18
  %509 = add nsw i32 %508, 1
  store i32 %509, ptr %18, align 4, !tbaa !18
  br label %476, !llvm.loop !38

510:                                              ; preds = %495, %482
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  br label %511

511:                                              ; preds = %510
  br label %520

512:                                              ; preds = %466
  %513 = load ptr, ptr %2, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.GuiFileDialogState, ptr %513, i32 0, i32 9
  %515 = getelementptr inbounds [256 x i8], ptr %514, i64 0, i64 0
  %516 = load ptr, ptr %2, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.GuiFileDialogState, ptr %516, i32 0, i32 18
  %518 = getelementptr inbounds [256 x i8], ptr %517, i64 0, i64 0
  %519 = call ptr @strcpy(ptr noundef %515, ptr noundef %518) #8
  br label %520

520:                                              ; preds = %512, %511
  br label %521

521:                                              ; preds = %520, %460
  %522 = load ptr, ptr %2, align 8, !tbaa !5
  %523 = getelementptr inbounds %struct.GuiFileDialogState, ptr %522, i32 0, i32 8
  %524 = load i8, ptr %523, align 8, !tbaa !36, !range !15, !noundef !16
  %525 = trunc i8 %524 to i1
  %526 = xor i1 %525, true
  %527 = load ptr, ptr %2, align 8, !tbaa !5
  %528 = getelementptr inbounds %struct.GuiFileDialogState, ptr %527, i32 0, i32 8
  %529 = zext i1 %526 to i8
  store i8 %529, ptr %528, align 8, !tbaa !36
  br label %530

530:                                              ; preds = %521, %406
  %531 = getelementptr inbounds %struct.Rectangle, ptr %19, i32 0, i32 0
  %532 = load ptr, ptr %2, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.GuiFileDialogState, ptr %532, i32 0, i32 0
  %534 = getelementptr inbounds %struct.Vector2, ptr %533, i32 0, i32 0
  %535 = load float, ptr %534, align 8, !tbaa !27
  %536 = fadd float %535, 7.500000e+01
  store float %536, ptr %531, align 4, !tbaa !28
  %537 = getelementptr inbounds %struct.Rectangle, ptr %19, i32 0, i32 1
  %538 = load ptr, ptr %2, align 8, !tbaa !5
  %539 = getelementptr inbounds %struct.GuiFileDialogState, ptr %538, i32 0, i32 0
  %540 = getelementptr inbounds %struct.Vector2, ptr %539, i32 0, i32 1
  %541 = load float, ptr %540, align 4, !tbaa !30
  %542 = load i32, ptr %4, align 4, !tbaa !18
  %543 = sitofp i32 %542 to float
  %544 = fadd float %541, %543
  %545 = fsub float %544, 3.000000e+01
  store float %545, ptr %537, align 4, !tbaa !31
  %546 = getelementptr inbounds %struct.Rectangle, ptr %19, i32 0, i32 2
  %547 = load i32, ptr %3, align 4, !tbaa !18
  %548 = sub nsw i32 %547, 200
  %549 = sitofp i32 %548 to float
  store float %549, ptr %546, align 4, !tbaa !32
  %550 = getelementptr inbounds %struct.Rectangle, ptr %19, i32 0, i32 3
  store float 2.500000e+01, ptr %550, align 4, !tbaa !33
  %551 = load ptr, ptr %2, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.GuiFileDialogState, ptr %551, i32 0, i32 12
  %553 = load i32, ptr %552, align 4, !tbaa !39
  %554 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %19, i32 0, i32 0
  %555 = load <2 x float>, ptr %554, align 4
  %556 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %19, i32 0, i32 1
  %557 = load <2 x float>, ptr %556, align 4
  %558 = call i32 @GuiComboBox(<2 x float> %555, <2 x float> %557, ptr noundef @.str.16, i32 noundef %553)
  %559 = load ptr, ptr %2, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.GuiFileDialogState, ptr %559, i32 0, i32 12
  store i32 %558, ptr %560, align 4, !tbaa !39
  %561 = getelementptr inbounds %struct.Rectangle, ptr %20, i32 0, i32 0
  %562 = load ptr, ptr %2, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct.GuiFileDialogState, ptr %562, i32 0, i32 0
  %564 = getelementptr inbounds %struct.Vector2, ptr %563, i32 0, i32 0
  %565 = load float, ptr %564, align 8, !tbaa !27
  %566 = fadd float %565, 1.000000e+01
  store float %566, ptr %561, align 4, !tbaa !28
  %567 = getelementptr inbounds %struct.Rectangle, ptr %20, i32 0, i32 1
  %568 = load ptr, ptr %2, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.GuiFileDialogState, ptr %568, i32 0, i32 0
  %570 = getelementptr inbounds %struct.Vector2, ptr %569, i32 0, i32 1
  %571 = load float, ptr %570, align 4, !tbaa !30
  %572 = load i32, ptr %4, align 4, !tbaa !18
  %573 = sitofp i32 %572 to float
  %574 = fadd float %571, %573
  %575 = fsub float %574, 3.000000e+01
  store float %575, ptr %567, align 4, !tbaa !31
  %576 = getelementptr inbounds %struct.Rectangle, ptr %20, i32 0, i32 2
  store float 6.800000e+01, ptr %576, align 4, !tbaa !32
  %577 = getelementptr inbounds %struct.Rectangle, ptr %20, i32 0, i32 3
  store float 2.500000e+01, ptr %577, align 4, !tbaa !33
  %578 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %20, i32 0, i32 0
  %579 = load <2 x float>, ptr %578, align 4
  %580 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %20, i32 0, i32 1
  %581 = load <2 x float>, ptr %580, align 4
  call void @GuiLabel(<2 x float> %579, <2 x float> %581, ptr noundef @.str.17)
  %582 = getelementptr inbounds %struct.Rectangle, ptr %21, i32 0, i32 0
  %583 = load ptr, ptr %2, align 8, !tbaa !5
  %584 = getelementptr inbounds %struct.GuiFileDialogState, ptr %583, i32 0, i32 0
  %585 = getelementptr inbounds %struct.Vector2, ptr %584, i32 0, i32 0
  %586 = load float, ptr %585, align 8, !tbaa !27
  %587 = load i32, ptr %3, align 4, !tbaa !18
  %588 = sitofp i32 %587 to float
  %589 = fadd float %586, %588
  %590 = fsub float %589, 1.200000e+02
  store float %590, ptr %582, align 4, !tbaa !28
  %591 = getelementptr inbounds %struct.Rectangle, ptr %21, i32 0, i32 1
  %592 = load ptr, ptr %2, align 8, !tbaa !5
  %593 = getelementptr inbounds %struct.GuiFileDialogState, ptr %592, i32 0, i32 0
  %594 = getelementptr inbounds %struct.Vector2, ptr %593, i32 0, i32 1
  %595 = load float, ptr %594, align 4, !tbaa !30
  %596 = load i32, ptr %4, align 4, !tbaa !18
  %597 = sitofp i32 %596 to float
  %598 = fadd float %595, %597
  %599 = fsub float %598, 6.000000e+01
  store float %599, ptr %591, align 4, !tbaa !31
  %600 = getelementptr inbounds %struct.Rectangle, ptr %21, i32 0, i32 2
  store float 1.100000e+02, ptr %600, align 4, !tbaa !32
  %601 = getelementptr inbounds %struct.Rectangle, ptr %21, i32 0, i32 3
  store float 5.500000e+01, ptr %601, align 4, !tbaa !33
  %602 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %21, i32 0, i32 0
  %603 = load <2 x float>, ptr %602, align 4
  %604 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %21, i32 0, i32 1
  %605 = load <2 x float>, ptr %604, align 4
  %606 = call zeroext i1 @GuiButton(<2 x float> %603, <2 x float> %605, ptr noundef @.str.18)
  %607 = load ptr, ptr %2, align 8, !tbaa !5
  %608 = getelementptr inbounds %struct.GuiFileDialogState, ptr %607, i32 0, i32 10
  %609 = zext i1 %606 to i8
  store i8 %609, ptr %608, align 1, !tbaa !40
  %610 = load ptr, ptr %2, align 8, !tbaa !5
  %611 = getelementptr inbounds %struct.GuiFileDialogState, ptr %610, i32 0, i32 10
  %612 = load i8, ptr %611, align 1, !tbaa !40, !range !15, !noundef !16
  %613 = trunc i8 %612 to i1
  br i1 %613, label %614, label %617

614:                                              ; preds = %530
  %615 = load ptr, ptr %2, align 8, !tbaa !5
  %616 = getelementptr inbounds %struct.GuiFileDialogState, ptr %615, i32 0, i32 2
  store i8 0, ptr %616, align 8, !tbaa !9
  br label %617

617:                                              ; preds = %614, %530
  %618 = load ptr, ptr %2, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct.GuiFileDialogState, ptr %618, i32 0, i32 2
  %620 = load i8, ptr %619, align 8, !tbaa !9, !range !15, !noundef !16
  %621 = trunc i8 %620 to i1
  br i1 %621, label %653, label %622

622:                                              ; preds = %617
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  store i32 0, ptr %22, align 4, !tbaa !18
  br label %623

623:                                              ; preds = %643, %622
  %624 = load i32, ptr %22, align 4, !tbaa !18
  %625 = load ptr, ptr %2, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.GuiFileDialogState, ptr %625, i32 0, i32 15
  %627 = load i32, ptr %626, align 8, !tbaa !23
  %628 = icmp slt i32 %624, %627
  br i1 %628, label %630, label %629

629:                                              ; preds = %623
  store i32 11, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %646

630:                                              ; preds = %623
  %631 = load ptr, ptr %2, align 8, !tbaa !5
  %632 = getelementptr inbounds %struct.GuiFileDialogState, ptr %631, i32 0, i32 14
  %633 = load ptr, ptr %632, align 8, !tbaa !22
  %634 = load i32, ptr %22, align 4, !tbaa !18
  %635 = sext i32 %634 to i64
  %636 = getelementptr inbounds ptr, ptr %633, i64 %635
  %637 = load ptr, ptr %636, align 8, !tbaa !5
  call void @free(ptr noundef %637) #8
  %638 = load ptr, ptr @dirFilesIcon, align 8, !tbaa !5
  %639 = load i32, ptr %22, align 4, !tbaa !18
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds ptr, ptr %638, i64 %640
  %642 = load ptr, ptr %641, align 8, !tbaa !5
  call void @free(ptr noundef %642) #8
  br label %643

643:                                              ; preds = %630
  %644 = load i32, ptr %22, align 4, !tbaa !18
  %645 = add nsw i32 %644, 1
  store i32 %645, ptr %22, align 4, !tbaa !18
  br label %623, !llvm.loop !41

646:                                              ; preds = %629
  %647 = load ptr, ptr %2, align 8, !tbaa !5
  %648 = getelementptr inbounds %struct.GuiFileDialogState, ptr %647, i32 0, i32 14
  %649 = load ptr, ptr %648, align 8, !tbaa !22
  call void @free(ptr noundef %649) #8
  %650 = load ptr, ptr @dirFilesIcon, align 8, !tbaa !5
  call void @free(ptr noundef %650) #8
  store ptr null, ptr @dirFilesIcon, align 8, !tbaa !5
  %651 = load ptr, ptr %2, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.GuiFileDialogState, ptr %651, i32 0, i32 14
  store ptr null, ptr %652, align 8, !tbaa !22
  br label %653

653:                                              ; preds = %646, %617
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #8
  br label %654

654:                                              ; preds = %653, %1
  ret void
}

; Function Attrs: nounwind uwtable
declare hidden ptr @ReadDirectoryFiles(ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strcmp(ptr noundef, ptr noundef) #7

declare ptr @GetPrevDirectoryPath(ptr noundef) #3

; Function Attrs: nounwind uwtable
declare hidden void @FD_RELOAD_DIRPATH(ptr noundef) #0

declare zeroext i1 @TextIsEqual(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 = { nounwind uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { "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 allocsize(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 #5 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind allocsize(0,1) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind willreturn memory(read) "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 #8 = { nounwind }
attributes #9 = { nounwind allocsize(0) }
attributes #10 = { nounwind allocsize(0,1) }
attributes #11 = { nounwind willreturn memory(read) }

!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, !13, i64 16}
!10 = !{!"", !11, i64 0, !11, i64 8, !13, i64 16, !13, i64 17, !7, i64 18, !14, i64 276, !13, i64 280, !14, i64 284, !13, i64 288, !7, i64 289, !13, i64 545, !13, i64 546, !14, i64 548, !14, i64 552, !6, i64 560, !14, i64 568, !7, i64 572, !7, i64 828, !7, i64 1084, !14, i64 1340}
!11 = !{!"Vector2", !12, i64 0, !12, i64 4}
!12 = !{!"float", !7, i64 0}
!13 = !{!"_Bool", !7, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{i8 0, i8 2}
!16 = !{}
!17 = !{!10, !12, i64 8}
!18 = !{!14, !14, i64 0}
!19 = !{!10, !12, i64 12}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.mustprogress"}
!22 = !{!10, !6, i64 560}
!23 = !{!10, !14, i64 568}
!24 = !{!10, !14, i64 284}
!25 = !{!10, !14, i64 276}
!26 = distinct !{!26, !21}
!27 = !{!10, !12, i64 0}
!28 = !{!29, !12, i64 0}
!29 = !{!"Rectangle", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12}
!30 = !{!10, !12, i64 4}
!31 = !{!29, !12, i64 4}
!32 = !{!29, !12, i64 8}
!33 = !{!29, !12, i64 12}
!34 = !{!10, !13, i64 17}
!35 = !{!10, !14, i64 1340}
!36 = !{!10, !13, i64 288}
!37 = !{!7, !7, i64 0}
!38 = distinct !{!38, !21}
!39 = !{!10, !14, i64 548}
!40 = !{!10, !13, i64 545}
!41 = distinct !{!41, !21}


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

@.str.5 = external hidden unnamed_addr constant [6 x i8], align 1
@dirFilesIcon = external dso_local local_unnamed_addr global ptr, align 8
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [7 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @GuiSetStyle(i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local i32 @GuiGetStyle(i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local zeroext i1 @GuiWindowBox(<2 x float>, <2 x float>, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local zeroext i1 @GuiButton(<2 x float>, <2 x float>, ptr noundef) local_unnamed_addr #1

declare i32 @Fade(i32, float noundef) local_unnamed_addr #2

declare i32 @GetColor(i32 noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local void @GuiLabel(<2 x float>, <2 x float>, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @GuiComboBox(<2 x float>, <2 x float>, ptr noundef, i32 noundef) local_unnamed_addr #1

declare ptr @TextFormat(ptr noundef, ...) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local zeroext i1 @GuiTextBox(<2 x float>, <2 x float>, ptr noundef, i32 noundef, i1 noundef zeroext) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @GuiListViewEx(<2 x float>, <2 x float>, ptr noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @calloc(i64 noundef, i64 noundef) local_unnamed_addr #5

declare void @DrawRectangle(i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32) local_unnamed_addr #2

declare i32 @GetScreenWidth() local_unnamed_addr #2

declare i32 @GetScreenHeight() local_unnamed_addr #2

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: readwrite)
declare ptr @strcpy(ptr noalias noundef returned writeonly, ptr noalias nocapture noundef readonly) local_unnamed_addr #6

declare zeroext i1 @DirectoryExists(ptr noundef) local_unnamed_addr #2

declare zeroext i1 @FileExists(ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
define dso_local void @GuiFileDialog(ptr noundef %0) local_unnamed_addr #1 {
  %2 = getelementptr inbounds i8, ptr %0, i64 16
  %3 = load i8, ptr %2, align 8, !tbaa !5, !range !14, !noundef !15
  %4 = trunc nuw i8 %3 to i1
  br i1 %4, label %5, label %224

5:                                                ; preds = %1
  %6 = getelementptr inbounds i8, ptr %0, i64 8
  %7 = load <2 x float>, ptr %6, align 8, !tbaa !16
  %8 = fptosi <2 x float> %7 to <2 x i32>
  %9 = load ptr, ptr @dirFilesIcon, align 8, !tbaa !17
  %10 = icmp eq ptr %9, null
  br i1 %10, label %11, label %.loopexit182

11:                                               ; preds = %5
  %12 = tail call noalias dereferenceable_or_null(8192) ptr @malloc(i64 noundef 8192) #8
  store ptr %12, ptr @dirFilesIcon, align 8, !tbaa !17
  br label %13

13:                                               ; preds = %11, %13
  %indvars.iv = phi i64 [ 0, %11 ], [ %indvars.iv.next, %13 ]
  %14 = tail call noalias dereferenceable_or_null(1024) ptr @calloc(i64 noundef 1024, i64 noundef 1) #9
  %15 = load ptr, ptr @dirFilesIcon, align 8, !tbaa !17
  %16 = getelementptr inbounds ptr, ptr %15, i64 %indvars.iv
  store ptr %14, ptr %16, align 8, !tbaa !17
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 1024
  br i1 %exitcond.not, label %.loopexit182, label %13, !llvm.loop !18

.loopexit182:                                     ; preds = %13, %5
  %17 = getelementptr inbounds i8, ptr %0, i64 560
  %18 = load ptr, ptr %17, align 8, !tbaa !20
  %19 = icmp eq ptr %18, null
  br i1 %19, label %20, label %.loopexit181

20:                                               ; preds = %.loopexit182
  %21 = getelementptr inbounds i8, ptr %0, i64 18
  %22 = getelementptr inbounds i8, ptr %0, i64 568
  %23 = getelementptr inbounds i8, ptr %0, i64 572
  %24 = tail call ptr @ReadDirectoryFiles(ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %23)
  store ptr %24, ptr %17, align 8, !tbaa !20
  %25 = load i32, ptr %22, align 8, !tbaa !21
  %26 = icmp sgt i32 %25, 0
  br i1 %26, label %.lr.ph, label %.loopexit181

.lr.ph:                                           ; preds = %20
  %27 = getelementptr inbounds i8, ptr %0, i64 289
  %wide.trip.count = zext nneg i32 %25 to i64
  br label %28

28:                                               ; preds = %.lr.ph, %39
  %indvars.iv194 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next195, %39 ]
  %29 = getelementptr inbounds ptr, ptr %24, i64 %indvars.iv194
  %30 = load ptr, ptr %29, align 8, !tbaa !17
  %31 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %27, ptr noundef nonnull dereferenceable(1) %30) #10
  %32 = icmp eq i32 %31, 0
  br i1 %32, label %33, label %39

33:                                               ; preds = %28
  %34 = trunc nuw nsw i64 %indvars.iv194 to i32
  %35 = getelementptr inbounds i8, ptr %0, i64 284
  %36 = load i32, ptr %35, align 4, !tbaa !22
  %.not = icmp eq i32 %36, %34
  br i1 %.not, label %.loopexit181, label %37

37:                                               ; preds = %33
  store i32 %34, ptr %35, align 4, !tbaa !22
  %38 = getelementptr inbounds i8, ptr %0, i64 276
  store i32 %34, ptr %38, align 4, !tbaa !23
  br label %.loopexit181

39:                                               ; preds = %28
  %indvars.iv.next195 = add nuw nsw i64 %indvars.iv194, 1
  %exitcond197.not = icmp eq i64 %indvars.iv.next195, %wide.trip.count
  br i1 %exitcond197.not, label %.loopexit181, label %28, !llvm.loop !24

.loopexit181:                                     ; preds = %39, %20, %37, %33, %.loopexit182
  %40 = tail call i32 @GetScreenWidth() #11
  %41 = tail call i32 @GetScreenHeight() #11
  %42 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 19)
  %43 = tail call i32 @GetColor(i32 noundef %42) #11
  %44 = tail call i32 @Fade(i32 %43, float noundef 0x3FEB333340000000) #11
  tail call void @DrawRectangle(i32 noundef 0, i32 noundef 0, i32 noundef %40, i32 noundef %41, i32 %44) #11
  %45 = getelementptr inbounds i8, ptr %0, i64 4
  %46 = load <2 x float>, ptr %0, align 8, !tbaa !16
  %47 = fadd <2 x float> %46, zeroinitializer
  %48 = sitofp <2 x i32> %8 to <2 x float>
  %49 = tail call zeroext i1 @GuiWindowBox(<2 x float> %47, <2 x float> %48, ptr noundef nonnull @.str.10)
  %50 = xor i1 %49, true
  %51 = zext i1 %50 to i8
  store i8 %51, ptr %2, align 8, !tbaa !5
  %52 = load float, ptr %0, align 8, !tbaa !25
  %53 = extractelement <2 x float> %48, i64 0
  %54 = fadd float %52, %53
  %55 = load float, ptr %45, align 4, !tbaa !26
  %56 = insertelement <2 x float> poison, float %54, i64 0
  %57 = insertelement <2 x float> %56, float %55, i64 1
  %58 = fadd <2 x float> %57, <float -5.000000e+01, float 3.500000e+01>
  %59 = tail call zeroext i1 @GuiButton(<2 x float> %58, <2 x float> <float 4.000000e+01, float 2.500000e+01>, ptr noundef nonnull @.str.11)
  br i1 %59, label %60, label %69

60:                                               ; preds = %.loopexit181
  %61 = getelementptr inbounds i8, ptr %0, i64 18
  %62 = tail call ptr @GetPrevDirectoryPath(ptr noundef nonnull %61) #11
  %63 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %61, ptr noundef nonnull dereferenceable(1) %62) #11
  tail call void @FD_RELOAD_DIRPATH(ptr noundef nonnull %0)
  %64 = getelementptr inbounds i8, ptr %0, i64 284
  store i32 -1, ptr %64, align 4, !tbaa !22
  %65 = getelementptr inbounds i8, ptr %0, i64 289
  %66 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %65, ptr noundef nonnull dereferenceable(1) @.str.8) #11
  %67 = getelementptr inbounds i8, ptr %0, i64 1084
  %68 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %67, ptr noundef nonnull dereferenceable(1) %65) #11
  br label %69

69:                                               ; preds = %60, %.loopexit181
  %70 = load <2 x float>, ptr %0, align 8, !tbaa !16
  %71 = fadd <2 x float> %70, <float 1.000000e+01, float 3.500000e+01>
  %72 = extractelement <2 x i32> %8, i64 0
  %73 = add nsw i32 %72, -65
  %74 = sitofp i32 %73 to float
  %.sroa.334.12.vec.insert = insertelement <2 x float> <float poison, float 2.500000e+01>, float %74, i64 0
  %75 = getelementptr inbounds i8, ptr %0, i64 18
  %76 = getelementptr inbounds i8, ptr %0, i64 17
  %77 = load i8, ptr %76, align 1, !tbaa !27, !range !14, !noundef !15
  %78 = trunc nuw i8 %77 to i1
  %79 = tail call zeroext i1 @GuiTextBox(<2 x float> %71, <2 x float> %.sroa.334.12.vec.insert, ptr noundef nonnull %75, i32 noundef 256, i1 noundef zeroext %78)
  br i1 %79, label %80, label %94

80:                                               ; preds = %69
  %81 = load i8, ptr %76, align 1, !tbaa !27, !range !14, !noundef !15
  %82 = trunc nuw i8 %81 to i1
  br i1 %82, label %83, label %91

83:                                               ; preds = %80
  %84 = tail call zeroext i1 @DirectoryExists(ptr noundef nonnull %75) #11
  br i1 %84, label %85, label %88

85:                                               ; preds = %83
  tail call void @FD_RELOAD_DIRPATH(ptr noundef nonnull %0)
  %86 = getelementptr inbounds i8, ptr %0, i64 828
  %87 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %86, ptr noundef nonnull dereferenceable(1) %75) #11
  br label %91

88:                                               ; preds = %83
  %89 = getelementptr inbounds i8, ptr %0, i64 828
  %90 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %75, ptr noundef nonnull dereferenceable(1) %89) #11
  br label %91

91:                                               ; preds = %85, %88, %80
  %92 = load i8, ptr %76, align 1, !tbaa !27, !range !14, !noundef !15
  %93 = xor i8 %92, 1
  store i8 %93, ptr %76, align 1, !tbaa !27
  br label %94

94:                                               ; preds = %91, %69
  %95 = tail call i32 @GuiGetStyle(i32 noundef 12, i32 noundef 14)
  %96 = tail call i32 @GuiGetStyle(i32 noundef 12, i32 noundef 16)
  tail call void @GuiSetStyle(i32 noundef 12, i32 noundef 14, i32 noundef 0)
  tail call void @GuiSetStyle(i32 noundef 12, i32 noundef 16, i32 noundef 24)
  %97 = load <2 x float>, ptr %0, align 8, !tbaa !16
  %98 = fadd <2 x float> %97, <float 1.000000e+01, float 7.000000e+01>
  %99 = add nsw <2 x i32> %8, <i32 -20, i32 -135>
  %100 = sitofp <2 x i32> %99 to <2 x float>
  %101 = load ptr, ptr @dirFilesIcon, align 8, !tbaa !17
  %102 = getelementptr inbounds i8, ptr %0, i64 568
  %103 = load i32, ptr %102, align 8, !tbaa !21
  %104 = getelementptr inbounds i8, ptr %0, i64 552
  %105 = getelementptr inbounds i8, ptr %0, i64 276
  %106 = getelementptr inbounds i8, ptr %0, i64 284
  %107 = load i32, ptr %106, align 4, !tbaa !22
  %108 = tail call i32 @GuiListViewEx(<2 x float> %98, <2 x float> %100, ptr noundef %101, i32 noundef %103, ptr noundef nonnull %104, ptr noundef nonnull %105, i32 noundef %107)
  store i32 %108, ptr %106, align 4, !tbaa !22
  tail call void @GuiSetStyle(i32 noundef 12, i32 noundef 14, i32 noundef %95)
  tail call void @GuiSetStyle(i32 noundef 12, i32 noundef 16, i32 noundef %96)
  %109 = load i32, ptr %106, align 4, !tbaa !22
  %110 = icmp sgt i32 %109, -1
  br i1 %110, label %111, label %142

111:                                              ; preds = %94
  %112 = getelementptr inbounds i8, ptr %0, i64 1340
  %113 = load i32, ptr %112, align 4, !tbaa !28
  %.not178 = icmp eq i32 %109, %113
  br i1 %.not178, label %142, label %114

114:                                              ; preds = %111
  %115 = getelementptr inbounds i8, ptr %0, i64 289
  %116 = load ptr, ptr %17, align 8, !tbaa !20
  %117 = zext nneg i32 %109 to i64
  %118 = getelementptr inbounds ptr, ptr %116, i64 %117
  %119 = load ptr, ptr %118, align 8, !tbaa !17
  %120 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %115, ptr noundef nonnull dereferenceable(1) %119) #11
  %121 = tail call ptr (ptr, ...) @TextFormat(ptr noundef nonnull @.str.5, ptr noundef nonnull %75, ptr noundef nonnull %115) #11
  %122 = tail call zeroext i1 @DirectoryExists(ptr noundef %121) #11
  br i1 %122, label %123, label %._crit_edge204

._crit_edge204:                                   ; preds = %114
  %.pre = load i32, ptr %106, align 4, !tbaa !22
  br label %140

123:                                              ; preds = %114
  %124 = tail call zeroext i1 @TextIsEqual(ptr noundef nonnull %115, ptr noundef nonnull @.str.12) #11
  br i1 %124, label %125, label %127

125:                                              ; preds = %123
  %126 = tail call ptr @GetPrevDirectoryPath(ptr noundef nonnull %75) #11
  br label %132

127:                                              ; preds = %123
  %128 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %75, ptr noundef nonnull dereferenceable(1) @.str.13) #10
  %129 = icmp eq i32 %128, 0
  %130 = select i1 %129, ptr @.str.14, ptr %75
  %131 = tail call ptr (ptr, ...) @TextFormat(ptr noundef nonnull @.str.5, ptr noundef nonnull %130, ptr noundef nonnull %115) #11
  br label %132

132:                                              ; preds = %127, %125
  %.sink = phi ptr [ %131, %127 ], [ %126, %125 ]
  %133 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %75, ptr noundef nonnull dereferenceable(1) %.sink) #11
  %134 = getelementptr inbounds i8, ptr %0, i64 828
  %135 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %134, ptr noundef nonnull dereferenceable(1) %75) #11
  tail call void @FD_RELOAD_DIRPATH(ptr noundef nonnull %0)
  %136 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %134, ptr noundef nonnull dereferenceable(1) %75) #11
  store i32 -1, ptr %106, align 4, !tbaa !22
  %137 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %115, ptr noundef nonnull dereferenceable(1) @.str.8) #11
  %138 = getelementptr inbounds i8, ptr %0, i64 1084
  %139 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %138, ptr noundef nonnull dereferenceable(1) %115) #11
  br label %140

140:                                              ; preds = %._crit_edge204, %132
  %141 = phi i32 [ %.pre, %._crit_edge204 ], [ -1, %132 ]
  store i32 %141, ptr %112, align 4, !tbaa !28
  br label %142

142:                                              ; preds = %140, %111, %94
  %143 = load float, ptr %0, align 8, !tbaa !25
  %144 = load float, ptr %45, align 4, !tbaa !26
  %145 = extractelement <2 x float> %48, i64 1
  %146 = fadd float %144, %145
  %147 = insertelement <2 x float> poison, float %143, i64 0
  %148 = insertelement <2 x float> %147, float %146, i64 1
  %149 = fadd <2 x float> %148, <float 1.000000e+01, float -6.000000e+01>
  tail call void @GuiLabel(<2 x float> %149, <2 x float> <float 6.800000e+01, float 2.500000e+01>, ptr noundef nonnull @.str.15)
  %150 = load float, ptr %0, align 8, !tbaa !25
  %151 = load float, ptr %45, align 4, !tbaa !26
  %152 = fadd float %151, %145
  %153 = insertelement <2 x float> poison, float %150, i64 0
  %154 = insertelement <2 x float> %153, float %152, i64 1
  %155 = fadd <2 x float> %154, <float 7.500000e+01, float -6.000000e+01>
  %156 = add nsw i32 %72, -200
  %157 = sitofp i32 %156 to float
  %.sroa.320.12.vec.insert = insertelement <2 x float> <float poison, float 2.500000e+01>, float %157, i64 0
  %158 = getelementptr inbounds i8, ptr %0, i64 289
  %159 = getelementptr inbounds i8, ptr %0, i64 288
  %160 = load i8, ptr %159, align 8, !tbaa !29, !range !14, !noundef !15
  %161 = trunc nuw i8 %160 to i1
  %162 = tail call zeroext i1 @GuiTextBox(<2 x float> %155, <2 x float> %.sroa.320.12.vec.insert, ptr noundef nonnull %158, i32 noundef 128, i1 noundef zeroext %161)
  br i1 %162, label %163, label %187

163:                                              ; preds = %142
  %164 = load i8, ptr %158, align 1, !tbaa !30
  %.not179 = icmp eq i8 %164, 0
  br i1 %.not179, label %.loopexit, label %165

165:                                              ; preds = %163
  %166 = tail call ptr (ptr, ...) @TextFormat(ptr noundef nonnull @.str.5, ptr noundef nonnull %75, ptr noundef nonnull %158) #11
  %167 = tail call zeroext i1 @FileExists(ptr noundef %166) #11
  br i1 %167, label %.preheader180, label %182

.preheader180:                                    ; preds = %165
  %168 = load i32, ptr %102, align 8, !tbaa !21
  %169 = icmp sgt i32 %168, 0
  br i1 %169, label %.lr.ph188, label %.loopexit

.lr.ph188:                                        ; preds = %.preheader180, %178
  %indvars.iv198 = phi i64 [ %indvars.iv.next199, %178 ], [ 0, %.preheader180 ]
  %170 = load ptr, ptr %17, align 8, !tbaa !20
  %171 = getelementptr inbounds ptr, ptr %170, i64 %indvars.iv198
  %172 = load ptr, ptr %171, align 8, !tbaa !17
  %173 = tail call zeroext i1 @TextIsEqual(ptr noundef nonnull %158, ptr noundef %172) #11
  br i1 %173, label %174, label %178

174:                                              ; preds = %.lr.ph188
  %175 = trunc nuw nsw i64 %indvars.iv198 to i32
  store i32 %175, ptr %106, align 4, !tbaa !22
  %176 = getelementptr inbounds i8, ptr %0, i64 1084
  %177 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %176, ptr noundef nonnull dereferenceable(1) %158) #11
  br label %.loopexit

178:                                              ; preds = %.lr.ph188
  %indvars.iv.next199 = add nuw nsw i64 %indvars.iv198, 1
  %179 = load i32, ptr %102, align 8, !tbaa !21
  %180 = sext i32 %179 to i64
  %181 = icmp slt i64 %indvars.iv.next199, %180
  br i1 %181, label %.lr.ph188, label %.loopexit, !llvm.loop !31

182:                                              ; preds = %165
  %183 = getelementptr inbounds i8, ptr %0, i64 1084
  %184 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %158, ptr noundef nonnull dereferenceable(1) %183) #11
  br label %.loopexit

.loopexit:                                        ; preds = %178, %.preheader180, %174, %182, %163
  %185 = load i8, ptr %159, align 8, !tbaa !29, !range !14, !noundef !15
  %186 = xor i8 %185, 1
  store i8 %186, ptr %159, align 8, !tbaa !29
  br label %187

187:                                              ; preds = %.loopexit, %142
  %188 = load float, ptr %0, align 8, !tbaa !25
  %189 = load float, ptr %45, align 4, !tbaa !26
  %190 = fadd float %189, %145
  %191 = insertelement <2 x float> poison, float %188, i64 0
  %192 = insertelement <2 x float> %191, float %190, i64 1
  %193 = fadd <2 x float> %192, <float 7.500000e+01, float -3.000000e+01>
  %194 = getelementptr inbounds i8, ptr %0, i64 548
  %195 = load i32, ptr %194, align 4, !tbaa !32
  %196 = tail call i32 @GuiComboBox(<2 x float> %193, <2 x float> %.sroa.320.12.vec.insert, ptr noundef nonnull @.str.16, i32 noundef %195)
  store i32 %196, ptr %194, align 4, !tbaa !32
  %197 = load float, ptr %0, align 8, !tbaa !25
  %198 = load float, ptr %45, align 4, !tbaa !26
  %199 = fadd float %198, %145
  %200 = insertelement <2 x float> poison, float %197, i64 0
  %201 = insertelement <2 x float> %200, float %199, i64 1
  %202 = fadd <2 x float> %201, <float 1.000000e+01, float -3.000000e+01>
  tail call void @GuiLabel(<2 x float> %202, <2 x float> <float 6.800000e+01, float 2.500000e+01>, ptr noundef nonnull @.str.17)
  %203 = load <2 x float>, ptr %0, align 8, !tbaa !16
  %204 = fadd <2 x float> %203, %48
  %205 = fadd <2 x float> %204, <float -1.200000e+02, float -6.000000e+01>
  %206 = tail call zeroext i1 @GuiButton(<2 x float> %205, <2 x float> <float 1.100000e+02, float 5.500000e+01>, ptr noundef nonnull @.str.18)
  %207 = getelementptr inbounds i8, ptr %0, i64 545
  %208 = zext i1 %206 to i8
  store i8 %208, ptr %207, align 1, !tbaa !33
  br i1 %206, label %.thread, label %209

.thread:                                          ; preds = %187
  store i8 0, ptr %2, align 8, !tbaa !5
  br label %.preheader

209:                                              ; preds = %187
  %.pre206 = load i8, ptr %2, align 8, !tbaa !5, !range !14
  %210 = trunc nuw i8 %.pre206 to i1
  br i1 %210, label %224, label %.preheader

.preheader:                                       ; preds = %.thread, %209
  %211 = load i32, ptr %102, align 8, !tbaa !21
  %212 = icmp sgt i32 %211, 0
  br i1 %212, label %.lr.ph190, label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph190, %.preheader
  %213 = load ptr, ptr %17, align 8, !tbaa !20
  tail call void @free(ptr noundef %213) #11
  %214 = load ptr, ptr @dirFilesIcon, align 8, !tbaa !17
  tail call void @free(ptr noundef %214) #11
  store ptr null, ptr @dirFilesIcon, align 8, !tbaa !17
  store ptr null, ptr %17, align 8, !tbaa !20
  br label %224

.lr.ph190:                                        ; preds = %.preheader, %.lr.ph190
  %indvars.iv201 = phi i64 [ %indvars.iv.next202, %.lr.ph190 ], [ 0, %.preheader ]
  %215 = load ptr, ptr %17, align 8, !tbaa !20
  %216 = getelementptr inbounds ptr, ptr %215, i64 %indvars.iv201
  %217 = load ptr, ptr %216, align 8, !tbaa !17
  tail call void @free(ptr noundef %217) #11
  %218 = load ptr, ptr @dirFilesIcon, align 8, !tbaa !17
  %219 = getelementptr inbounds ptr, ptr %218, i64 %indvars.iv201
  %220 = load ptr, ptr %219, align 8, !tbaa !17
  tail call void @free(ptr noundef %220) #11
  %indvars.iv.next202 = add nuw nsw i64 %indvars.iv201, 1
  %221 = load i32, ptr %102, align 8, !tbaa !21
  %222 = sext i32 %221 to i64
  %223 = icmp slt i64 %indvars.iv.next202, %222
  br i1 %223, label %.lr.ph190, label %._crit_edge, !llvm.loop !34

224:                                              ; preds = %209, %._crit_edge, %1
  ret void
}

; Function Attrs: nounwind uwtable
declare hidden ptr @ReadDirectoryFiles(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #7

declare ptr @GetPrevDirectoryPath(ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden void @FD_RELOAD_DIRPATH(ptr noundef) local_unnamed_addr #0

declare zeroext i1 @TextIsEqual(ptr noundef, ptr noundef) local_unnamed_addr #2

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 = { nounwind uwtable "min-legal-vector-width"="64" "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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "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 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "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 = { mustprogress nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nofree nounwind willreturn memory(argmem: readwrite) "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 #7 = { mustprogress nofree nounwind willreturn memory(argmem: read) "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 #8 = { nounwind allocsize(0) }
attributes #9 = { nounwind allocsize(0,1) }
attributes #10 = { nounwind willreturn memory(read) }
attributes #11 = { 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, !11, i64 16}
!6 = !{!"", !7, i64 0, !7, i64 8, !11, i64 16, !11, i64 17, !9, i64 18, !12, i64 276, !11, i64 280, !12, i64 284, !11, i64 288, !9, i64 289, !11, i64 545, !11, i64 546, !12, i64 548, !12, i64 552, !13, i64 560, !12, i64 568, !9, i64 572, !9, i64 828, !9, i64 1084, !12, i64 1340}
!7 = !{!"Vector2", !8, i64 0, !8, i64 4}
!8 = !{!"float", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C/C++ TBAA"}
!11 = !{!"_Bool", !9, i64 0}
!12 = !{!"int", !9, i64 0}
!13 = !{!"any pointer", !9, i64 0}
!14 = !{i8 0, i8 2}
!15 = !{}
!16 = !{!8, !8, i64 0}
!17 = !{!13, !13, i64 0}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.mustprogress"}
!20 = !{!6, !13, i64 560}
!21 = !{!6, !12, i64 568}
!22 = !{!6, !12, i64 284}
!23 = !{!6, !12, i64 276}
!24 = distinct !{!24, !19}
!25 = !{!6, !8, i64 0}
!26 = !{!6, !8, i64 4}
!27 = !{!6, !11, i64 17}
!28 = !{!6, !12, i64 1340}
!29 = !{!6, !11, i64 288}
!30 = !{!9, !9, i64 0}
!31 = distinct !{!31, !19}
!32 = !{!6, !12, i64 548}
!33 = !{!6, !11, i64 545}
!34 = distinct !{!34, !19}


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