; LLVM IR from christoskaramou/PhasmaEngine :: PhasmaEditor/Include/TinyFileDialogs (tinyfiledialogs)

; 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.termios = type { i32, i32, i32, i32, i8, [32 x i8], i32, i32 }

@tinyfd_verbose = external dso_local global i32, align 4
@tinyfd_silent = external dso_local global i32, align 4
@tinyfd_forceConsole = external dso_local global i32, align 4
@tinyfd_response = external dso_local global [1024 x i8], align 16
@tinyfd_needs = external dso_local constant [351 x i8], align 16
@.str.8 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [16 x i8], align 1
@_ZL12gPython2Name = external hidden global [16 x i8], align 16
@.str.74 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [120 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [16 x i8], align 1
@_ZL12gPython3Name = external hidden global [16 x i8], align 16
@.str.104 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.125 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.129 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.140 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.141 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [11 x i8], align 1
@_ZL17gWarningDisplayed = external hidden global i32, align 4
@.str.146 = external hidden unnamed_addr constant [7 x i8], align 1
@_ZL6gTitle = external hidden constant [52 x i8], align 16
@.str.149 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.167 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.188 = external hidden unnamed_addr constant [5 x i8], align 1
@stdout = external global ptr, align 8
@.str.196 = external hidden unnamed_addr constant [2 x i8], align 1
@_ZZ15tinyfd_inputBoxE5lBuff = external hidden global [1024 x i8], align 16
@.str.208 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.209 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.210 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.211 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.212 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.213 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.214 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.215 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.216 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.217 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.218 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.219 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.220 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.221 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.222 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.223 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.224 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.225 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.226 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.227 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.228 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.229 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.230 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.231 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.232 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.233 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.234 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.235 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.236 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.237 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.238 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.239 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.240 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.241 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.242 = external hidden unnamed_addr constant [149 x i8], align 1
@.str.243 = external hidden unnamed_addr constant [159 x i8], align 1
@.str.244 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.245 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.246 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.247 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.248 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.249 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.250 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.251 = external hidden unnamed_addr constant [24 x i8], align 1
@stdin = external global ptr, align 8
@.str.252 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.253 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.254 = external hidden unnamed_addr constant [3 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z24isDialogVersionBetter09bv() #0

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

; Function Attrs: nounwind willreturn memory(read)
declare i64 @strlen(ptr noundef) #2

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL16osascriptPresentv() #0

declare i32 @printf(ptr noundef, ...) #4

declare noalias ptr @popen(ptr noundef, ptr noundef) #4

declare i32 @pclose(ptr noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local i32 @tinyfd_messageBox(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) #0

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL12osx9orBetterv() #0

; Function Attrs: nounwind
declare ptr @strcat(ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL14kdialogPresentv() #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL13zenityPresentv() #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL17matedialogPresentv() #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL20shellementaryPresentv() #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL12qarmaPresentv() #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL14zenity3Presentv() #0

; Function Attrs: nounwind
declare ptr @getenv(ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL16gxmessagePresentv() #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL15gmessagePresentv() #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL14gdialogPresentv() #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL14xdialogPresentv() #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL15tkinter2Presentv() #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL17isTerminalRunningv() #0

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i32 @_ZL8isDarwinv() #6

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL13replaceSubStrPKcS0_S0_Pc(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL15tkinter3Presentv() #0

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZL10dialogNamev() #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL15whiptailPresentv() #0

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZL12terminalNamev() #0

; Function Attrs: nounwind
declare i32 @tcgetattr(i32 noundef, ptr noundef) #3

; Function Attrs: nounwind
declare i32 @tcsetattr(i32 noundef, i32 noundef, ptr noundef) #3

declare i32 @fflush(ptr noundef) #4

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

declare ptr @fgets(ptr noundef, i32 noundef, ptr noundef) #4

; Function Attrs: mustprogress uwtable
define dso_local ptr @tinyfd_inputBox(ptr noundef %0, ptr noundef %1, ptr noundef %2) #0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca %struct.termios, align 4
  %17 = alloca %struct.termios, align 4
  %18 = alloca ptr, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #8
  store ptr null, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #8
  store i32 0, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #8
  store i32 0, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #8
  store i32 0, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #8
  store i32 0, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 60, ptr %16) #8
  call void @llvm.lifetime.start.p0(i64 60, ptr %17) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  store i8 0, ptr @_ZZ15tinyfd_inputBoxE5lBuff, align 16, !tbaa !11
  %22 = load ptr, ptr %5, align 8, !tbaa !5
  %23 = icmp ne ptr %22, null
  br i1 %23, label %24, label %27

24:                                               ; preds = %3
  %25 = load ptr, ptr %5, align 8, !tbaa !5
  %26 = call i64 @strlen(ptr noundef %25) #9
  br label %28

27:                                               ; preds = %3
  br label %28

28:                                               ; preds = %27, %24
  %29 = phi i64 [ %26, %24 ], [ 0, %27 ]
  store i64 %29, ptr %19, align 8, !tbaa !12
  %30 = load ptr, ptr %6, align 8, !tbaa !5
  %31 = icmp ne ptr %30, null
  br i1 %31, label %32, label %35

32:                                               ; preds = %28
  %33 = load ptr, ptr %6, align 8, !tbaa !5
  %34 = call i64 @strlen(ptr noundef %33) #9
  br label %36

35:                                               ; preds = %28
  br label %36

36:                                               ; preds = %35, %32
  %37 = phi i64 [ %34, %32 ], [ 0, %35 ]
  store i64 %37, ptr %20, align 8, !tbaa !12
  %38 = load ptr, ptr %5, align 8, !tbaa !5
  %39 = icmp ne ptr %38, null
  br i1 %39, label %40, label %44

40:                                               ; preds = %36
  %41 = load ptr, ptr %5, align 8, !tbaa !5
  %42 = call i32 @strcmp(ptr noundef %41, ptr noundef @.str.10) #9
  %43 = icmp ne i32 %42, 0
  br i1 %43, label %44, label %50

44:                                               ; preds = %40, %36
  %45 = load i64, ptr %19, align 8, !tbaa !12
  %46 = add i64 1024, %45
  %47 = load i64, ptr %20, align 8, !tbaa !12
  %48 = add i64 %46, %47
  %49 = call noalias ptr @malloc(i64 noundef %48) #10
  store ptr %49, ptr %8, align 8, !tbaa !5
  br label %50

50:                                               ; preds = %44, %40
  %51 = call noundef i32 @_ZL16osascriptPresentv()
  %52 = icmp ne i32 %51, 0
  br i1 %52, label %53, label %138

53:                                               ; preds = %50
  %54 = load ptr, ptr %5, align 8, !tbaa !5
  %55 = icmp ne ptr %54, null
  br i1 %55, label %56, label %62

56:                                               ; preds = %53
  %57 = load ptr, ptr %5, align 8, !tbaa !5
  %58 = call i32 @strcmp(ptr noundef %57, ptr noundef @.str.10) #9
  %59 = icmp ne i32 %58, 0
  br i1 %59, label %62, label %60

60:                                               ; preds = %56
  %61 = call ptr @strcpy(ptr noundef @tinyfd_response, ptr noundef @.str.11) #8
  store ptr inttoptr (i64 1 to ptr), ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

62:                                               ; preds = %56, %53
  %63 = load ptr, ptr %8, align 8, !tbaa !5
  %64 = call ptr @strcpy(ptr noundef %63, ptr noundef @.str.12) #8
  %65 = call noundef i32 @_ZL12osx9orBetterv()
  %66 = icmp ne i32 %65, 0
  br i1 %66, label %70, label %67

67:                                               ; preds = %62
  %68 = load ptr, ptr %8, align 8, !tbaa !5
  %69 = call ptr @strcat(ptr noundef %68, ptr noundef @.str.13) #8
  br label %70

70:                                               ; preds = %67, %62
  %71 = load ptr, ptr %8, align 8, !tbaa !5
  %72 = call ptr @strcat(ptr noundef %71, ptr noundef @.str.208) #8
  %73 = load ptr, ptr %6, align 8, !tbaa !5
  %74 = icmp ne ptr %73, null
  br i1 %74, label %75, label %83

75:                                               ; preds = %70
  %76 = load ptr, ptr %6, align 8, !tbaa !5
  %77 = call i64 @strlen(ptr noundef %76) #9
  %78 = icmp ne i64 %77, 0
  br i1 %78, label %79, label %83

79:                                               ; preds = %75
  %80 = load ptr, ptr %8, align 8, !tbaa !5
  %81 = load ptr, ptr %6, align 8, !tbaa !5
  %82 = call ptr @strcat(ptr noundef %80, ptr noundef %81) #8
  br label %83

83:                                               ; preds = %79, %75, %70
  %84 = load ptr, ptr %8, align 8, !tbaa !5
  %85 = call ptr @strcat(ptr noundef %84, ptr noundef @.str.15) #8
  %86 = load ptr, ptr %8, align 8, !tbaa !5
  %87 = call ptr @strcat(ptr noundef %86, ptr noundef @.str.209) #8
  %88 = load ptr, ptr %7, align 8, !tbaa !5
  %89 = icmp ne ptr %88, null
  br i1 %89, label %90, label %98

90:                                               ; preds = %83
  %91 = load ptr, ptr %7, align 8, !tbaa !5
  %92 = call i64 @strlen(ptr noundef %91) #9
  %93 = icmp ne i64 %92, 0
  br i1 %93, label %94, label %98

94:                                               ; preds = %90
  %95 = load ptr, ptr %8, align 8, !tbaa !5
  %96 = load ptr, ptr %7, align 8, !tbaa !5
  %97 = call ptr @strcat(ptr noundef %95, ptr noundef %96) #8
  br label %98

98:                                               ; preds = %94, %90, %83
  %99 = load ptr, ptr %8, align 8, !tbaa !5
  %100 = call ptr @strcat(ptr noundef %99, ptr noundef @.str.15) #8
  %101 = load ptr, ptr %7, align 8, !tbaa !5
  %102 = icmp ne ptr %101, null
  br i1 %102, label %106, label %103

103:                                              ; preds = %98
  %104 = load ptr, ptr %8, align 8, !tbaa !5
  %105 = call ptr @strcat(ptr noundef %104, ptr noundef @.str.210) #8
  br label %106

106:                                              ; preds = %103, %98
  %107 = load ptr, ptr %5, align 8, !tbaa !5
  %108 = icmp ne ptr %107, null
  br i1 %108, label %109, label %121

109:                                              ; preds = %106
  %110 = load ptr, ptr %5, align 8, !tbaa !5
  %111 = call i64 @strlen(ptr noundef %110) #9
  %112 = icmp ne i64 %111, 0
  br i1 %112, label %113, label %121

113:                                              ; preds = %109
  %114 = load ptr, ptr %8, align 8, !tbaa !5
  %115 = call ptr @strcat(ptr noundef %114, ptr noundef @.str.16) #8
  %116 = load ptr, ptr %8, align 8, !tbaa !5
  %117 = load ptr, ptr %5, align 8, !tbaa !5
  %118 = call ptr @strcat(ptr noundef %116, ptr noundef %117) #8
  %119 = load ptr, ptr %8, align 8, !tbaa !5
  %120 = call ptr @strcat(ptr noundef %119, ptr noundef @.str.15) #8
  br label %121

121:                                              ; preds = %113, %109, %106
  %122 = load ptr, ptr %8, align 8, !tbaa !5
  %123 = call ptr @strcat(ptr noundef %122, ptr noundef @.str.211) #8
  %124 = load ptr, ptr %8, align 8, !tbaa !5
  %125 = call ptr @strcat(ptr noundef %124, ptr noundef @.str.212) #8
  %126 = load ptr, ptr %8, align 8, !tbaa !5
  %127 = call ptr @strcat(ptr noundef %126, ptr noundef @.str.37) #8
  %128 = load ptr, ptr %8, align 8, !tbaa !5
  %129 = call ptr @strcat(ptr noundef %128, ptr noundef @.str.38) #8
  %130 = load ptr, ptr %8, align 8, !tbaa !5
  %131 = call ptr @strcat(ptr noundef %130, ptr noundef @.str.39) #8
  %132 = call noundef i32 @_ZL12osx9orBetterv()
  %133 = icmp ne i32 %132, 0
  br i1 %133, label %137, label %134

134:                                              ; preds = %121
  %135 = load ptr, ptr %8, align 8, !tbaa !5
  %136 = call ptr @strcat(ptr noundef %135, ptr noundef @.str.40) #8
  br label %137

137:                                              ; preds = %134, %121
  br label %1033

138:                                              ; preds = %50
  %139 = call noundef i32 @_ZL14kdialogPresentv()
  %140 = icmp ne i32 %139, 0
  br i1 %140, label %141, label %213

141:                                              ; preds = %138
  %142 = load ptr, ptr %5, align 8, !tbaa !5
  %143 = icmp ne ptr %142, null
  br i1 %143, label %144, label %150

144:                                              ; preds = %141
  %145 = load ptr, ptr %5, align 8, !tbaa !5
  %146 = call i32 @strcmp(ptr noundef %145, ptr noundef @.str.10) #9
  %147 = icmp ne i32 %146, 0
  br i1 %147, label %150, label %148

148:                                              ; preds = %144
  %149 = call ptr @strcpy(ptr noundef @tinyfd_response, ptr noundef @.str.41) #8
  store ptr inttoptr (i64 1 to ptr), ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

150:                                              ; preds = %144, %141
  %151 = load ptr, ptr %8, align 8, !tbaa !5
  %152 = call ptr @strcpy(ptr noundef %151, ptr noundef @.str.213) #8
  %153 = call noundef i32 @_ZL14kdialogPresentv()
  %154 = icmp eq i32 %153, 2
  br i1 %154, label %155, label %158

155:                                              ; preds = %150
  %156 = load ptr, ptr %8, align 8, !tbaa !5
  %157 = call ptr @strcat(ptr noundef %156, ptr noundef @.str.42) #8
  br label %158

158:                                              ; preds = %155, %150
  %159 = load ptr, ptr %7, align 8, !tbaa !5
  %160 = icmp ne ptr %159, null
  br i1 %160, label %164, label %161

161:                                              ; preds = %158
  %162 = load ptr, ptr %8, align 8, !tbaa !5
  %163 = call ptr @strcat(ptr noundef %162, ptr noundef @.str.214) #8
  br label %167

164:                                              ; preds = %158
  %165 = load ptr, ptr %8, align 8, !tbaa !5
  %166 = call ptr @strcat(ptr noundef %165, ptr noundef @.str.215) #8
  br label %167

167:                                              ; preds = %164, %161
  %168 = load ptr, ptr %8, align 8, !tbaa !5
  %169 = call ptr @strcat(ptr noundef %168, ptr noundef @.str.47) #8
  %170 = load ptr, ptr %6, align 8, !tbaa !5
  %171 = icmp ne ptr %170, null
  br i1 %171, label %172, label %180

172:                                              ; preds = %167
  %173 = load ptr, ptr %6, align 8, !tbaa !5
  %174 = call i64 @strlen(ptr noundef %173) #9
  %175 = icmp ne i64 %174, 0
  br i1 %175, label %176, label %180

176:                                              ; preds = %172
  %177 = load ptr, ptr %8, align 8, !tbaa !5
  %178 = load ptr, ptr %6, align 8, !tbaa !5
  %179 = call ptr @strcat(ptr noundef %177, ptr noundef %178) #8
  br label %180

180:                                              ; preds = %176, %172, %167
  %181 = load ptr, ptr %8, align 8, !tbaa !5
  %182 = call ptr @strcat(ptr noundef %181, ptr noundef @.str.216) #8
  %183 = load ptr, ptr %7, align 8, !tbaa !5
  %184 = icmp ne ptr %183, null
  br i1 %184, label %185, label %193

185:                                              ; preds = %180
  %186 = load ptr, ptr %7, align 8, !tbaa !5
  %187 = call i64 @strlen(ptr noundef %186) #9
  %188 = icmp ne i64 %187, 0
  br i1 %188, label %189, label %193

189:                                              ; preds = %185
  %190 = load ptr, ptr %8, align 8, !tbaa !5
  %191 = load ptr, ptr %7, align 8, !tbaa !5
  %192 = call ptr @strcat(ptr noundef %190, ptr noundef %191) #8
  br label %193

193:                                              ; preds = %189, %185, %180
  %194 = load ptr, ptr %8, align 8, !tbaa !5
  %195 = call ptr @strcat(ptr noundef %194, ptr noundef @.str.47) #8
  %196 = load ptr, ptr %5, align 8, !tbaa !5
  %197 = icmp ne ptr %196, null
  br i1 %197, label %198, label %210

198:                                              ; preds = %193
  %199 = load ptr, ptr %5, align 8, !tbaa !5
  %200 = call i64 @strlen(ptr noundef %199) #9
  %201 = icmp ne i64 %200, 0
  br i1 %201, label %202, label %210

202:                                              ; preds = %198
  %203 = load ptr, ptr %8, align 8, !tbaa !5
  %204 = call ptr @strcat(ptr noundef %203, ptr noundef @.str.49) #8
  %205 = load ptr, ptr %8, align 8, !tbaa !5
  %206 = load ptr, ptr %5, align 8, !tbaa !5
  %207 = call ptr @strcat(ptr noundef %205, ptr noundef %206) #8
  %208 = load ptr, ptr %8, align 8, !tbaa !5
  %209 = call ptr @strcat(ptr noundef %208, ptr noundef @.str.47) #8
  br label %210

210:                                              ; preds = %202, %198, %193
  %211 = load ptr, ptr %8, align 8, !tbaa !5
  %212 = call ptr @strcat(ptr noundef %211, ptr noundef @.str.217) #8
  br label %1032

213:                                              ; preds = %138
  %214 = call noundef i32 @_ZL13zenityPresentv()
  %215 = icmp ne i32 %214, 0
  br i1 %215, label %225, label %216

216:                                              ; preds = %213
  %217 = call noundef i32 @_ZL17matedialogPresentv()
  %218 = icmp ne i32 %217, 0
  br i1 %218, label %225, label %219

219:                                              ; preds = %216
  %220 = call noundef i32 @_ZL20shellementaryPresentv()
  %221 = icmp ne i32 %220, 0
  br i1 %221, label %225, label %222

222:                                              ; preds = %219
  %223 = call noundef i32 @_ZL12qarmaPresentv()
  %224 = icmp ne i32 %223, 0
  br i1 %224, label %225, label %358

225:                                              ; preds = %222, %219, %216, %213
  %226 = call noundef i32 @_ZL13zenityPresentv()
  %227 = icmp ne i32 %226, 0
  br i1 %227, label %228, label %249

228:                                              ; preds = %225
  %229 = load ptr, ptr %5, align 8, !tbaa !5
  %230 = icmp ne ptr %229, null
  br i1 %230, label %231, label %237

231:                                              ; preds = %228
  %232 = load ptr, ptr %5, align 8, !tbaa !5
  %233 = call i32 @strcmp(ptr noundef %232, ptr noundef @.str.10) #9
  %234 = icmp ne i32 %233, 0
  br i1 %234, label %237, label %235

235:                                              ; preds = %231
  %236 = call ptr @strcpy(ptr noundef @tinyfd_response, ptr noundef @.str.52) #8
  store ptr inttoptr (i64 1 to ptr), ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

237:                                              ; preds = %231, %228
  %238 = load ptr, ptr %8, align 8, !tbaa !5
  %239 = call ptr @strcpy(ptr noundef %238, ptr noundef @.str.53) #8
  %240 = call noundef i32 @_ZL14zenity3Presentv()
  %241 = icmp sge i32 %240, 4
  br i1 %241, label %242, label %248

242:                                              ; preds = %237
  %243 = call ptr @getenv(ptr noundef @.str.54) #8
  %244 = icmp ne ptr %243, null
  br i1 %244, label %248, label %245

245:                                              ; preds = %242
  %246 = load ptr, ptr %8, align 8, !tbaa !5
  %247 = call ptr @strcat(ptr noundef %246, ptr noundef @.str.55) #8
  br label %248

248:                                              ; preds = %245, %242, %237
  br label %299

249:                                              ; preds = %225
  %250 = call noundef i32 @_ZL17matedialogPresentv()
  %251 = icmp ne i32 %250, 0
  br i1 %251, label %252, label %264

252:                                              ; preds = %249
  %253 = load ptr, ptr %5, align 8, !tbaa !5
  %254 = icmp ne ptr %253, null
  br i1 %254, label %255, label %261

255:                                              ; preds = %252
  %256 = load ptr, ptr %5, align 8, !tbaa !5
  %257 = call i32 @strcmp(ptr noundef %256, ptr noundef @.str.10) #9
  %258 = icmp ne i32 %257, 0
  br i1 %258, label %261, label %259

259:                                              ; preds = %255
  %260 = call ptr @strcpy(ptr noundef @tinyfd_response, ptr noundef @.str.56) #8
  store ptr inttoptr (i64 1 to ptr), ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

261:                                              ; preds = %255, %252
  %262 = load ptr, ptr %8, align 8, !tbaa !5
  %263 = call ptr @strcpy(ptr noundef %262, ptr noundef @.str.57) #8
  br label %298

264:                                              ; preds = %249
  %265 = call noundef i32 @_ZL20shellementaryPresentv()
  %266 = icmp ne i32 %265, 0
  br i1 %266, label %267, label %279

267:                                              ; preds = %264
  %268 = load ptr, ptr %5, align 8, !tbaa !5
  %269 = icmp ne ptr %268, null
  br i1 %269, label %270, label %276

270:                                              ; preds = %267
  %271 = load ptr, ptr %5, align 8, !tbaa !5
  %272 = call i32 @strcmp(ptr noundef %271, ptr noundef @.str.10) #9
  %273 = icmp ne i32 %272, 0
  br i1 %273, label %276, label %274

274:                                              ; preds = %270
  %275 = call ptr @strcpy(ptr noundef @tinyfd_response, ptr noundef @.str.58) #8
  store ptr inttoptr (i64 1 to ptr), ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

276:                                              ; preds = %270, %267
  %277 = load ptr, ptr %8, align 8, !tbaa !5
  %278 = call ptr @strcpy(ptr noundef %277, ptr noundef @.str.59) #8
  br label %297

279:                                              ; preds = %264
  %280 = load ptr, ptr %5, align 8, !tbaa !5
  %281 = icmp ne ptr %280, null
  br i1 %281, label %282, label %288

282:                                              ; preds = %279
  %283 = load ptr, ptr %5, align 8, !tbaa !5
  %284 = call i32 @strcmp(ptr noundef %283, ptr noundef @.str.10) #9
  %285 = icmp ne i32 %284, 0
  br i1 %285, label %288, label %286

286:                                              ; preds = %282
  %287 = call ptr @strcpy(ptr noundef @tinyfd_response, ptr noundef @.str.60) #8
  store ptr inttoptr (i64 1 to ptr), ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

288:                                              ; preds = %282, %279
  %289 = load ptr, ptr %8, align 8, !tbaa !5
  %290 = call ptr @strcpy(ptr noundef %289, ptr noundef @.str.61) #8
  %291 = call ptr @getenv(ptr noundef @.str.54) #8
  %292 = icmp ne ptr %291, null
  br i1 %292, label %296, label %293

293:                                              ; preds = %288
  %294 = load ptr, ptr %8, align 8, !tbaa !5
  %295 = call ptr @strcat(ptr noundef %294, ptr noundef @.str.42) #8
  br label %296

296:                                              ; preds = %293, %288
  br label %297

297:                                              ; preds = %296, %276
  br label %298

298:                                              ; preds = %297, %261
  br label %299

299:                                              ; preds = %298, %248
  %300 = load ptr, ptr %8, align 8, !tbaa !5
  %301 = call ptr @strcat(ptr noundef %300, ptr noundef @.str.218) #8
  %302 = load ptr, ptr %5, align 8, !tbaa !5
  %303 = icmp ne ptr %302, null
  br i1 %303, label %304, label %316

304:                                              ; preds = %299
  %305 = load ptr, ptr %5, align 8, !tbaa !5
  %306 = call i64 @strlen(ptr noundef %305) #9
  %307 = icmp ne i64 %306, 0
  br i1 %307, label %308, label %316

308:                                              ; preds = %304
  %309 = load ptr, ptr %8, align 8, !tbaa !5
  %310 = call ptr @strcat(ptr noundef %309, ptr noundef @.str.66) #8
  %311 = load ptr, ptr %8, align 8, !tbaa !5
  %312 = load ptr, ptr %5, align 8, !tbaa !5
  %313 = call ptr @strcat(ptr noundef %311, ptr noundef %312) #8
  %314 = load ptr, ptr %8, align 8, !tbaa !5
  %315 = call ptr @strcat(ptr noundef %314, ptr noundef @.str.47) #8
  br label %316

316:                                              ; preds = %308, %304, %299
  %317 = load ptr, ptr %6, align 8, !tbaa !5
  %318 = icmp ne ptr %317, null
  br i1 %318, label %319, label %331

319:                                              ; preds = %316
  %320 = load ptr, ptr %6, align 8, !tbaa !5
  %321 = call i64 @strlen(ptr noundef %320) #9
  %322 = icmp ne i64 %321, 0
  br i1 %322, label %323, label %331

323:                                              ; preds = %319
  %324 = load ptr, ptr %8, align 8, !tbaa !5
  %325 = call ptr @strcat(ptr noundef %324, ptr noundef @.str.219) #8
  %326 = load ptr, ptr %8, align 8, !tbaa !5
  %327 = load ptr, ptr %6, align 8, !tbaa !5
  %328 = call ptr @strcat(ptr noundef %326, ptr noundef %327) #8
  %329 = load ptr, ptr %8, align 8, !tbaa !5
  %330 = call ptr @strcat(ptr noundef %329, ptr noundef @.str.47) #8
  br label %331

331:                                              ; preds = %323, %319, %316
  %332 = load ptr, ptr %7, align 8, !tbaa !5
  %333 = icmp ne ptr %332, null
  br i1 %333, label %334, label %346

334:                                              ; preds = %331
  %335 = load ptr, ptr %7, align 8, !tbaa !5
  %336 = call i64 @strlen(ptr noundef %335) #9
  %337 = icmp ne i64 %336, 0
  br i1 %337, label %338, label %346

338:                                              ; preds = %334
  %339 = load ptr, ptr %8, align 8, !tbaa !5
  %340 = call ptr @strcat(ptr noundef %339, ptr noundef @.str.220) #8
  %341 = load ptr, ptr %8, align 8, !tbaa !5
  %342 = load ptr, ptr %7, align 8, !tbaa !5
  %343 = call ptr @strcat(ptr noundef %341, ptr noundef %342) #8
  %344 = load ptr, ptr %8, align 8, !tbaa !5
  %345 = call ptr @strcat(ptr noundef %344, ptr noundef @.str.47) #8
  br label %349

346:                                              ; preds = %334, %331
  %347 = load ptr, ptr %8, align 8, !tbaa !5
  %348 = call ptr @strcat(ptr noundef %347, ptr noundef @.str.221) #8
  br label %349

349:                                              ; preds = %346, %338
  %350 = load i32, ptr @tinyfd_silent, align 4, !tbaa !9
  %351 = icmp ne i32 %350, 0
  br i1 %351, label %352, label %355

352:                                              ; preds = %349
  %353 = load ptr, ptr %8, align 8, !tbaa !5
  %354 = call ptr @strcat(ptr noundef %353, ptr noundef @.str.70) #8
  br label %355

355:                                              ; preds = %352, %349
  %356 = load ptr, ptr %8, align 8, !tbaa !5
  %357 = call ptr @strcat(ptr noundef %356, ptr noundef @.str.217) #8
  br label %1031

358:                                              ; preds = %222
  %359 = call noundef i32 @_ZL16gxmessagePresentv()
  %360 = icmp ne i32 %359, 0
  br i1 %360, label %364, label %361

361:                                              ; preds = %358
  %362 = call noundef i32 @_ZL15gmessagePresentv()
  %363 = icmp ne i32 %362, 0
  br i1 %363, label %364, label %437

364:                                              ; preds = %361, %358
  %365 = call noundef i32 @_ZL16gxmessagePresentv()
  %366 = icmp ne i32 %365, 0
  br i1 %366, label %367, label %379

367:                                              ; preds = %364
  %368 = load ptr, ptr %5, align 8, !tbaa !5
  %369 = icmp ne ptr %368, null
  br i1 %369, label %370, label %376

370:                                              ; preds = %367
  %371 = load ptr, ptr %5, align 8, !tbaa !5
  %372 = call i32 @strcmp(ptr noundef %371, ptr noundef @.str.10) #9
  %373 = icmp ne i32 %372, 0
  br i1 %373, label %376, label %374

374:                                              ; preds = %370
  %375 = call ptr @strcpy(ptr noundef @tinyfd_response, ptr noundef @.str.104) #8
  store ptr inttoptr (i64 1 to ptr), ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

376:                                              ; preds = %370, %367
  %377 = load ptr, ptr %8, align 8, !tbaa !5
  %378 = call ptr @strcpy(ptr noundef %377, ptr noundef @.str.222) #8
  br label %391

379:                                              ; preds = %364
  %380 = load ptr, ptr %5, align 8, !tbaa !5
  %381 = icmp ne ptr %380, null
  br i1 %381, label %382, label %388

382:                                              ; preds = %379
  %383 = load ptr, ptr %5, align 8, !tbaa !5
  %384 = call i32 @strcmp(ptr noundef %383, ptr noundef @.str.10) #9
  %385 = icmp ne i32 %384, 0
  br i1 %385, label %388, label %386

386:                                              ; preds = %382
  %387 = call ptr @strcpy(ptr noundef @tinyfd_response, ptr noundef @.str.105) #8
  store ptr inttoptr (i64 1 to ptr), ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

388:                                              ; preds = %382, %379
  %389 = load ptr, ptr %8, align 8, !tbaa !5
  %390 = call ptr @strcpy(ptr noundef %389, ptr noundef @.str.223) #8
  br label %391

391:                                              ; preds = %388, %376
  %392 = load ptr, ptr %6, align 8, !tbaa !5
  %393 = icmp ne ptr %392, null
  br i1 %393, label %394, label %402

394:                                              ; preds = %391
  %395 = load ptr, ptr %6, align 8, !tbaa !5
  %396 = call i64 @strlen(ptr noundef %395) #9
  %397 = icmp ne i64 %396, 0
  br i1 %397, label %398, label %402

398:                                              ; preds = %394
  %399 = load ptr, ptr %8, align 8, !tbaa !5
  %400 = load ptr, ptr %6, align 8, !tbaa !5
  %401 = call ptr @strcat(ptr noundef %399, ptr noundef %400) #8
  br label %402

402:                                              ; preds = %398, %394, %391
  %403 = load ptr, ptr %8, align 8, !tbaa !5
  %404 = call ptr @strcat(ptr noundef %403, ptr noundef @.str.47) #8
  %405 = load ptr, ptr %5, align 8, !tbaa !5
  %406 = icmp ne ptr %405, null
  br i1 %406, label %407, label %419

407:                                              ; preds = %402
  %408 = load ptr, ptr %5, align 8, !tbaa !5
  %409 = call i64 @strlen(ptr noundef %408) #9
  %410 = icmp ne i64 %409, 0
  br i1 %410, label %411, label %419

411:                                              ; preds = %407
  %412 = load ptr, ptr %8, align 8, !tbaa !5
  %413 = call ptr @strcat(ptr noundef %412, ptr noundef @.str.116) #8
  %414 = load ptr, ptr %8, align 8, !tbaa !5
  %415 = load ptr, ptr %5, align 8, !tbaa !5
  %416 = call ptr @strcat(ptr noundef %414, ptr noundef %415) #8
  %417 = load ptr, ptr %8, align 8, !tbaa !5
  %418 = call ptr @strcat(ptr noundef %417, ptr noundef @.str.15) #8
  br label %419

419:                                              ; preds = %411, %407, %402
  %420 = load ptr, ptr %8, align 8, !tbaa !5
  %421 = call ptr @strcat(ptr noundef %420, ptr noundef @.str.224) #8
  %422 = load ptr, ptr %7, align 8, !tbaa !5
  %423 = icmp ne ptr %422, null
  br i1 %423, label %424, label %432

424:                                              ; preds = %419
  %425 = load ptr, ptr %7, align 8, !tbaa !5
  %426 = call i64 @strlen(ptr noundef %425) #9
  %427 = icmp ne i64 %426, 0
  br i1 %427, label %428, label %432

428:                                              ; preds = %424
  %429 = load ptr, ptr %8, align 8, !tbaa !5
  %430 = load ptr, ptr %7, align 8, !tbaa !5
  %431 = call ptr @strcat(ptr noundef %429, ptr noundef %430) #8
  br label %432

432:                                              ; preds = %428, %424, %419
  %433 = load ptr, ptr %8, align 8, !tbaa !5
  %434 = call ptr @strcat(ptr noundef %433, ptr noundef @.str.47) #8
  %435 = load ptr, ptr %8, align 8, !tbaa !5
  %436 = call ptr @strcat(ptr noundef %435, ptr noundef @.str.225) #8
  br label %1030

437:                                              ; preds = %361
  %438 = call noundef i32 @_ZL14gdialogPresentv()
  %439 = icmp ne i32 %438, 0
  br i1 %439, label %533, label %440

440:                                              ; preds = %437
  %441 = call noundef i32 @_ZL14xdialogPresentv()
  %442 = icmp ne i32 %441, 0
  br i1 %442, label %533, label %443

443:                                              ; preds = %440
  %444 = call noundef i32 @_ZL15tkinter2Presentv()
  %445 = icmp ne i32 %444, 0
  br i1 %445, label %446, label %533

446:                                              ; preds = %443
  %447 = load ptr, ptr %5, align 8, !tbaa !5
  %448 = icmp ne ptr %447, null
  br i1 %448, label %449, label %455

449:                                              ; preds = %446
  %450 = load ptr, ptr %5, align 8, !tbaa !5
  %451 = call i32 @strcmp(ptr noundef %450, ptr noundef @.str.10) #9
  %452 = icmp ne i32 %451, 0
  br i1 %452, label %455, label %453

453:                                              ; preds = %449
  %454 = call ptr @strcpy(ptr noundef @tinyfd_response, ptr noundef @.str.73) #8
  store ptr inttoptr (i64 1 to ptr), ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

455:                                              ; preds = %449, %446
  %456 = load ptr, ptr %8, align 8, !tbaa !5
  %457 = call ptr @strcpy(ptr noundef %456, ptr noundef @_ZL12gPython2Name) #8
  %458 = call noundef i32 @_ZL17isTerminalRunningv()
  %459 = icmp ne i32 %458, 0
  br i1 %459, label %466, label %460

460:                                              ; preds = %455
  %461 = call noundef i32 @_ZL8isDarwinv()
  %462 = icmp ne i32 %461, 0
  br i1 %462, label %463, label %466

463:                                              ; preds = %460
  %464 = load ptr, ptr %8, align 8, !tbaa !5
  %465 = call ptr @strcat(ptr noundef %464, ptr noundef @.str.74) #8
  br label %466

466:                                              ; preds = %463, %460, %455
  %467 = load ptr, ptr %8, align 8, !tbaa !5
  %468 = call ptr @strcat(ptr noundef %467, ptr noundef @.str.226) #8
  %469 = call noundef i32 @_ZL8isDarwinv()
  %470 = icmp ne i32 %469, 0
  br i1 %470, label %471, label %474

471:                                              ; preds = %466
  %472 = load ptr, ptr %8, align 8, !tbaa !5
  %473 = call ptr @strcat(ptr noundef %472, ptr noundef @.str.76) #8
  br label %474

474:                                              ; preds = %471, %466
  %475 = load ptr, ptr %8, align 8, !tbaa !5
  %476 = call ptr @strcat(ptr noundef %475, ptr noundef @.str.227) #8
  %477 = load ptr, ptr %5, align 8, !tbaa !5
  %478 = icmp ne ptr %477, null
  br i1 %478, label %479, label %491

479:                                              ; preds = %474
  %480 = load ptr, ptr %5, align 8, !tbaa !5
  %481 = call i64 @strlen(ptr noundef %480) #9
  %482 = icmp ne i64 %481, 0
  br i1 %482, label %483, label %491

483:                                              ; preds = %479
  %484 = load ptr, ptr %8, align 8, !tbaa !5
  %485 = call ptr @strcat(ptr noundef %484, ptr noundef @.str.88) #8
  %486 = load ptr, ptr %8, align 8, !tbaa !5
  %487 = load ptr, ptr %5, align 8, !tbaa !5
  %488 = call ptr @strcat(ptr noundef %486, ptr noundef %487) #8
  %489 = load ptr, ptr %8, align 8, !tbaa !5
  %490 = call ptr @strcat(ptr noundef %489, ptr noundef @.str.87) #8
  br label %491

491:                                              ; preds = %483, %479, %474
  %492 = load ptr, ptr %6, align 8, !tbaa !5
  %493 = icmp ne ptr %492, null
  br i1 %493, label %494, label %509

494:                                              ; preds = %491
  %495 = load ptr, ptr %6, align 8, !tbaa !5
  %496 = call i64 @strlen(ptr noundef %495) #9
  %497 = icmp ne i64 %496, 0
  br i1 %497, label %498, label %509

498:                                              ; preds = %494
  %499 = load ptr, ptr %8, align 8, !tbaa !5
  %500 = call ptr @strcat(ptr noundef %499, ptr noundef @.str.228) #8
  %501 = load ptr, ptr %8, align 8, !tbaa !5
  %502 = load ptr, ptr %8, align 8, !tbaa !5
  %503 = call i64 @strlen(ptr noundef %502) #9
  %504 = getelementptr inbounds i8, ptr %501, i64 %503
  store ptr %504, ptr %9, align 8, !tbaa !5
  %505 = load ptr, ptr %6, align 8, !tbaa !5
  %506 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL13replaceSubStrPKcS0_S0_Pc(ptr noundef %505, ptr noundef @.str.90, ptr noundef @.str.91, ptr noundef %506)
  %507 = load ptr, ptr %8, align 8, !tbaa !5
  %508 = call ptr @strcat(ptr noundef %507, ptr noundef @.str.87) #8
  br label %509

509:                                              ; preds = %498, %494, %491
  %510 = load ptr, ptr %7, align 8, !tbaa !5
  %511 = icmp ne ptr %510, null
  br i1 %511, label %512, label %525

512:                                              ; preds = %509
  %513 = load ptr, ptr %7, align 8, !tbaa !5
  %514 = call i64 @strlen(ptr noundef %513) #9
  %515 = icmp ne i64 %514, 0
  br i1 %515, label %516, label %524

516:                                              ; preds = %512
  %517 = load ptr, ptr %8, align 8, !tbaa !5
  %518 = call ptr @strcat(ptr noundef %517, ptr noundef @.str.229) #8
  %519 = load ptr, ptr %8, align 8, !tbaa !5
  %520 = load ptr, ptr %7, align 8, !tbaa !5
  %521 = call ptr @strcat(ptr noundef %519, ptr noundef %520) #8
  %522 = load ptr, ptr %8, align 8, !tbaa !5
  %523 = call ptr @strcat(ptr noundef %522, ptr noundef @.str.87) #8
  br label %524

524:                                              ; preds = %516, %512
  br label %528

525:                                              ; preds = %509
  %526 = load ptr, ptr %8, align 8, !tbaa !5
  %527 = call ptr @strcat(ptr noundef %526, ptr noundef @.str.230) #8
  br label %528

528:                                              ; preds = %525, %524
  %529 = load ptr, ptr %8, align 8, !tbaa !5
  %530 = call ptr @strcat(ptr noundef %529, ptr noundef @.str.231) #8
  %531 = load ptr, ptr %8, align 8, !tbaa !5
  %532 = call ptr @strcat(ptr noundef %531, ptr noundef @.str.232) #8
  br label %1029

533:                                              ; preds = %443, %440, %437
  %534 = call noundef i32 @_ZL14gdialogPresentv()
  %535 = icmp ne i32 %534, 0
  br i1 %535, label %614, label %536

536:                                              ; preds = %533
  %537 = call noundef i32 @_ZL14xdialogPresentv()
  %538 = icmp ne i32 %537, 0
  br i1 %538, label %614, label %539

539:                                              ; preds = %536
  %540 = call noundef i32 @_ZL15tkinter3Presentv()
  %541 = icmp ne i32 %540, 0
  br i1 %541, label %542, label %614

542:                                              ; preds = %539
  %543 = load ptr, ptr %5, align 8, !tbaa !5
  %544 = icmp ne ptr %543, null
  br i1 %544, label %545, label %551

545:                                              ; preds = %542
  %546 = load ptr, ptr %5, align 8, !tbaa !5
  %547 = call i32 @strcmp(ptr noundef %546, ptr noundef @.str.10) #9
  %548 = icmp ne i32 %547, 0
  br i1 %548, label %551, label %549

549:                                              ; preds = %545
  %550 = call ptr @strcpy(ptr noundef @tinyfd_response, ptr noundef @.str.95) #8
  store ptr inttoptr (i64 1 to ptr), ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

551:                                              ; preds = %545, %542
  %552 = load ptr, ptr %8, align 8, !tbaa !5
  %553 = call ptr @strcpy(ptr noundef %552, ptr noundef @_ZL12gPython3Name) #8
  %554 = load ptr, ptr %8, align 8, !tbaa !5
  %555 = call ptr @strcat(ptr noundef %554, ptr noundef @.str.233) #8
  %556 = load ptr, ptr %8, align 8, !tbaa !5
  %557 = call ptr @strcat(ptr noundef %556, ptr noundef @.str.234) #8
  %558 = load ptr, ptr %5, align 8, !tbaa !5
  %559 = icmp ne ptr %558, null
  br i1 %559, label %560, label %572

560:                                              ; preds = %551
  %561 = load ptr, ptr %5, align 8, !tbaa !5
  %562 = call i64 @strlen(ptr noundef %561) #9
  %563 = icmp ne i64 %562, 0
  br i1 %563, label %564, label %572

564:                                              ; preds = %560
  %565 = load ptr, ptr %8, align 8, !tbaa !5
  %566 = call ptr @strcat(ptr noundef %565, ptr noundef @.str.88) #8
  %567 = load ptr, ptr %8, align 8, !tbaa !5
  %568 = load ptr, ptr %5, align 8, !tbaa !5
  %569 = call ptr @strcat(ptr noundef %567, ptr noundef %568) #8
  %570 = load ptr, ptr %8, align 8, !tbaa !5
  %571 = call ptr @strcat(ptr noundef %570, ptr noundef @.str.87) #8
  br label %572

572:                                              ; preds = %564, %560, %551
  %573 = load ptr, ptr %6, align 8, !tbaa !5
  %574 = icmp ne ptr %573, null
  br i1 %574, label %575, label %590

575:                                              ; preds = %572
  %576 = load ptr, ptr %6, align 8, !tbaa !5
  %577 = call i64 @strlen(ptr noundef %576) #9
  %578 = icmp ne i64 %577, 0
  br i1 %578, label %579, label %590

579:                                              ; preds = %575
  %580 = load ptr, ptr %8, align 8, !tbaa !5
  %581 = call ptr @strcat(ptr noundef %580, ptr noundef @.str.228) #8
  %582 = load ptr, ptr %8, align 8, !tbaa !5
  %583 = load ptr, ptr %8, align 8, !tbaa !5
  %584 = call i64 @strlen(ptr noundef %583) #9
  %585 = getelementptr inbounds i8, ptr %582, i64 %584
  store ptr %585, ptr %9, align 8, !tbaa !5
  %586 = load ptr, ptr %6, align 8, !tbaa !5
  %587 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL13replaceSubStrPKcS0_S0_Pc(ptr noundef %586, ptr noundef @.str.90, ptr noundef @.str.91, ptr noundef %587)
  %588 = load ptr, ptr %8, align 8, !tbaa !5
  %589 = call ptr @strcat(ptr noundef %588, ptr noundef @.str.87) #8
  br label %590

590:                                              ; preds = %579, %575, %572
  %591 = load ptr, ptr %7, align 8, !tbaa !5
  %592 = icmp ne ptr %591, null
  br i1 %592, label %593, label %606

593:                                              ; preds = %590
  %594 = load ptr, ptr %7, align 8, !tbaa !5
  %595 = call i64 @strlen(ptr noundef %594) #9
  %596 = icmp ne i64 %595, 0
  br i1 %596, label %597, label %605

597:                                              ; preds = %593
  %598 = load ptr, ptr %8, align 8, !tbaa !5
  %599 = call ptr @strcat(ptr noundef %598, ptr noundef @.str.229) #8
  %600 = load ptr, ptr %8, align 8, !tbaa !5
  %601 = load ptr, ptr %7, align 8, !tbaa !5
  %602 = call ptr @strcat(ptr noundef %600, ptr noundef %601) #8
  %603 = load ptr, ptr %8, align 8, !tbaa !5
  %604 = call ptr @strcat(ptr noundef %603, ptr noundef @.str.87) #8
  br label %605

605:                                              ; preds = %597, %593
  br label %609

606:                                              ; preds = %590
  %607 = load ptr, ptr %8, align 8, !tbaa !5
  %608 = call ptr @strcat(ptr noundef %607, ptr noundef @.str.230) #8
  br label %609

609:                                              ; preds = %606, %605
  %610 = load ptr, ptr %8, align 8, !tbaa !5
  %611 = call ptr @strcat(ptr noundef %610, ptr noundef @.str.235) #8
  %612 = load ptr, ptr %8, align 8, !tbaa !5
  %613 = call ptr @strcat(ptr noundef %612, ptr noundef @.str.236) #8
  br label %1028

614:                                              ; preds = %539, %536, %533
  %615 = call noundef i32 @_ZL14gdialogPresentv()
  %616 = icmp ne i32 %615, 0
  br i1 %616, label %626, label %617

617:                                              ; preds = %614
  %618 = call noundef i32 @_ZL14xdialogPresentv()
  %619 = icmp ne i32 %618, 0
  br i1 %619, label %626, label %620

620:                                              ; preds = %617
  %621 = call noundef ptr @_ZL10dialogNamev()
  %622 = icmp ne ptr %621, null
  br i1 %622, label %626, label %623

623:                                              ; preds = %620
  %624 = call noundef i32 @_ZL15whiptailPresentv()
  %625 = icmp ne i32 %624, 0
  br i1 %625, label %626, label %829

626:                                              ; preds = %623, %620, %617, %614
  %627 = call noundef i32 @_ZL14gdialogPresentv()
  %628 = icmp ne i32 %627, 0
  br i1 %628, label %629, label %641

629:                                              ; preds = %626
  %630 = load ptr, ptr %5, align 8, !tbaa !5
  %631 = icmp ne ptr %630, null
  br i1 %631, label %632, label %638

632:                                              ; preds = %629
  %633 = load ptr, ptr %5, align 8, !tbaa !5
  %634 = call i32 @strcmp(ptr noundef %633, ptr noundef @.str.10) #9
  %635 = icmp ne i32 %634, 0
  br i1 %635, label %638, label %636

636:                                              ; preds = %632
  %637 = call ptr @strcpy(ptr noundef @tinyfd_response, ptr noundef @.str.118) #8
  store ptr inttoptr (i64 1 to ptr), ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

638:                                              ; preds = %632, %629
  store i32 1, ptr %13, align 4, !tbaa !9
  store i32 1, ptr %12, align 4, !tbaa !9
  %639 = load ptr, ptr %8, align 8, !tbaa !5
  %640 = call ptr @strcpy(ptr noundef %639, ptr noundef @.str.119) #8
  br label %719

641:                                              ; preds = %626
  %642 = call noundef i32 @_ZL14xdialogPresentv()
  %643 = icmp ne i32 %642, 0
  br i1 %643, label %644, label %656

644:                                              ; preds = %641
  %645 = load ptr, ptr %5, align 8, !tbaa !5
  %646 = icmp ne ptr %645, null
  br i1 %646, label %647, label %653

647:                                              ; preds = %644
  %648 = load ptr, ptr %5, align 8, !tbaa !5
  %649 = call i32 @strcmp(ptr noundef %648, ptr noundef @.str.10) #9
  %650 = icmp ne i32 %649, 0
  br i1 %650, label %653, label %651

651:                                              ; preds = %647
  %652 = call ptr @strcpy(ptr noundef @tinyfd_response, ptr noundef @.str.120) #8
  store ptr inttoptr (i64 1 to ptr), ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

653:                                              ; preds = %647, %644
  store i32 1, ptr %13, align 4, !tbaa !9
  %654 = load ptr, ptr %8, align 8, !tbaa !5
  %655 = call ptr @strcpy(ptr noundef %654, ptr noundef @.str.121) #8
  br label %718

656:                                              ; preds = %641
  %657 = call noundef ptr @_ZL10dialogNamev()
  %658 = icmp ne ptr %657, null
  br i1 %658, label %659, label %686

659:                                              ; preds = %656
  %660 = load ptr, ptr %5, align 8, !tbaa !5
  %661 = icmp ne ptr %660, null
  br i1 %661, label %662, label %668

662:                                              ; preds = %659
  %663 = load ptr, ptr %5, align 8, !tbaa !5
  %664 = call i32 @strcmp(ptr noundef %663, ptr noundef @.str.10) #9
  %665 = icmp ne i32 %664, 0
  br i1 %665, label %668, label %666

666:                                              ; preds = %662
  %667 = call ptr @strcpy(ptr noundef @tinyfd_response, ptr noundef @.str.122) #8
  store ptr null, ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

668:                                              ; preds = %662, %659
  %669 = call noundef i32 @_ZL17isTerminalRunningv()
  %670 = icmp ne i32 %669, 0
  br i1 %670, label %671, label %674

671:                                              ; preds = %668
  %672 = load ptr, ptr %8, align 8, !tbaa !5
  %673 = call ptr @strcpy(ptr noundef %672, ptr noundef @.str.123) #8
  br label %685

674:                                              ; preds = %668
  store i32 1, ptr %14, align 4, !tbaa !9
  %675 = load ptr, ptr %8, align 8, !tbaa !5
  %676 = call noundef ptr @_ZL12terminalNamev()
  %677 = call ptr @strcpy(ptr noundef %675, ptr noundef %676) #8
  %678 = load ptr, ptr %8, align 8, !tbaa !5
  %679 = call ptr @strcat(ptr noundef %678, ptr noundef @.str.124) #8
  %680 = load ptr, ptr %8, align 8, !tbaa !5
  %681 = call noundef ptr @_ZL10dialogNamev()
  %682 = call ptr @strcat(ptr noundef %680, ptr noundef %681) #8
  %683 = load ptr, ptr %8, align 8, !tbaa !5
  %684 = call ptr @strcat(ptr noundef %683, ptr noundef @.str.125) #8
  br label %685

685:                                              ; preds = %674, %671
  br label %717

686:                                              ; preds = %656
  %687 = call noundef i32 @_ZL17isTerminalRunningv()
  %688 = icmp ne i32 %687, 0
  br i1 %688, label %689, label %701

689:                                              ; preds = %686
  %690 = load ptr, ptr %5, align 8, !tbaa !5
  %691 = icmp ne ptr %690, null
  br i1 %691, label %692, label %698

692:                                              ; preds = %689
  %693 = load ptr, ptr %5, align 8, !tbaa !5
  %694 = call i32 @strcmp(ptr noundef %693, ptr noundef @.str.10) #9
  %695 = icmp ne i32 %694, 0
  br i1 %695, label %698, label %696

696:                                              ; preds = %692
  %697 = call ptr @strcpy(ptr noundef @tinyfd_response, ptr noundef @.str.126) #8
  store ptr null, ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

698:                                              ; preds = %692, %689
  %699 = load ptr, ptr %8, align 8, !tbaa !5
  %700 = call ptr @strcpy(ptr noundef %699, ptr noundef @.str.127) #8
  br label %716

701:                                              ; preds = %686
  %702 = load ptr, ptr %5, align 8, !tbaa !5
  %703 = icmp ne ptr %702, null
  br i1 %703, label %704, label %710

704:                                              ; preds = %701
  %705 = load ptr, ptr %5, align 8, !tbaa !5
  %706 = call i32 @strcmp(ptr noundef %705, ptr noundef @.str.10) #9
  %707 = icmp ne i32 %706, 0
  br i1 %707, label %710, label %708

708:                                              ; preds = %704
  %709 = call ptr @strcpy(ptr noundef @tinyfd_response, ptr noundef @.str.126) #8
  store ptr null, ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

710:                                              ; preds = %704, %701
  store i32 1, ptr %14, align 4, !tbaa !9
  %711 = load ptr, ptr %8, align 8, !tbaa !5
  %712 = call noundef ptr @_ZL12terminalNamev()
  %713 = call ptr @strcpy(ptr noundef %711, ptr noundef %712) #8
  %714 = load ptr, ptr %8, align 8, !tbaa !5
  %715 = call ptr @strcat(ptr noundef %714, ptr noundef @.str.128) #8
  br label %716

716:                                              ; preds = %710, %698
  br label %717

717:                                              ; preds = %716, %685
  br label %718

718:                                              ; preds = %717, %653
  br label %719

719:                                              ; preds = %718, %638
  %720 = load ptr, ptr %5, align 8, !tbaa !5
  %721 = icmp ne ptr %720, null
  br i1 %721, label %722, label %734

722:                                              ; preds = %719
  %723 = load ptr, ptr %5, align 8, !tbaa !5
  %724 = call i64 @strlen(ptr noundef %723) #9
  %725 = icmp ne i64 %724, 0
  br i1 %725, label %726, label %734

726:                                              ; preds = %722
  %727 = load ptr, ptr %8, align 8, !tbaa !5
  %728 = call ptr @strcat(ptr noundef %727, ptr noundef @.str.129) #8
  %729 = load ptr, ptr %8, align 8, !tbaa !5
  %730 = load ptr, ptr %5, align 8, !tbaa !5
  %731 = call ptr @strcat(ptr noundef %729, ptr noundef %730) #8
  %732 = load ptr, ptr %8, align 8, !tbaa !5
  %733 = call ptr @strcat(ptr noundef %732, ptr noundef @.str.15) #8
  br label %734

734:                                              ; preds = %726, %722, %719
  %735 = call noundef i32 @_ZL14xdialogPresentv()
  %736 = icmp ne i32 %735, 0
  br i1 %736, label %756, label %737

737:                                              ; preds = %734
  %738 = call noundef i32 @_ZL14gdialogPresentv()
  %739 = icmp ne i32 %738, 0
  br i1 %739, label %756, label %740

740:                                              ; preds = %737
  %741 = load ptr, ptr %8, align 8, !tbaa !5
  %742 = call ptr @strcat(ptr noundef %741, ptr noundef @.str.130) #8
  %743 = load ptr, ptr %8, align 8, !tbaa !5
  %744 = call ptr @strcat(ptr noundef %743, ptr noundef @.str.131) #8
  %745 = load ptr, ptr %7, align 8, !tbaa !5
  %746 = icmp ne ptr %745, null
  br i1 %746, label %753, label %747

747:                                              ; preds = %740
  %748 = load i32, ptr %12, align 4, !tbaa !9
  %749 = icmp ne i32 %748, 0
  br i1 %749, label %753, label %750

750:                                              ; preds = %747
  %751 = load ptr, ptr %8, align 8, !tbaa !5
  %752 = call ptr @strcat(ptr noundef %751, ptr noundef @.str.237) #8
  br label %753

753:                                              ; preds = %750, %747, %740
  %754 = load ptr, ptr %8, align 8, !tbaa !5
  %755 = call ptr @strcat(ptr noundef %754, ptr noundef @.str.15) #8
  br label %756

756:                                              ; preds = %753, %737, %734
  %757 = load ptr, ptr %7, align 8, !tbaa !5
  %758 = icmp ne ptr %757, null
  br i1 %758, label %762, label %759

759:                                              ; preds = %756
  %760 = load i32, ptr %12, align 4, !tbaa !9
  %761 = icmp ne i32 %760, 0
  br i1 %761, label %762, label %765

762:                                              ; preds = %759, %756
  %763 = load ptr, ptr %8, align 8, !tbaa !5
  %764 = call ptr @strcat(ptr noundef %763, ptr noundef @.str.238) #8
  br label %780

765:                                              ; preds = %759
  %766 = load i32, ptr %13, align 4, !tbaa !9
  %767 = icmp ne i32 %766, 0
  br i1 %767, label %777, label %768

768:                                              ; preds = %765
  %769 = call noundef ptr @_ZL10dialogNamev()
  %770 = icmp ne ptr %769, null
  br i1 %770, label %771, label %777

771:                                              ; preds = %768
  %772 = call noundef i32 @_Z24isDialogVersionBetter09bv()
  %773 = icmp ne i32 %772, 0
  br i1 %773, label %774, label %777

774:                                              ; preds = %771
  %775 = load ptr, ptr %8, align 8, !tbaa !5
  %776 = call ptr @strcat(ptr noundef %775, ptr noundef @.str.239) #8
  br label %777

777:                                              ; preds = %774, %771, %768, %765
  %778 = load ptr, ptr %8, align 8, !tbaa !5
  %779 = call ptr @strcat(ptr noundef %778, ptr noundef @.str.240) #8
  br label %780

780:                                              ; preds = %777, %762
  %781 = load ptr, ptr %8, align 8, !tbaa !5
  %782 = call ptr @strcat(ptr noundef %781, ptr noundef @.str.46) #8
  %783 = load ptr, ptr %6, align 8, !tbaa !5
  %784 = icmp ne ptr %783, null
  br i1 %784, label %785, label %793

785:                                              ; preds = %780
  %786 = load ptr, ptr %6, align 8, !tbaa !5
  %787 = call i64 @strlen(ptr noundef %786) #9
  %788 = icmp ne i64 %787, 0
  br i1 %788, label %789, label %793

789:                                              ; preds = %785
  %790 = load ptr, ptr %8, align 8, !tbaa !5
  %791 = load ptr, ptr %6, align 8, !tbaa !5
  %792 = call ptr @strcat(ptr noundef %790, ptr noundef %791) #8
  br label %793

793:                                              ; preds = %789, %785, %780
  %794 = load ptr, ptr %8, align 8, !tbaa !5
  %795 = call ptr @strcat(ptr noundef %794, ptr noundef @.str.241) #8
  %796 = load ptr, ptr %7, align 8, !tbaa !5
  %797 = icmp ne ptr %796, null
  br i1 %797, label %798, label %810

798:                                              ; preds = %793
  %799 = load ptr, ptr %7, align 8, !tbaa !5
  %800 = call i64 @strlen(ptr noundef %799) #9
  %801 = icmp ne i64 %800, 0
  br i1 %801, label %802, label %810

802:                                              ; preds = %798
  %803 = load ptr, ptr %8, align 8, !tbaa !5
  %804 = call ptr @strcat(ptr noundef %803, ptr noundef @.str.47) #8
  %805 = load ptr, ptr %8, align 8, !tbaa !5
  %806 = load ptr, ptr %7, align 8, !tbaa !5
  %807 = call ptr @strcat(ptr noundef %805, ptr noundef %806) #8
  %808 = load ptr, ptr %8, align 8, !tbaa !5
  %809 = call ptr @strcat(ptr noundef %808, ptr noundef @.str.15) #8
  br label %810

810:                                              ; preds = %802, %798, %793
  %811 = load i32, ptr %13, align 4, !tbaa !9
  %812 = icmp ne i32 %811, 0
  br i1 %812, label %813, label %816

813:                                              ; preds = %810
  %814 = load ptr, ptr %8, align 8, !tbaa !5
  %815 = call ptr @strcat(ptr noundef %814, ptr noundef @.str.242) #8
  br label %828

816:                                              ; preds = %810
  %817 = load ptr, ptr %8, align 8, !tbaa !5
  %818 = call ptr @strcat(ptr noundef %817, ptr noundef @.str.243) #8
  %819 = load i32, ptr %14, align 4, !tbaa !9
  %820 = icmp ne i32 %819, 0
  br i1 %820, label %821, label %824

821:                                              ; preds = %816
  %822 = load ptr, ptr %8, align 8, !tbaa !5
  %823 = call ptr @strcat(ptr noundef %822, ptr noundef @.str.140) #8
  br label %827

824:                                              ; preds = %816
  %825 = load ptr, ptr %8, align 8, !tbaa !5
  %826 = call ptr @strcat(ptr noundef %825, ptr noundef @.str.141) #8
  br label %827

827:                                              ; preds = %824, %821
  br label %828

828:                                              ; preds = %827, %813
  br label %1027

829:                                              ; preds = %623
  %830 = call noundef i32 @_ZL17isTerminalRunningv()
  %831 = icmp ne i32 %830, 0
  br i1 %831, label %905, label %832

832:                                              ; preds = %829
  %833 = call noundef ptr @_ZL12terminalNamev()
  %834 = icmp ne ptr %833, null
  br i1 %834, label %835, label %905

835:                                              ; preds = %832
  %836 = load ptr, ptr %5, align 8, !tbaa !5
  %837 = icmp ne ptr %836, null
  br i1 %837, label %838, label %844

838:                                              ; preds = %835
  %839 = load ptr, ptr %5, align 8, !tbaa !5
  %840 = call i32 @strcmp(ptr noundef %839, ptr noundef @.str.10) #9
  %841 = icmp ne i32 %840, 0
  br i1 %841, label %844, label %842

842:                                              ; preds = %838
  %843 = call ptr @strcpy(ptr noundef @tinyfd_response, ptr noundef @.str.145) #8
  store ptr null, ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

844:                                              ; preds = %838, %835
  store i32 1, ptr %15, align 4, !tbaa !9
  %845 = load ptr, ptr %8, align 8, !tbaa !5
  %846 = call noundef ptr @_ZL12terminalNamev()
  %847 = call ptr @strcpy(ptr noundef %845, ptr noundef %846) #8
  %848 = load ptr, ptr %8, align 8, !tbaa !5
  %849 = call ptr @strcat(ptr noundef %848, ptr noundef @.str.92) #8
  %850 = load i32, ptr @_ZL17gWarningDisplayed, align 4, !tbaa !9
  %851 = icmp ne i32 %850, 0
  br i1 %851, label %857, label %852

852:                                              ; preds = %844
  %853 = load i32, ptr @tinyfd_forceConsole, align 4, !tbaa !9
  %854 = icmp ne i32 %853, 0
  br i1 %854, label %857, label %855

855:                                              ; preds = %852
  store i32 1, ptr @_ZL17gWarningDisplayed, align 4, !tbaa !9
  %856 = call i32 @tinyfd_messageBox(ptr noundef @_ZL6gTitle, ptr noundef @tinyfd_needs, ptr noundef @.str.167, ptr noundef @.str.20, i32 noundef 0)
  br label %857

857:                                              ; preds = %855, %852, %844
  %858 = load ptr, ptr %5, align 8, !tbaa !5
  %859 = icmp ne ptr %858, null
  br i1 %859, label %860, label %875

860:                                              ; preds = %857
  %861 = load ptr, ptr %5, align 8, !tbaa !5
  %862 = call i64 @strlen(ptr noundef %861) #9
  %863 = icmp ne i64 %862, 0
  br i1 %863, label %864, label %875

864:                                              ; preds = %860
  %865 = load i32, ptr @tinyfd_forceConsole, align 4, !tbaa !9
  %866 = icmp ne i32 %865, 0
  br i1 %866, label %875, label %867

867:                                              ; preds = %864
  %868 = load ptr, ptr %8, align 8, !tbaa !5
  %869 = call ptr @strcat(ptr noundef %868, ptr noundef @.str.146) #8
  %870 = load ptr, ptr %8, align 8, !tbaa !5
  %871 = load ptr, ptr %5, align 8, !tbaa !5
  %872 = call ptr @strcat(ptr noundef %870, ptr noundef %871) #8
  %873 = load ptr, ptr %8, align 8, !tbaa !5
  %874 = call ptr @strcat(ptr noundef %873, ptr noundef @.str.149) #8
  br label %875

875:                                              ; preds = %867, %864, %860, %857
  %876 = load ptr, ptr %8, align 8, !tbaa !5
  %877 = call ptr @strcat(ptr noundef %876, ptr noundef @.str.146) #8
  %878 = load ptr, ptr %6, align 8, !tbaa !5
  %879 = icmp ne ptr %878, null
  br i1 %879, label %880, label %888

880:                                              ; preds = %875
  %881 = load ptr, ptr %6, align 8, !tbaa !5
  %882 = call i64 @strlen(ptr noundef %881) #9
  %883 = icmp ne i64 %882, 0
  br i1 %883, label %884, label %888

884:                                              ; preds = %880
  %885 = load ptr, ptr %8, align 8, !tbaa !5
  %886 = load ptr, ptr %6, align 8, !tbaa !5
  %887 = call ptr @strcat(ptr noundef %885, ptr noundef %886) #8
  br label %888

888:                                              ; preds = %884, %880, %875
  %889 = load ptr, ptr %8, align 8, !tbaa !5
  %890 = call ptr @strcat(ptr noundef %889, ptr noundef @.str.244) #8
  %891 = load ptr, ptr %7, align 8, !tbaa !5
  %892 = icmp ne ptr %891, null
  br i1 %892, label %896, label %893

893:                                              ; preds = %888
  %894 = load ptr, ptr %8, align 8, !tbaa !5
  %895 = call ptr @strcat(ptr noundef %894, ptr noundef @.str.245) #8
  br label %896

896:                                              ; preds = %893, %888
  %897 = load ptr, ptr %8, align 8, !tbaa !5
  %898 = call ptr @strcat(ptr noundef %897, ptr noundef @.str.246) #8
  %899 = load ptr, ptr %8, align 8, !tbaa !5
  %900 = call ptr @strcat(ptr noundef %899, ptr noundef @.str.247) #8
  %901 = load ptr, ptr %8, align 8, !tbaa !5
  %902 = call ptr @strcat(ptr noundef %901, ptr noundef @.str.248) #8
  %903 = load ptr, ptr %8, align 8, !tbaa !5
  %904 = call ptr @strcat(ptr noundef %903, ptr noundef @.str.249) #8
  br label %1026

905:                                              ; preds = %832, %829
  %906 = load i32, ptr @_ZL17gWarningDisplayed, align 4, !tbaa !9
  %907 = icmp ne i32 %906, 0
  br i1 %907, label %925, label %908

908:                                              ; preds = %905
  %909 = call noundef i32 @_ZL17isTerminalRunningv()
  %910 = icmp ne i32 %909, 0
  br i1 %910, label %925, label %911

911:                                              ; preds = %908
  %912 = call noundef ptr @_ZL12terminalNamev()
  %913 = icmp ne ptr %912, null
  br i1 %913, label %925, label %914

914:                                              ; preds = %911
  store i32 1, ptr @_ZL17gWarningDisplayed, align 4, !tbaa !9
  %915 = call i32 @tinyfd_messageBox(ptr noundef @_ZL6gTitle, ptr noundef @tinyfd_needs, ptr noundef @.str.167, ptr noundef @.str.20, i32 noundef 0)
  %916 = load ptr, ptr %5, align 8, !tbaa !5
  %917 = icmp ne ptr %916, null
  br i1 %917, label %918, label %924

918:                                              ; preds = %914
  %919 = load ptr, ptr %5, align 8, !tbaa !5
  %920 = call i32 @strcmp(ptr noundef %919, ptr noundef @.str.10) #9
  %921 = icmp ne i32 %920, 0
  br i1 %921, label %924, label %922

922:                                              ; preds = %918
  %923 = call ptr @strcpy(ptr noundef @tinyfd_response, ptr noundef @.str.250) #8
  store ptr null, ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

924:                                              ; preds = %918, %914
  store ptr null, ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

925:                                              ; preds = %911, %908, %905
  %926 = load ptr, ptr %5, align 8, !tbaa !5
  %927 = icmp ne ptr %926, null
  br i1 %927, label %928, label %934

928:                                              ; preds = %925
  %929 = load ptr, ptr %5, align 8, !tbaa !5
  %930 = call i32 @strcmp(ptr noundef %929, ptr noundef @.str.10) #9
  %931 = icmp ne i32 %930, 0
  br i1 %931, label %934, label %932

932:                                              ; preds = %928
  %933 = call ptr @strcpy(ptr noundef @tinyfd_response, ptr noundef @.str.145) #8
  store ptr null, ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

934:                                              ; preds = %928, %925
  %935 = load i32, ptr @_ZL17gWarningDisplayed, align 4, !tbaa !9
  %936 = icmp ne i32 %935, 0
  br i1 %936, label %942, label %937

937:                                              ; preds = %934
  %938 = load i32, ptr @tinyfd_forceConsole, align 4, !tbaa !9
  %939 = icmp ne i32 %938, 0
  br i1 %939, label %942, label %940

940:                                              ; preds = %937
  store i32 1, ptr @_ZL17gWarningDisplayed, align 4, !tbaa !9
  %941 = call i32 @tinyfd_messageBox(ptr noundef @_ZL6gTitle, ptr noundef @tinyfd_needs, ptr noundef @.str.167, ptr noundef @.str.20, i32 noundef 0)
  br label %942

942:                                              ; preds = %940, %937, %934
  %943 = load ptr, ptr %5, align 8, !tbaa !5
  %944 = icmp ne ptr %943, null
  br i1 %944, label %945, label %952

945:                                              ; preds = %942
  %946 = load ptr, ptr %5, align 8, !tbaa !5
  %947 = call i64 @strlen(ptr noundef %946) #9
  %948 = icmp ne i64 %947, 0
  br i1 %948, label %949, label %952

949:                                              ; preds = %945
  %950 = load ptr, ptr %5, align 8, !tbaa !5
  %951 = call i32 (ptr, ...) @printf(ptr noundef @.str.188, ptr noundef %950)
  br label %952

952:                                              ; preds = %949, %945, %942
  %953 = load ptr, ptr %6, align 8, !tbaa !5
  %954 = icmp ne ptr %953, null
  br i1 %954, label %955, label %962

955:                                              ; preds = %952
  %956 = load ptr, ptr %6, align 8, !tbaa !5
  %957 = call i64 @strlen(ptr noundef %956) #9
  %958 = icmp ne i64 %957, 0
  br i1 %958, label %959, label %962

959:                                              ; preds = %955
  %960 = load ptr, ptr %6, align 8, !tbaa !5
  %961 = call i32 (ptr, ...) @printf(ptr noundef @.str.188, ptr noundef %960)
  br label %962

962:                                              ; preds = %959, %955, %952
  %963 = call i32 (ptr, ...) @printf(ptr noundef @.str.251)
  %964 = load ptr, ptr @stdout, align 8, !tbaa !5
  %965 = call i32 @fflush(ptr noundef %964)
  %966 = load ptr, ptr %7, align 8, !tbaa !5
  %967 = icmp ne ptr %966, null
  br i1 %967, label %974, label %968

968:                                              ; preds = %962
  %969 = call i32 @tcgetattr(i32 noundef 0, ptr noundef %16) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %17, ptr align 4 %16, i64 60, i1 false), !tbaa.struct !14
  %970 = getelementptr inbounds %struct.termios, ptr %17, i32 0, i32 3
  %971 = load i32, ptr %970, align 4, !tbaa !15
  %972 = and i32 %971, -9
  store i32 %972, ptr %970, align 4, !tbaa !15
  %973 = call i32 @tcsetattr(i32 noundef 0, i32 noundef 0, ptr noundef %17) #8
  br label %974

974:                                              ; preds = %968, %962
  %975 = load ptr, ptr @stdin, align 8, !tbaa !5
  %976 = call ptr @fgets(ptr noundef @_ZZ15tinyfd_inputBoxE5lBuff, i32 noundef 1024, ptr noundef %975)
  store ptr %976, ptr %18, align 8, !tbaa !5
  %977 = load ptr, ptr %18, align 8, !tbaa !5
  %978 = icmp ne ptr %977, null
  br i1 %978, label %979, label %983

979:                                              ; preds = %974
  %980 = load i8, ptr @_ZZ15tinyfd_inputBoxE5lBuff, align 16, !tbaa !11
  %981 = sext i8 %980 to i32
  %982 = icmp eq i32 %981, 0
  br i1 %982, label %983, label %985

983:                                              ; preds = %979, %974
  %984 = load ptr, ptr %8, align 8, !tbaa !5
  call void @free(ptr noundef %984) #8
  store ptr null, ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

985:                                              ; preds = %979
  %986 = load i8, ptr @_ZZ15tinyfd_inputBoxE5lBuff, align 16, !tbaa !11
  %987 = sext i8 %986 to i32
  %988 = icmp eq i32 %987, 10
  br i1 %988, label %989, label %1001

989:                                              ; preds = %985
  %990 = load ptr, ptr @stdin, align 8, !tbaa !5
  %991 = call ptr @fgets(ptr noundef @_ZZ15tinyfd_inputBoxE5lBuff, i32 noundef 1024, ptr noundef %990)
  store ptr %991, ptr %18, align 8, !tbaa !5
  %992 = load ptr, ptr %18, align 8, !tbaa !5
  %993 = icmp ne ptr %992, null
  br i1 %993, label %994, label %998

994:                                              ; preds = %989
  %995 = load i8, ptr @_ZZ15tinyfd_inputBoxE5lBuff, align 16, !tbaa !11
  %996 = sext i8 %995 to i32
  %997 = icmp eq i32 %996, 0
  br i1 %997, label %998, label %1000

998:                                              ; preds = %994, %989
  %999 = load ptr, ptr %8, align 8, !tbaa !5
  call void @free(ptr noundef %999) #8
  store ptr null, ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

1000:                                             ; preds = %994
  br label %1001

1001:                                             ; preds = %1000, %985
  %1002 = load ptr, ptr %7, align 8, !tbaa !5
  %1003 = icmp ne ptr %1002, null
  br i1 %1003, label %1007, label %1004

1004:                                             ; preds = %1001
  %1005 = call i32 @tcsetattr(i32 noundef 0, i32 noundef 0, ptr noundef %16) #8
  %1006 = call i32 (ptr, ...) @printf(ptr noundef @.str.90)
  br label %1007

1007:                                             ; preds = %1004, %1001
  %1008 = call i32 (ptr, ...) @printf(ptr noundef @.str.90)
  %1009 = call noundef ptr @strchr(ptr noundef @_ZZ15tinyfd_inputBoxE5lBuff, i32 noundef 27) #9
  %1010 = icmp ne ptr %1009, null
  br i1 %1010, label %1011, label %1013

1011:                                             ; preds = %1007
  %1012 = load ptr, ptr %8, align 8, !tbaa !5
  call void @free(ptr noundef %1012) #8
  store ptr null, ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

1013:                                             ; preds = %1007
  %1014 = call i64 @strlen(ptr noundef @_ZZ15tinyfd_inputBoxE5lBuff) #9
  %1015 = sub i64 %1014, 1
  %1016 = getelementptr inbounds [1024 x i8], ptr @_ZZ15tinyfd_inputBoxE5lBuff, i64 0, i64 %1015
  %1017 = load i8, ptr %1016, align 1, !tbaa !11
  %1018 = sext i8 %1017 to i32
  %1019 = icmp eq i32 %1018, 10
  br i1 %1019, label %1020, label %1024

1020:                                             ; preds = %1013
  %1021 = call i64 @strlen(ptr noundef @_ZZ15tinyfd_inputBoxE5lBuff) #9
  %1022 = sub i64 %1021, 1
  %1023 = getelementptr inbounds [1024 x i8], ptr @_ZZ15tinyfd_inputBoxE5lBuff, i64 0, i64 %1022
  store i8 0, ptr %1023, align 1, !tbaa !11
  br label %1024

1024:                                             ; preds = %1020, %1013
  %1025 = load ptr, ptr %8, align 8, !tbaa !5
  call void @free(ptr noundef %1025) #8
  store ptr @_ZZ15tinyfd_inputBoxE5lBuff, ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

1026:                                             ; preds = %896
  br label %1027

1027:                                             ; preds = %1026, %828
  br label %1028

1028:                                             ; preds = %1027, %609
  br label %1029

1029:                                             ; preds = %1028, %528
  br label %1030

1030:                                             ; preds = %1029, %432
  br label %1031

1031:                                             ; preds = %1030, %355
  br label %1032

1032:                                             ; preds = %1031, %210
  br label %1033

1033:                                             ; preds = %1032, %137
  %1034 = load i32, ptr @tinyfd_verbose, align 4, !tbaa !9
  %1035 = icmp ne i32 %1034, 0
  br i1 %1035, label %1036, label %1039

1036:                                             ; preds = %1033
  %1037 = load ptr, ptr %8, align 8, !tbaa !5
  %1038 = call i32 (ptr, ...) @printf(ptr noundef @.str.8, ptr noundef %1037)
  br label %1039

1039:                                             ; preds = %1036, %1033
  %1040 = load ptr, ptr %8, align 8, !tbaa !5
  %1041 = call noalias ptr @popen(ptr noundef %1040, ptr noundef @.str.9)
  store ptr %1041, ptr %10, align 8, !tbaa !5
  %1042 = load ptr, ptr %10, align 8, !tbaa !5
  %1043 = icmp ne ptr %1042, null
  br i1 %1043, label %1056, label %1044

1044:                                             ; preds = %1039
  %1045 = call noundef i32 @_ZL10fileExistsPKc(ptr noundef @.str.252)
  %1046 = icmp ne i32 %1045, 0
  br i1 %1046, label %1047, label %1049

1047:                                             ; preds = %1044
  call void @_ZL8wipefilePKc(ptr noundef @.str.252)
  %1048 = call i32 @remove(ptr noundef @.str.252) #8
  br label %1049

1049:                                             ; preds = %1047, %1044
  %1050 = call noundef i32 @_ZL10fileExistsPKc(ptr noundef @.str.253)
  %1051 = icmp ne i32 %1050, 0
  br i1 %1051, label %1052, label %1054

1052:                                             ; preds = %1049
  call void @_ZL8wipefilePKc(ptr noundef @.str.253)
  %1053 = call i32 @remove(ptr noundef @.str.253) #8
  br label %1054

1054:                                             ; preds = %1052, %1049
  %1055 = load ptr, ptr %8, align 8, !tbaa !5
  call void @free(ptr noundef %1055) #8
  store ptr null, ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

1056:                                             ; preds = %1039
  br label %1057

1057:                                             ; preds = %1061, %1056
  %1058 = load ptr, ptr %10, align 8, !tbaa !5
  %1059 = call ptr @fgets(ptr noundef @_ZZ15tinyfd_inputBoxE5lBuff, i32 noundef 1024, ptr noundef %1058)
  %1060 = icmp ne ptr %1059, null
  br i1 %1060, label %1061, label %1062

1061:                                             ; preds = %1057
  br label %1057, !llvm.loop !17

1062:                                             ; preds = %1057
  %1063 = load ptr, ptr %10, align 8, !tbaa !5
  %1064 = call i32 @pclose(ptr noundef %1063)
  %1065 = call noundef i32 @_ZL10fileExistsPKc(ptr noundef @.str.252)
  %1066 = icmp ne i32 %1065, 0
  br i1 %1066, label %1067, label %1069

1067:                                             ; preds = %1062
  call void @_ZL8wipefilePKc(ptr noundef @.str.252)
  %1068 = call i32 @remove(ptr noundef @.str.252) #8
  br label %1069

1069:                                             ; preds = %1067, %1062
  %1070 = call noundef i32 @_ZL10fileExistsPKc(ptr noundef @.str.253)
  %1071 = icmp ne i32 %1070, 0
  br i1 %1071, label %1072, label %1074

1072:                                             ; preds = %1069
  call void @_ZL8wipefilePKc(ptr noundef @.str.253)
  %1073 = call i32 @remove(ptr noundef @.str.253) #8
  br label %1074

1074:                                             ; preds = %1072, %1069
  %1075 = call i64 @strlen(ptr noundef @_ZZ15tinyfd_inputBoxE5lBuff) #9
  %1076 = sub i64 %1075, 1
  %1077 = getelementptr inbounds [1024 x i8], ptr @_ZZ15tinyfd_inputBoxE5lBuff, i64 0, i64 %1076
  %1078 = load i8, ptr %1077, align 1, !tbaa !11
  %1079 = sext i8 %1078 to i32
  %1080 = icmp eq i32 %1079, 10
  br i1 %1080, label %1081, label %1085

1081:                                             ; preds = %1074
  %1082 = call i64 @strlen(ptr noundef @_ZZ15tinyfd_inputBoxE5lBuff) #9
  %1083 = sub i64 %1082, 1
  %1084 = getelementptr inbounds [1024 x i8], ptr @_ZZ15tinyfd_inputBoxE5lBuff, i64 0, i64 %1083
  store i8 0, ptr %1084, align 1, !tbaa !11
  br label %1085

1085:                                             ; preds = %1081, %1074
  %1086 = load i32, ptr %15, align 4, !tbaa !9
  %1087 = icmp ne i32 %1086, 0
  br i1 %1087, label %1088, label %1094

1088:                                             ; preds = %1085
  %1089 = call noundef ptr @strstr(ptr noundef @_ZZ15tinyfd_inputBoxE5lBuff, ptr noundef @.str.254) #9
  %1090 = icmp ne ptr %1089, null
  br i1 %1090, label %1091, label %1093

1091:                                             ; preds = %1088
  %1092 = load ptr, ptr %8, align 8, !tbaa !5
  call void @free(ptr noundef %1092) #8
  store ptr null, ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

1093:                                             ; preds = %1088
  br label %1094

1094:                                             ; preds = %1093, %1085
  %1095 = call i32 @strncmp(ptr noundef @_ZZ15tinyfd_inputBoxE5lBuff, ptr noundef @.str.196, i64 noundef 1) #9
  %1096 = icmp ne i32 %1095, 0
  %1097 = zext i1 %1096 to i64
  %1098 = select i1 %1096, i32 0, i32 1
  store i32 %1098, ptr %11, align 4, !tbaa !9
  %1099 = load i32, ptr %11, align 4, !tbaa !9
  %1100 = icmp ne i32 %1099, 0
  br i1 %1100, label %1103, label %1101

1101:                                             ; preds = %1094
  %1102 = load ptr, ptr %8, align 8, !tbaa !5
  call void @free(ptr noundef %1102) #8
  store ptr null, ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

1103:                                             ; preds = %1094
  %1104 = load ptr, ptr %8, align 8, !tbaa !5
  call void @free(ptr noundef %1104) #8
  store ptr getelementptr inbounds (i8, ptr @_ZZ15tinyfd_inputBoxE5lBuff, i64 1), ptr %4, align 8
  store i32 1, ptr %21, align 4
  br label %1105

1105:                                             ; preds = %1103, %1101, %1091, %1054, %1024, %1011, %998, %983, %932, %924, %922, %842, %708, %696, %666, %651, %636, %549, %453, %386, %374, %286, %274, %259, %235, %148, %60
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 60, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 60, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  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 %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  %1106 = load ptr, ptr %4, align 8
  ret ptr %1106
}

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL10fileExistsPKc(ptr noundef) #0

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL8wipefilePKc(ptr noundef) #0

; Function Attrs: nounwind
declare i32 @remove(ptr noundef) #3

; Function Attrs: nounwind willreturn memory(read)
declare noundef ptr @strstr(ptr noundef, ptr noundef) #2

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strncmp(ptr noundef, ptr noundef, i64 noundef) #2

attributes #0 = { mustprogress 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 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 #3 = { 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 #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 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 #6 = { mustprogress 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 #7 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #8 = { nounwind }
attributes #9 = { nounwind willreturn memory(read) }
attributes #10 = { nounwind allocsize(0) }

!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++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"long", !7, i64 0}
!14 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !9, i64 16, i64 1, !11, i64 17, i64 32, !11, i64 52, i64 4, !9, i64 56, i64 4, !9}
!15 = !{!16, !10, i64 12}
!16 = !{!"_ZTS7termios", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !7, i64 16, !7, i64 17, !10, i64 52, !10, i64 56}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}


; 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.termios = type { i32, i32, i32, i32, i8, [32 x i8], i32, i32 }

@tinyfd_verbose = external dso_local local_unnamed_addr global i32, align 4
@tinyfd_silent = external dso_local local_unnamed_addr global i32, align 4
@tinyfd_forceConsole = external dso_local local_unnamed_addr global i32, align 4
@tinyfd_response = external dso_local global [1024 x i8], align 16
@tinyfd_needs = external dso_local constant [351 x i8], align 16
@.str.8 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [16 x i8], align 1
@_ZL12gPython2Name = external hidden global [16 x i8], align 16
@.str.74 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [120 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [16 x i8], align 1
@_ZL12gPython3Name = external hidden global [16 x i8], align 16
@.str.104 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.125 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.129 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.140 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.141 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [11 x i8], align 1
@_ZL17gWarningDisplayed = external hidden local_unnamed_addr global i32, align 4
@.str.146 = external hidden unnamed_addr constant [7 x i8], align 1
@_ZL6gTitle = external hidden constant [52 x i8], align 16
@.str.149 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.167 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.188 = external hidden unnamed_addr constant [5 x i8], align 1
@stdout = external local_unnamed_addr global ptr, align 8
@.str.196 = external hidden unnamed_addr constant [2 x i8], align 1
@_ZZ15tinyfd_inputBoxE5lBuff = external hidden global [1024 x i8], align 16
@.str.208 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.209 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.210 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.211 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.212 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.213 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.214 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.215 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.216 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.217 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.218 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.219 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.220 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.221 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.222 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.223 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.224 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.225 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.226 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.227 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.228 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.229 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.230 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.231 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.232 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.233 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.234 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.235 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.236 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.237 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.238 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.239 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.240 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.241 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.242 = external hidden unnamed_addr constant [149 x i8], align 1
@.str.243 = external hidden unnamed_addr constant [159 x i8], align 1
@.str.244 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.245 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.246 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.247 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.248 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.249 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.250 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.251 = external hidden unnamed_addr constant [24 x i8], align 1
@stdin = external local_unnamed_addr global ptr, align 8
@.str.252 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.253 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.254 = external hidden unnamed_addr constant [3 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z24isDialogVersionBetter09bv() local_unnamed_addr #0

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) 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 #3

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL16osascriptPresentv() local_unnamed_addr #0

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #4

; Function Attrs: nofree nounwind
declare noalias noundef ptr @popen(ptr nocapture noundef readonly, ptr nocapture noundef readonly) local_unnamed_addr #4

; Function Attrs: nofree nounwind
declare noundef i32 @pclose(ptr nocapture noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local i32 @tinyfd_messageBox(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 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 #2

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL12osx9orBetterv() local_unnamed_addr #0

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL14kdialogPresentv() local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL13zenityPresentv() local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL17matedialogPresentv() local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL20shellementaryPresentv() local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL12qarmaPresentv() local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL14zenity3Presentv() local_unnamed_addr #0

; Function Attrs: nofree nounwind memory(read)
declare noundef ptr @getenv(ptr nocapture noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL16gxmessagePresentv() local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL15gmessagePresentv() local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL14gdialogPresentv() local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL14xdialogPresentv() local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL15tkinter2Presentv() local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL17isTerminalRunningv() local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i32 @_ZL8isDarwinv() local_unnamed_addr #7

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL13replaceSubStrPKcS0_S0_Pc(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL15tkinter3Presentv() local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZL10dialogNamev() local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL15whiptailPresentv() local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZL12terminalNamev() local_unnamed_addr #0

; Function Attrs: nounwind
declare i32 @tcgetattr(i32 noundef, ptr noundef) local_unnamed_addr #8

; Function Attrs: nounwind
declare i32 @tcsetattr(i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #8

; Function Attrs: nofree nounwind
declare noundef i32 @fflush(ptr nocapture noundef) local_unnamed_addr #4

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

; Function Attrs: nofree nounwind
declare noundef ptr @fgets(ptr noundef, i32 noundef, ptr nocapture noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
define dso_local ptr @tinyfd_inputBox(ptr noundef %0, ptr noundef %1, ptr noundef readonly %2) local_unnamed_addr #0 {
  %4 = alloca %struct.termios, align 4
  %5 = alloca %struct.termios, align 4
  call void @llvm.lifetime.start.p0(i64 60, ptr nonnull %4) #11
  call void @llvm.lifetime.start.p0(i64 60, ptr nonnull %5) #11
  store i8 0, ptr @_ZZ15tinyfd_inputBoxE5lBuff, align 16, !tbaa !5
  %.not = icmp eq ptr %0, null
  br i1 %.not, label %8, label %6

6:                                                ; preds = %3
  %7 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %0) #12
  br label %8

8:                                                ; preds = %3, %6
  %9 = phi i64 [ %7, %6 ], [ 0, %3 ]
  %.not327 = icmp eq ptr %1, null
  br i1 %.not327, label %12, label %10

10:                                               ; preds = %8
  %11 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #12
  br label %12

12:                                               ; preds = %8, %10
  %13 = phi i64 [ %11, %10 ], [ 0, %8 ]
  br i1 %.not, label %16, label %14

14:                                               ; preds = %12
  %15 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) @.str.10) #12
  %.not328 = icmp eq i32 %15, 0
  br i1 %.not328, label %.thread, label %16

16:                                               ; preds = %12, %14
  %17 = add i64 %9, 1024
  %18 = add i64 %17, %13
  %19 = tail call noalias ptr @malloc(i64 noundef %18) #13
  %20 = tail call noundef i32 @_ZL16osascriptPresentv()
  %.not329 = icmp eq i32 %20, 0
  br i1 %.not329, label %57, label %22

.thread:                                          ; preds = %14
  %21 = tail call noundef i32 @_ZL16osascriptPresentv()
  %.not329464 = icmp eq i32 %21, 0
  br i1 %.not329464, label %.thread473, label %.thread469

22:                                               ; preds = %16
  br i1 %.not, label %26, label %.thread469

.thread469:                                       ; preds = %.thread, %22
  %.0303465471 = phi ptr [ %19, %22 ], [ null, %.thread ]
  %23 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) @.str.10) #12
  %.not441 = icmp eq i32 %23, 0
  br i1 %.not441, label %24, label %26

24:                                               ; preds = %.thread469
  %25 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) @tinyfd_response, ptr noundef nonnull dereferenceable(1) @.str.11) #11
  br label %547

26:                                               ; preds = %.thread469, %22
  %.0303465472 = phi ptr [ %.0303465471, %.thread469 ], [ %19, %22 ]
  %27 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %.0303465472, ptr noundef nonnull dereferenceable(1) @.str.12) #11
  %28 = tail call noundef i32 @_ZL12osx9orBetterv()
  %.not442 = icmp eq i32 %28, 0
  br i1 %.not442, label %29, label %31

29:                                               ; preds = %26
  %30 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303465472, ptr noundef nonnull dereferenceable(1) @.str.13) #11
  br label %31

31:                                               ; preds = %29, %26
  %32 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303465472, ptr noundef nonnull dereferenceable(1) @.str.208) #11
  br i1 %.not327, label %36, label %33

33:                                               ; preds = %31
  %char0443 = load i8, ptr %1, align 1
  %.not444 = icmp eq i8 %char0443, 0
  br i1 %.not444, label %36, label %34

34:                                               ; preds = %33
  %35 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303465472, ptr noundef nonnull dereferenceable(1) %1) #11
  br label %36

36:                                               ; preds = %34, %33, %31
  %37 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303465472, ptr noundef nonnull dereferenceable(1) @.str.15) #11
  %38 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303465472, ptr noundef nonnull dereferenceable(1) @.str.209) #11
  %.not445 = icmp eq ptr %2, null
  br i1 %.not445, label %.sink.split485, label %39

39:                                               ; preds = %36
  %char0446 = load i8, ptr %2, align 1
  %.not447 = icmp eq i8 %char0446, 0
  br i1 %.not447, label %41, label %.sink.split485

.sink.split485:                                   ; preds = %36, %39
  %.sink = phi ptr [ %2, %39 ], [ @.str.15, %36 ]
  %.str.15.sink.ph = phi ptr [ @.str.15, %39 ], [ @.str.210, %36 ]
  %40 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303465472, ptr noundef nonnull dereferenceable(1) %.sink) #11
  br label %41

41:                                               ; preds = %.sink.split485, %39
  %.str.15.sink = phi ptr [ @.str.15, %39 ], [ %.str.15.sink.ph, %.sink.split485 ]
  %42 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303465472, ptr noundef nonnull dereferenceable(1) %.str.15.sink) #11
  br i1 %.not, label %48, label %43

43:                                               ; preds = %41
  %char0448 = load i8, ptr %0, align 1
  %.not449 = icmp eq i8 %char0448, 0
  br i1 %.not449, label %48, label %44

44:                                               ; preds = %43
  %45 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303465472, ptr noundef nonnull dereferenceable(1) @.str.16) #11
  %46 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303465472, ptr noundef nonnull dereferenceable(1) %0) #11
  %47 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303465472, ptr noundef nonnull dereferenceable(1) @.str.15) #11
  br label %48

48:                                               ; preds = %44, %43, %41
  %49 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303465472, ptr noundef nonnull dereferenceable(1) @.str.211) #11
  %50 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303465472, ptr noundef nonnull dereferenceable(1) @.str.212) #11
  %51 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303465472, ptr noundef nonnull dereferenceable(1) @.str.37) #11
  %52 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303465472, ptr noundef nonnull dereferenceable(1) @.str.38) #11
  %53 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303465472, ptr noundef nonnull dereferenceable(1) @.str.39) #11
  %54 = tail call noundef i32 @_ZL12osx9orBetterv()
  %.not450 = icmp eq i32 %54, 0
  br i1 %.not450, label %55, label %510

55:                                               ; preds = %48
  %56 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303465472, ptr noundef nonnull dereferenceable(1) @.str.40) #11
  br label %510

57:                                               ; preds = %16
  %58 = tail call noundef i32 @_ZL14kdialogPresentv()
  %.not330 = icmp eq i32 %58, 0
  br i1 %.not330, label %90, label %60

.thread473:                                       ; preds = %.thread
  %59 = tail call noundef i32 @_ZL14kdialogPresentv()
  %.not330475 = icmp eq i32 %59, 0
  br i1 %.not330475, label %90, label %.thread478

60:                                               ; preds = %57
  br i1 %.not, label %64, label %.thread478

.thread478:                                       ; preds = %.thread473, %60
  %.0303468476480 = phi ptr [ %19, %60 ], [ null, %.thread473 ]
  %61 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) @.str.10) #12
  %.not433 = icmp eq i32 %61, 0
  br i1 %.not433, label %62, label %64

62:                                               ; preds = %.thread478
  %63 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) @tinyfd_response, ptr noundef nonnull dereferenceable(1) @.str.41) #11
  br label %547

64:                                               ; preds = %.thread478, %60
  %.0303468476481 = phi ptr [ %.0303468476480, %.thread478 ], [ %19, %60 ]
  %65 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %.0303468476481, ptr noundef nonnull dereferenceable(1) @.str.213) #11
  %66 = tail call noundef i32 @_ZL14kdialogPresentv()
  %67 = icmp eq i32 %66, 2
  br i1 %67, label %68, label %70

68:                                               ; preds = %64
  %69 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468476481, ptr noundef nonnull dereferenceable(1) @.str.42) #11
  br label %70

70:                                               ; preds = %68, %64
  %.not434 = icmp eq ptr %2, null
  %.str.214..str.215 = select i1 %.not434, ptr @.str.214, ptr @.str.215
  %71 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468476481, ptr noundef nonnull dereferenceable(1) %.str.214..str.215) #11
  %72 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468476481, ptr noundef nonnull dereferenceable(1) @.str.47) #11
  br i1 %.not327, label %76, label %73

73:                                               ; preds = %70
  %char0435 = load i8, ptr %1, align 1
  %.not436 = icmp eq i8 %char0435, 0
  br i1 %.not436, label %76, label %74

74:                                               ; preds = %73
  %75 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468476481, ptr noundef nonnull dereferenceable(1) %1) #11
  br label %76

76:                                               ; preds = %74, %73, %70
  %77 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468476481, ptr noundef nonnull dereferenceable(1) @.str.216) #11
  br i1 %.not434, label %81, label %78

78:                                               ; preds = %76
  %char0437 = load i8, ptr %2, align 1
  %.not438 = icmp eq i8 %char0437, 0
  br i1 %.not438, label %81, label %79

79:                                               ; preds = %78
  %80 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468476481, ptr noundef nonnull dereferenceable(1) %2) #11
  br label %81

81:                                               ; preds = %79, %78, %76
  %82 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468476481, ptr noundef nonnull dereferenceable(1) @.str.47) #11
  br i1 %.not, label %88, label %83

83:                                               ; preds = %81
  %char0439 = load i8, ptr %0, align 1
  %.not440 = icmp eq i8 %char0439, 0
  br i1 %.not440, label %88, label %84

84:                                               ; preds = %83
  %85 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468476481, ptr noundef nonnull dereferenceable(1) @.str.49) #11
  %86 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468476481, ptr noundef nonnull dereferenceable(1) %0) #11
  %87 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468476481, ptr noundef nonnull dereferenceable(1) @.str.47) #11
  br label %88

88:                                               ; preds = %84, %83, %81
  %89 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468476481, ptr noundef nonnull dereferenceable(1) @.str.217) #11
  br label %510

90:                                               ; preds = %.thread473, %57
  %.0303468477 = phi ptr [ null, %.thread473 ], [ %19, %57 ]
  %91 = tail call noundef i32 @_ZL13zenityPresentv()
  %.not331 = icmp eq i32 %91, 0
  br i1 %.not331, label %92, label %98

92:                                               ; preds = %90
  %93 = tail call noundef i32 @_ZL17matedialogPresentv()
  %.not332 = icmp eq i32 %93, 0
  br i1 %.not332, label %94, label %98

94:                                               ; preds = %92
  %95 = tail call noundef i32 @_ZL20shellementaryPresentv()
  %.not333 = icmp eq i32 %95, 0
  br i1 %.not333, label %96, label %98

96:                                               ; preds = %94
  %97 = tail call noundef i32 @_ZL12qarmaPresentv()
  %.not334 = icmp eq i32 %97, 0
  br i1 %.not334, label %166, label %98

98:                                               ; preds = %96, %94, %92, %90
  %99 = tail call noundef i32 @_ZL13zenityPresentv()
  %.not416 = icmp eq i32 %99, 0
  br i1 %.not416, label %113, label %100

100:                                              ; preds = %98
  br i1 %.not, label %105, label %101

101:                                              ; preds = %100
  %102 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) @.str.10) #12
  %.not423 = icmp eq i32 %102, 0
  br i1 %.not423, label %103, label %105

103:                                              ; preds = %101
  %104 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) @tinyfd_response, ptr noundef nonnull dereferenceable(1) @.str.52) #11
  br label %547

105:                                              ; preds = %101, %100
  %106 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.53) #11
  %107 = tail call noundef i32 @_ZL14zenity3Presentv()
  %108 = icmp sgt i32 %107, 3
  br i1 %108, label %109, label %141

109:                                              ; preds = %105
  %110 = tail call ptr @getenv(ptr noundef nonnull @.str.54) #11
  %.not424 = icmp eq ptr %110, null
  br i1 %.not424, label %111, label %141

111:                                              ; preds = %109
  %112 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.55) #11
  br label %141

113:                                              ; preds = %98
  %114 = tail call noundef i32 @_ZL17matedialogPresentv()
  %.not417 = icmp eq i32 %114, 0
  br i1 %.not417, label %122, label %115

115:                                              ; preds = %113
  br i1 %.not, label %120, label %116

116:                                              ; preds = %115
  %117 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) @.str.10) #12
  %.not422 = icmp eq i32 %117, 0
  br i1 %.not422, label %118, label %120

118:                                              ; preds = %116
  %119 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) @tinyfd_response, ptr noundef nonnull dereferenceable(1) @.str.56) #11
  br label %547

120:                                              ; preds = %116, %115
  %121 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.57) #11
  br label %141

122:                                              ; preds = %113
  %123 = tail call noundef i32 @_ZL20shellementaryPresentv()
  %.not418 = icmp eq i32 %123, 0
  br i1 %.not418, label %131, label %124

124:                                              ; preds = %122
  br i1 %.not, label %129, label %125

125:                                              ; preds = %124
  %126 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) @.str.10) #12
  %.not421 = icmp eq i32 %126, 0
  br i1 %.not421, label %127, label %129

127:                                              ; preds = %125
  %128 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) @tinyfd_response, ptr noundef nonnull dereferenceable(1) @.str.58) #11
  br label %547

129:                                              ; preds = %125, %124
  %130 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.59) #11
  br label %141

131:                                              ; preds = %122
  br i1 %.not, label %136, label %132

132:                                              ; preds = %131
  %133 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) @.str.10) #12
  %.not419 = icmp eq i32 %133, 0
  br i1 %.not419, label %134, label %136

134:                                              ; preds = %132
  %135 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) @tinyfd_response, ptr noundef nonnull dereferenceable(1) @.str.60) #11
  br label %547

136:                                              ; preds = %132, %131
  %137 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.61) #11
  %138 = tail call ptr @getenv(ptr noundef nonnull @.str.54) #11
  %.not420 = icmp eq ptr %138, null
  br i1 %.not420, label %139, label %141

139:                                              ; preds = %136
  %140 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.42) #11
  br label %141

141:                                              ; preds = %120, %136, %139, %129, %105, %109, %111
  %142 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.218) #11
  br i1 %.not, label %148, label %143

143:                                              ; preds = %141
  %char0425 = load i8, ptr %0, align 1
  %.not426 = icmp eq i8 %char0425, 0
  br i1 %.not426, label %148, label %144

144:                                              ; preds = %143
  %145 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.66) #11
  %146 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) %0) #11
  %147 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.47) #11
  br label %148

148:                                              ; preds = %144, %143, %141
  br i1 %.not327, label %154, label %149

149:                                              ; preds = %148
  %char0427 = load i8, ptr %1, align 1
  %.not428 = icmp eq i8 %char0427, 0
  br i1 %.not428, label %154, label %150

150:                                              ; preds = %149
  %151 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.219) #11
  %152 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) %1) #11
  %153 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.47) #11
  br label %154

154:                                              ; preds = %150, %149, %148
  %.not429 = icmp eq ptr %2, null
  br i1 %.not429, label %159, label %155

155:                                              ; preds = %154
  %char0430 = load i8, ptr %2, align 1
  %.not431 = icmp eq i8 %char0430, 0
  br i1 %.not431, label %159, label %156

156:                                              ; preds = %155
  %157 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.220) #11
  %158 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) %2) #11
  br label %159

159:                                              ; preds = %154, %155, %156
  %.str.221.sink = phi ptr [ @.str.47, %156 ], [ @.str.221, %155 ], [ @.str.221, %154 ]
  %160 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) %.str.221.sink) #11
  %161 = load i32, ptr @tinyfd_silent, align 4, !tbaa !8
  %.not432 = icmp eq i32 %161, 0
  br i1 %.not432, label %164, label %162

162:                                              ; preds = %159
  %163 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.70) #11
  br label %164

164:                                              ; preds = %162, %159
  %165 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.217) #11
  br label %510

166:                                              ; preds = %96
  %167 = tail call noundef i32 @_ZL16gxmessagePresentv()
  %.not335 = icmp eq i32 %167, 0
  br i1 %.not335, label %168, label %170

168:                                              ; preds = %166
  %169 = tail call noundef i32 @_ZL15gmessagePresentv()
  %.not336 = icmp eq i32 %169, 0
  br i1 %.not336, label %202, label %170

170:                                              ; preds = %168, %166
  %171 = tail call noundef i32 @_ZL16gxmessagePresentv()
  %.not406 = icmp eq i32 %171, 0
  br i1 %.not406, label %177, label %172

172:                                              ; preds = %170
  br i1 %.not, label %182, label %173

173:                                              ; preds = %172
  %174 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) @.str.10) #12
  %.not408 = icmp eq i32 %174, 0
  br i1 %.not408, label %175, label %182

175:                                              ; preds = %173
  %176 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) @tinyfd_response, ptr noundef nonnull dereferenceable(1) @.str.104) #11
  br label %547

177:                                              ; preds = %170
  br i1 %.not, label %182, label %178

178:                                              ; preds = %177
  %179 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) @.str.10) #12
  %.not407 = icmp eq i32 %179, 0
  br i1 %.not407, label %180, label %182

180:                                              ; preds = %178
  %181 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) @tinyfd_response, ptr noundef nonnull dereferenceable(1) @.str.105) #11
  br label %547

182:                                              ; preds = %177, %178, %172, %173
  %.str.223.sink = phi ptr [ @.str.222, %173 ], [ @.str.222, %172 ], [ @.str.223, %178 ], [ @.str.223, %177 ]
  %183 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) %.str.223.sink) #11
  br i1 %.not327, label %187, label %184

184:                                              ; preds = %182
  %char0409 = load i8, ptr %1, align 1
  %.not410 = icmp eq i8 %char0409, 0
  br i1 %.not410, label %187, label %185

185:                                              ; preds = %184
  %186 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) %1) #11
  br label %187

187:                                              ; preds = %185, %184, %182
  %188 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.47) #11
  br i1 %.not, label %194, label %189

189:                                              ; preds = %187
  %char0411 = load i8, ptr %0, align 1
  %.not412 = icmp eq i8 %char0411, 0
  br i1 %.not412, label %194, label %190

190:                                              ; preds = %189
  %191 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.116) #11
  %192 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) %0) #11
  %193 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.15) #11
  br label %194

194:                                              ; preds = %190, %189, %187
  %195 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.224) #11
  %.not413 = icmp eq ptr %2, null
  br i1 %.not413, label %199, label %196

196:                                              ; preds = %194
  %char0414 = load i8, ptr %2, align 1
  %.not415 = icmp eq i8 %char0414, 0
  br i1 %.not415, label %199, label %197

197:                                              ; preds = %196
  %198 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) %2) #11
  br label %199

199:                                              ; preds = %197, %196, %194
  %200 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.47) #11
  %201 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.225) #11
  br label %510

202:                                              ; preds = %168
  %203 = tail call noundef i32 @_ZL14gdialogPresentv()
  %.not337 = icmp eq i32 %203, 0
  br i1 %.not337, label %204, label %248

204:                                              ; preds = %202
  %205 = tail call noundef i32 @_ZL14xdialogPresentv()
  %.not338 = icmp eq i32 %205, 0
  br i1 %.not338, label %206, label %248

206:                                              ; preds = %204
  %207 = tail call noundef i32 @_ZL15tkinter2Presentv()
  %.not339 = icmp eq i32 %207, 0
  br i1 %.not339, label %248, label %208

208:                                              ; preds = %206
  br i1 %.not, label %213, label %209

209:                                              ; preds = %208
  %210 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) @.str.10) #12
  %.not340 = icmp eq i32 %210, 0
  br i1 %.not340, label %211, label %213

211:                                              ; preds = %209
  %212 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) @tinyfd_response, ptr noundef nonnull dereferenceable(1) @.str.73) #11
  br label %547

213:                                              ; preds = %209, %208
  %214 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @_ZL12gPython2Name) #11
  %215 = tail call noundef i32 @_ZL17isTerminalRunningv()
  %.not341 = icmp eq i32 %215, 0
  br i1 %.not341, label %216, label %220

216:                                              ; preds = %213
  %217 = tail call noundef i32 @_ZL8isDarwinv()
  %.not342 = icmp eq i32 %217, 0
  br i1 %.not342, label %220, label %218

218:                                              ; preds = %216
  %219 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.74) #11
  br label %220

220:                                              ; preds = %218, %216, %213
  %221 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.226) #11
  %222 = tail call noundef i32 @_ZL8isDarwinv()
  %.not343 = icmp eq i32 %222, 0
  br i1 %.not343, label %225, label %223

223:                                              ; preds = %220
  %224 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.76) #11
  br label %225

225:                                              ; preds = %223, %220
  %226 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.227) #11
  br i1 %.not, label %232, label %227

227:                                              ; preds = %225
  %char0 = load i8, ptr %0, align 1
  %.not344 = icmp eq i8 %char0, 0
  br i1 %.not344, label %232, label %228

228:                                              ; preds = %227
  %229 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.88) #11
  %230 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) %0) #11
  %231 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.87) #11
  br label %232

232:                                              ; preds = %228, %227, %225
  br i1 %.not327, label %239, label %233

233:                                              ; preds = %232
  %char0345 = load i8, ptr %1, align 1
  %.not346 = icmp eq i8 %char0345, 0
  br i1 %.not346, label %239, label %234

234:                                              ; preds = %233
  %235 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.228) #11
  %236 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0303468477) #12
  %237 = getelementptr inbounds i8, ptr %.0303468477, i64 %236
  tail call void @_ZL13replaceSubStrPKcS0_S0_Pc(ptr noundef nonnull %1, ptr noundef nonnull @.str.90, ptr noundef nonnull @.str.91, ptr noundef %237)
  %238 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.87) #11
  br label %239

239:                                              ; preds = %234, %233, %232
  %.not347 = icmp eq ptr %2, null
  br i1 %.not347, label %.sink.split, label %240

240:                                              ; preds = %239
  %char0348 = load i8, ptr %2, align 1
  %.not349 = icmp eq i8 %char0348, 0
  br i1 %.not349, label %245, label %241

241:                                              ; preds = %240
  %242 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.229) #11
  %243 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) %2) #11
  br label %.sink.split

.sink.split:                                      ; preds = %239, %241
  %.str.87.sink = phi ptr [ @.str.87, %241 ], [ @.str.230, %239 ]
  %244 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) %.str.87.sink) #11
  br label %245

245:                                              ; preds = %.sink.split, %240
  %246 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.231) #11
  %247 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.232) #11
  br label %510

248:                                              ; preds = %206, %204, %202
  %249 = tail call noundef i32 @_ZL14gdialogPresentv()
  %.not350 = icmp eq i32 %249, 0
  br i1 %.not350, label %250, label %284

250:                                              ; preds = %248
  %251 = tail call noundef i32 @_ZL14xdialogPresentv()
  %.not351 = icmp eq i32 %251, 0
  br i1 %.not351, label %252, label %284

252:                                              ; preds = %250
  %253 = tail call noundef i32 @_ZL15tkinter3Presentv()
  %.not352 = icmp eq i32 %253, 0
  br i1 %.not352, label %284, label %254

254:                                              ; preds = %252
  br i1 %.not, label %.critedge462, label %255

255:                                              ; preds = %254
  %256 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) @.str.10) #12
  %.not353 = icmp eq i32 %256, 0
  br i1 %.not353, label %257, label %259

257:                                              ; preds = %255
  %258 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) @tinyfd_response, ptr noundef nonnull dereferenceable(1) @.str.95) #11
  br label %547

259:                                              ; preds = %255
  %260 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @_ZL12gPython3Name) #11
  %261 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.233) #11
  %262 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.234) #11
  %char0354 = load i8, ptr %0, align 1
  %.not355 = icmp eq i8 %char0354, 0
  br i1 %.not355, label %268, label %263

263:                                              ; preds = %259
  %264 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.88) #11
  br label %.sink.split482

.critedge462:                                     ; preds = %254
  %265 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @_ZL12gPython3Name) #11
  br label %.sink.split482

.sink.split482:                                   ; preds = %263, %.critedge462
  %.str.233.sink = phi ptr [ @.str.233, %.critedge462 ], [ %0, %263 ]
  %.str.234.sink = phi ptr [ @.str.234, %.critedge462 ], [ @.str.87, %263 ]
  %266 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) %.str.233.sink) #11
  %267 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) %.str.234.sink) #11
  br label %268

268:                                              ; preds = %.sink.split482, %259
  br i1 %.not327, label %275, label %269

269:                                              ; preds = %268
  %char0356 = load i8, ptr %1, align 1
  %.not357 = icmp eq i8 %char0356, 0
  br i1 %.not357, label %275, label %270

270:                                              ; preds = %269
  %271 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.228) #11
  %272 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0303468477) #12
  %273 = getelementptr inbounds i8, ptr %.0303468477, i64 %272
  tail call void @_ZL13replaceSubStrPKcS0_S0_Pc(ptr noundef nonnull %1, ptr noundef nonnull @.str.90, ptr noundef nonnull @.str.91, ptr noundef %273)
  %274 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.87) #11
  br label %275

275:                                              ; preds = %270, %269, %268
  %.not358 = icmp eq ptr %2, null
  br i1 %.not358, label %.sink.split483, label %276

276:                                              ; preds = %275
  %char0359 = load i8, ptr %2, align 1
  %.not360 = icmp eq i8 %char0359, 0
  br i1 %.not360, label %281, label %277

277:                                              ; preds = %276
  %278 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.229) #11
  %279 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) %2) #11
  br label %.sink.split483

.sink.split483:                                   ; preds = %275, %277
  %.str.87.sink484 = phi ptr [ @.str.87, %277 ], [ @.str.230, %275 ]
  %280 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) %.str.87.sink484) #11
  br label %281

281:                                              ; preds = %.sink.split483, %276
  %282 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.235) #11
  %283 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.236) #11
  br label %510

284:                                              ; preds = %252, %250, %248
  %285 = tail call noundef i32 @_ZL14gdialogPresentv()
  %.not361 = icmp eq i32 %285, 0
  br i1 %.not361, label %286, label %292

286:                                              ; preds = %284
  %287 = tail call noundef i32 @_ZL14xdialogPresentv()
  %.not362 = icmp eq i32 %287, 0
  br i1 %.not362, label %288, label %292

288:                                              ; preds = %286
  %289 = tail call noundef ptr @_ZL10dialogNamev()
  %.not363 = icmp eq ptr %289, null
  br i1 %.not363, label %290, label %292

290:                                              ; preds = %288
  %291 = tail call noundef i32 @_ZL15whiptailPresentv()
  %.not364 = icmp eq i32 %291, 0
  br i1 %.not364, label %394, label %292

292:                                              ; preds = %290, %288, %286, %284
  %293 = tail call noundef i32 @_ZL14gdialogPresentv()
  %.not383 = icmp ne i32 %293, 0
  br i1 %.not383, label %294, label %301

294:                                              ; preds = %292
  br i1 %.not, label %299, label %295

295:                                              ; preds = %294
  %296 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) @.str.10) #12
  %.not392 = icmp eq i32 %296, 0
  br i1 %.not392, label %297, label %299

297:                                              ; preds = %295
  %298 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) @tinyfd_response, ptr noundef nonnull dereferenceable(1) @.str.118) #11
  br label %547

299:                                              ; preds = %295, %294
  %300 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.119) #11
  br label %346

301:                                              ; preds = %292
  %302 = tail call noundef i32 @_ZL14xdialogPresentv()
  %.not384 = icmp eq i32 %302, 0
  br i1 %.not384, label %310, label %303

303:                                              ; preds = %301
  br i1 %.not, label %308, label %304

304:                                              ; preds = %303
  %305 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) @.str.10) #12
  %.not391 = icmp eq i32 %305, 0
  br i1 %.not391, label %306, label %308

306:                                              ; preds = %304
  %307 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) @tinyfd_response, ptr noundef nonnull dereferenceable(1) @.str.120) #11
  br label %547

308:                                              ; preds = %304, %303
  %309 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.121) #11
  br label %346

310:                                              ; preds = %301
  %311 = tail call noundef ptr @_ZL10dialogNamev()
  %.not385 = icmp eq ptr %311, null
  br i1 %.not385, label %328, label %312

312:                                              ; preds = %310
  br i1 %.not, label %317, label %313

313:                                              ; preds = %312
  %314 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) @.str.10) #12
  %.not389 = icmp eq i32 %314, 0
  br i1 %.not389, label %315, label %317

315:                                              ; preds = %313
  %316 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) @tinyfd_response, ptr noundef nonnull dereferenceable(1) @.str.122) #11
  br label %547

317:                                              ; preds = %313, %312
  %318 = tail call noundef i32 @_ZL17isTerminalRunningv()
  %.not390 = icmp eq i32 %318, 0
  br i1 %.not390, label %321, label %319

319:                                              ; preds = %317
  %320 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.123) #11
  br label %346

321:                                              ; preds = %317
  %322 = tail call noundef ptr @_ZL12terminalNamev()
  %323 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) %322) #11
  %324 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.124) #11
  %325 = tail call noundef ptr @_ZL10dialogNamev()
  %326 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) %325) #11
  %327 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.125) #11
  br label %346

328:                                              ; preds = %310
  %329 = tail call noundef i32 @_ZL17isTerminalRunningv()
  %.not386 = icmp eq i32 %329, 0
  br i1 %.not386, label %337, label %330

330:                                              ; preds = %328
  br i1 %.not, label %335, label %331

331:                                              ; preds = %330
  %332 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) @.str.10) #12
  %.not388 = icmp eq i32 %332, 0
  br i1 %.not388, label %333, label %335

333:                                              ; preds = %331
  %334 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) @tinyfd_response, ptr noundef nonnull dereferenceable(1) @.str.126) #11
  br label %547

335:                                              ; preds = %331, %330
  %336 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.127) #11
  br label %346

337:                                              ; preds = %328
  br i1 %.not, label %342, label %338

338:                                              ; preds = %337
  %339 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) @.str.10) #12
  %.not387 = icmp eq i32 %339, 0
  br i1 %.not387, label %340, label %342

340:                                              ; preds = %338
  %341 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) @tinyfd_response, ptr noundef nonnull dereferenceable(1) @.str.126) #11
  br label %547

342:                                              ; preds = %338, %337
  %343 = tail call noundef ptr @_ZL12terminalNamev()
  %344 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) %343) #11
  %345 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.128) #11
  br label %346

346:                                              ; preds = %308, %335, %342, %319, %321, %299
  %.not397 = phi i1 [ false, %299 ], [ false, %308 ], [ true, %319 ], [ true, %321 ], [ true, %335 ], [ true, %342 ]
  %.not405 = phi i1 [ true, %299 ], [ true, %308 ], [ true, %319 ], [ false, %321 ], [ true, %335 ], [ false, %342 ]
  br i1 %.not, label %352, label %347

347:                                              ; preds = %346
  %char0393 = load i8, ptr %0, align 1
  %.not394 = icmp eq i8 %char0393, 0
  br i1 %.not394, label %352, label %348

348:                                              ; preds = %347
  %349 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.129) #11
  %350 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) %0) #11
  %351 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.15) #11
  br label %352

352:                                              ; preds = %348, %347, %346
  %353 = tail call noundef i32 @_ZL14xdialogPresentv()
  %.not395 = icmp eq i32 %353, 0
  br i1 %.not395, label %354, label %364

354:                                              ; preds = %352
  %355 = tail call noundef i32 @_ZL14gdialogPresentv()
  %.not396 = icmp eq i32 %355, 0
  br i1 %.not396, label %356, label %364

356:                                              ; preds = %354
  %357 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.130) #11
  %358 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.131) #11
  %359 = icmp ne ptr %2, null
  %or.cond = or i1 %359, %.not383
  br i1 %or.cond, label %362, label %360

360:                                              ; preds = %356
  %361 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.237) #11
  br label %362

362:                                              ; preds = %360, %356
  %363 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.15) #11
  br label %364

364:                                              ; preds = %362, %354, %352
  %365 = icmp ne ptr %2, null
  %or.cond3 = or i1 %365, %.not383
  %.not397.not = xor i1 %.not397, true
  %brmerge = or i1 %or.cond3, %.not397.not
  %.str.238.mux = select i1 %or.cond3, ptr @.str.238, ptr @.str.240
  br i1 %brmerge, label %372, label %366

366:                                              ; preds = %364
  %367 = tail call noundef ptr @_ZL10dialogNamev()
  %.not398 = icmp eq ptr %367, null
  br i1 %.not398, label %372, label %368

368:                                              ; preds = %366
  %369 = tail call noundef i32 @_Z24isDialogVersionBetter09bv()
  %.not399 = icmp eq i32 %369, 0
  br i1 %.not399, label %372, label %370

370:                                              ; preds = %368
  %371 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.239) #11
  br label %372

372:                                              ; preds = %364, %366, %368, %370
  %.str.240.sink = phi ptr [ %.str.238.mux, %364 ], [ @.str.240, %370 ], [ @.str.240, %368 ], [ @.str.240, %366 ]
  %373 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) %.str.240.sink) #11
  %374 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.46) #11
  br i1 %.not327, label %378, label %375

375:                                              ; preds = %372
  %char0400 = load i8, ptr %1, align 1
  %.not401 = icmp eq i8 %char0400, 0
  br i1 %.not401, label %378, label %376

376:                                              ; preds = %375
  %377 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) %1) #11
  br label %378

378:                                              ; preds = %376, %375, %372
  %379 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.241) #11
  br i1 %365, label %380, label %385

380:                                              ; preds = %378
  %char0402 = load i8, ptr %2, align 1
  %.not403 = icmp eq i8 %char0402, 0
  br i1 %.not403, label %385, label %381

381:                                              ; preds = %380
  %382 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.47) #11
  %383 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) %2) #11
  %384 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.15) #11
  br label %385

385:                                              ; preds = %381, %380, %378
  br i1 %.not397, label %388, label %386

386:                                              ; preds = %385
  %387 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.242) #11
  br label %510

388:                                              ; preds = %385
  %389 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.243) #11
  br i1 %.not405, label %392, label %390

390:                                              ; preds = %388
  %391 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.140) #11
  br label %510

392:                                              ; preds = %388
  %393 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.141) #11
  br label %510

394:                                              ; preds = %290
  %395 = tail call noundef i32 @_ZL17isTerminalRunningv()
  %.not365 = icmp eq i32 %395, 0
  br i1 %.not365, label %396, label %436

396:                                              ; preds = %394
  %397 = tail call noundef ptr @_ZL12terminalNamev()
  %.not366 = icmp eq ptr %397, null
  br i1 %.not366, label %436, label %398

398:                                              ; preds = %396
  br i1 %.not, label %403, label %399

399:                                              ; preds = %398
  %400 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) @.str.10) #12
  %.not367 = icmp eq i32 %400, 0
  br i1 %.not367, label %401, label %403

401:                                              ; preds = %399
  %402 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) @tinyfd_response, ptr noundef nonnull dereferenceable(1) @.str.145) #11
  br label %547

403:                                              ; preds = %399, %398
  %404 = tail call noundef ptr @_ZL12terminalNamev()
  %405 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) %404) #11
  %406 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.92) #11
  %407 = load i32, ptr @_ZL17gWarningDisplayed, align 4, !tbaa !8
  %408 = icmp ne i32 %407, 0
  %409 = load i32, ptr @tinyfd_forceConsole, align 4
  %410 = icmp ne i32 %409, 0
  %or.cond5 = select i1 %408, i1 true, i1 %410
  br i1 %or.cond5, label %413, label %411

411:                                              ; preds = %403
  store i32 1, ptr @_ZL17gWarningDisplayed, align 4, !tbaa !8
  %412 = tail call i32 @tinyfd_messageBox(ptr noundef nonnull @_ZL6gTitle, ptr noundef nonnull @tinyfd_needs, ptr noundef nonnull @.str.167, ptr noundef nonnull @.str.20, i32 noundef 0)
  br label %413

413:                                              ; preds = %411, %403
  br i1 %.not, label %422, label %414

414:                                              ; preds = %413
  %char0368 = load i8, ptr %0, align 1
  %415 = icmp eq i8 %char0368, 0
  %416 = load i32, ptr @tinyfd_forceConsole, align 4
  %417 = icmp ne i32 %416, 0
  %or.cond7 = select i1 %415, i1 true, i1 %417
  br i1 %or.cond7, label %422, label %418

418:                                              ; preds = %414
  %419 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.146) #11
  %420 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) %0) #11
  %421 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.149) #11
  br label %422

422:                                              ; preds = %418, %414, %413
  %423 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.146) #11
  br i1 %.not327, label %427, label %424

424:                                              ; preds = %422
  %char0369 = load i8, ptr %1, align 1
  %.not370 = icmp eq i8 %char0369, 0
  br i1 %.not370, label %427, label %425

425:                                              ; preds = %424
  %426 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) %1) #11
  br label %427

427:                                              ; preds = %425, %424, %422
  %428 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.244) #11
  %.not371 = icmp eq ptr %2, null
  br i1 %.not371, label %429, label %431

429:                                              ; preds = %427
  %430 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.245) #11
  br label %431

431:                                              ; preds = %429, %427
  %432 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.246) #11
  %433 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.247) #11
  %434 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.248) #11
  %435 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %.0303468477, ptr noundef nonnull dereferenceable(1) @.str.249) #11
  br label %510

436:                                              ; preds = %396, %394
  %437 = load i32, ptr @_ZL17gWarningDisplayed, align 4, !tbaa !8
  %.not372 = icmp eq i32 %437, 0
  br i1 %.not372, label %438, label %448

438:                                              ; preds = %436
  %439 = tail call noundef i32 @_ZL17isTerminalRunningv()
  %.not373 = icmp eq i32 %439, 0
  br i1 %.not373, label %440, label %448

440:                                              ; preds = %438
  %441 = tail call noundef ptr @_ZL12terminalNamev()
  %.not374 = icmp eq ptr %441, null
  br i1 %.not374, label %442, label %448

442:                                              ; preds = %440
  store i32 1, ptr @_ZL17gWarningDisplayed, align 4, !tbaa !8
  %443 = tail call i32 @tinyfd_messageBox(ptr noundef nonnull @_ZL6gTitle, ptr noundef nonnull @tinyfd_needs, ptr noundef nonnull @.str.167, ptr noundef nonnull @.str.20, i32 noundef 0)
  br i1 %.not, label %547, label %444

444:                                              ; preds = %442
  %445 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) @.str.10) #12
  %.not375 = icmp eq i32 %445, 0
  br i1 %.not375, label %446, label %547

446:                                              ; preds = %444
  %447 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) @tinyfd_response, ptr noundef nonnull dereferenceable(1) @.str.250) #11
  br label %547

448:                                              ; preds = %440, %438, %436
  br i1 %.not, label %453, label %449

449:                                              ; preds = %448
  %450 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) @.str.10) #12
  %.not376 = icmp eq i32 %450, 0
  br i1 %.not376, label %451, label %453

451:                                              ; preds = %449
  %452 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) @tinyfd_response, ptr noundef nonnull dereferenceable(1) @.str.145) #11
  br label %547

453:                                              ; preds = %449, %448
  %454 = load i32, ptr @_ZL17gWarningDisplayed, align 4, !tbaa !8
  %455 = icmp ne i32 %454, 0
  %456 = load i32, ptr @tinyfd_forceConsole, align 4
  %457 = icmp ne i32 %456, 0
  %or.cond9 = select i1 %455, i1 true, i1 %457
  br i1 %or.cond9, label %460, label %458

458:                                              ; preds = %453
  store i32 1, ptr @_ZL17gWarningDisplayed, align 4, !tbaa !8
  %459 = tail call i32 @tinyfd_messageBox(ptr noundef nonnull @_ZL6gTitle, ptr noundef nonnull @tinyfd_needs, ptr noundef nonnull @.str.167, ptr noundef nonnull @.str.20, i32 noundef 0)
  br label %460

460:                                              ; preds = %458, %453
  br i1 %.not, label %464, label %461

461:                                              ; preds = %460
  %char0377 = load i8, ptr %0, align 1
  %.not378 = icmp eq i8 %char0377, 0
  br i1 %.not378, label %464, label %462

462:                                              ; preds = %461
  %463 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.188, ptr noundef nonnull %0)
  br label %464

464:                                              ; preds = %462, %461, %460
  br i1 %.not327, label %468, label %465

465:                                              ; preds = %464
  %char0379 = load i8, ptr %1, align 1
  %.not380 = icmp eq i8 %char0379, 0
  br i1 %.not380, label %468, label %466

466:                                              ; preds = %465
  %467 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.188, ptr noundef nonnull %1)
  br label %468

468:                                              ; preds = %466, %465, %464
  %469 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.251)
  %470 = load ptr, ptr @stdout, align 8, !tbaa !10
  %471 = tail call i32 @fflush(ptr noundef %470)
  %.not381 = icmp eq ptr %2, null
  br i1 %.not381, label %472, label %478

472:                                              ; preds = %468
  %473 = call i32 @tcgetattr(i32 noundef 0, ptr noundef nonnull %4) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(60) %5, ptr noundef nonnull align 4 dereferenceable(60) %4, i64 60, i1 false), !tbaa.struct !12
  %474 = getelementptr inbounds i8, ptr %5, i64 12
  %475 = load i32, ptr %474, align 4, !tbaa !13
  %476 = and i32 %475, -9
  store i32 %476, ptr %474, align 4, !tbaa !13
  %477 = call i32 @tcsetattr(i32 noundef 0, i32 noundef 0, ptr noundef nonnull %5) #11
  br label %478

478:                                              ; preds = %472, %468
  %479 = load ptr, ptr @stdin, align 8, !tbaa !10
  %480 = call ptr @fgets(ptr noundef nonnull @_ZZ15tinyfd_inputBoxE5lBuff, i32 noundef 1024, ptr noundef %479)
  %481 = icmp eq ptr %480, null
  %482 = load i8, ptr @_ZZ15tinyfd_inputBoxE5lBuff, align 16
  %483 = icmp eq i8 %482, 0
  %or.cond12 = select i1 %481, i1 true, i1 %483
  br i1 %or.cond12, label %484, label %485

484:                                              ; preds = %478
  call void @free(ptr noundef %.0303468477) #11
  br label %547

485:                                              ; preds = %478
  %486 = icmp eq i8 %482, 10
  br i1 %486, label %487, label %494

487:                                              ; preds = %485
  %488 = load ptr, ptr @stdin, align 8, !tbaa !10
  %489 = call ptr @fgets(ptr noundef nonnull @_ZZ15tinyfd_inputBoxE5lBuff, i32 noundef 1024, ptr noundef %488)
  %490 = icmp eq ptr %489, null
  %491 = load i8, ptr @_ZZ15tinyfd_inputBoxE5lBuff, align 16
  %492 = icmp eq i8 %491, 0
  %or.cond15 = select i1 %490, i1 true, i1 %492
  br i1 %or.cond15, label %493, label %494

493:                                              ; preds = %487
  call void @free(ptr noundef %.0303468477) #11
  br label %547

494:                                              ; preds = %487, %485
  br i1 %.not381, label %495, label %498

495:                                              ; preds = %494
  %496 = call i32 @tcsetattr(i32 noundef 0, i32 noundef 0, ptr noundef nonnull %4) #11
  %497 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.90)
  br label %498

498:                                              ; preds = %495, %494
  %499 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.90)
  %500 = call noundef ptr @strchr(ptr noundef nonnull dereferenceable(1) @_ZZ15tinyfd_inputBoxE5lBuff, i32 noundef 27) #12
  %.not382 = icmp eq ptr %500, null
  br i1 %.not382, label %502, label %501

501:                                              ; preds = %498
  call void @free(ptr noundef %.0303468477) #11
  br label %547

502:                                              ; preds = %498
  %503 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) @_ZZ15tinyfd_inputBoxE5lBuff) #12
  %504 = add i64 %503, -1
  %505 = getelementptr inbounds [1024 x i8], ptr @_ZZ15tinyfd_inputBoxE5lBuff, i64 0, i64 %504
  %506 = load i8, ptr %505, align 1, !tbaa !5
  %507 = icmp eq i8 %506, 10
  br i1 %507, label %508, label %509

508:                                              ; preds = %502
  store i8 0, ptr %505, align 1, !tbaa !5
  br label %509

509:                                              ; preds = %508, %502
  call void @free(ptr noundef %.0303468477) #11
  br label %547

510:                                              ; preds = %88, %199, %281, %386, %392, %390, %431, %245, %164, %48, %55
  %.0303467 = phi ptr [ %.0303465472, %48 ], [ %.0303465472, %55 ], [ %.0303468476481, %88 ], [ %.0303468477, %164 ], [ %.0303468477, %199 ], [ %.0303468477, %386 ], [ %.0303468477, %390 ], [ %.0303468477, %392 ], [ %.0303468477, %431 ], [ %.0303468477, %281 ], [ %.0303468477, %245 ]
  %.not458 = phi i1 [ true, %48 ], [ true, %55 ], [ true, %88 ], [ true, %164 ], [ true, %199 ], [ true, %386 ], [ true, %390 ], [ true, %392 ], [ false, %431 ], [ true, %281 ], [ true, %245 ]
  %511 = load i32, ptr @tinyfd_verbose, align 4, !tbaa !8
  %.not451 = icmp eq i32 %511, 0
  br i1 %.not451, label %514, label %512

512:                                              ; preds = %510
  %513 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, ptr noundef %.0303467)
  br label %514

514:                                              ; preds = %512, %510
  %515 = tail call noalias ptr @popen(ptr noundef %.0303467, ptr noundef nonnull @.str.9)
  %.not452 = icmp eq ptr %515, null
  br i1 %.not452, label %516, label %.preheader

516:                                              ; preds = %514
  %517 = tail call noundef i32 @_ZL10fileExistsPKc(ptr noundef nonnull @.str.252)
  %.not453 = icmp eq i32 %517, 0
  br i1 %.not453, label %520, label %518

518:                                              ; preds = %516
  tail call void @_ZL8wipefilePKc(ptr noundef nonnull @.str.252)
  %519 = tail call i32 @remove(ptr noundef nonnull @.str.252) #11
  br label %520

520:                                              ; preds = %518, %516
  %521 = tail call noundef i32 @_ZL10fileExistsPKc(ptr noundef nonnull @.str.253)
  %.not454 = icmp eq i32 %521, 0
  br i1 %.not454, label %524, label %522

522:                                              ; preds = %520
  tail call void @_ZL8wipefilePKc(ptr noundef nonnull @.str.253)
  %523 = tail call i32 @remove(ptr noundef nonnull @.str.253) #11
  br label %524

524:                                              ; preds = %522, %520
  tail call void @free(ptr noundef %.0303467) #11
  br label %547

.preheader:                                       ; preds = %514, %.preheader
  %525 = tail call ptr @fgets(ptr noundef nonnull @_ZZ15tinyfd_inputBoxE5lBuff, i32 noundef 1024, ptr noundef nonnull %515)
  %.not455 = icmp eq ptr %525, null
  br i1 %.not455, label %526, label %.preheader, !llvm.loop !15

526:                                              ; preds = %.preheader
  %527 = tail call i32 @pclose(ptr noundef nonnull %515)
  %528 = tail call noundef i32 @_ZL10fileExistsPKc(ptr noundef nonnull @.str.252)
  %.not456 = icmp eq i32 %528, 0
  br i1 %.not456, label %531, label %529

529:                                              ; preds = %526
  tail call void @_ZL8wipefilePKc(ptr noundef nonnull @.str.252)
  %530 = tail call i32 @remove(ptr noundef nonnull @.str.252) #11
  br label %531

531:                                              ; preds = %529, %526
  %532 = tail call noundef i32 @_ZL10fileExistsPKc(ptr noundef nonnull @.str.253)
  %.not457 = icmp eq i32 %532, 0
  br i1 %.not457, label %535, label %533

533:                                              ; preds = %531
  tail call void @_ZL8wipefilePKc(ptr noundef nonnull @.str.253)
  %534 = tail call i32 @remove(ptr noundef nonnull @.str.253) #11
  br label %535

535:                                              ; preds = %533, %531
  %536 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) @_ZZ15tinyfd_inputBoxE5lBuff) #12
  %537 = add i64 %536, -1
  %538 = getelementptr inbounds [1024 x i8], ptr @_ZZ15tinyfd_inputBoxE5lBuff, i64 0, i64 %537
  %539 = load i8, ptr %538, align 1, !tbaa !5
  %540 = icmp eq i8 %539, 10
  br i1 %540, label %541, label %542

541:                                              ; preds = %535
  store i8 0, ptr %538, align 1, !tbaa !5
  br label %542

542:                                              ; preds = %541, %535
  br i1 %.not458, label %546, label %543

543:                                              ; preds = %542
  %544 = tail call noundef ptr @strstr(ptr noundef nonnull dereferenceable(1) @_ZZ15tinyfd_inputBoxE5lBuff, ptr noundef nonnull dereferenceable(1) @.str.254) #12
  %.not459 = icmp eq ptr %544, null
  br i1 %.not459, label %546, label %545

545:                                              ; preds = %543
  tail call void @free(ptr noundef %.0303467) #11
  br label %547

546:                                              ; preds = %543, %542
  %lhsc = load i8, ptr @_ZZ15tinyfd_inputBoxE5lBuff, align 16
  %rhsc = load i8, ptr @.str.196, align 1
  %.not460 = icmp eq i8 %lhsc, %rhsc
  tail call void @free(ptr noundef %.0303467) #11
  %. = select i1 %.not460, ptr getelementptr inbounds (i8, ptr @_ZZ15tinyfd_inputBoxE5lBuff, i64 1), ptr null
  br label %547

547:                                              ; preds = %546, %442, %444, %545, %524, %509, %501, %493, %484, %451, %446, %401, %340, %333, %315, %306, %297, %257, %211, %180, %175, %134, %127, %118, %103, %62, %24
  %.0 = phi ptr [ null, %545 ], [ null, %524 ], [ inttoptr (i64 1 to ptr), %24 ], [ inttoptr (i64 1 to ptr), %62 ], [ inttoptr (i64 1 to ptr), %103 ], [ inttoptr (i64 1 to ptr), %118 ], [ inttoptr (i64 1 to ptr), %127 ], [ inttoptr (i64 1 to ptr), %134 ], [ inttoptr (i64 1 to ptr), %175 ], [ inttoptr (i64 1 to ptr), %180 ], [ inttoptr (i64 1 to ptr), %297 ], [ inttoptr (i64 1 to ptr), %306 ], [ null, %315 ], [ null, %333 ], [ null, %340 ], [ null, %484 ], [ null, %493 ], [ null, %501 ], [ @_ZZ15tinyfd_inputBoxE5lBuff, %509 ], [ null, %451 ], [ null, %446 ], [ null, %401 ], [ inttoptr (i64 1 to ptr), %257 ], [ inttoptr (i64 1 to ptr), %211 ], [ null, %444 ], [ null, %442 ], [ %., %546 ]
  call void @llvm.lifetime.end.p0(i64 60, ptr nonnull %5) #11
  call void @llvm.lifetime.end.p0(i64 60, ptr nonnull %4) #11
  ret ptr %.0
}

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL10fileExistsPKc(ptr noundef) local_unnamed_addr #0

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

; Function Attrs: nofree nounwind
declare noundef i32 @remove(ptr nocapture noundef readonly) local_unnamed_addr #4

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

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

!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 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"int", !6, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"any pointer", !6, i64 0}
!12 = !{i64 0, i64 4, !8, i64 4, i64 4, !8, i64 8, i64 4, !8, i64 12, i64 4, !8, i64 16, i64 1, !5, i64 17, i64 32, !5, i64 52, i64 4, !8, i64 56, i64 4, !8}
!13 = !{!14, !9, i64 12}
!14 = !{!"_ZTS7termios", !9, i64 0, !9, i64 4, !9, i64 8, !9, i64 12, !6, i64 16, !6, i64 17, !9, i64 52, !9, i64 56}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass